From 5f14ada0927a6bdcc26ac1059524b380faa94487 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Mon, 5 Sep 2022 11:14:30 +0300 Subject: [PATCH 01/30] dev: Use APIv2 tooling --- go.mod | 2 +- go.sum | 4 +- tools/go.mod | 2 +- tools/go.sum | 4 +- tools/mage/proto.go | 74 +++++++++----------- tools/mage/scripts/fix-grpc-gateway-names.sh | 40 ----------- 6 files changed, 38 insertions(+), 88 deletions(-) delete mode 100755 tools/mage/scripts/fix-grpc-gateway-names.sh diff --git a/go.mod b/go.mod index 9bfe99b1a5..6c4a34573d 100644 --- a/go.mod +++ b/go.mod @@ -48,7 +48,7 @@ require ( github.com/Masterminds/sprig/v3 v3.2.2 github.com/TheThingsIndustries/mystique v0.0.0-20211230093812-d4088bd06959 github.com/TheThingsIndustries/protoc-gen-go-flags v1.0.6 - github.com/TheThingsIndustries/protoc-gen-go-json v1.4.0 + github.com/TheThingsIndustries/protoc-gen-go-json v1.4.2 github.com/TheThingsNetwork/go-cayenne-lib v1.1.0 github.com/aws/aws-sdk-go v1.42.53 github.com/blang/semver v3.5.1+incompatible diff --git a/go.sum b/go.sum index 14f90b12b1..d772f8b512 100644 --- a/go.sum +++ b/go.sum @@ -88,8 +88,8 @@ github.com/TheThingsIndustries/mystique v0.0.0-20211230093812-d4088bd06959 h1:YR github.com/TheThingsIndustries/mystique v0.0.0-20211230093812-d4088bd06959/go.mod h1:zJmv+zv/E4SFsThOS+ExjtJf3M1x2MOziwyHI7l5zZo= github.com/TheThingsIndustries/protoc-gen-go-flags v1.0.6 h1:IzTyiZA4tbGGnAv4V7epr8EPjXlV4qK07+kLYt4uScc= github.com/TheThingsIndustries/protoc-gen-go-flags v1.0.6/go.mod h1:WFhbSHpgeGU32bQFmLRspFOd8tndSZe6JRaF45qve/o= -github.com/TheThingsIndustries/protoc-gen-go-json v1.4.0 h1:51GcLhX2se5RbQYb+++HTP+7qsrEIa5tdUb9+FPuFhs= -github.com/TheThingsIndustries/protoc-gen-go-json v1.4.0/go.mod h1:7xYRiu4k/ioxM2/nqq2lyXLr4Lj4Nyx7AvYjr7rJSww= +github.com/TheThingsIndustries/protoc-gen-go-json v1.4.2 h1:WqNl7MOZimBlw3oYn+l63qJ89HCxInpB8c52jEz4FYE= +github.com/TheThingsIndustries/protoc-gen-go-json v1.4.2/go.mod h1:ieoFAumiOHd7ZwPakdqL2KoshR8ta9aTU0O0tdb1Rvw= github.com/TheThingsIndustries/throttled/v2 v2.7.1-noredis h1:uashKgjy7XCNZNb00+3GheWtJXnS9DnAkYQ1X89cAIg= github.com/TheThingsIndustries/throttled/v2 v2.7.1-noredis/go.mod h1:XC/YhKcHsxRy8shbYICwf+oWeYTCC2kpL5/clSJbt+U= github.com/TheThingsNetwork/go-cayenne-lib v1.1.0 h1:uw+WnTMSSwTo58/ob3ktWNBiCY2psIof8p3lKdxreAE= diff --git a/tools/go.mod b/tools/go.mod index 8056b4b734..4f7055573c 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -69,7 +69,7 @@ require ( github.com/RoaringBitmap/roaring v0.9.4 // indirect github.com/TheThingsIndustries/mystique v0.0.0-20211230093812-d4088bd06959 // indirect github.com/TheThingsIndustries/protoc-gen-go-flags v1.0.6 // indirect - github.com/TheThingsIndustries/protoc-gen-go-json v1.4.0 // indirect + github.com/TheThingsIndustries/protoc-gen-go-json v1.4.2 // indirect github.com/TheThingsNetwork/go-cayenne-lib v1.1.0 // indirect github.com/aws/aws-sdk-go v1.42.53 // indirect github.com/beorn7/perks v1.0.1 // indirect diff --git a/tools/go.sum b/tools/go.sum index fa27450b5a..86ff2ef3c8 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -84,8 +84,8 @@ github.com/TheThingsIndustries/mystique v0.0.0-20211230093812-d4088bd06959 h1:YR github.com/TheThingsIndustries/mystique v0.0.0-20211230093812-d4088bd06959/go.mod h1:zJmv+zv/E4SFsThOS+ExjtJf3M1x2MOziwyHI7l5zZo= github.com/TheThingsIndustries/protoc-gen-go-flags v1.0.6 h1:IzTyiZA4tbGGnAv4V7epr8EPjXlV4qK07+kLYt4uScc= github.com/TheThingsIndustries/protoc-gen-go-flags v1.0.6/go.mod h1:WFhbSHpgeGU32bQFmLRspFOd8tndSZe6JRaF45qve/o= -github.com/TheThingsIndustries/protoc-gen-go-json v1.4.0 h1:51GcLhX2se5RbQYb+++HTP+7qsrEIa5tdUb9+FPuFhs= -github.com/TheThingsIndustries/protoc-gen-go-json v1.4.0/go.mod h1:7xYRiu4k/ioxM2/nqq2lyXLr4Lj4Nyx7AvYjr7rJSww= +github.com/TheThingsIndustries/protoc-gen-go-json v1.4.2 h1:WqNl7MOZimBlw3oYn+l63qJ89HCxInpB8c52jEz4FYE= +github.com/TheThingsIndustries/protoc-gen-go-json v1.4.2/go.mod h1:ieoFAumiOHd7ZwPakdqL2KoshR8ta9aTU0O0tdb1Rvw= github.com/TheThingsIndustries/throttled/v2 v2.7.1-noredis h1:uashKgjy7XCNZNb00+3GheWtJXnS9DnAkYQ1X89cAIg= github.com/TheThingsIndustries/throttled/v2 v2.7.1-noredis/go.mod h1:XC/YhKcHsxRy8shbYICwf+oWeYTCC2kpL5/clSJbt+U= github.com/TheThingsNetwork/go-cayenne-lib v1.1.0 h1:uw+WnTMSSwTo58/ob3ktWNBiCY2psIof8p3lKdxreAE= diff --git a/tools/mage/proto.go b/tools/mage/proto.go index 227617dd09..54368b11b3 100644 --- a/tools/mage/proto.go +++ b/tools/mage/proto.go @@ -30,13 +30,14 @@ import ( const ( protocOut = "/out" - gogoProtoImage = "ghcr.io/thethingsindustries/protoc:gen-gogo-1.3.1" - jsonProtoImage = "ghcr.io/thethingsindustries/protoc:3.9.1-gen-go-json-1.4.0" - fieldMaskProtoImage = "ghcr.io/thethingsindustries/protoc:3.9.1-gen-fieldmask-0.6.2" - grpcGatewayProtoImage = "ghcr.io/thethingsindustries/protoc:gen-grpc-gateway-1.16.0" - openAPIv2ProtoImage = "ghcr.io/thethingsindustries/protoc:gen-grpc-gateway-2.10.3" - docProtoImage = "ghcr.io/thethingsindustries/protoc:gen-doc-1.4.1" - flagProtoImage = "ghcr.io/thethingsindustries/protoc:3.9.1-gen-go-flags-1.0.6" + goProtoImage = "ghcr.io/thethingsindustries/protoc:21.4-gen-go-1.28.1" + goGrpcProtoImage = "ghcr.io/thethingsindustries/protoc:21.5-gen-go-grpc-1.49.0" + jsonProtoImage = "ghcr.io/thethingsindustries/protoc:21.1-gen-go-json-1.4.2" + fieldMaskProtoImage = "ghcr.io/thethingsindustries/protoc:21.5-gen-fieldmask-0.7.2" + grpcGatewayProtoImage = "ghcr.io/thethingsindustries/protoc:21.5-gen-grpc-gateway-2.11.3" + openAPIv2ProtoImage = "ghcr.io/thethingsindustries/protoc:21.5-gen-grpc-gateway-2.11.3" + docProtoImage = "ghcr.io/thethingsindustries/protoc:3.19.4-gen-doc-1.5.1" + flagProtoImage = "ghcr.io/thethingsindustries/protoc:21.1-gen-go-flags-1.0.6" ) // Proto namespace. @@ -83,18 +84,10 @@ func withProtoc(image string, f func(pCtx *protocContext, protoc func(...string) return f(pCtx, protoc) } -var gogoConvs = func() []string { - var convs []string - for _, t := range []string{"any", "duration", "empty", "field_mask", "struct", "timestamp", "wrappers"} { - convs = append(convs, fmt.Sprintf("Mgoogle/protobuf/%s.proto=github.com/gogo/protobuf/types", t)) - } - return convs -}() - -func (p Proto) gogo(context.Context) error { - return withProtoc(gogoProtoImage, func(pCtx *protocContext, protoc func(...string) error) error { +func (p Proto) golang(context.Context) error { + return withProtoc(goProtoImage, func(pCtx *protocContext, protoc func(...string) error) error { if err := protoc( - fmt.Sprintf("--gogo_out=plugins=grpc,%s:%s", strings.Join(gogoConvs, ","), protocOut), + fmt.Sprintf("--go_out=:%s", protocOut), fmt.Sprintf("%s/api/*.proto", pCtx.WorkingDirectory), ); err != nil { return fmt.Errorf("failed to generate protos: %w", err) @@ -103,20 +96,25 @@ func (p Proto) gogo(context.Context) error { }) } -var jsonConvs = func() []string { - var convs []string - for _, t := range gogoConvs { - convs = append(convs, t+";types") - } - return convs -}() +func (p Proto) golangGrpc(context.Context) error { + return withProtoc(goGrpcProtoImage, func(pCtx *protocContext, protoc func(...string) error) error { + if err := protoc( + fmt.Sprintf("--go-grpc_out=:%s", protocOut), + fmt.Sprintf("%s/api/*.proto", pCtx.WorkingDirectory), + ); err != nil { + return fmt.Errorf("failed to generate protos: %w", err) + } + return nil + }) +} func (p Proto) json(context.Context) error { return withProtoc(jsonProtoImage, func(pCtx *protocContext, protoc func(...string) error) error { if err := protoc( - "--go-json_opt=lang=gogo", + "--go-json_opt=lang=go", "--go-json_opt=std=true", - fmt.Sprintf("--go-json_out=%s:%s", strings.Join(jsonConvs, ","), protocOut), + "--go-json_opt=legacy_fieldmask_marshaling=true", + fmt.Sprintf("--go-json_out=%s", protocOut), fmt.Sprintf("%s/api/*.proto", pCtx.WorkingDirectory), ); err != nil { return fmt.Errorf("failed to generate protos: %w", err) @@ -128,9 +126,9 @@ func (p Proto) json(context.Context) error { func (p Proto) flags(context.Context) error { return withProtoc(flagProtoImage, func(pCtx *protocContext, protoc func(...string) error) error { if err := protoc( - "--go-flags_opt=lang=gogo", + "--go-flags_opt=lang=go", "--go-flags_opt=customtype.getter-suffix=FromFlag", - fmt.Sprintf("--go-flags_out=%s:%s", strings.Join(jsonConvs, ","), protocOut), + fmt.Sprintf("--go-flags_out=%s", protocOut), fmt.Sprintf("%s/api/*.proto", pCtx.WorkingDirectory), ); err != nil { return fmt.Errorf("failed to generate protos: %w", err) @@ -142,7 +140,7 @@ func (p Proto) flags(context.Context) error { func (p Proto) fieldMask(context.Context) error { return withProtoc(fieldMaskProtoImage, func(pCtx *protocContext, protoc func(...string) error) error { if err := protoc( - fmt.Sprintf("--fieldmask_out=lang=gogo,%s:%s", strings.Join(gogoConvs, ","), protocOut), + fmt.Sprintf("--fieldmask_out=lang=go:%s", protocOut), fmt.Sprintf("%s/api/*.proto", pCtx.WorkingDirectory), ); err != nil { return fmt.Errorf("failed to generate protos: %w", err) @@ -152,28 +150,20 @@ func (p Proto) fieldMask(context.Context) error { } func (p Proto) grpcGateway(context.Context) error { - if err := withProtoc(grpcGatewayProtoImage, func(pCtx *protocContext, protoc func(...string) error) error { + return withProtoc(grpcGatewayProtoImage, func(pCtx *protocContext, protoc func(...string) error) error { if err := protoc( - fmt.Sprintf("--grpc-gateway_out=allow_delete_body=true,%s:%s", strings.Join(gogoConvs, ","), protocOut), + fmt.Sprintf("--grpc-gateway_out=allow_delete_body=true:%s", protocOut), fmt.Sprintf("%s/api/*.proto", pCtx.WorkingDirectory), ); err != nil { return fmt.Errorf("failed to generate protos: %w", err) } return nil - }); err != nil { - return err - } - - if err := sh.RunV(filepath.Join("tools", "mage", "scripts", "fix-grpc-gateway-names.sh"), "api"); err != nil { - return fmt.Errorf("failed to fix gRPC-gateway names: %w", err) - } - - return nil + }) } // Go generates Go protos. func (p Proto) Go(context.Context) error { - mg.Deps(p.gogo, p.fieldMask, p.grpcGateway, p.json, p.flags) + mg.Deps(p.golang, p.golangGrpc, p.fieldMask, p.grpcGateway, p.json, p.flags) ttnpb, err := filepath.Abs(filepath.Join("pkg", "ttnpb")) if err != nil { diff --git a/tools/mage/scripts/fix-grpc-gateway-names.sh b/tools/mage/scripts/fix-grpc-gateway-names.sh deleted file mode 100755 index 33fdd59e36..0000000000 --- a/tools/mage/scripts/fix-grpc-gateway-names.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -IFS=$'\n\t' - -function usage { - echo "Usage: $(basename "$0") " - exit 1 -} -[[ $# -eq 0 ]] && usage - -# TODO figure out a way to traverse only files imported by protos using grpc-gateway (google.api.http option) -protos=( ) -for d in ${@}; do - protos+=( ${d}/*.proto ) -done - -genPaths=() -perlArgs=() -for f in "${protos[@]}"; do - if grep -q '(google.api.http)' "${f}"; then - path=${f%".proto"}".pb.gw.go" - if grep -q 'option go_package' "${f}"; then - goPackage=$(grep 'option go_package' "${f}" | perl \ - -pe 's![[:space:]]*option[[:space:]]+go_package[[:space:]]*=[[:space:]]*"go.thethings.network/lorawan-stack/v3/([[:alnum:]_.\-/]+)".*!\1!') - path=${goPackage}/$(basename "${path}") - fi - genPaths+=( "${path}" ) - fi - - if grep -q '(google\.protobuf\.Empty)' "${f}"; then - perlArgs+=( "-pe s!empty\\.Empty!types.Empty!g;" ) - fi -done - -if [[ ${#perlArgs[@]} -ne 0 ]]; then - for f in "${genPaths[@]}"; do - perl -i -p ${perlArgs[*]} "${f}" - done -fi -exit 0 From c65b92b738b2b3c8d1fc7e5723b6c32078ed5350 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Thu, 29 Sep 2022 13:12:43 +0200 Subject: [PATCH 02/30] api: Regenerate --- api/api.swagger.json | 1 + pkg/ttnpb/_api.pb.go | 105 +- pkg/ttnpb/_api.pb.validate.go | 7 +- pkg/ttnpb/application.pb.go | 1866 ++- pkg/ttnpb/application.pb.validate.go | 9 +- pkg/ttnpb/application_flags.pb.go | 6 +- pkg/ttnpb/application_json.pb.go | 230 +- pkg/ttnpb/application_services.pb.go | 1123 +- pkg/ttnpb/application_services.pb.gw.go | 574 +- pkg/ttnpb/application_services.pb.validate.go | 7 +- pkg/ttnpb/application_services_grpc.pb.go | 768 ++ pkg/ttnpb/applicationserver.pb.go | 3081 +++-- pkg/ttnpb/applicationserver.pb.gw.go | 502 +- pkg/ttnpb/applicationserver.pb.setters.fm.go | 15 +- pkg/ttnpb/applicationserver.pb.validate.go | 7 +- pkg/ttnpb/applicationserver_flags.pb.go | 6 +- pkg/ttnpb/applicationserver_grpc.pb.go | 942 ++ ...plicationserver_integrations_storage.pb.go | 844 +- ...cationserver_integrations_storage.pb.gw.go | 103 +- ...server_integrations_storage.pb.validate.go | 7 +- ...tionserver_integrations_storage_grpc.pb.go | 173 + ...tionserver_integrations_storage_json.pb.go | 50 +- pkg/ttnpb/applicationserver_json.pb.go | 104 +- pkg/ttnpb/applicationserver_packages.pb.go | 2207 ++-- pkg/ttnpb/applicationserver_packages.pb.gw.go | 282 +- .../applicationserver_packages.pb.validate.go | 7 +- .../applicationserver_packages_flags.pb.go | 2 +- .../applicationserver_packages_grpc.pb.go | 413 + .../applicationserver_packages_json.pb.go | 256 +- pkg/ttnpb/applicationserver_pubsub.pb.go | 2505 ++-- pkg/ttnpb/applicationserver_pubsub.pb.gw.go | 186 +- .../applicationserver_pubsub.pb.setters.fm.go | 6 +- .../applicationserver_pubsub.pb.validate.go | 7 +- .../applicationserver_pubsub_flags.pb.go | 8 +- pkg/ttnpb/applicationserver_pubsub_grpc.pb.go | 251 + pkg/ttnpb/applicationserver_pubsub_json.pb.go | 222 +- pkg/ttnpb/applicationserver_web.pb.go | 2834 +++-- pkg/ttnpb/applicationserver_web.pb.gw.go | 240 +- .../applicationserver_web.pb.validate.go | 7 +- pkg/ttnpb/applicationserver_web_flags.pb.go | 6 +- pkg/ttnpb/applicationserver_web_grpc.pb.go | 323 + pkg/ttnpb/applicationserver_web_json.pb.go | 1211 ++ pkg/ttnpb/client.pb.go | 1384 ++- pkg/ttnpb/client.pb.setters.fm.go | 3 +- pkg/ttnpb/client.pb.validate.go | 7 +- pkg/ttnpb/client_flags.pb.go | 6 +- pkg/ttnpb/client_json.pb.go | 214 +- pkg/ttnpb/client_services.pb.go | 826 +- pkg/ttnpb/client_services.pb.gw.go | 430 +- pkg/ttnpb/client_services.pb.validate.go | 7 +- pkg/ttnpb/client_services_grpc.pb.go | 564 + pkg/ttnpb/cluster.pb.go | 245 +- pkg/ttnpb/cluster.pb.validate.go | 7 +- pkg/ttnpb/configuration_services.pb.go | 2238 ++-- pkg/ttnpb/configuration_services.pb.gw.go | 144 +- .../configuration_services.pb.setters.fm.go | 24 +- .../configuration_services.pb.validate.go | 7 +- pkg/ttnpb/configuration_services_flags.pb.go | 2 +- pkg/ttnpb/configuration_services_grpc.pb.go | 179 + pkg/ttnpb/configuration_services_json.pb.go | 42 +- pkg/ttnpb/contact_info.pb.go | 723 +- pkg/ttnpb/contact_info.pb.gw.go | 60 +- pkg/ttnpb/contact_info.pb.setters.fm.go | 6 +- pkg/ttnpb/contact_info.pb.validate.go | 7 +- pkg/ttnpb/contact_info_flags.pb.go | 6 +- pkg/ttnpb/contact_info_grpc.pb.go | 146 + pkg/ttnpb/contact_info_json.pb.go | 18 +- pkg/ttnpb/deviceclaimingserver.pb.go | 2304 ++-- pkg/ttnpb/deviceclaimingserver.pb.gw.go | 258 +- pkg/ttnpb/deviceclaimingserver.pb.validate.go | 7 +- pkg/ttnpb/deviceclaimingserver_grpc.pb.go | 471 + pkg/ttnpb/deviceclaimingserver_json.pb.go | 22 +- pkg/ttnpb/devicerepository.pb.go | 4653 ++++--- pkg/ttnpb/devicerepository.pb.gw.go | 636 +- pkg/ttnpb/devicerepository.pb.setters.fm.go | 9 +- pkg/ttnpb/devicerepository.pb.validate.go | 7 +- pkg/ttnpb/devicerepository_grpc.pb.go | 357 + pkg/ttnpb/devicerepository_json.pb.go | 516 +- pkg/ttnpb/email_messages.pb.go | 222 +- pkg/ttnpb/email_messages.pb.validate.go | 7 +- pkg/ttnpb/email_messages_json.pb.go | 4 +- pkg/ttnpb/end_device.pb.go | 7234 +++++++---- pkg/ttnpb/end_device.pb.setters.fm.go | 69 +- pkg/ttnpb/end_device.pb.validate.go | 7 +- pkg/ttnpb/end_device_flags.pb.go | 50 +- pkg/ttnpb/end_device_json.pb.go | 240 +- pkg/ttnpb/end_device_services.pb.go | 740 +- pkg/ttnpb/end_device_services.pb.gw.go | 200 +- pkg/ttnpb/end_device_services.pb.validate.go | 7 +- pkg/ttnpb/end_device_services_grpc.pb.go | 517 + pkg/ttnpb/enums.pb.go | 392 +- pkg/ttnpb/enums.pb.validate.go | 7 +- pkg/ttnpb/enums_json.pb.go | 4 +- pkg/ttnpb/error.pb.go | 300 +- pkg/ttnpb/error.pb.validate.go | 7 +- pkg/ttnpb/error_flags.pb.go | 2 +- pkg/ttnpb/events.pb.go | 915 +- pkg/ttnpb/events.pb.gw.go | 48 +- pkg/ttnpb/events.pb.validate.go | 7 +- pkg/ttnpb/events_grpc.pb.go | 173 + pkg/ttnpb/events_json.pb.go | 22 +- pkg/ttnpb/gateway.pb.go | 3786 ++++-- pkg/ttnpb/gateway.pb.setters.fm.go | 6 +- pkg/ttnpb/gateway.pb.validate.go | 9 +- pkg/ttnpb/gateway_configuration.pb.go | 433 +- pkg/ttnpb/gateway_configuration.pb.gw.go | 74 +- .../gateway_configuration.pb.validate.go | 7 +- pkg/ttnpb/gateway_configuration_grpc.pb.go | 106 + pkg/ttnpb/gateway_configuration_json.pb.go | 4 +- pkg/ttnpb/gateway_flags.pb.go | 12 +- pkg/ttnpb/gateway_json.pb.go | 220 +- pkg/ttnpb/gateway_services.pb.go | 1323 +- pkg/ttnpb/gateway_services.pb.gw.go | 546 +- pkg/ttnpb/gateway_services.pb.validate.go | 7 +- pkg/ttnpb/gateway_services_grpc.pb.go | 877 ++ pkg/ttnpb/gateway_services_json.pb.go | 10 +- pkg/ttnpb/gatewayserver.pb.go | 1280 +- pkg/ttnpb/gatewayserver.pb.gw.go | 118 +- pkg/ttnpb/gatewayserver.pb.validate.go | 7 +- pkg/ttnpb/gatewayserver_grpc.pb.go | 481 + pkg/ttnpb/gatewayserver_json.pb.go | 14 +- pkg/ttnpb/identifiers.pb.go | 1544 ++- pkg/ttnpb/identifiers.pb.validate.go | 7 +- pkg/ttnpb/identifiers_flags.pb.go | 2 +- pkg/ttnpb/identifiers_json.pb.go | 26 +- pkg/ttnpb/identityserver.pb.go | 2138 ++-- pkg/ttnpb/identityserver.pb.gw.go | 66 +- pkg/ttnpb/identityserver.pb.validate.go | 7 +- pkg/ttnpb/identityserver_grpc.pb.go | 198 + pkg/ttnpb/identityserver_json.pb.go | 10 +- pkg/ttnpb/join.pb.go | 497 +- pkg/ttnpb/join.pb.setters.fm.go | 6 +- pkg/ttnpb/join.pb.validate.go | 7 +- pkg/ttnpb/join_json.pb.go | 14 +- pkg/ttnpb/joinserver.pb.go | 3754 +++--- pkg/ttnpb/joinserver.pb.gw.go | 287 +- pkg/ttnpb/joinserver.pb.setters.fm.go | 9 +- pkg/ttnpb/joinserver.pb.validate.go | 7 +- pkg/ttnpb/joinserver_flags.pb.go | 6 +- pkg/ttnpb/joinserver_grpc.pb.go | 1257 ++ pkg/ttnpb/joinserver_json.pb.go | 100 +- pkg/ttnpb/keys.pb.go | 526 +- pkg/ttnpb/keys.pb.validate.go | 7 +- pkg/ttnpb/keys_flags.pb.go | 2 +- pkg/ttnpb/keys_json.pb.go | 4 +- pkg/ttnpb/lorawan.pb.go | 10216 ++++++++++------ pkg/ttnpb/lorawan.pb.setters.fm.go | 126 +- pkg/ttnpb/lorawan.pb.validate.go | 7 +- pkg/ttnpb/lorawan_flags.pb.go | 2 +- pkg/ttnpb/lorawan_json.pb.go | 90 +- pkg/ttnpb/messages.pb.go | 3323 +++-- pkg/ttnpb/messages.pb.setters.fm.go | 12 +- pkg/ttnpb/messages.pb.validate.go | 7 +- pkg/ttnpb/messages_flags.pb.go | 10 +- pkg/ttnpb/messages_json.pb.go | 90 +- pkg/ttnpb/metadata.pb.go | 1080 +- pkg/ttnpb/metadata.pb.setters.fm.go | 6 +- pkg/ttnpb/metadata.pb.validate.go | 7 +- pkg/ttnpb/metadata_flags.pb.go | 2 +- pkg/ttnpb/metadata_json.pb.go | 46 +- pkg/ttnpb/mqtt.pb.go | 251 +- pkg/ttnpb/mqtt.pb.validate.go | 7 +- pkg/ttnpb/networkserver.pb.go | 1359 +- pkg/ttnpb/networkserver.pb.gw.go | 278 +- pkg/ttnpb/networkserver.pb.setters.fm.go | 3 +- pkg/ttnpb/networkserver.pb.validate.go | 7 +- pkg/ttnpb/networkserver_flags.pb.go | 2 +- pkg/ttnpb/networkserver_grpc.pb.go | 720 ++ pkg/ttnpb/networkserver_json.pb.go | 4 +- pkg/ttnpb/notification_service.pb.go | 1317 +- pkg/ttnpb/notification_service.pb.gw.go | 64 +- .../notification_service.pb.setters.fm.go | 9 +- pkg/ttnpb/notification_service.pb.validate.go | 7 +- pkg/ttnpb/notification_service_flags.pb.go | 2 +- pkg/ttnpb/notification_service_grpc.pb.go | 188 + pkg/ttnpb/notification_service_json.pb.go | 38 +- pkg/ttnpb/oauth.pb.go | 1277 +- pkg/ttnpb/oauth.pb.validate.go | 7 +- pkg/ttnpb/oauth_json.pb.go | 54 +- pkg/ttnpb/oauth_services.pb.go | 392 +- pkg/ttnpb/oauth_services.pb.gw.go | 128 +- pkg/ttnpb/oauth_services.pb.validate.go | 7 +- pkg/ttnpb/oauth_services_grpc.pb.go | 223 + pkg/ttnpb/organization.pb.go | 1684 ++- pkg/ttnpb/organization.pb.validate.go | 9 +- pkg/ttnpb/organization_flags.pb.go | 6 +- pkg/ttnpb/organization_json.pb.go | 230 +- pkg/ttnpb/organization_services.pb.go | 1055 +- pkg/ttnpb/organization_services.pb.gw.go | 460 +- .../organization_services.pb.validate.go | 7 +- pkg/ttnpb/organization_services_grpc.pb.go | 732 ++ pkg/ttnpb/packetbrokeragent.pb.go | 4020 +++--- pkg/ttnpb/packetbrokeragent.pb.gw.go | 682 +- pkg/ttnpb/packetbrokeragent.pb.validate.go | 7 +- pkg/ttnpb/packetbrokeragent_flags.pb.go | 6 +- pkg/ttnpb/packetbrokeragent_grpc.pb.go | 938 ++ pkg/ttnpb/packetbrokeragent_json.pb.go | 28 +- pkg/ttnpb/picture.pb.go | 332 +- pkg/ttnpb/picture.pb.validate.go | 7 +- pkg/ttnpb/qrcodegenerator.pb.go | 1162 +- pkg/ttnpb/qrcodegenerator.pb.gw.go | 148 +- pkg/ttnpb/qrcodegenerator.pb.validate.go | 7 +- pkg/ttnpb/qrcodegenerator_grpc.pb.go | 223 + pkg/ttnpb/qrcodegenerator_json.pb.go | 80 +- pkg/ttnpb/regional.pb.go | 710 +- pkg/ttnpb/regional.pb.validate.go | 7 +- pkg/ttnpb/rights.pb.go | 1228 +- pkg/ttnpb/rights.pb.validate.go | 9 +- pkg/ttnpb/rights_flags.pb.go | 10 +- pkg/ttnpb/rights_json.pb.go | 26 +- pkg/ttnpb/search_services.pb.go | 2165 ++-- pkg/ttnpb/search_services.pb.gw.go | 304 +- pkg/ttnpb/search_services.pb.validate.go | 7 +- pkg/ttnpb/search_services_flags.pb.go | 16 +- pkg/ttnpb/search_services_grpc.pb.go | 396 + pkg/ttnpb/search_services_json.pb.go | 682 +- pkg/ttnpb/secrets.pb.go | 238 +- pkg/ttnpb/secrets.pb.validate.go | 7 +- pkg/ttnpb/secrets_flags.pb.go | 2 +- pkg/ttnpb/user.pb.go | 2914 +++-- pkg/ttnpb/user.pb.setters.fm.go | 3 +- pkg/ttnpb/user.pb.validate.go | 9 +- pkg/ttnpb/user_flags.pb.go | 8 +- pkg/ttnpb/user_json.pb.go | 218 +- pkg/ttnpb/user_services.pb.go | 1323 +- pkg/ttnpb/user_services.pb.gw.go | 564 +- pkg/ttnpb/user_services.pb.validate.go | 7 +- pkg/ttnpb/user_services_grpc.pb.go | 1007 ++ 228 files changed, 71602 insertions(+), 42462 deletions(-) create mode 100644 pkg/ttnpb/application_services_grpc.pb.go create mode 100644 pkg/ttnpb/applicationserver_grpc.pb.go create mode 100644 pkg/ttnpb/applicationserver_integrations_storage_grpc.pb.go create mode 100644 pkg/ttnpb/applicationserver_packages_grpc.pb.go create mode 100644 pkg/ttnpb/applicationserver_pubsub_grpc.pb.go create mode 100644 pkg/ttnpb/applicationserver_web_grpc.pb.go create mode 100644 pkg/ttnpb/applicationserver_web_json.pb.go create mode 100644 pkg/ttnpb/client_services_grpc.pb.go create mode 100644 pkg/ttnpb/configuration_services_grpc.pb.go create mode 100644 pkg/ttnpb/contact_info_grpc.pb.go create mode 100644 pkg/ttnpb/deviceclaimingserver_grpc.pb.go create mode 100644 pkg/ttnpb/devicerepository_grpc.pb.go create mode 100644 pkg/ttnpb/end_device_services_grpc.pb.go create mode 100644 pkg/ttnpb/events_grpc.pb.go create mode 100644 pkg/ttnpb/gateway_configuration_grpc.pb.go create mode 100644 pkg/ttnpb/gateway_services_grpc.pb.go create mode 100644 pkg/ttnpb/gatewayserver_grpc.pb.go create mode 100644 pkg/ttnpb/identityserver_grpc.pb.go create mode 100644 pkg/ttnpb/joinserver_grpc.pb.go create mode 100644 pkg/ttnpb/networkserver_grpc.pb.go create mode 100644 pkg/ttnpb/notification_service_grpc.pb.go create mode 100644 pkg/ttnpb/oauth_services_grpc.pb.go create mode 100644 pkg/ttnpb/organization_services_grpc.pb.go create mode 100644 pkg/ttnpb/packetbrokeragent_grpc.pb.go create mode 100644 pkg/ttnpb/qrcodegenerator_grpc.pb.go create mode 100644 pkg/ttnpb/search_services_grpc.pb.go create mode 100644 pkg/ttnpb/user_services_grpc.pb.go diff --git a/api/api.swagger.json b/api/api.swagger.json index 25212cd7a9..a927832657 100644 --- a/api/api.swagger.json +++ b/api/api.swagger.json @@ -6342,6 +6342,7 @@ "parameters": [ { "name": "body", + "description": "EntityIdentifiers contains one of the possible entity identifiers.", "in": "body", "required": true, "schema": { diff --git a/pkg/ttnpb/_api.pb.go b/pkg/ttnpb/_api.pb.go index 96080beb9c..ae28896550 100644 --- a/pkg/ttnpb/_api.pb.go +++ b/pkg/ttnpb/_api.pb.go @@ -1,44 +1,87 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/_api.proto +// Package documentation should be added in the comment block below: + // The Things Stack for LoRaWAN v3 API package ttnpb import ( - fmt "fmt" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - golang_proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -func init() { proto.RegisterFile("lorawan-stack/api/_api.proto", fileDescriptor_c21bd9eaf38d2e81) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/_api.proto", fileDescriptor_c21bd9eaf38d2e81) +var File_lorawan_stack_api__api_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api__api_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x2d, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x35, 0x5a, + 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, + 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var file_lorawan_stack_api__api_proto_goTypes = []interface{}{} +var file_lorawan_stack_api__api_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name } -var fileDescriptor_c21bd9eaf38d2e81 = []byte{ - // 144 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xc9, 0xc9, 0x2f, 0x4a, - 0x2c, 0x4f, 0xcc, 0xd3, 0x2d, 0x2e, 0x49, 0x4c, 0xce, 0xd6, 0x4f, 0x2c, 0xc8, 0xd4, 0x8f, 0x4f, - 0x2c, 0xc8, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x2b, 0x29, 0xc9, 0xd3, 0x83, 0xaa, - 0xd0, 0x2b, 0x33, 0x96, 0xd2, 0x4d, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, - 0x4f, 0xcf, 0x4f, 0xcf, 0xd7, 0x07, 0x2b, 0x4b, 0x2a, 0x4d, 0x03, 0xf3, 0xc0, 0x1c, 0x30, 0x0b, - 0xa2, 0xdd, 0xc9, 0xf4, 0xc0, 0x63, 0x39, 0xc6, 0x28, 0xfd, 0xf4, 0x7c, 0xbd, 0x92, 0x8c, 0xd4, - 0x92, 0x8c, 0xcc, 0xbc, 0xf4, 0x62, 0xbd, 0xbc, 0xd4, 0x92, 0xf2, 0xfc, 0xa2, 0x6c, 0x7d, 0x54, - 0x7b, 0xcb, 0x8c, 0xf5, 0x0b, 0xb2, 0xd3, 0xf5, 0x4b, 0x4a, 0xf2, 0x0a, 0x92, 0x92, 0xd8, 0xc0, - 0xba, 0x8d, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xc8, 0x05, 0xe2, 0xc9, 0x9c, 0x00, 0x00, 0x00, +func init() { file_lorawan_stack_api__api_proto_init() } +func file_lorawan_stack_api__api_proto_init() { + if File_lorawan_stack_api__api_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api__api_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api__api_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api__api_proto_depIdxs, + }.Build() + File_lorawan_stack_api__api_proto = out.File + file_lorawan_stack_api__api_proto_rawDesc = nil + file_lorawan_stack_api__api_proto_goTypes = nil + file_lorawan_stack_api__api_proto_depIdxs = nil } diff --git a/pkg/ttnpb/_api.pb.validate.go b/pkg/ttnpb/_api.pb.validate.go index d17bbda916..90a1820015 100644 --- a/pkg/ttnpb/_api.pb.validate.go +++ b/pkg/ttnpb/_api.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,8 +29,5 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) - -// define the regex for a UUID once up-front -var __api_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") diff --git a/pkg/ttnpb/application.pb.go b/pkg/ttnpb/application.pb.go index 89e2d54a8c..877c360e8b 100644 --- a/pkg/ttnpb/application.pb.go +++ b/pkg/ttnpb/application.pb.go @@ -1,43 +1,60 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/application.proto package ttnpb import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // Application is the message that defines an Application in the network. type Application struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The identifiers of the application. These are public and can be seen by any authenticated user in the network. Ids *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` // When the application was created. This information is public and can be seen by any authenticated user in the network. - CreatedAt *types.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // When the application was last updated. This information is public and can be seen by any authenticated user in the network. - UpdatedAt *types.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // When the application was deleted. This information is public and can be seen by any authenticated user in the network. - DeletedAt *types.Timestamp `protobuf:"bytes,8,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` + DeletedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` // The name of the application. Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` // A description for the application. @@ -46,7 +63,9 @@ type Application struct { Attributes map[string]string `protobuf:"bytes,6,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Contact information for this application. Typically used to indicate who to contact with technical/security questions about the application. // This field is deprecated. Use administrative_contact and technical_contact instead. - ContactInfo []*ContactInfo `protobuf:"bytes,7,rep,name=contact_info,json=contactInfo,proto3" json:"contact_info,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Do not use. + ContactInfo []*ContactInfo `protobuf:"bytes,7,rep,name=contact_info,json=contactInfo,proto3" json:"contact_info,omitempty"` AdministrativeContact *OrganizationOrUserIdentifiers `protobuf:"bytes,10,opt,name=administrative_contact,json=administrativeContact,proto3" json:"administrative_contact,omitempty"` TechnicalContact *OrganizationOrUserIdentifiers `protobuf:"bytes,11,opt,name=technical_contact,json=technicalContact,proto3" json:"technical_contact,omitempty"` // The address of the Network Server where this application is supposed to be registered. @@ -75,266 +94,302 @@ type Application struct { // the normal port inference (with DNS lookup, otherwise defaults) is used. // The connection shall be established with transport layer security (TLS). // Custom certificate authorities may be configured out-of-band. - JoinServerAddress string `protobuf:"bytes,14,opt,name=join_server_address,json=joinServerAddress,proto3" json:"join_server_address,omitempty"` - DevEuiCounter uint32 `protobuf:"varint,9,opt,name=dev_eui_counter,json=devEuiCounter,proto3" json:"dev_eui_counter,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + JoinServerAddress string `protobuf:"bytes,14,opt,name=join_server_address,json=joinServerAddress,proto3" json:"join_server_address,omitempty"` + DevEuiCounter uint32 `protobuf:"varint,9,opt,name=dev_eui_counter,json=devEuiCounter,proto3" json:"dev_eui_counter,omitempty"` } -func (m *Application) Reset() { *m = Application{} } -func (m *Application) String() string { return proto.CompactTextString(m) } -func (*Application) ProtoMessage() {} -func (*Application) Descriptor() ([]byte, []int) { - return fileDescriptor_57d90136b1f4f7b1, []int{0} -} -func (m *Application) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Application.Unmarshal(m, b) -} -func (m *Application) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Application.Marshal(b, m, deterministic) -} -func (m *Application) XXX_Merge(src proto.Message) { - xxx_messageInfo_Application.Merge(m, src) +func (x *Application) Reset() { + *x = Application{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_application_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Application) XXX_Size() int { - return xxx_messageInfo_Application.Size(m) + +func (x *Application) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Application) XXX_DiscardUnknown() { - xxx_messageInfo_Application.DiscardUnknown(m) + +func (*Application) ProtoMessage() {} + +func (x *Application) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_application_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Application proto.InternalMessageInfo +// Deprecated: Use Application.ProtoReflect.Descriptor instead. +func (*Application) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_application_proto_rawDescGZIP(), []int{0} +} -func (m *Application) GetIds() *ApplicationIdentifiers { - if m != nil { - return m.Ids +func (x *Application) GetIds() *ApplicationIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *Application) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *Application) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *Application) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *Application) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *Application) GetDeletedAt() *types.Timestamp { - if m != nil { - return m.DeletedAt +func (x *Application) GetDeletedAt() *timestamppb.Timestamp { + if x != nil { + return x.DeletedAt } return nil } -func (m *Application) GetName() string { - if m != nil { - return m.Name +func (x *Application) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *Application) GetDescription() string { - if m != nil { - return m.Description +func (x *Application) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Application) GetAttributes() map[string]string { - if m != nil { - return m.Attributes +func (x *Application) GetAttributes() map[string]string { + if x != nil { + return x.Attributes } return nil } // Deprecated: Do not use. -func (m *Application) GetContactInfo() []*ContactInfo { - if m != nil { - return m.ContactInfo +func (x *Application) GetContactInfo() []*ContactInfo { + if x != nil { + return x.ContactInfo } return nil } -func (m *Application) GetAdministrativeContact() *OrganizationOrUserIdentifiers { - if m != nil { - return m.AdministrativeContact +func (x *Application) GetAdministrativeContact() *OrganizationOrUserIdentifiers { + if x != nil { + return x.AdministrativeContact } return nil } -func (m *Application) GetTechnicalContact() *OrganizationOrUserIdentifiers { - if m != nil { - return m.TechnicalContact +func (x *Application) GetTechnicalContact() *OrganizationOrUserIdentifiers { + if x != nil { + return x.TechnicalContact } return nil } -func (m *Application) GetNetworkServerAddress() string { - if m != nil { - return m.NetworkServerAddress +func (x *Application) GetNetworkServerAddress() string { + if x != nil { + return x.NetworkServerAddress } return "" } -func (m *Application) GetApplicationServerAddress() string { - if m != nil { - return m.ApplicationServerAddress +func (x *Application) GetApplicationServerAddress() string { + if x != nil { + return x.ApplicationServerAddress } return "" } -func (m *Application) GetJoinServerAddress() string { - if m != nil { - return m.JoinServerAddress +func (x *Application) GetJoinServerAddress() string { + if x != nil { + return x.JoinServerAddress } return "" } -func (m *Application) GetDevEuiCounter() uint32 { - if m != nil { - return m.DevEuiCounter +func (x *Application) GetDevEuiCounter() uint32 { + if x != nil { + return x.DevEuiCounter } return 0 } type Applications struct { - Applications []*Application `protobuf:"bytes,1,rep,name=applications,proto3" json:"applications,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Applications) Reset() { *m = Applications{} } -func (m *Applications) String() string { return proto.CompactTextString(m) } -func (*Applications) ProtoMessage() {} -func (*Applications) Descriptor() ([]byte, []int) { - return fileDescriptor_57d90136b1f4f7b1, []int{1} -} -func (m *Applications) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Applications.Unmarshal(m, b) + Applications []*Application `protobuf:"bytes,1,rep,name=applications,proto3" json:"applications,omitempty"` } -func (m *Applications) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Applications.Marshal(b, m, deterministic) -} -func (m *Applications) XXX_Merge(src proto.Message) { - xxx_messageInfo_Applications.Merge(m, src) + +func (x *Applications) Reset() { + *x = Applications{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_application_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Applications) XXX_Size() int { - return xxx_messageInfo_Applications.Size(m) + +func (x *Applications) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Applications) XXX_DiscardUnknown() { - xxx_messageInfo_Applications.DiscardUnknown(m) + +func (*Applications) ProtoMessage() {} + +func (x *Applications) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_application_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Applications proto.InternalMessageInfo +// Deprecated: Use Applications.ProtoReflect.Descriptor instead. +func (*Applications) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_application_proto_rawDescGZIP(), []int{1} +} -func (m *Applications) GetApplications() []*Application { - if m != nil { - return m.Applications +func (x *Applications) GetApplications() []*Application { + if x != nil { + return x.Applications } return nil } type IssueDevEUIResponse struct { - DevEui []byte `protobuf:"bytes,1,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *IssueDevEUIResponse) Reset() { *m = IssueDevEUIResponse{} } -func (m *IssueDevEUIResponse) String() string { return proto.CompactTextString(m) } -func (*IssueDevEUIResponse) ProtoMessage() {} -func (*IssueDevEUIResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_57d90136b1f4f7b1, []int{2} + DevEui []byte `protobuf:"bytes,1,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"` } -func (m *IssueDevEUIResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IssueDevEUIResponse.Unmarshal(m, b) -} -func (m *IssueDevEUIResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IssueDevEUIResponse.Marshal(b, m, deterministic) -} -func (m *IssueDevEUIResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_IssueDevEUIResponse.Merge(m, src) + +func (x *IssueDevEUIResponse) Reset() { + *x = IssueDevEUIResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_application_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *IssueDevEUIResponse) XXX_Size() int { - return xxx_messageInfo_IssueDevEUIResponse.Size(m) + +func (x *IssueDevEUIResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *IssueDevEUIResponse) XXX_DiscardUnknown() { - xxx_messageInfo_IssueDevEUIResponse.DiscardUnknown(m) + +func (*IssueDevEUIResponse) ProtoMessage() {} + +func (x *IssueDevEUIResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_application_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_IssueDevEUIResponse proto.InternalMessageInfo +// Deprecated: Use IssueDevEUIResponse.ProtoReflect.Descriptor instead. +func (*IssueDevEUIResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_application_proto_rawDescGZIP(), []int{2} +} -func (m *IssueDevEUIResponse) GetDevEui() []byte { - if m != nil { - return m.DevEui +func (x *IssueDevEUIResponse) GetDevEui() []byte { + if x != nil { + return x.DevEui } return nil } type GetApplicationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` // The names of the application fields that should be returned. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *GetApplicationRequest) Reset() { *m = GetApplicationRequest{} } -func (m *GetApplicationRequest) String() string { return proto.CompactTextString(m) } -func (*GetApplicationRequest) ProtoMessage() {} -func (*GetApplicationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_57d90136b1f4f7b1, []int{3} -} -func (m *GetApplicationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetApplicationRequest.Unmarshal(m, b) -} -func (m *GetApplicationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetApplicationRequest.Marshal(b, m, deterministic) -} -func (m *GetApplicationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetApplicationRequest.Merge(m, src) +func (x *GetApplicationRequest) Reset() { + *x = GetApplicationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_application_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetApplicationRequest) XXX_Size() int { - return xxx_messageInfo_GetApplicationRequest.Size(m) + +func (x *GetApplicationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetApplicationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetApplicationRequest.DiscardUnknown(m) + +func (*GetApplicationRequest) ProtoMessage() {} + +func (x *GetApplicationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_application_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetApplicationRequest proto.InternalMessageInfo +// Deprecated: Use GetApplicationRequest.ProtoReflect.Descriptor instead. +func (*GetApplicationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_application_proto_rawDescGZIP(), []int{3} +} -func (m *GetApplicationRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *GetApplicationRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *GetApplicationRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *GetApplicationRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type ListApplicationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // By default we list all applications the caller has rights on. // Set the user or the organization (not both) to instead list the applications // where the user or organization is collaborator on. Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,1,opt,name=collaborator,proto3" json:"collaborator,omitempty"` // The names of the application fields that should be returned. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. Order string `protobuf:"bytes,3,opt,name=order,proto3" json:"order,omitempty"` @@ -343,173 +398,200 @@ type ListApplicationsRequest struct { // Page number for pagination. 0 is interpreted as 1. Page uint32 `protobuf:"varint,5,opt,name=page,proto3" json:"page,omitempty"` // Only return recently deleted applications. - Deleted bool `protobuf:"varint,6,opt,name=deleted,proto3" json:"deleted,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Deleted bool `protobuf:"varint,6,opt,name=deleted,proto3" json:"deleted,omitempty"` } -func (m *ListApplicationsRequest) Reset() { *m = ListApplicationsRequest{} } -func (m *ListApplicationsRequest) String() string { return proto.CompactTextString(m) } -func (*ListApplicationsRequest) ProtoMessage() {} -func (*ListApplicationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_57d90136b1f4f7b1, []int{4} -} -func (m *ListApplicationsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListApplicationsRequest.Unmarshal(m, b) -} -func (m *ListApplicationsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListApplicationsRequest.Marshal(b, m, deterministic) -} -func (m *ListApplicationsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListApplicationsRequest.Merge(m, src) +func (x *ListApplicationsRequest) Reset() { + *x = ListApplicationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_application_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListApplicationsRequest) XXX_Size() int { - return xxx_messageInfo_ListApplicationsRequest.Size(m) + +func (x *ListApplicationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListApplicationsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListApplicationsRequest.DiscardUnknown(m) + +func (*ListApplicationsRequest) ProtoMessage() {} + +func (x *ListApplicationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_application_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListApplicationsRequest proto.InternalMessageInfo +// Deprecated: Use ListApplicationsRequest.ProtoReflect.Descriptor instead. +func (*ListApplicationsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_application_proto_rawDescGZIP(), []int{4} +} -func (m *ListApplicationsRequest) GetCollaborator() *OrganizationOrUserIdentifiers { - if m != nil { - return m.Collaborator +func (x *ListApplicationsRequest) GetCollaborator() *OrganizationOrUserIdentifiers { + if x != nil { + return x.Collaborator } return nil } -func (m *ListApplicationsRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *ListApplicationsRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *ListApplicationsRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListApplicationsRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *ListApplicationsRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListApplicationsRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListApplicationsRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListApplicationsRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *ListApplicationsRequest) GetDeleted() bool { - if m != nil { - return m.Deleted +func (x *ListApplicationsRequest) GetDeleted() bool { + if x != nil { + return x.Deleted } return false } type CreateApplicationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Application *Application `protobuf:"bytes,1,opt,name=application,proto3" json:"application,omitempty"` // Collaborator to grant all rights on the newly created application. - Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` } -func (m *CreateApplicationRequest) Reset() { *m = CreateApplicationRequest{} } -func (m *CreateApplicationRequest) String() string { return proto.CompactTextString(m) } -func (*CreateApplicationRequest) ProtoMessage() {} -func (*CreateApplicationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_57d90136b1f4f7b1, []int{5} -} -func (m *CreateApplicationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateApplicationRequest.Unmarshal(m, b) -} -func (m *CreateApplicationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateApplicationRequest.Marshal(b, m, deterministic) -} -func (m *CreateApplicationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateApplicationRequest.Merge(m, src) +func (x *CreateApplicationRequest) Reset() { + *x = CreateApplicationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_application_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateApplicationRequest) XXX_Size() int { - return xxx_messageInfo_CreateApplicationRequest.Size(m) + +func (x *CreateApplicationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateApplicationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateApplicationRequest.DiscardUnknown(m) + +func (*CreateApplicationRequest) ProtoMessage() {} + +func (x *CreateApplicationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_application_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CreateApplicationRequest proto.InternalMessageInfo +// Deprecated: Use CreateApplicationRequest.ProtoReflect.Descriptor instead. +func (*CreateApplicationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_application_proto_rawDescGZIP(), []int{5} +} -func (m *CreateApplicationRequest) GetApplication() *Application { - if m != nil { - return m.Application +func (x *CreateApplicationRequest) GetApplication() *Application { + if x != nil { + return x.Application } return nil } -func (m *CreateApplicationRequest) GetCollaborator() *OrganizationOrUserIdentifiers { - if m != nil { - return m.Collaborator +func (x *CreateApplicationRequest) GetCollaborator() *OrganizationOrUserIdentifiers { + if x != nil { + return x.Collaborator } return nil } type UpdateApplicationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Application *Application `protobuf:"bytes,1,opt,name=application,proto3" json:"application,omitempty"` // The names of the application fields that should be updated. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *UpdateApplicationRequest) Reset() { *m = UpdateApplicationRequest{} } -func (m *UpdateApplicationRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateApplicationRequest) ProtoMessage() {} -func (*UpdateApplicationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_57d90136b1f4f7b1, []int{6} -} -func (m *UpdateApplicationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateApplicationRequest.Unmarshal(m, b) -} -func (m *UpdateApplicationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateApplicationRequest.Marshal(b, m, deterministic) -} -func (m *UpdateApplicationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateApplicationRequest.Merge(m, src) +func (x *UpdateApplicationRequest) Reset() { + *x = UpdateApplicationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_application_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UpdateApplicationRequest) XXX_Size() int { - return xxx_messageInfo_UpdateApplicationRequest.Size(m) + +func (x *UpdateApplicationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UpdateApplicationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateApplicationRequest.DiscardUnknown(m) + +func (*UpdateApplicationRequest) ProtoMessage() {} + +func (x *UpdateApplicationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_application_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UpdateApplicationRequest proto.InternalMessageInfo +// Deprecated: Use UpdateApplicationRequest.ProtoReflect.Descriptor instead. +func (*UpdateApplicationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_application_proto_rawDescGZIP(), []int{6} +} -func (m *UpdateApplicationRequest) GetApplication() *Application { - if m != nil { - return m.Application +func (x *UpdateApplicationRequest) GetApplication() *Application { + if x != nil { + return x.Application } return nil } -func (m *UpdateApplicationRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *UpdateApplicationRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type ListApplicationAPIKeysRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` // Order the results by this field path. // Default ordering is by ID. Prepend with a minus (-) to reverse the order. @@ -517,229 +599,265 @@ type ListApplicationAPIKeysRequest struct { // Limit the number of results per page. Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` } -func (m *ListApplicationAPIKeysRequest) Reset() { *m = ListApplicationAPIKeysRequest{} } -func (m *ListApplicationAPIKeysRequest) String() string { return proto.CompactTextString(m) } -func (*ListApplicationAPIKeysRequest) ProtoMessage() {} -func (*ListApplicationAPIKeysRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_57d90136b1f4f7b1, []int{7} -} -func (m *ListApplicationAPIKeysRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListApplicationAPIKeysRequest.Unmarshal(m, b) -} -func (m *ListApplicationAPIKeysRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListApplicationAPIKeysRequest.Marshal(b, m, deterministic) -} -func (m *ListApplicationAPIKeysRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListApplicationAPIKeysRequest.Merge(m, src) +func (x *ListApplicationAPIKeysRequest) Reset() { + *x = ListApplicationAPIKeysRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_application_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListApplicationAPIKeysRequest) XXX_Size() int { - return xxx_messageInfo_ListApplicationAPIKeysRequest.Size(m) + +func (x *ListApplicationAPIKeysRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListApplicationAPIKeysRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListApplicationAPIKeysRequest.DiscardUnknown(m) + +func (*ListApplicationAPIKeysRequest) ProtoMessage() {} + +func (x *ListApplicationAPIKeysRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_application_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListApplicationAPIKeysRequest proto.InternalMessageInfo +// Deprecated: Use ListApplicationAPIKeysRequest.ProtoReflect.Descriptor instead. +func (*ListApplicationAPIKeysRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_application_proto_rawDescGZIP(), []int{7} +} -func (m *ListApplicationAPIKeysRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *ListApplicationAPIKeysRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *ListApplicationAPIKeysRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListApplicationAPIKeysRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *ListApplicationAPIKeysRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListApplicationAPIKeysRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListApplicationAPIKeysRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListApplicationAPIKeysRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } type GetApplicationAPIKeyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` // Unique public identifier for the API key. - KeyId string `protobuf:"bytes,2,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + KeyId string `protobuf:"bytes,2,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` } -func (m *GetApplicationAPIKeyRequest) Reset() { *m = GetApplicationAPIKeyRequest{} } -func (m *GetApplicationAPIKeyRequest) String() string { return proto.CompactTextString(m) } -func (*GetApplicationAPIKeyRequest) ProtoMessage() {} -func (*GetApplicationAPIKeyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_57d90136b1f4f7b1, []int{8} -} -func (m *GetApplicationAPIKeyRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetApplicationAPIKeyRequest.Unmarshal(m, b) -} -func (m *GetApplicationAPIKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetApplicationAPIKeyRequest.Marshal(b, m, deterministic) -} -func (m *GetApplicationAPIKeyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetApplicationAPIKeyRequest.Merge(m, src) +func (x *GetApplicationAPIKeyRequest) Reset() { + *x = GetApplicationAPIKeyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_application_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetApplicationAPIKeyRequest) XXX_Size() int { - return xxx_messageInfo_GetApplicationAPIKeyRequest.Size(m) + +func (x *GetApplicationAPIKeyRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetApplicationAPIKeyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetApplicationAPIKeyRequest.DiscardUnknown(m) + +func (*GetApplicationAPIKeyRequest) ProtoMessage() {} + +func (x *GetApplicationAPIKeyRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_application_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetApplicationAPIKeyRequest proto.InternalMessageInfo +// Deprecated: Use GetApplicationAPIKeyRequest.ProtoReflect.Descriptor instead. +func (*GetApplicationAPIKeyRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_application_proto_rawDescGZIP(), []int{8} +} -func (m *GetApplicationAPIKeyRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *GetApplicationAPIKeyRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *GetApplicationAPIKeyRequest) GetKeyId() string { - if m != nil { - return m.KeyId +func (x *GetApplicationAPIKeyRequest) GetKeyId() string { + if x != nil { + return x.KeyId } return "" } type CreateApplicationAPIKeyRequest struct { - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Rights []Right `protobuf:"varint,3,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` - ExpiresAt *types.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateApplicationAPIKeyRequest) Reset() { *m = CreateApplicationAPIKeyRequest{} } -func (m *CreateApplicationAPIKeyRequest) String() string { return proto.CompactTextString(m) } -func (*CreateApplicationAPIKeyRequest) ProtoMessage() {} -func (*CreateApplicationAPIKeyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_57d90136b1f4f7b1, []int{9} -} -func (m *CreateApplicationAPIKeyRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateApplicationAPIKeyRequest.Unmarshal(m, b) -} -func (m *CreateApplicationAPIKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateApplicationAPIKeyRequest.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Rights []Right `protobuf:"varint,3,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` + ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` } -func (m *CreateApplicationAPIKeyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateApplicationAPIKeyRequest.Merge(m, src) + +func (x *CreateApplicationAPIKeyRequest) Reset() { + *x = CreateApplicationAPIKeyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_application_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateApplicationAPIKeyRequest) XXX_Size() int { - return xxx_messageInfo_CreateApplicationAPIKeyRequest.Size(m) + +func (x *CreateApplicationAPIKeyRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateApplicationAPIKeyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateApplicationAPIKeyRequest.DiscardUnknown(m) + +func (*CreateApplicationAPIKeyRequest) ProtoMessage() {} + +func (x *CreateApplicationAPIKeyRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_application_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CreateApplicationAPIKeyRequest proto.InternalMessageInfo +// Deprecated: Use CreateApplicationAPIKeyRequest.ProtoReflect.Descriptor instead. +func (*CreateApplicationAPIKeyRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_application_proto_rawDescGZIP(), []int{9} +} -func (m *CreateApplicationAPIKeyRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *CreateApplicationAPIKeyRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *CreateApplicationAPIKeyRequest) GetName() string { - if m != nil { - return m.Name +func (x *CreateApplicationAPIKeyRequest) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *CreateApplicationAPIKeyRequest) GetRights() []Right { - if m != nil { - return m.Rights +func (x *CreateApplicationAPIKeyRequest) GetRights() []Right { + if x != nil { + return x.Rights } return nil } -func (m *CreateApplicationAPIKeyRequest) GetExpiresAt() *types.Timestamp { - if m != nil { - return m.ExpiresAt +func (x *CreateApplicationAPIKeyRequest) GetExpiresAt() *timestamppb.Timestamp { + if x != nil { + return x.ExpiresAt } return nil } type UpdateApplicationAPIKeyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` ApiKey *APIKey `protobuf:"bytes,2,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` // The names of the api key fields that should be updated. - FieldMask *types.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *UpdateApplicationAPIKeyRequest) Reset() { *m = UpdateApplicationAPIKeyRequest{} } -func (m *UpdateApplicationAPIKeyRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateApplicationAPIKeyRequest) ProtoMessage() {} -func (*UpdateApplicationAPIKeyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_57d90136b1f4f7b1, []int{10} -} -func (m *UpdateApplicationAPIKeyRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateApplicationAPIKeyRequest.Unmarshal(m, b) -} -func (m *UpdateApplicationAPIKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateApplicationAPIKeyRequest.Marshal(b, m, deterministic) -} -func (m *UpdateApplicationAPIKeyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateApplicationAPIKeyRequest.Merge(m, src) +func (x *UpdateApplicationAPIKeyRequest) Reset() { + *x = UpdateApplicationAPIKeyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_application_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UpdateApplicationAPIKeyRequest) XXX_Size() int { - return xxx_messageInfo_UpdateApplicationAPIKeyRequest.Size(m) + +func (x *UpdateApplicationAPIKeyRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UpdateApplicationAPIKeyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateApplicationAPIKeyRequest.DiscardUnknown(m) + +func (*UpdateApplicationAPIKeyRequest) ProtoMessage() {} + +func (x *UpdateApplicationAPIKeyRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_application_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UpdateApplicationAPIKeyRequest proto.InternalMessageInfo +// Deprecated: Use UpdateApplicationAPIKeyRequest.ProtoReflect.Descriptor instead. +func (*UpdateApplicationAPIKeyRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_application_proto_rawDescGZIP(), []int{10} +} -func (m *UpdateApplicationAPIKeyRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *UpdateApplicationAPIKeyRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *UpdateApplicationAPIKeyRequest) GetApiKey() *APIKey { - if m != nil { - return m.ApiKey +func (x *UpdateApplicationAPIKeyRequest) GetApiKey() *APIKey { + if x != nil { + return x.ApiKey } return nil } -func (m *UpdateApplicationAPIKeyRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *UpdateApplicationAPIKeyRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type ListApplicationCollaboratorsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` // Limit the number of results per page. Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` @@ -747,294 +865,766 @@ type ListApplicationCollaboratorsRequest struct { Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. - Order string `protobuf:"bytes,4,opt,name=order,proto3" json:"order,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Order string `protobuf:"bytes,4,opt,name=order,proto3" json:"order,omitempty"` } -func (m *ListApplicationCollaboratorsRequest) Reset() { *m = ListApplicationCollaboratorsRequest{} } -func (m *ListApplicationCollaboratorsRequest) String() string { return proto.CompactTextString(m) } -func (*ListApplicationCollaboratorsRequest) ProtoMessage() {} -func (*ListApplicationCollaboratorsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_57d90136b1f4f7b1, []int{11} -} -func (m *ListApplicationCollaboratorsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListApplicationCollaboratorsRequest.Unmarshal(m, b) -} -func (m *ListApplicationCollaboratorsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListApplicationCollaboratorsRequest.Marshal(b, m, deterministic) -} -func (m *ListApplicationCollaboratorsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListApplicationCollaboratorsRequest.Merge(m, src) +func (x *ListApplicationCollaboratorsRequest) Reset() { + *x = ListApplicationCollaboratorsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_application_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListApplicationCollaboratorsRequest) XXX_Size() int { - return xxx_messageInfo_ListApplicationCollaboratorsRequest.Size(m) + +func (x *ListApplicationCollaboratorsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListApplicationCollaboratorsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListApplicationCollaboratorsRequest.DiscardUnknown(m) + +func (*ListApplicationCollaboratorsRequest) ProtoMessage() {} + +func (x *ListApplicationCollaboratorsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_application_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListApplicationCollaboratorsRequest proto.InternalMessageInfo +// Deprecated: Use ListApplicationCollaboratorsRequest.ProtoReflect.Descriptor instead. +func (*ListApplicationCollaboratorsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_application_proto_rawDescGZIP(), []int{11} +} -func (m *ListApplicationCollaboratorsRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *ListApplicationCollaboratorsRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *ListApplicationCollaboratorsRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListApplicationCollaboratorsRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListApplicationCollaboratorsRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListApplicationCollaboratorsRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *ListApplicationCollaboratorsRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListApplicationCollaboratorsRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } type GetApplicationCollaboratorRequest struct { - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` - Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GetApplicationCollaboratorRequest) Reset() { *m = GetApplicationCollaboratorRequest{} } -func (m *GetApplicationCollaboratorRequest) String() string { return proto.CompactTextString(m) } -func (*GetApplicationCollaboratorRequest) ProtoMessage() {} -func (*GetApplicationCollaboratorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_57d90136b1f4f7b1, []int{12} + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` } -func (m *GetApplicationCollaboratorRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetApplicationCollaboratorRequest.Unmarshal(m, b) -} -func (m *GetApplicationCollaboratorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetApplicationCollaboratorRequest.Marshal(b, m, deterministic) -} -func (m *GetApplicationCollaboratorRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetApplicationCollaboratorRequest.Merge(m, src) + +func (x *GetApplicationCollaboratorRequest) Reset() { + *x = GetApplicationCollaboratorRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_application_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetApplicationCollaboratorRequest) XXX_Size() int { - return xxx_messageInfo_GetApplicationCollaboratorRequest.Size(m) + +func (x *GetApplicationCollaboratorRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetApplicationCollaboratorRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetApplicationCollaboratorRequest.DiscardUnknown(m) + +func (*GetApplicationCollaboratorRequest) ProtoMessage() {} + +func (x *GetApplicationCollaboratorRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_application_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetApplicationCollaboratorRequest proto.InternalMessageInfo +// Deprecated: Use GetApplicationCollaboratorRequest.ProtoReflect.Descriptor instead. +func (*GetApplicationCollaboratorRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_application_proto_rawDescGZIP(), []int{12} +} -func (m *GetApplicationCollaboratorRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *GetApplicationCollaboratorRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *GetApplicationCollaboratorRequest) GetCollaborator() *OrganizationOrUserIdentifiers { - if m != nil { - return m.Collaborator +func (x *GetApplicationCollaboratorRequest) GetCollaborator() *OrganizationOrUserIdentifiers { + if x != nil { + return x.Collaborator } return nil } type SetApplicationCollaboratorRequest struct { - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` - Collaborator *Collaborator `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SetApplicationCollaboratorRequest) Reset() { *m = SetApplicationCollaboratorRequest{} } -func (m *SetApplicationCollaboratorRequest) String() string { return proto.CompactTextString(m) } -func (*SetApplicationCollaboratorRequest) ProtoMessage() {} -func (*SetApplicationCollaboratorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_57d90136b1f4f7b1, []int{13} -} -func (m *SetApplicationCollaboratorRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetApplicationCollaboratorRequest.Unmarshal(m, b) -} -func (m *SetApplicationCollaboratorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetApplicationCollaboratorRequest.Marshal(b, m, deterministic) + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + Collaborator *Collaborator `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` } -func (m *SetApplicationCollaboratorRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetApplicationCollaboratorRequest.Merge(m, src) + +func (x *SetApplicationCollaboratorRequest) Reset() { + *x = SetApplicationCollaboratorRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_application_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SetApplicationCollaboratorRequest) XXX_Size() int { - return xxx_messageInfo_SetApplicationCollaboratorRequest.Size(m) + +func (x *SetApplicationCollaboratorRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SetApplicationCollaboratorRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetApplicationCollaboratorRequest.DiscardUnknown(m) + +func (*SetApplicationCollaboratorRequest) ProtoMessage() {} + +func (x *SetApplicationCollaboratorRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_application_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SetApplicationCollaboratorRequest proto.InternalMessageInfo +// Deprecated: Use SetApplicationCollaboratorRequest.ProtoReflect.Descriptor instead. +func (*SetApplicationCollaboratorRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_application_proto_rawDescGZIP(), []int{13} +} -func (m *SetApplicationCollaboratorRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *SetApplicationCollaboratorRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *SetApplicationCollaboratorRequest) GetCollaborator() *Collaborator { - if m != nil { - return m.Collaborator +func (x *SetApplicationCollaboratorRequest) GetCollaborator() *Collaborator { + if x != nil { + return x.Collaborator } return nil } -func init() { - proto.RegisterType((*Application)(nil), "ttn.lorawan.v3.Application") - golang_proto.RegisterType((*Application)(nil), "ttn.lorawan.v3.Application") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.Application.AttributesEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.Application.AttributesEntry") - proto.RegisterType((*Applications)(nil), "ttn.lorawan.v3.Applications") - golang_proto.RegisterType((*Applications)(nil), "ttn.lorawan.v3.Applications") - proto.RegisterType((*IssueDevEUIResponse)(nil), "ttn.lorawan.v3.IssueDevEUIResponse") - golang_proto.RegisterType((*IssueDevEUIResponse)(nil), "ttn.lorawan.v3.IssueDevEUIResponse") - proto.RegisterType((*GetApplicationRequest)(nil), "ttn.lorawan.v3.GetApplicationRequest") - golang_proto.RegisterType((*GetApplicationRequest)(nil), "ttn.lorawan.v3.GetApplicationRequest") - proto.RegisterType((*ListApplicationsRequest)(nil), "ttn.lorawan.v3.ListApplicationsRequest") - golang_proto.RegisterType((*ListApplicationsRequest)(nil), "ttn.lorawan.v3.ListApplicationsRequest") - proto.RegisterType((*CreateApplicationRequest)(nil), "ttn.lorawan.v3.CreateApplicationRequest") - golang_proto.RegisterType((*CreateApplicationRequest)(nil), "ttn.lorawan.v3.CreateApplicationRequest") - proto.RegisterType((*UpdateApplicationRequest)(nil), "ttn.lorawan.v3.UpdateApplicationRequest") - golang_proto.RegisterType((*UpdateApplicationRequest)(nil), "ttn.lorawan.v3.UpdateApplicationRequest") - proto.RegisterType((*ListApplicationAPIKeysRequest)(nil), "ttn.lorawan.v3.ListApplicationAPIKeysRequest") - golang_proto.RegisterType((*ListApplicationAPIKeysRequest)(nil), "ttn.lorawan.v3.ListApplicationAPIKeysRequest") - proto.RegisterType((*GetApplicationAPIKeyRequest)(nil), "ttn.lorawan.v3.GetApplicationAPIKeyRequest") - golang_proto.RegisterType((*GetApplicationAPIKeyRequest)(nil), "ttn.lorawan.v3.GetApplicationAPIKeyRequest") - proto.RegisterType((*CreateApplicationAPIKeyRequest)(nil), "ttn.lorawan.v3.CreateApplicationAPIKeyRequest") - golang_proto.RegisterType((*CreateApplicationAPIKeyRequest)(nil), "ttn.lorawan.v3.CreateApplicationAPIKeyRequest") - proto.RegisterType((*UpdateApplicationAPIKeyRequest)(nil), "ttn.lorawan.v3.UpdateApplicationAPIKeyRequest") - golang_proto.RegisterType((*UpdateApplicationAPIKeyRequest)(nil), "ttn.lorawan.v3.UpdateApplicationAPIKeyRequest") - proto.RegisterType((*ListApplicationCollaboratorsRequest)(nil), "ttn.lorawan.v3.ListApplicationCollaboratorsRequest") - golang_proto.RegisterType((*ListApplicationCollaboratorsRequest)(nil), "ttn.lorawan.v3.ListApplicationCollaboratorsRequest") - proto.RegisterType((*GetApplicationCollaboratorRequest)(nil), "ttn.lorawan.v3.GetApplicationCollaboratorRequest") - golang_proto.RegisterType((*GetApplicationCollaboratorRequest)(nil), "ttn.lorawan.v3.GetApplicationCollaboratorRequest") - proto.RegisterType((*SetApplicationCollaboratorRequest)(nil), "ttn.lorawan.v3.SetApplicationCollaboratorRequest") - golang_proto.RegisterType((*SetApplicationCollaboratorRequest)(nil), "ttn.lorawan.v3.SetApplicationCollaboratorRequest") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/application.proto", fileDescriptor_57d90136b1f4f7b1) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/application.proto", fileDescriptor_57d90136b1f4f7b1) -} - -var fileDescriptor_57d90136b1f4f7b1 = []byte{ - // 1564 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x5f, 0x6c, 0x13, 0xc9, - 0x19, 0xcf, 0xac, 0x63, 0xc7, 0x1e, 0xe7, 0x8f, 0x59, 0x08, 0x5d, 0x02, 0x4d, 0x13, 0x13, 0x55, - 0x4e, 0xca, 0xda, 0xa9, 0xa3, 0x08, 0x88, 0x54, 0x05, 0x6f, 0x92, 0x52, 0x87, 0x52, 0xaa, 0x81, - 0x48, 0x6d, 0x02, 0x58, 0x13, 0xef, 0xc4, 0x1e, 0x6c, 0xef, 0x6e, 0x67, 0xc7, 0x06, 0x07, 0x78, - 0x41, 0x95, 0x2a, 0xf1, 0xd0, 0x4a, 0x3c, 0xf2, 0xd0, 0x4a, 0x7d, 0x44, 0xaa, 0x2a, 0x55, 0x7d, - 0x2f, 0x2f, 0x95, 0x4e, 0x27, 0xdd, 0xe9, 0xde, 0xef, 0xf1, 0xa4, 0xd3, 0xe9, 0xa4, 0x7b, 0x80, - 0x47, 0x3f, 0x9d, 0x76, 0x76, 0x17, 0x8f, 0xed, 0xc0, 0x11, 0x10, 0x39, 0x9e, 0xfc, 0x8d, 0xe7, - 0xfb, 0x7e, 0xf3, 0x7d, 0xdf, 0xfc, 0xbe, 0xef, 0x9b, 0x85, 0x67, 0xeb, 0x36, 0xc3, 0x77, 0xb1, - 0xa5, 0xbb, 0x1c, 0x97, 0x6b, 0x39, 0xec, 0xd0, 0x1c, 0x76, 0x9c, 0x3a, 0x2d, 0x63, 0x4e, 0x6d, - 0x2b, 0xeb, 0x30, 0x9b, 0xdb, 0xea, 0x38, 0xe7, 0x56, 0x36, 0x50, 0xcc, 0xb6, 0x96, 0xa6, 0x0a, - 0x15, 0xca, 0xab, 0xcd, 0xdd, 0x6c, 0xd9, 0x6e, 0xe4, 0x88, 0xd5, 0xb2, 0xdb, 0x0e, 0xb3, 0xef, - 0xb5, 0x73, 0x42, 0xb9, 0xac, 0x57, 0x88, 0xa5, 0xb7, 0x70, 0x9d, 0x9a, 0x98, 0x93, 0xdc, 0x80, - 0xe0, 0x43, 0x4e, 0xe9, 0x12, 0x44, 0xc5, 0xae, 0xd8, 0xbe, 0xf1, 0x6e, 0x73, 0x4f, 0xac, 0xc4, - 0x42, 0x48, 0x81, 0xfa, 0x9a, 0xa4, 0x7e, 0xa3, 0x4a, 0x6e, 0x54, 0xa9, 0x55, 0x71, 0x8b, 0x96, - 0xd9, 0x74, 0x39, 0xa3, 0xc4, 0x95, 0x8f, 0xae, 0xd8, 0xfa, 0x1d, 0xd7, 0xb6, 0x72, 0xd8, 0xb2, - 0x6c, 0x2e, 0xa2, 0x70, 0x03, 0x90, 0xf5, 0x43, 0x81, 0xec, 0xd5, 0x71, 0xc5, 0x3d, 0x00, 0x65, - 0xa6, 0x62, 0xdb, 0x95, 0x3a, 0xe9, 0x3a, 0xbc, 0x47, 0x49, 0xdd, 0x2c, 0x35, 0xb0, 0x5b, 0x0b, - 0x34, 0x7e, 0xd6, 0xaf, 0xc1, 0x69, 0x83, 0xb8, 0x1c, 0x37, 0x9c, 0x40, 0x61, 0x6e, 0x30, 0xe9, - 0x65, 0xdb, 0xe2, 0xb8, 0xcc, 0x4b, 0xd4, 0xda, 0x0b, 0x63, 0x3e, 0xe0, 0x6a, 0xa8, 0x49, 0x2c, - 0x4e, 0xf7, 0x28, 0x61, 0xa1, 0x37, 0xd3, 0x83, 0x4a, 0x8c, 0x56, 0xaa, 0x3c, 0xdc, 0xcf, 0x4a, - 0x41, 0xd9, 0x0e, 0xb1, 0xb0, 0x43, 0x5b, 0xf9, 0x9c, 0xed, 0x88, 0x88, 0x06, 0xa3, 0x4b, 0xbf, - 0x48, 0xc2, 0x64, 0xa1, 0x4b, 0x00, 0x75, 0x13, 0x46, 0xa8, 0xe9, 0x6a, 0x60, 0x06, 0x64, 0x92, - 0xf9, 0x9f, 0x67, 0x7b, 0x89, 0x90, 0x95, 0x34, 0x8b, 0x5d, 0xd7, 0x8c, 0x54, 0xc7, 0x88, 0x3e, - 0x06, 0x4a, 0x0a, 0xbc, 0x7c, 0x76, 0x6a, 0x38, 0x3e, 0x94, 0x01, 0xc8, 0x03, 0x51, 0xd7, 0x20, - 0x2c, 0x33, 0x82, 0x39, 0x31, 0x4b, 0x98, 0x6b, 0x8a, 0x80, 0x9c, 0xca, 0xfa, 0xc9, 0xca, 0x86, - 0xc9, 0xca, 0xde, 0x08, 0x93, 0x65, 0xc4, 0x7d, 0xf3, 0xd4, 0x10, 0x4a, 0x04, 0x76, 0x05, 0xee, - 0x81, 0x34, 0x1d, 0x33, 0x04, 0x89, 0x1c, 0x06, 0x24, 0xb0, 0xf3, 0x41, 0x4c, 0x52, 0x27, 0x01, - 0x48, 0xfc, 0x2d, 0x41, 0x80, 0x07, 0x12, 0xd8, 0x15, 0xb8, 0x7a, 0x1a, 0x0e, 0x5b, 0xb8, 0x41, - 0xb4, 0xe1, 0x19, 0x90, 0x49, 0x18, 0x23, 0x1d, 0x63, 0x98, 0x29, 0x5a, 0x1e, 0x89, 0x3f, 0xd5, - 0x05, 0x98, 0x34, 0x89, 0x5b, 0x66, 0x54, 0x64, 0x5a, 0x8b, 0x0a, 0x9d, 0x78, 0xc7, 0x88, 0xb2, - 0x88, 0xf6, 0xc5, 0x04, 0x92, 0x37, 0xd5, 0x47, 0x00, 0x42, 0xcc, 0x39, 0xa3, 0xbb, 0x4d, 0x4e, - 0x5c, 0x2d, 0x36, 0x13, 0xc9, 0x24, 0xf3, 0xbf, 0x78, 0x43, 0xae, 0xb3, 0x85, 0x57, 0xda, 0x1b, - 0x16, 0x67, 0x6d, 0x63, 0xb9, 0x63, 0xe4, 0x9f, 0x82, 0x5c, 0x0a, 0xa6, 0xe7, 0x58, 0x5a, 0x9b, - 0xcb, 0x4f, 0xdf, 0xde, 0xc1, 0xfa, 0xfe, 0xa2, 0x7e, 0xf1, 0x56, 0x66, 0x75, 0x65, 0x47, 0xbf, - 0xb5, 0x1a, 0x2e, 0xe7, 0xef, 0xe7, 0xcf, 0x3d, 0x9c, 0x5b, 0xf0, 0xbc, 0xf8, 0x04, 0x20, 0xe9, - 0x54, 0x75, 0x13, 0x8e, 0xca, 0x1c, 0xd4, 0x46, 0x84, 0x17, 0xa7, 0xfb, 0xbd, 0x58, 0xf3, 0x75, - 0x8a, 0xd6, 0x9e, 0x6d, 0xc0, 0x8e, 0x11, 0x7d, 0x02, 0x94, 0x14, 0xd4, 0x00, 0x4a, 0x96, 0xbb, - 0x1b, 0xaa, 0x09, 0x4f, 0x62, 0xb3, 0x41, 0x2d, 0xea, 0x72, 0x86, 0x39, 0x6d, 0x91, 0x52, 0xb0, - 0xab, 0x41, 0x91, 0x6a, 0xbd, 0x1f, 0xf5, 0x1a, 0xab, 0x60, 0x8b, 0xee, 0x8b, 0xe0, 0xae, 0xb1, - 0x2d, 0x97, 0x30, 0x89, 0x4e, 0x68, 0xb2, 0x17, 0x2c, 0x70, 0x41, 0xdd, 0x86, 0xc7, 0x38, 0x29, - 0x57, 0x2d, 0x5a, 0xc6, 0xf5, 0x57, 0x07, 0x24, 0xdf, 0xe5, 0x80, 0xd4, 0x2b, 0x9c, 0x10, 0xfb, - 0xff, 0x00, 0x9e, 0xb4, 0x08, 0xbf, 0x6b, 0xb3, 0x5a, 0xc9, 0x25, 0xac, 0x45, 0x58, 0x09, 0x9b, - 0x26, 0x23, 0xae, 0xab, 0x8d, 0x8a, 0xab, 0xfc, 0x2b, 0xe8, 0x18, 0x8f, 0x01, 0xfb, 0x0b, 0xc8, - 0xff, 0x19, 0xdc, 0xce, 0xac, 0xae, 0x78, 0x79, 0xc6, 0xfa, 0x7e, 0x41, 0xdf, 0xf6, 0xd2, 0xfc, - 0x40, 0x92, 0xbb, 0xe2, 0x4d, 0xfd, 0xd6, 0x82, 0xb4, 0x31, 0x7f, 0x33, 0x3b, 0xbf, 0xe0, 0xd9, - 0x15, 0xf4, 0xed, 0xe0, 0x7a, 0x1e, 0x48, 0x72, 0x57, 0x14, 0x76, 0xdd, 0x8d, 0xf9, 0xcc, 0xea, - 0xca, 0xca, 0x8e, 0x27, 0xdd, 0xff, 0xe5, 0xb9, 0xe5, 0x87, 0xf3, 0xab, 0x73, 0x0f, 0x6e, 0xcf, - 0xa1, 0x13, 0x81, 0xbb, 0xd7, 0x85, 0xb7, 0x05, 0xdf, 0x59, 0xf5, 0x33, 0x00, 0xa7, 0xa4, 0x7e, - 0xde, 0x1f, 0xcb, 0xd8, 0xc7, 0x19, 0x8b, 0x26, 0xb9, 0xdc, 0x1b, 0xcf, 0xff, 0x00, 0x3c, 0x7e, - 0xc7, 0xa6, 0x03, 0x81, 0x8c, 0x7f, 0x9c, 0x81, 0x1c, 0xf3, 0x7c, 0xed, 0x8d, 0x60, 0x11, 0x4e, - 0x98, 0xa4, 0x55, 0x22, 0x4d, 0x5a, 0x2a, 0xdb, 0x4d, 0x8b, 0x13, 0xa6, 0x25, 0x66, 0x40, 0x66, - 0x4c, 0xea, 0x31, 0x63, 0x26, 0x69, 0x6d, 0x34, 0xe9, 0x9a, 0xbf, 0x3d, 0xf5, 0x2b, 0x38, 0xd1, - 0x57, 0xef, 0x6a, 0x0a, 0x46, 0x6a, 0xa4, 0x2d, 0xba, 0x72, 0x02, 0x79, 0xa2, 0x7a, 0x02, 0x46, - 0x5b, 0xb8, 0xde, 0x24, 0xa2, 0xad, 0x26, 0x90, 0xbf, 0x58, 0x51, 0x2e, 0x80, 0x95, 0x10, 0x17, - 0x6c, 0x0e, 0xc7, 0x27, 0x52, 0x29, 0x94, 0x22, 0x96, 0x59, 0x32, 0x49, 0x8b, 0x96, 0x49, 0xa9, - 0x4e, 0x1b, 0x94, 0xa7, 0xaf, 0xc1, 0x51, 0xa9, 0xb9, 0xb8, 0xea, 0x2a, 0x1c, 0x95, 0x2e, 0xc0, - 0x6b, 0xfe, 0x07, 0xb6, 0x02, 0xc9, 0x06, 0xf5, 0x18, 0xa4, 0xbf, 0x06, 0xf0, 0x78, 0xd1, 0x75, - 0x9b, 0x64, 0x9d, 0xb4, 0x36, 0xb6, 0x8a, 0x88, 0xb8, 0x8e, 0x6d, 0xb9, 0x44, 0xfd, 0x1c, 0xc0, - 0x91, 0x20, 0x78, 0xe1, 0xfb, 0xa8, 0xf1, 0x5f, 0xf0, 0xa4, 0x30, 0xbb, 0xa9, 0xa6, 0xcf, 0x2f, - 0x1a, 0x4b, 0xeb, 0xcb, 0xe7, 0x37, 0xd6, 0x17, 0x17, 0x17, 0x0b, 0xc6, 0xda, 0x7a, 0xfa, 0xa9, - 0x02, 0x46, 0xfe, 0xa9, 0xc4, 0xbc, 0xc9, 0x6c, 0x55, 0x3a, 0x46, 0x6c, 0x7f, 0xb8, 0x1a, 0x77, - 0xc0, 0xb7, 0xcf, 0x4e, 0x3d, 0x02, 0x70, 0xb5, 0x62, 0x67, 0x79, 0x95, 0x70, 0x31, 0xbf, 0xb3, - 0x01, 0xef, 0x73, 0xbd, 0x83, 0xb0, 0xb5, 0x94, 0x73, 0x6a, 0x95, 0x1c, 0x6f, 0x3b, 0xc4, 0xcd, - 0x5e, 0xc5, 0xcc, 0xad, 0xe2, 0xfa, 0x6f, 0x36, 0xfe, 0x60, 0xb4, 0xbd, 0x5e, 0x77, 0x68, 0x80, - 0x2d, 0xab, 0xe1, 0x43, 0x5c, 0x10, 0x00, 0x28, 0xe6, 0xdf, 0x50, 0xfa, 0x5f, 0x00, 0x4e, 0x5e, - 0x26, 0x5c, 0xce, 0x04, 0xf9, 0x53, 0x93, 0xb8, 0x5c, 0xfd, 0x23, 0x9c, 0x90, 0xeb, 0xee, 0xf0, - 0x33, 0x34, 0x1e, 0xce, 0x50, 0x34, 0x8e, 0x65, 0x0d, 0x57, 0xbd, 0x08, 0x61, 0xf7, 0xc9, 0xf1, - 0xda, 0x31, 0xfa, 0x6b, 0x4f, 0xe5, 0x2a, 0x76, 0x6b, 0x28, 0xb1, 0x17, 0x8a, 0xe9, 0xef, 0x14, - 0xf8, 0x93, 0xdf, 0x52, 0x57, 0x76, 0xd8, 0xed, 0x7a, 0x3c, 0x5a, 0xb6, 0xeb, 0x75, 0xbc, 0x6b, - 0x33, 0xcc, 0x6d, 0x16, 0xb8, 0x7b, 0xb8, 0x4e, 0x6a, 0xc4, 0x5e, 0x3e, 0x3b, 0xa5, 0x64, 0x00, - 0xea, 0x81, 0x7a, 0x0f, 0x8f, 0x55, 0x13, 0x46, 0x6d, 0x66, 0x12, 0x26, 0x26, 0x7d, 0xc2, 0xf8, - 0x5d, 0xc7, 0xb8, 0xc2, 0x8a, 0x68, 0xa8, 0x27, 0x29, 0x25, 0x6a, 0xa2, 0x09, 0xbd, 0xef, 0x0f, - 0x31, 0x86, 0x51, 0x54, 0x17, 0x3f, 0xd2, 0xbb, 0x03, 0x25, 0x75, 0x69, 0xe1, 0x83, 0xab, 0xd3, - 0x30, 0x2a, 0x4a, 0x41, 0xcc, 0xf2, 0x31, 0x91, 0xfb, 0x85, 0x88, 0xf6, 0xcd, 0x08, 0xf2, 0xff, - 0x56, 0x55, 0x38, 0xec, 0xe0, 0x0a, 0x11, 0x63, 0x7c, 0x0c, 0x09, 0x59, 0xd5, 0x3c, 0x2e, 0x8b, - 0xb7, 0x80, 0x16, 0x9b, 0x01, 0x99, 0x38, 0x0a, 0x97, 0x2b, 0xe1, 0x93, 0x03, 0xa4, 0x9f, 0x03, - 0xa8, 0xad, 0x89, 0xd3, 0x0e, 0xa0, 0xc8, 0x65, 0x98, 0x94, 0x7c, 0x0e, 0xf2, 0xfd, 0xa6, 0x2a, - 0x93, 0x38, 0x21, 0x5b, 0xaa, 0x3b, 0x7d, 0x37, 0xa7, 0xbc, 0xcb, 0xcd, 0x75, 0xb1, 0x7b, 0xc0, - 0xd2, 0x7f, 0x07, 0x50, 0xdb, 0x12, 0x0f, 0xa7, 0x0f, 0x19, 0xc2, 0x7b, 0x70, 0xfa, 0xdf, 0x0a, - 0xfc, 0x69, 0x1f, 0xa7, 0x0b, 0xbf, 0x2f, 0x5e, 0x21, 0x6d, 0xf7, 0x08, 0x6a, 0xb1, 0x19, 0xd2, - 0xd3, 0x7f, 0x04, 0x96, 0x3a, 0xc6, 0x4d, 0xb6, 0x8d, 0x86, 0x10, 0xc4, 0x0e, 0x2d, 0xd5, 0x48, - 0xdb, 0x63, 0x62, 0x52, 0x97, 0x16, 0x6f, 0x47, 0x4b, 0x48, 0xee, 0x39, 0x94, 0x11, 0xd7, 0xdf, - 0x90, 0x16, 0xfd, 0x7c, 0x55, 0xde, 0xcc, 0xd7, 0x48, 0x97, 0xaf, 0x12, 0x2b, 0xff, 0x06, 0xe0, - 0xe9, 0xde, 0xae, 0xe5, 0x27, 0xec, 0x08, 0xf2, 0x35, 0x09, 0x63, 0x7e, 0x22, 0xc2, 0x39, 0x55, - 0x23, 0xed, 0xa2, 0x99, 0xfe, 0x87, 0x02, 0xa7, 0x07, 0xea, 0xe4, 0xc8, 0x9c, 0x0a, 0x1f, 0xf2, - 0xca, 0x41, 0x0f, 0xf9, 0x4b, 0x30, 0xe6, 0x7f, 0x50, 0x69, 0x91, 0x99, 0x48, 0x66, 0x3c, 0x3f, - 0xd9, 0x7f, 0x1c, 0xf2, 0x76, 0x8d, 0x63, 0x1d, 0x63, 0xfc, 0x09, 0x48, 0xc6, 0x81, 0x06, 0xd2, - 0xd1, 0x47, 0xe2, 0x98, 0xc0, 0xce, 0xfb, 0xd8, 0xe8, 0xde, 0xa0, 0x20, 0xca, 0x0f, 0x7c, 0x6c, - 0x74, 0x8c, 0xe8, 0x7f, 0x80, 0x72, 0x09, 0xa0, 0x44, 0x60, 0x57, 0xe0, 0xe9, 0x17, 0x00, 0x4e, - 0x0f, 0x94, 0xe1, 0x91, 0x65, 0xe8, 0x22, 0x1c, 0x09, 0x38, 0x1c, 0xd4, 0xe6, 0xc9, 0x01, 0x48, - 0xe1, 0x8a, 0x04, 0x11, 0xc3, 0x0e, 0xbd, 0x42, 0xda, 0x7d, 0x95, 0x1d, 0x39, 0xd4, 0xb4, 0x02, - 0xf0, 0x6c, 0x5f, 0x65, 0xaf, 0x49, 0xad, 0xe9, 0x28, 0xea, 0xfb, 0x1d, 0x0a, 0x4d, 0x3d, 0xdf, - 0xdb, 0x13, 0x66, 0x3b, 0xc6, 0x34, 0x3b, 0x83, 0x86, 0x90, 0x42, 0x4d, 0x14, 0xd1, 0xa9, 0x89, - 0x46, 0x74, 0x9f, 0x19, 0x21, 0x43, 0x82, 0xaa, 0x4e, 0x7f, 0x09, 0xe0, 0x6c, 0x6f, 0x5d, 0xca, - 0xe1, 0x1e, 0x41, 0xb4, 0x1f, 0x74, 0x90, 0x7c, 0x0a, 0xe0, 0xec, 0xf5, 0x1f, 0x33, 0xba, 0xcd, - 0x03, 0xa3, 0x3b, 0x33, 0xf8, 0x85, 0xdb, 0xd5, 0x79, 0x5d, 0x30, 0xc6, 0xf2, 0xf3, 0xaf, 0xa6, - 0xc1, 0x76, 0xee, 0x10, 0xef, 0x48, 0x6e, 0x39, 0xbb, 0xbb, 0x31, 0x41, 0xf8, 0xa5, 0xef, 0x03, - 0x00, 0x00, 0xff, 0xff, 0x36, 0xbc, 0xa1, 0x09, 0x76, 0x13, 0x00, 0x00, +var File_lorawan_stack_api_application_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_application_proto_rawDesc = []byte{ + 0x0a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, + 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, + 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, + 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0xf1, 0x0b, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x4a, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, + 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, 0x01, 0x2f, 0x10, 0x0a, + 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, + 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x64, 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x52, 0x15, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x5a, 0x0a, 0x11, 0x74, + 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x10, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0xc5, 0x01, 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, + 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, + 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, + 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, + 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, + 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, + 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, + 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x14, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0xcd, 0x01, 0x0a, 0x1a, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, + 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, + 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, + 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, + 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, + 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, + 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x18, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0xbf, 0x01, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, + 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, + 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, + 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, + 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, + 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, + 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x11, + 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x30, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, + 0x08, 0x01, 0x10, 0x00, 0x52, 0x0d, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x0f, + 0x10, 0x10, 0x52, 0x10, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x22, 0x4f, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe6, 0x01, 0x0a, 0x13, 0x49, 0x73, 0x73, 0x75, 0x65, 0x44, + 0x65, 0x76, 0x45, 0x55, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xce, 0x01, + 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, + 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, + 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, + 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x22, 0xad, + 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xed, + 0x02, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0c, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x06, 0xf2, 0xaa, 0x19, 0x02, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x12, 0x64, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x4e, 0xfa, 0x42, 0x4b, 0x72, 0x49, 0x52, 0x00, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x52, 0x0f, 0x2d, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, + 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, + 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xc0, + 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x0b, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x22, 0x9e, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, + 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x22, 0xaf, 0x02, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, + 0x75, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x5f, + 0xfa, 0x42, 0x5c, 0x72, 0x5a, 0x52, 0x00, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x69, 0x64, 0x52, 0x0b, 0x2d, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, + 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x52, + 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, + 0x08, 0x00, 0x10, 0x01, 0x22, 0x8f, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, + 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x22, 0x9f, 0x02, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, + 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x40, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x92, 0x01, 0x0b, + 0x08, 0x01, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x40, 0x01, 0x52, 0x09, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0xf1, 0x01, 0x0a, 0x1e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, + 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, + 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xed, 0x01, 0x0a, + 0x23, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, + 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x21, 0xfa, 0x42, 0x1e, 0x72, 0x1c, 0x52, 0x00, 0x52, 0x02, 0x69, 0x64, 0x52, + 0x03, 0x2d, 0x69, 0x64, 0x52, 0x07, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x06, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xdb, 0x01, 0x0a, + 0x21, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x5b, 0x0a, + 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xca, 0x01, 0x0a, 0x21, 0x53, + 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_application_proto_rawDescOnce sync.Once + file_lorawan_stack_api_application_proto_rawDescData = file_lorawan_stack_api_application_proto_rawDesc +) + +func file_lorawan_stack_api_application_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_application_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_application_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_application_proto_rawDescData) + }) + return file_lorawan_stack_api_application_proto_rawDescData +} + +var file_lorawan_stack_api_application_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_lorawan_stack_api_application_proto_goTypes = []interface{}{ + (*Application)(nil), // 0: ttn.lorawan.v3.Application + (*Applications)(nil), // 1: ttn.lorawan.v3.Applications + (*IssueDevEUIResponse)(nil), // 2: ttn.lorawan.v3.IssueDevEUIResponse + (*GetApplicationRequest)(nil), // 3: ttn.lorawan.v3.GetApplicationRequest + (*ListApplicationsRequest)(nil), // 4: ttn.lorawan.v3.ListApplicationsRequest + (*CreateApplicationRequest)(nil), // 5: ttn.lorawan.v3.CreateApplicationRequest + (*UpdateApplicationRequest)(nil), // 6: ttn.lorawan.v3.UpdateApplicationRequest + (*ListApplicationAPIKeysRequest)(nil), // 7: ttn.lorawan.v3.ListApplicationAPIKeysRequest + (*GetApplicationAPIKeyRequest)(nil), // 8: ttn.lorawan.v3.GetApplicationAPIKeyRequest + (*CreateApplicationAPIKeyRequest)(nil), // 9: ttn.lorawan.v3.CreateApplicationAPIKeyRequest + (*UpdateApplicationAPIKeyRequest)(nil), // 10: ttn.lorawan.v3.UpdateApplicationAPIKeyRequest + (*ListApplicationCollaboratorsRequest)(nil), // 11: ttn.lorawan.v3.ListApplicationCollaboratorsRequest + (*GetApplicationCollaboratorRequest)(nil), // 12: ttn.lorawan.v3.GetApplicationCollaboratorRequest + (*SetApplicationCollaboratorRequest)(nil), // 13: ttn.lorawan.v3.SetApplicationCollaboratorRequest + nil, // 14: ttn.lorawan.v3.Application.AttributesEntry + (*ApplicationIdentifiers)(nil), // 15: ttn.lorawan.v3.ApplicationIdentifiers + (*timestamppb.Timestamp)(nil), // 16: google.protobuf.Timestamp + (*ContactInfo)(nil), // 17: ttn.lorawan.v3.ContactInfo + (*OrganizationOrUserIdentifiers)(nil), // 18: ttn.lorawan.v3.OrganizationOrUserIdentifiers + (*fieldmaskpb.FieldMask)(nil), // 19: google.protobuf.FieldMask + (Right)(0), // 20: ttn.lorawan.v3.Right + (*APIKey)(nil), // 21: ttn.lorawan.v3.APIKey + (*Collaborator)(nil), // 22: ttn.lorawan.v3.Collaborator +} +var file_lorawan_stack_api_application_proto_depIdxs = []int32{ + 15, // 0: ttn.lorawan.v3.Application.ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 16, // 1: ttn.lorawan.v3.Application.created_at:type_name -> google.protobuf.Timestamp + 16, // 2: ttn.lorawan.v3.Application.updated_at:type_name -> google.protobuf.Timestamp + 16, // 3: ttn.lorawan.v3.Application.deleted_at:type_name -> google.protobuf.Timestamp + 14, // 4: ttn.lorawan.v3.Application.attributes:type_name -> ttn.lorawan.v3.Application.AttributesEntry + 17, // 5: ttn.lorawan.v3.Application.contact_info:type_name -> ttn.lorawan.v3.ContactInfo + 18, // 6: ttn.lorawan.v3.Application.administrative_contact:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 18, // 7: ttn.lorawan.v3.Application.technical_contact:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 0, // 8: ttn.lorawan.v3.Applications.applications:type_name -> ttn.lorawan.v3.Application + 15, // 9: ttn.lorawan.v3.GetApplicationRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 19, // 10: ttn.lorawan.v3.GetApplicationRequest.field_mask:type_name -> google.protobuf.FieldMask + 18, // 11: ttn.lorawan.v3.ListApplicationsRequest.collaborator:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 19, // 12: ttn.lorawan.v3.ListApplicationsRequest.field_mask:type_name -> google.protobuf.FieldMask + 0, // 13: ttn.lorawan.v3.CreateApplicationRequest.application:type_name -> ttn.lorawan.v3.Application + 18, // 14: ttn.lorawan.v3.CreateApplicationRequest.collaborator:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 0, // 15: ttn.lorawan.v3.UpdateApplicationRequest.application:type_name -> ttn.lorawan.v3.Application + 19, // 16: ttn.lorawan.v3.UpdateApplicationRequest.field_mask:type_name -> google.protobuf.FieldMask + 15, // 17: ttn.lorawan.v3.ListApplicationAPIKeysRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 15, // 18: ttn.lorawan.v3.GetApplicationAPIKeyRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 15, // 19: ttn.lorawan.v3.CreateApplicationAPIKeyRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 20, // 20: ttn.lorawan.v3.CreateApplicationAPIKeyRequest.rights:type_name -> ttn.lorawan.v3.Right + 16, // 21: ttn.lorawan.v3.CreateApplicationAPIKeyRequest.expires_at:type_name -> google.protobuf.Timestamp + 15, // 22: ttn.lorawan.v3.UpdateApplicationAPIKeyRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 21, // 23: ttn.lorawan.v3.UpdateApplicationAPIKeyRequest.api_key:type_name -> ttn.lorawan.v3.APIKey + 19, // 24: ttn.lorawan.v3.UpdateApplicationAPIKeyRequest.field_mask:type_name -> google.protobuf.FieldMask + 15, // 25: ttn.lorawan.v3.ListApplicationCollaboratorsRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 15, // 26: ttn.lorawan.v3.GetApplicationCollaboratorRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 18, // 27: ttn.lorawan.v3.GetApplicationCollaboratorRequest.collaborator:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 15, // 28: ttn.lorawan.v3.SetApplicationCollaboratorRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 22, // 29: ttn.lorawan.v3.SetApplicationCollaboratorRequest.collaborator:type_name -> ttn.lorawan.v3.Collaborator + 30, // [30:30] is the sub-list for method output_type + 30, // [30:30] is the sub-list for method input_type + 30, // [30:30] is the sub-list for extension type_name + 30, // [30:30] is the sub-list for extension extendee + 0, // [0:30] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_application_proto_init() } +func file_lorawan_stack_api_application_proto_init() { + if File_lorawan_stack_api_application_proto != nil { + return + } + file_lorawan_stack_api_contact_info_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_rights_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_application_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Application); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_application_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Applications); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_application_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IssueDevEUIResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_application_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetApplicationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_application_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListApplicationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_application_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateApplicationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_application_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateApplicationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_application_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListApplicationAPIKeysRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_application_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetApplicationAPIKeyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_application_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateApplicationAPIKeyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_application_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateApplicationAPIKeyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_application_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListApplicationCollaboratorsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_application_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetApplicationCollaboratorRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_application_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetApplicationCollaboratorRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_application_proto_rawDesc, + NumEnums: 0, + NumMessages: 15, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_application_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_application_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_application_proto_msgTypes, + }.Build() + File_lorawan_stack_api_application_proto = out.File + file_lorawan_stack_api_application_proto_rawDesc = nil + file_lorawan_stack_api_application_proto_goTypes = nil + file_lorawan_stack_api_application_proto_depIdxs = nil } diff --git a/pkg/ttnpb/application.pb.validate.go b/pkg/ttnpb/application.pb.validate.go index 35b0d33b46..b409b0f692 100644 --- a/pkg/ttnpb/application.pb.validate.go +++ b/pkg/ttnpb/application.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _application_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on Application with the rules defined // in the proto definition for this message. If any rules are violated, an // error is returned. @@ -1293,7 +1290,7 @@ func (m *CreateApplicationAPIKeyRequest) ValidateFields(paths ...string) error { case "expires_at": if t := m.GetExpiresAt(); t != nil { - ts, err := types.TimestampFromProto(t) + ts, err := t.AsTime(), t.CheckValid() if err != nil { return CreateApplicationAPIKeyRequestValidationError{ field: "expires_at", diff --git a/pkg/ttnpb/application_flags.pb.go b/pkg/ttnpb/application_flags.pb.go index 93a094f6ac..0bd8480dc9 100644 --- a/pkg/ttnpb/application_flags.pb.go +++ b/pkg/ttnpb/application_flags.pb.go @@ -1,14 +1,14 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/application.proto package ttnpb import ( flagsplugin "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - gogo "github.com/TheThingsIndustries/protoc-gen-go-flags/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-flags/golang" pflag "github.com/spf13/pflag" ) @@ -210,7 +210,7 @@ func (m *ListApplicationsRequest) SetFromFlags(flags *pflag.FlagSet, prefix stri if val, changed, err := flagsplugin.GetStringSlice(flags, flagsplugin.Prefix("field_mask", prefix)); err != nil { return nil, err } else if changed { - m.FieldMask = gogo.SetFieldMask(val) + m.FieldMask = golang.SetFieldMask(val) paths = append(paths, flagsplugin.Prefix("field_mask", prefix)) } if val, changed, err := flagsplugin.GetString(flags, flagsplugin.Prefix("order", prefix)); err != nil { diff --git a/pkg/ttnpb/application_json.pb.go b/pkg/ttnpb/application_json.pb.go index 2f07790302..ecffd7234b 100644 --- a/pkg/ttnpb/application_json.pb.go +++ b/pkg/ttnpb/application_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/application.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" types "go.thethings.network/lorawan-stack/v3/pkg/types" ) @@ -24,7 +24,7 @@ func (x *Application) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("ids") // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Ids) + golang.MarshalMessage(s, x.Ids) } if x.CreatedAt != nil || s.HasField("created_at") { s.WriteMoreIf(&wroteField) @@ -32,7 +32,7 @@ func (x *Application) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.CreatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.CreatedAt) + golang.MarshalTimestamp(s, x.CreatedAt) } } if x.UpdatedAt != nil || s.HasField("updated_at") { @@ -41,7 +41,7 @@ func (x *Application) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.UpdatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.UpdatedAt) + golang.MarshalTimestamp(s, x.UpdatedAt) } } if x.DeletedAt != nil || s.HasField("deleted_at") { @@ -50,7 +50,7 @@ func (x *Application) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.DeletedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.DeletedAt) + golang.MarshalTimestamp(s, x.DeletedAt) } } if x.Name != "" || s.HasField("name") { @@ -90,13 +90,13 @@ func (x *Application) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("administrative_contact") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.AdministrativeContact) + golang.MarshalMessage(s, x.AdministrativeContact) } if x.TechnicalContact != nil || s.HasField("technical_contact") { s.WriteMoreIf(&wroteField) s.WriteObjectField("technical_contact") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.TechnicalContact) + golang.MarshalMessage(s, x.TechnicalContact) } if x.NetworkServerAddress != "" || s.HasField("network_server_address") { s.WriteMoreIf(&wroteField) @@ -143,7 +143,7 @@ func (x *Application) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. var v ApplicationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Ids = &v case "created_at", "createdAt": s.AddField("created_at") @@ -151,7 +151,7 @@ func (x *Application) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.CreatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -162,7 +162,7 @@ func (x *Application) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.UpdatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -173,7 +173,7 @@ func (x *Application) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.DeletedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -220,7 +220,7 @@ func (x *Application) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.AdministrativeContact = &v case "technical_contact", "technicalContact": s.AddField("technical_contact") @@ -230,7 +230,7 @@ func (x *Application) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.TechnicalContact = &v case "network_server_address", "networkServerAddress": s.AddField("network_server_address") @@ -358,6 +358,178 @@ func (x *IssueDevEUIResponse) UnmarshalJSON(b []byte) error { return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) } +// MarshalProtoJSON marshals the GetApplicationRequest message to JSON. +func (x *GetApplicationRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.ApplicationIds != nil || s.HasField("application_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("application_ids") + // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.ApplicationIds) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the GetApplicationRequest to JSON. +func (x *GetApplicationRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the GetApplicationRequest message from JSON. +func (x *GetApplicationRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "application_ids", "applicationIds": + s.AddField("application_ids") + if s.ReadNil() { + x.ApplicationIds = nil + return + } + // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationIdentifiers + golang.UnmarshalMessage(s, &v) + x.ApplicationIds = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the GetApplicationRequest from JSON. +func (x *GetApplicationRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the ListApplicationsRequest message to JSON. +func (x *ListApplicationsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Collaborator != nil || s.HasField("collaborator") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("collaborator") + // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.Collaborator) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + if x.Order != "" || s.HasField("order") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("order") + s.WriteString(x.Order) + } + if x.Limit != 0 || s.HasField("limit") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("limit") + s.WriteUint32(x.Limit) + } + if x.Page != 0 || s.HasField("page") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("page") + s.WriteUint32(x.Page) + } + if x.Deleted || s.HasField("deleted") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("deleted") + s.WriteBool(x.Deleted) + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the ListApplicationsRequest to JSON. +func (x *ListApplicationsRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the ListApplicationsRequest message from JSON. +func (x *ListApplicationsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "collaborator": + s.AddField("collaborator") + if s.ReadNil() { + x.Collaborator = nil + return + } + // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. + var v OrganizationOrUserIdentifiers + golang.UnmarshalMessage(s, &v) + x.Collaborator = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + case "order": + s.AddField("order") + x.Order = s.ReadString() + case "limit": + s.AddField("limit") + x.Limit = s.ReadUint32() + case "page": + s.AddField("page") + x.Page = s.ReadUint32() + case "deleted": + s.AddField("deleted") + x.Deleted = s.ReadBool() + } + }) +} + +// UnmarshalJSON unmarshals the ListApplicationsRequest from JSON. +func (x *ListApplicationsRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + // MarshalProtoJSON marshals the CreateApplicationRequest message to JSON. func (x *CreateApplicationRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x == nil { @@ -375,7 +547,7 @@ func (x *CreateApplicationRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) s.WriteMoreIf(&wroteField) s.WriteObjectField("collaborator") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Collaborator) + golang.MarshalMessage(s, x.Collaborator) } s.WriteObjectEnd() } @@ -409,7 +581,7 @@ func (x *CreateApplicationRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalSta } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Collaborator = &v } }) @@ -439,7 +611,7 @@ func (x *UpdateApplicationRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -472,7 +644,7 @@ func (x *UpdateApplicationRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalSta x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -498,7 +670,7 @@ func (x *CreateApplicationAPIKeyRequest) MarshalProtoJSON(s *jsonplugin.MarshalS s.WriteMoreIf(&wroteField) s.WriteObjectField("application_ids") // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ApplicationIds) + golang.MarshalMessage(s, x.ApplicationIds) } if x.Name != "" || s.HasField("name") { s.WriteMoreIf(&wroteField) @@ -522,7 +694,7 @@ func (x *CreateApplicationAPIKeyRequest) MarshalProtoJSON(s *jsonplugin.MarshalS if x.ExpiresAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ExpiresAt) + golang.MarshalTimestamp(s, x.ExpiresAt) } } s.WriteObjectEnd() @@ -550,7 +722,7 @@ func (x *CreateApplicationAPIKeyRequest) UnmarshalProtoJSON(s *jsonplugin.Unmars } // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. var v ApplicationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ApplicationIds = &v case "name": s.AddField("name") @@ -572,7 +744,7 @@ func (x *CreateApplicationAPIKeyRequest) UnmarshalProtoJSON(s *jsonplugin.Unmars x.ExpiresAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -598,7 +770,7 @@ func (x *UpdateApplicationAPIKeyRequest) MarshalProtoJSON(s *jsonplugin.MarshalS s.WriteMoreIf(&wroteField) s.WriteObjectField("application_ids") // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ApplicationIds) + golang.MarshalMessage(s, x.ApplicationIds) } if x.ApiKey != nil || s.HasField("api_key") { s.WriteMoreIf(&wroteField) @@ -611,7 +783,7 @@ func (x *UpdateApplicationAPIKeyRequest) MarshalProtoJSON(s *jsonplugin.MarshalS if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -639,7 +811,7 @@ func (x *UpdateApplicationAPIKeyRequest) UnmarshalProtoJSON(s *jsonplugin.Unmars } // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. var v ApplicationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ApplicationIds = &v case "api_key", "apiKey": if s.ReadNil() { @@ -654,7 +826,7 @@ func (x *UpdateApplicationAPIKeyRequest) UnmarshalProtoJSON(s *jsonplugin.Unmars x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -680,7 +852,7 @@ func (x *SetApplicationCollaboratorRequest) MarshalProtoJSON(s *jsonplugin.Marsh s.WriteMoreIf(&wroteField) s.WriteObjectField("application_ids") // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ApplicationIds) + golang.MarshalMessage(s, x.ApplicationIds) } if x.Collaborator != nil || s.HasField("collaborator") { s.WriteMoreIf(&wroteField) @@ -712,7 +884,7 @@ func (x *SetApplicationCollaboratorRequest) UnmarshalProtoJSON(s *jsonplugin.Unm } // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. var v ApplicationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ApplicationIds = &v case "collaborator": if s.ReadNil() { diff --git a/pkg/ttnpb/application_services.pb.go b/pkg/ttnpb/application_services.pb.go index f26d17ef84..0513f5f571 100644 --- a/pkg/ttnpb/application_services.pb.go +++ b/pkg/ttnpb/application_services.pb.go @@ -1,822 +1,325 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/application_services.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + reflect "reflect" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -func init() { - proto.RegisterFile("lorawan-stack/api/application_services.proto", fileDescriptor_f6c42f4fe8e3c902) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/application_services.proto", fileDescriptor_f6c42f4fe8e3c902) -} - -var fileDescriptor_f6c42f4fe8e3c902 = []byte{ - // 843 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4f, 0x4f, 0xdb, 0x48, - 0x1c, 0xd5, 0xb0, 0xbb, 0x59, 0x31, 0xb0, 0x8b, 0x98, 0x95, 0x76, 0x25, 0xc3, 0xa2, 0x95, 0x59, - 0x02, 0x62, 0xc9, 0x78, 0x97, 0x88, 0x5d, 0xb1, 0x42, 0x6d, 0x81, 0xa0, 0x34, 0xa2, 0x55, 0x51, - 0x10, 0x97, 0x5c, 0xa8, 0x93, 0x0c, 0xce, 0x28, 0xc1, 0xe3, 0x7a, 0xc6, 0xa1, 0x21, 0xe2, 0xd0, - 0x1e, 0xb9, 0x55, 0x55, 0x7b, 0xa8, 0x7a, 0xad, 0x7a, 0xea, 0x67, 0x68, 0xbf, 0x43, 0x0f, 0xbd, - 0x56, 0xa2, 0x52, 0x2f, 0x7c, 0x88, 0xca, 0x63, 0xbb, 0xd8, 0x49, 0xb0, 0xf3, 0xa7, 0xb7, 0x78, - 0xe6, 0xcd, 0xef, 0xbd, 0x79, 0xf6, 0xef, 0xfd, 0x02, 0x57, 0x1a, 0xcc, 0xd6, 0x4f, 0x74, 0x33, - 0xc3, 0x85, 0x5e, 0xa9, 0x6b, 0xba, 0x45, 0x35, 0xdd, 0xb2, 0x1a, 0xb4, 0xa2, 0x0b, 0xca, 0xcc, - 0x43, 0x4e, 0xec, 0x26, 0xad, 0x10, 0x8e, 0x2d, 0x9b, 0x09, 0x86, 0x7e, 0x16, 0xc2, 0xc4, 0xfe, - 0x09, 0xdc, 0xcc, 0x2a, 0x19, 0x83, 0x8a, 0x9a, 0x53, 0xc6, 0x15, 0x76, 0xac, 0x19, 0xcc, 0x60, - 0x9a, 0x84, 0x95, 0x9d, 0x23, 0xf9, 0x24, 0x1f, 0xe4, 0x2f, 0xef, 0xb8, 0x32, 0x6b, 0x30, 0x66, - 0x34, 0x88, 0xc7, 0x62, 0x9a, 0x4c, 0x48, 0x12, 0xbf, 0xb8, 0x32, 0xe3, 0xef, 0x7e, 0xad, 0x41, - 0x8e, 0x2d, 0xd1, 0xf2, 0x37, 0xe7, 0x63, 0x75, 0x5e, 0x0f, 0xa2, 0x55, 0x62, 0x0a, 0x7a, 0x44, - 0x89, 0x1d, 0xd0, 0xcc, 0x75, 0x83, 0x6c, 0x6a, 0xd4, 0x84, 0xbf, 0xbf, 0x7a, 0x39, 0x0e, 0x7f, - 0xd9, 0xbc, 0x2a, 0x5d, 0x24, 0x06, 0xe5, 0xc2, 0x6e, 0xa1, 0x0b, 0x00, 0x53, 0xdb, 0x36, 0xd1, - 0x05, 0x41, 0x4b, 0x38, 0xea, 0x03, 0xf6, 0xd6, 0x23, 0xa7, 0x1e, 0x38, 0x84, 0x0b, 0x65, 0xa6, - 0x13, 0x19, 0xc2, 0xa8, 0x4f, 0xc0, 0xe3, 0xf7, 0x9f, 0x9e, 0x8e, 0x9d, 0x03, 0x35, 0xab, 0x39, - 0x9c, 0xd8, 0x5c, 0x6b, 0x57, 0x58, 0xa3, 0xa1, 0x97, 0x99, 0xad, 0x0b, 0x66, 0x63, 0x77, 0xed, - 0x90, 0x56, 0x79, 0xf0, 0xe3, 0x2c, 0x7c, 0x65, 0xfe, 0x3f, 0x58, 0x2e, 0xed, 0xa9, 0xbb, 0x1a, - 0xb3, 0x0d, 0xdd, 0xa4, 0xa7, 0xde, 0x62, 0x47, 0x85, 0xf0, 0x9e, 0xac, 0xd4, 0xb1, 0xd0, 0x55, - 0x11, 0x3d, 0x02, 0xf0, 0xbb, 0x3c, 0x11, 0x68, 0xa1, 0x53, 0x78, 0x9e, 0x88, 0x41, 0xef, 0xf7, - 0xaf, 0xbc, 0xde, 0xdf, 0x08, 0x47, 0x58, 0xb4, 0x76, 0xf8, 0x03, 0x73, 0x45, 0x45, 0x9f, 0xcf, - 0xd0, 0x25, 0x80, 0xdf, 0xdf, 0xa1, 0x5c, 0xa0, 0xc5, 0xce, 0xea, 0xee, 0x6a, 0x88, 0x81, 0x07, - 0x32, 0x66, 0x63, 0x64, 0x70, 0xf5, 0xa5, 0xe7, 0xf3, 0x33, 0x80, 0x7e, 0x8a, 0x28, 0x29, 0xad, - 0xa1, 0x61, 0x8c, 0x2f, 0xdd, 0x45, 0xdf, 0xd2, 0x75, 0x74, 0x0e, 0x60, 0xea, 0xc0, 0xaa, 0xf6, - 0xfc, 0xb0, 0xbc, 0xf5, 0x41, 0x8d, 0x5f, 0x97, 0xf7, 0xcd, 0x2a, 0x31, 0xc6, 0xe3, 0x1e, 0xc6, - 0xbb, 0xef, 0xdf, 0x82, 0xa9, 0x1c, 0x69, 0x10, 0x41, 0x50, 0x3a, 0x86, 0xa1, 0x70, 0xd5, 0x55, - 0xca, 0xaf, 0xd8, 0xeb, 0x5b, 0x1c, 0xf4, 0x2d, 0xde, 0x71, 0xfb, 0x56, 0x4d, 0x4b, 0x11, 0x7f, - 0x2c, 0xcf, 0xc5, 0xbe, 0xfd, 0x33, 0xd4, 0x82, 0x3f, 0x16, 0x09, 0x17, 0xcc, 0x1e, 0x9d, 0x12, - 0x4b, 0xca, 0x25, 0x35, 0x1d, 0x4f, 0xa9, 0xd9, 0x3e, 0x9f, 0x03, 0x7f, 0xd8, 0x73, 0x6c, 0x63, - 0x74, 0xe2, 0x15, 0x49, 0x9c, 0x5e, 0xfe, 0x33, 0x81, 0xd8, 0x92, 0x6c, 0xe7, 0x00, 0x4e, 0x14, - 0x38, 0x77, 0x48, 0x8e, 0x34, 0x77, 0x0e, 0x0a, 0x7d, 0xb3, 0xcf, 0x77, 0xe2, 0x42, 0x45, 0x8a, - 0x84, 0x5b, 0xcc, 0xe4, 0xa4, 0x6f, 0x0f, 0xaa, 0xa4, 0x99, 0x21, 0x0e, 0x5d, 0x7d, 0x3b, 0x01, - 0xa7, 0x43, 0x7c, 0x9b, 0x95, 0x0a, 0xe1, 0x1c, 0xb5, 0x21, 0x74, 0x7b, 0xad, 0x28, 0x83, 0x71, - 0x00, 0x7b, 0x3a, 0x70, 0xde, 0x79, 0x35, 0x23, 0x35, 0x2d, 0xa2, 0x85, 0xa4, 0xf7, 0xe2, 0xd1, - 0xbd, 0x00, 0x70, 0xd2, 0x4f, 0xd4, 0xbd, 0xc2, 0x2e, 0x69, 0x21, 0x9c, 0x98, 0xb7, 0x1e, 0x30, - 0x68, 0x8e, 0x2e, 0x1d, 0xde, 0xb6, 0xba, 0x25, 0x75, 0x6c, 0xa8, 0xff, 0x0d, 0x16, 0x48, 0xee, - 0x8c, 0xc8, 0xd4, 0x49, 0x4b, 0x06, 0xe4, 0x73, 0x00, 0x27, 0x64, 0x0c, 0xc9, 0x92, 0x1c, 0x65, - 0x12, 0x32, 0xca, 0xc7, 0x05, 0xd2, 0x7e, 0xeb, 0x2d, 0x8d, 0xab, 0x37, 0xa5, 0xb6, 0x75, 0x34, - 0xac, 0x36, 0xd7, 0xb5, 0x71, 0x37, 0xa4, 0x3d, 0xcb, 0xfe, 0x8a, 0xcf, 0xef, 0xfe, 0xfc, 0xba, - 0x2d, 0x35, 0x6d, 0xa1, 0x5b, 0x43, 0x6a, 0xd2, 0xda, 0x75, 0xd2, 0x92, 0x4d, 0xfe, 0x1a, 0xc0, - 0x49, 0x3f, 0xcb, 0xae, 0x79, 0xa5, 0x5d, 0x49, 0xd7, 0x9f, 0xc4, 0x7b, 0x52, 0x62, 0x41, 0xc9, - 0x0d, 0x2d, 0x51, 0xb7, 0xe8, 0x61, 0x9d, 0xb4, 0xb0, 0x1f, 0x80, 0x1f, 0xc6, 0xe0, 0x54, 0x9e, - 0x88, 0xed, 0x50, 0xa0, 0xa3, 0x7f, 0xe2, 0xcd, 0x0c, 0x63, 0x03, 0xbd, 0x8b, 0x3d, 0x8e, 0x44, - 0x71, 0x7e, 0xbf, 0x7e, 0xf6, 0x86, 0xd3, 0x47, 0x50, 0x2a, 0xa3, 0xfb, 0x03, 0x5e, 0x22, 0x3c, - 0x75, 0xe4, 0x20, 0x4b, 0x9a, 0x63, 0xa5, 0x53, 0xf4, 0x70, 0x14, 0x8e, 0xf0, 0x20, 0x1b, 0x74, - 0xe8, 0xa1, 0x57, 0x00, 0x4e, 0xed, 0x27, 0x39, 0xbb, 0x9f, 0xe8, 0xec, 0x75, 0x19, 0x9c, 0x97, - 0x3e, 0x6e, 0x2a, 0x1b, 0x23, 0x5c, 0x50, 0x76, 0xf8, 0x1b, 0x00, 0xa7, 0xdd, 0x26, 0x0e, 0x93, - 0x73, 0x94, 0x4d, 0xe8, 0xf3, 0x08, 0x3a, 0xd0, 0xfa, 0x7b, 0x57, 0x70, 0x85, 0x51, 0x6a, 0x4e, - 0x4a, 0xbe, 0x81, 0x46, 0x92, 0xbc, 0xb5, 0xf6, 0xee, 0x62, 0x0e, 0x94, 0x34, 0x83, 0x61, 0x51, - 0x23, 0xa2, 0x46, 0x4d, 0x83, 0x63, 0x93, 0x88, 0x13, 0x66, 0xd7, 0xb5, 0xe8, 0x7f, 0xdd, 0x66, - 0x56, 0xb3, 0xea, 0x86, 0x26, 0x84, 0x69, 0x95, 0xcb, 0x29, 0xe9, 0x5f, 0xf6, 0x4b, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x63, 0x4e, 0x2a, 0xe2, 0x02, 0x0c, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// ApplicationRegistryClient is the client API for ApplicationRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ApplicationRegistryClient interface { - // Create a new application. This also sets the given organization or user as - // first collaborator with all possible rights. - Create(ctx context.Context, in *CreateApplicationRequest, opts ...grpc.CallOption) (*Application, error) - // Get the application with the given identifiers, selecting the fields specified - // in the field mask. - // More or less fields may be returned, depending on the rights of the caller. - Get(ctx context.Context, in *GetApplicationRequest, opts ...grpc.CallOption) (*Application, error) - // List applications where the given user or organization is a direct collaborator. - // If no user or organization is given, this returns the applications the caller - // has access to. - // Similar to Get, this selects the fields given by the field mask. - // More or less fields may be returned, depending on the rights of the caller. - List(ctx context.Context, in *ListApplicationsRequest, opts ...grpc.CallOption) (*Applications, error) - // Update the application, changing the fields specified by the field mask to the provided values. - Update(ctx context.Context, in *UpdateApplicationRequest, opts ...grpc.CallOption) (*Application, error) - // Delete the application. This may not release the application ID for reuse. - // All end devices must be deleted from the application before it can be deleted. - Delete(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) - // Restore a recently deleted application. - // - // Deployment configuration may specify if, and for how long after deletion, - // entities can be restored. - Restore(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) - // Purge the application. This will release the application ID for reuse. - // All end devices must be deleted from the application before it can be deleted. - // The application owner is responsible for clearing data from any (external) integrations - // that may store and expose data by application ID - Purge(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) - // Request DevEUI from the configured address block for a device inside the application. - // The maximum number of DevEUI's issued per application can be configured. - IssueDevEUI(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*IssueDevEUIResponse, error) -} - -type applicationRegistryClient struct { - cc *grpc.ClientConn -} - -func NewApplicationRegistryClient(cc *grpc.ClientConn) ApplicationRegistryClient { - return &applicationRegistryClient{cc} -} - -func (c *applicationRegistryClient) Create(ctx context.Context, in *CreateApplicationRequest, opts ...grpc.CallOption) (*Application, error) { - out := new(Application) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationRegistry/Create", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *applicationRegistryClient) Get(ctx context.Context, in *GetApplicationRequest, opts ...grpc.CallOption) (*Application, error) { - out := new(Application) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationRegistry/Get", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *applicationRegistryClient) List(ctx context.Context, in *ListApplicationsRequest, opts ...grpc.CallOption) (*Applications, error) { - out := new(Applications) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationRegistry/List", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *applicationRegistryClient) Update(ctx context.Context, in *UpdateApplicationRequest, opts ...grpc.CallOption) (*Application, error) { - out := new(Application) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationRegistry/Update", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *applicationRegistryClient) Delete(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationRegistry/Delete", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *applicationRegistryClient) Restore(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationRegistry/Restore", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *applicationRegistryClient) Purge(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationRegistry/Purge", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *applicationRegistryClient) IssueDevEUI(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*IssueDevEUIResponse, error) { - out := new(IssueDevEUIResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationRegistry/IssueDevEUI", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ApplicationRegistryServer is the server API for ApplicationRegistry service. -type ApplicationRegistryServer interface { - // Create a new application. This also sets the given organization or user as - // first collaborator with all possible rights. - Create(context.Context, *CreateApplicationRequest) (*Application, error) - // Get the application with the given identifiers, selecting the fields specified - // in the field mask. - // More or less fields may be returned, depending on the rights of the caller. - Get(context.Context, *GetApplicationRequest) (*Application, error) - // List applications where the given user or organization is a direct collaborator. - // If no user or organization is given, this returns the applications the caller - // has access to. - // Similar to Get, this selects the fields given by the field mask. - // More or less fields may be returned, depending on the rights of the caller. - List(context.Context, *ListApplicationsRequest) (*Applications, error) - // Update the application, changing the fields specified by the field mask to the provided values. - Update(context.Context, *UpdateApplicationRequest) (*Application, error) - // Delete the application. This may not release the application ID for reuse. - // All end devices must be deleted from the application before it can be deleted. - Delete(context.Context, *ApplicationIdentifiers) (*types.Empty, error) - // Restore a recently deleted application. - // - // Deployment configuration may specify if, and for how long after deletion, - // entities can be restored. - Restore(context.Context, *ApplicationIdentifiers) (*types.Empty, error) - // Purge the application. This will release the application ID for reuse. - // All end devices must be deleted from the application before it can be deleted. - // The application owner is responsible for clearing data from any (external) integrations - // that may store and expose data by application ID - Purge(context.Context, *ApplicationIdentifiers) (*types.Empty, error) - // Request DevEUI from the configured address block for a device inside the application. - // The maximum number of DevEUI's issued per application can be configured. - IssueDevEUI(context.Context, *ApplicationIdentifiers) (*IssueDevEUIResponse, error) -} - -// UnimplementedApplicationRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedApplicationRegistryServer struct { -} - -func (*UnimplementedApplicationRegistryServer) Create(ctx context.Context, req *CreateApplicationRequest) (*Application, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (*UnimplementedApplicationRegistryServer) Get(ctx context.Context, req *GetApplicationRequest) (*Application, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") -} -func (*UnimplementedApplicationRegistryServer) List(ctx context.Context, req *ListApplicationsRequest) (*Applications, error) { - return nil, status.Errorf(codes.Unimplemented, "method List not implemented") -} -func (*UnimplementedApplicationRegistryServer) Update(ctx context.Context, req *UpdateApplicationRequest) (*Application, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") -} -func (*UnimplementedApplicationRegistryServer) Delete(ctx context.Context, req *ApplicationIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (*UnimplementedApplicationRegistryServer) Restore(ctx context.Context, req *ApplicationIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Restore not implemented") -} -func (*UnimplementedApplicationRegistryServer) Purge(ctx context.Context, req *ApplicationIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Purge not implemented") -} -func (*UnimplementedApplicationRegistryServer) IssueDevEUI(ctx context.Context, req *ApplicationIdentifiers) (*IssueDevEUIResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method IssueDevEUI not implemented") -} - -func RegisterApplicationRegistryServer(s *grpc.Server, srv ApplicationRegistryServer) { - s.RegisterService(&_ApplicationRegistry_serviceDesc, srv) -} - -func _ApplicationRegistry_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateApplicationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationRegistryServer).Create(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationRegistry/Create", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationRegistryServer).Create(ctx, req.(*CreateApplicationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ApplicationRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetApplicationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationRegistryServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationRegistry/Get", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationRegistryServer).Get(ctx, req.(*GetApplicationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ApplicationRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListApplicationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationRegistryServer).List(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationRegistry/List", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationRegistryServer).List(ctx, req.(*ListApplicationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ApplicationRegistry_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateApplicationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationRegistryServer).Update(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationRegistry/Update", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationRegistryServer).Update(ctx, req.(*UpdateApplicationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ApplicationRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationRegistryServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationRegistry/Delete", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationRegistryServer).Delete(ctx, req.(*ApplicationIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _ApplicationRegistry_Restore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationRegistryServer).Restore(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationRegistry/Restore", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationRegistryServer).Restore(ctx, req.(*ApplicationIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _ApplicationRegistry_Purge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationRegistryServer).Purge(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationRegistry/Purge", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationRegistryServer).Purge(ctx, req.(*ApplicationIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _ApplicationRegistry_IssueDevEUI_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationRegistryServer).IssueDevEUI(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationRegistry/IssueDevEUI", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationRegistryServer).IssueDevEUI(ctx, req.(*ApplicationIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -var _ApplicationRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.ApplicationRegistry", - HandlerType: (*ApplicationRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Create", - Handler: _ApplicationRegistry_Create_Handler, - }, - { - MethodName: "Get", - Handler: _ApplicationRegistry_Get_Handler, - }, - { - MethodName: "List", - Handler: _ApplicationRegistry_List_Handler, - }, - { - MethodName: "Update", - Handler: _ApplicationRegistry_Update_Handler, - }, - { - MethodName: "Delete", - Handler: _ApplicationRegistry_Delete_Handler, - }, - { - MethodName: "Restore", - Handler: _ApplicationRegistry_Restore_Handler, - }, - { - MethodName: "Purge", - Handler: _ApplicationRegistry_Purge_Handler, - }, - { - MethodName: "IssueDevEUI", - Handler: _ApplicationRegistry_IssueDevEUI_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/application_services.proto", -} - -// ApplicationAccessClient is the client API for ApplicationAccess service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ApplicationAccessClient interface { - // List the rights the caller has on this application. - ListRights(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*Rights, error) - // Create an API key scoped to this application. - CreateAPIKey(ctx context.Context, in *CreateApplicationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) - // List the API keys for this application. - ListAPIKeys(ctx context.Context, in *ListApplicationAPIKeysRequest, opts ...grpc.CallOption) (*APIKeys, error) - // Get a single API key of this application. - GetAPIKey(ctx context.Context, in *GetApplicationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) - // Update the rights of an API key of the application. - // This method can also be used to delete the API key, by giving it no rights. - // The caller is required to have all assigned or/and removed rights. - UpdateAPIKey(ctx context.Context, in *UpdateApplicationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) - // Get the rights of a collaborator (member) of the application. - // Pseudo-rights in the response (such as the "_ALL" right) are not expanded. - GetCollaborator(ctx context.Context, in *GetApplicationCollaboratorRequest, opts ...grpc.CallOption) (*GetCollaboratorResponse, error) - // Set the rights of a collaborator (member) on the application. - // This method can also be used to delete the collaborator, by giving them no rights. - // The caller is required to have all assigned or/and removed rights. - SetCollaborator(ctx context.Context, in *SetApplicationCollaboratorRequest, opts ...grpc.CallOption) (*types.Empty, error) - // List the collaborators on this application. - ListCollaborators(ctx context.Context, in *ListApplicationCollaboratorsRequest, opts ...grpc.CallOption) (*Collaborators, error) -} - -type applicationAccessClient struct { - cc *grpc.ClientConn -} - -func NewApplicationAccessClient(cc *grpc.ClientConn) ApplicationAccessClient { - return &applicationAccessClient{cc} -} - -func (c *applicationAccessClient) ListRights(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*Rights, error) { - out := new(Rights) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationAccess/ListRights", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *applicationAccessClient) CreateAPIKey(ctx context.Context, in *CreateApplicationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { - out := new(APIKey) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationAccess/CreateAPIKey", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *applicationAccessClient) ListAPIKeys(ctx context.Context, in *ListApplicationAPIKeysRequest, opts ...grpc.CallOption) (*APIKeys, error) { - out := new(APIKeys) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationAccess/ListAPIKeys", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *applicationAccessClient) GetAPIKey(ctx context.Context, in *GetApplicationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { - out := new(APIKey) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationAccess/GetAPIKey", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *applicationAccessClient) UpdateAPIKey(ctx context.Context, in *UpdateApplicationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { - out := new(APIKey) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationAccess/UpdateAPIKey", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *applicationAccessClient) GetCollaborator(ctx context.Context, in *GetApplicationCollaboratorRequest, opts ...grpc.CallOption) (*GetCollaboratorResponse, error) { - out := new(GetCollaboratorResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationAccess/GetCollaborator", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *applicationAccessClient) SetCollaborator(ctx context.Context, in *SetApplicationCollaboratorRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationAccess/SetCollaborator", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *applicationAccessClient) ListCollaborators(ctx context.Context, in *ListApplicationCollaboratorsRequest, opts ...grpc.CallOption) (*Collaborators, error) { - out := new(Collaborators) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationAccess/ListCollaborators", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ApplicationAccessServer is the server API for ApplicationAccess service. -type ApplicationAccessServer interface { - // List the rights the caller has on this application. - ListRights(context.Context, *ApplicationIdentifiers) (*Rights, error) - // Create an API key scoped to this application. - CreateAPIKey(context.Context, *CreateApplicationAPIKeyRequest) (*APIKey, error) - // List the API keys for this application. - ListAPIKeys(context.Context, *ListApplicationAPIKeysRequest) (*APIKeys, error) - // Get a single API key of this application. - GetAPIKey(context.Context, *GetApplicationAPIKeyRequest) (*APIKey, error) - // Update the rights of an API key of the application. - // This method can also be used to delete the API key, by giving it no rights. - // The caller is required to have all assigned or/and removed rights. - UpdateAPIKey(context.Context, *UpdateApplicationAPIKeyRequest) (*APIKey, error) - // Get the rights of a collaborator (member) of the application. - // Pseudo-rights in the response (such as the "_ALL" right) are not expanded. - GetCollaborator(context.Context, *GetApplicationCollaboratorRequest) (*GetCollaboratorResponse, error) - // Set the rights of a collaborator (member) on the application. - // This method can also be used to delete the collaborator, by giving them no rights. - // The caller is required to have all assigned or/and removed rights. - SetCollaborator(context.Context, *SetApplicationCollaboratorRequest) (*types.Empty, error) - // List the collaborators on this application. - ListCollaborators(context.Context, *ListApplicationCollaboratorsRequest) (*Collaborators, error) -} - -// UnimplementedApplicationAccessServer can be embedded to have forward compatible implementations. -type UnimplementedApplicationAccessServer struct { -} - -func (*UnimplementedApplicationAccessServer) ListRights(ctx context.Context, req *ApplicationIdentifiers) (*Rights, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListRights not implemented") -} -func (*UnimplementedApplicationAccessServer) CreateAPIKey(ctx context.Context, req *CreateApplicationAPIKeyRequest) (*APIKey, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateAPIKey not implemented") -} -func (*UnimplementedApplicationAccessServer) ListAPIKeys(ctx context.Context, req *ListApplicationAPIKeysRequest) (*APIKeys, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListAPIKeys not implemented") -} -func (*UnimplementedApplicationAccessServer) GetAPIKey(ctx context.Context, req *GetApplicationAPIKeyRequest) (*APIKey, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetAPIKey not implemented") -} -func (*UnimplementedApplicationAccessServer) UpdateAPIKey(ctx context.Context, req *UpdateApplicationAPIKeyRequest) (*APIKey, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateAPIKey not implemented") -} -func (*UnimplementedApplicationAccessServer) GetCollaborator(ctx context.Context, req *GetApplicationCollaboratorRequest) (*GetCollaboratorResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetCollaborator not implemented") -} -func (*UnimplementedApplicationAccessServer) SetCollaborator(ctx context.Context, req *SetApplicationCollaboratorRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method SetCollaborator not implemented") -} -func (*UnimplementedApplicationAccessServer) ListCollaborators(ctx context.Context, req *ListApplicationCollaboratorsRequest) (*Collaborators, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListCollaborators not implemented") -} - -func RegisterApplicationAccessServer(s *grpc.Server, srv ApplicationAccessServer) { - s.RegisterService(&_ApplicationAccess_serviceDesc, srv) -} - -func _ApplicationAccess_ListRights_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationAccessServer).ListRights(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationAccess/ListRights", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationAccessServer).ListRights(ctx, req.(*ApplicationIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _ApplicationAccess_CreateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateApplicationAPIKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationAccessServer).CreateAPIKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationAccess/CreateAPIKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationAccessServer).CreateAPIKey(ctx, req.(*CreateApplicationAPIKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ApplicationAccess_ListAPIKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListApplicationAPIKeysRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationAccessServer).ListAPIKeys(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationAccess/ListAPIKeys", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationAccessServer).ListAPIKeys(ctx, req.(*ListApplicationAPIKeysRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ApplicationAccess_GetAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetApplicationAPIKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationAccessServer).GetAPIKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationAccess/GetAPIKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationAccessServer).GetAPIKey(ctx, req.(*GetApplicationAPIKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ApplicationAccess_UpdateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateApplicationAPIKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationAccessServer).UpdateAPIKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationAccess/UpdateAPIKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationAccessServer).UpdateAPIKey(ctx, req.(*UpdateApplicationAPIKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ApplicationAccess_GetCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetApplicationCollaboratorRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationAccessServer).GetCollaborator(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationAccess/GetCollaborator", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationAccessServer).GetCollaborator(ctx, req.(*GetApplicationCollaboratorRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ApplicationAccess_SetCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetApplicationCollaboratorRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationAccessServer).SetCollaborator(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationAccess/SetCollaborator", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationAccessServer).SetCollaborator(ctx, req.(*SetApplicationCollaboratorRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ApplicationAccess_ListCollaborators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListApplicationCollaboratorsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationAccessServer).ListCollaborators(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationAccess/ListCollaborators", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationAccessServer).ListCollaborators(ctx, req.(*ListApplicationCollaboratorsRequest)) - } - return interceptor(ctx, in, info, handler) -} +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -var _ApplicationAccess_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.ApplicationAccess", - HandlerType: (*ApplicationAccessServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListRights", - Handler: _ApplicationAccess_ListRights_Handler, - }, - { - MethodName: "CreateAPIKey", - Handler: _ApplicationAccess_CreateAPIKey_Handler, - }, - { - MethodName: "ListAPIKeys", - Handler: _ApplicationAccess_ListAPIKeys_Handler, - }, - { - MethodName: "GetAPIKey", - Handler: _ApplicationAccess_GetAPIKey_Handler, - }, - { - MethodName: "UpdateAPIKey", - Handler: _ApplicationAccess_UpdateAPIKey_Handler, - }, - { - MethodName: "GetCollaborator", - Handler: _ApplicationAccess_GetCollaborator_Handler, - }, - { - MethodName: "SetCollaborator", - Handler: _ApplicationAccess_SetCollaborator_Handler, - }, - { - MethodName: "ListCollaborators", - Handler: _ApplicationAccess_ListCollaborators_Handler, +var File_lorawan_stack_api_application_services_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_application_services_proto_rawDesc = []byte{ + 0x0a, 0x2c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x2d, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, + 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x32, 0xec, 0x09, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xe3, 0x01, 0x0a, 0x06, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x91, 0x01, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x8a, 0x01, 0x22, 0x33, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x50, + 0x22, 0x4b, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x01, 0x2a, + 0x12, 0x81, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x36, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xec, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9c, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x95, 0x01, 0x12, 0x0d, + 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5a, 0x35, 0x12, + 0x33, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x5a, 0x4d, 0x12, 0x4b, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x28, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x1a, 0x2e, 0x2f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, + 0x12, 0x70, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x20, 0x2a, 0x1e, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x12, 0x79, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x26, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x22, 0x26, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x75, 0x0a, + 0x05, 0x50, 0x75, 0x72, 0x67, 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x2a, 0x24, + 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, + 0x75, 0x72, 0x67, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x0b, 0x49, 0x73, 0x73, 0x75, 0x65, 0x44, 0x65, + 0x76, 0x45, 0x55, 0x49, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x23, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, + 0x73, 0x75, 0x65, 0x44, 0x65, 0x76, 0x45, 0x55, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x22, 0x26, 0x2f, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x2d, 0x65, 0x75, + 0x69, 0x32, 0xbf, 0x0b, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x7b, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x12, 0x9a, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x42, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x22, 0x37, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x3a, 0x01, + 0x2a, 0x12, 0x96, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, + 0x73, 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x39, 0x12, 0x37, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x9a, 0x01, 0x0a, 0x09, 0x47, + 0x65, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x48, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x12, 0x40, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, + 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa7, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, + 0x22, 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x1a, 0x44, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, + 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x7d, 0x3a, 0x01, + 0x2a, 0x12, 0xd7, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x31, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xe7, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xe0, 0x01, 0x5a, 0x62, 0x12, 0x60, 0x2f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, + 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x5a, + 0x7a, 0x12, 0x78, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa5, 0x01, 0x0a, 0x0f, + 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, + 0x31, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x41, 0x1a, 0x3c, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, + 0x3a, 0x01, 0x2a, 0x12, 0xad, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, + 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x44, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x73, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var file_lorawan_stack_api_application_services_proto_goTypes = []interface{}{ + (*CreateApplicationRequest)(nil), // 0: ttn.lorawan.v3.CreateApplicationRequest + (*GetApplicationRequest)(nil), // 1: ttn.lorawan.v3.GetApplicationRequest + (*ListApplicationsRequest)(nil), // 2: ttn.lorawan.v3.ListApplicationsRequest + (*UpdateApplicationRequest)(nil), // 3: ttn.lorawan.v3.UpdateApplicationRequest + (*ApplicationIdentifiers)(nil), // 4: ttn.lorawan.v3.ApplicationIdentifiers + (*CreateApplicationAPIKeyRequest)(nil), // 5: ttn.lorawan.v3.CreateApplicationAPIKeyRequest + (*ListApplicationAPIKeysRequest)(nil), // 6: ttn.lorawan.v3.ListApplicationAPIKeysRequest + (*GetApplicationAPIKeyRequest)(nil), // 7: ttn.lorawan.v3.GetApplicationAPIKeyRequest + (*UpdateApplicationAPIKeyRequest)(nil), // 8: ttn.lorawan.v3.UpdateApplicationAPIKeyRequest + (*GetApplicationCollaboratorRequest)(nil), // 9: ttn.lorawan.v3.GetApplicationCollaboratorRequest + (*SetApplicationCollaboratorRequest)(nil), // 10: ttn.lorawan.v3.SetApplicationCollaboratorRequest + (*ListApplicationCollaboratorsRequest)(nil), // 11: ttn.lorawan.v3.ListApplicationCollaboratorsRequest + (*Application)(nil), // 12: ttn.lorawan.v3.Application + (*Applications)(nil), // 13: ttn.lorawan.v3.Applications + (*emptypb.Empty)(nil), // 14: google.protobuf.Empty + (*IssueDevEUIResponse)(nil), // 15: ttn.lorawan.v3.IssueDevEUIResponse + (*Rights)(nil), // 16: ttn.lorawan.v3.Rights + (*APIKey)(nil), // 17: ttn.lorawan.v3.APIKey + (*APIKeys)(nil), // 18: ttn.lorawan.v3.APIKeys + (*GetCollaboratorResponse)(nil), // 19: ttn.lorawan.v3.GetCollaboratorResponse + (*Collaborators)(nil), // 20: ttn.lorawan.v3.Collaborators +} +var file_lorawan_stack_api_application_services_proto_depIdxs = []int32{ + 0, // 0: ttn.lorawan.v3.ApplicationRegistry.Create:input_type -> ttn.lorawan.v3.CreateApplicationRequest + 1, // 1: ttn.lorawan.v3.ApplicationRegistry.Get:input_type -> ttn.lorawan.v3.GetApplicationRequest + 2, // 2: ttn.lorawan.v3.ApplicationRegistry.List:input_type -> ttn.lorawan.v3.ListApplicationsRequest + 3, // 3: ttn.lorawan.v3.ApplicationRegistry.Update:input_type -> ttn.lorawan.v3.UpdateApplicationRequest + 4, // 4: ttn.lorawan.v3.ApplicationRegistry.Delete:input_type -> ttn.lorawan.v3.ApplicationIdentifiers + 4, // 5: ttn.lorawan.v3.ApplicationRegistry.Restore:input_type -> ttn.lorawan.v3.ApplicationIdentifiers + 4, // 6: ttn.lorawan.v3.ApplicationRegistry.Purge:input_type -> ttn.lorawan.v3.ApplicationIdentifiers + 4, // 7: ttn.lorawan.v3.ApplicationRegistry.IssueDevEUI:input_type -> ttn.lorawan.v3.ApplicationIdentifiers + 4, // 8: ttn.lorawan.v3.ApplicationAccess.ListRights:input_type -> ttn.lorawan.v3.ApplicationIdentifiers + 5, // 9: ttn.lorawan.v3.ApplicationAccess.CreateAPIKey:input_type -> ttn.lorawan.v3.CreateApplicationAPIKeyRequest + 6, // 10: ttn.lorawan.v3.ApplicationAccess.ListAPIKeys:input_type -> ttn.lorawan.v3.ListApplicationAPIKeysRequest + 7, // 11: ttn.lorawan.v3.ApplicationAccess.GetAPIKey:input_type -> ttn.lorawan.v3.GetApplicationAPIKeyRequest + 8, // 12: ttn.lorawan.v3.ApplicationAccess.UpdateAPIKey:input_type -> ttn.lorawan.v3.UpdateApplicationAPIKeyRequest + 9, // 13: ttn.lorawan.v3.ApplicationAccess.GetCollaborator:input_type -> ttn.lorawan.v3.GetApplicationCollaboratorRequest + 10, // 14: ttn.lorawan.v3.ApplicationAccess.SetCollaborator:input_type -> ttn.lorawan.v3.SetApplicationCollaboratorRequest + 11, // 15: ttn.lorawan.v3.ApplicationAccess.ListCollaborators:input_type -> ttn.lorawan.v3.ListApplicationCollaboratorsRequest + 12, // 16: ttn.lorawan.v3.ApplicationRegistry.Create:output_type -> ttn.lorawan.v3.Application + 12, // 17: ttn.lorawan.v3.ApplicationRegistry.Get:output_type -> ttn.lorawan.v3.Application + 13, // 18: ttn.lorawan.v3.ApplicationRegistry.List:output_type -> ttn.lorawan.v3.Applications + 12, // 19: ttn.lorawan.v3.ApplicationRegistry.Update:output_type -> ttn.lorawan.v3.Application + 14, // 20: ttn.lorawan.v3.ApplicationRegistry.Delete:output_type -> google.protobuf.Empty + 14, // 21: ttn.lorawan.v3.ApplicationRegistry.Restore:output_type -> google.protobuf.Empty + 14, // 22: ttn.lorawan.v3.ApplicationRegistry.Purge:output_type -> google.protobuf.Empty + 15, // 23: ttn.lorawan.v3.ApplicationRegistry.IssueDevEUI:output_type -> ttn.lorawan.v3.IssueDevEUIResponse + 16, // 24: ttn.lorawan.v3.ApplicationAccess.ListRights:output_type -> ttn.lorawan.v3.Rights + 17, // 25: ttn.lorawan.v3.ApplicationAccess.CreateAPIKey:output_type -> ttn.lorawan.v3.APIKey + 18, // 26: ttn.lorawan.v3.ApplicationAccess.ListAPIKeys:output_type -> ttn.lorawan.v3.APIKeys + 17, // 27: ttn.lorawan.v3.ApplicationAccess.GetAPIKey:output_type -> ttn.lorawan.v3.APIKey + 17, // 28: ttn.lorawan.v3.ApplicationAccess.UpdateAPIKey:output_type -> ttn.lorawan.v3.APIKey + 19, // 29: ttn.lorawan.v3.ApplicationAccess.GetCollaborator:output_type -> ttn.lorawan.v3.GetCollaboratorResponse + 14, // 30: ttn.lorawan.v3.ApplicationAccess.SetCollaborator:output_type -> google.protobuf.Empty + 20, // 31: ttn.lorawan.v3.ApplicationAccess.ListCollaborators:output_type -> ttn.lorawan.v3.Collaborators + 16, // [16:32] is the sub-list for method output_type + 0, // [0:16] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_application_services_proto_init() } +func file_lorawan_stack_api_application_services_proto_init() { + if File_lorawan_stack_api_application_services_proto != nil { + return + } + file_lorawan_stack_api_application_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_rights_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_application_services_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 2, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/application_services.proto", + GoTypes: file_lorawan_stack_api_application_services_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_application_services_proto_depIdxs, + }.Build() + File_lorawan_stack_api_application_services_proto = out.File + file_lorawan_stack_api_application_services_proto_rawDesc = nil + file_lorawan_stack_api_application_services_proto_goTypes = nil + file_lorawan_stack_api_application_services_proto_depIdxs = nil } diff --git a/pkg/ttnpb/application_services.pb.gw.go b/pkg/ttnpb/application_services.pb.gw.go index 22aef1e80b..3820fab190 100644 --- a/pkg/ttnpb/application_services.pb.gw.go +++ b/pkg/ttnpb/application_services.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join func request_ApplicationRegistry_Create_0(ctx context.Context, marshaler runtime.Marshaler, client ApplicationRegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -58,7 +56,6 @@ func request_ApplicationRegistry_Create_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -93,7 +90,6 @@ func local_request_ApplicationRegistry_Create_0(ctx context.Context, marshaler r } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -128,7 +124,6 @@ func request_ApplicationRegistry_Create_1(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -163,7 +158,6 @@ func local_request_ApplicationRegistry_Create_1(ctx context.Context, marshaler r } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -194,7 +188,6 @@ func request_ApplicationRegistry_Get_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -228,7 +221,6 @@ func local_request_ApplicationRegistry_Get_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -302,7 +294,6 @@ func request_ApplicationRegistry_List_1(ctx context.Context, marshaler runtime.M } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -336,7 +327,6 @@ func local_request_ApplicationRegistry_List_1(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -374,7 +364,6 @@ func request_ApplicationRegistry_List_2(ctx context.Context, marshaler runtime.M } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -408,7 +397,6 @@ func local_request_ApplicationRegistry_List_2(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -450,7 +438,6 @@ func request_ApplicationRegistry_Update_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "application.ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application.ids.application_id", err) } @@ -485,7 +472,6 @@ func local_request_ApplicationRegistry_Update_0(ctx context.Context, marshaler r } err = runtime.PopulateFieldFromPath(&protoReq, "application.ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application.ids.application_id", err) } @@ -512,7 +498,6 @@ func request_ApplicationRegistry_Delete_0(ctx context.Context, marshaler runtime } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -539,7 +524,6 @@ func local_request_ApplicationRegistry_Delete_0(ctx context.Context, marshaler r } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -566,7 +550,6 @@ func request_ApplicationRegistry_Restore_0(ctx context.Context, marshaler runtim } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -593,7 +576,6 @@ func local_request_ApplicationRegistry_Restore_0(ctx context.Context, marshaler } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -620,7 +602,6 @@ func request_ApplicationRegistry_Purge_0(ctx context.Context, marshaler runtime. } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -647,7 +628,6 @@ func local_request_ApplicationRegistry_Purge_0(ctx context.Context, marshaler ru } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -674,7 +654,6 @@ func request_ApplicationRegistry_IssueDevEUI_0(ctx context.Context, marshaler ru } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -701,7 +680,6 @@ func local_request_ApplicationRegistry_IssueDevEUI_0(ctx context.Context, marsha } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -728,7 +706,6 @@ func request_ApplicationAccess_ListRights_0(ctx context.Context, marshaler runti } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -755,7 +732,6 @@ func local_request_ApplicationAccess_ListRights_0(ctx context.Context, marshaler } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -790,7 +766,6 @@ func request_ApplicationAccess_CreateAPIKey_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -825,7 +800,6 @@ func local_request_ApplicationAccess_CreateAPIKey_0(ctx context.Context, marshal } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -856,7 +830,6 @@ func request_ApplicationAccess_ListAPIKeys_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -890,7 +863,6 @@ func local_request_ApplicationAccess_ListAPIKeys_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -928,7 +900,6 @@ func request_ApplicationAccess_GetAPIKey_0(ctx context.Context, marshaler runtim } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -939,7 +910,6 @@ func request_ApplicationAccess_GetAPIKey_0(ctx context.Context, marshaler runtim } protoReq.KeyId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "key_id", err) } @@ -973,7 +943,6 @@ func local_request_ApplicationAccess_GetAPIKey_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -984,7 +953,6 @@ func local_request_ApplicationAccess_GetAPIKey_0(ctx context.Context, marshaler } protoReq.KeyId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "key_id", err) } @@ -1026,7 +994,6 @@ func request_ApplicationAccess_UpdateAPIKey_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1037,7 +1004,6 @@ func request_ApplicationAccess_UpdateAPIKey_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "api_key.id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "api_key.id", err) } @@ -1072,7 +1038,6 @@ func local_request_ApplicationAccess_UpdateAPIKey_0(ctx context.Context, marshal } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1083,7 +1048,6 @@ func local_request_ApplicationAccess_UpdateAPIKey_0(ctx context.Context, marshal } err = runtime.PopulateFieldFromPath(&protoReq, "api_key.id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "api_key.id", err) } @@ -1114,7 +1078,6 @@ func request_ApplicationAccess_GetCollaborator_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1125,7 +1088,6 @@ func request_ApplicationAccess_GetCollaborator_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -1159,7 +1121,6 @@ func local_request_ApplicationAccess_GetCollaborator_0(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1170,7 +1131,6 @@ func local_request_ApplicationAccess_GetCollaborator_0(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -1208,7 +1168,6 @@ func request_ApplicationAccess_GetCollaborator_1(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1219,7 +1178,6 @@ func request_ApplicationAccess_GetCollaborator_1(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -1253,7 +1211,6 @@ func local_request_ApplicationAccess_GetCollaborator_1(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1264,7 +1221,6 @@ func local_request_ApplicationAccess_GetCollaborator_1(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -1306,7 +1262,6 @@ func request_ApplicationAccess_SetCollaborator_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1341,7 +1296,6 @@ func local_request_ApplicationAccess_SetCollaborator_0(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1372,7 +1326,6 @@ func request_ApplicationAccess_ListCollaborators_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1406,7 +1359,6 @@ func local_request_ApplicationAccess_ListCollaborators_0(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1435,20 +1387,22 @@ func RegisterApplicationRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/Create", runtime.WithHTTPPathPattern("/users/{collaborator.user_ids.user_id}/applications")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationRegistry_Create_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationRegistry_Create_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_Create_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1458,20 +1412,22 @@ func RegisterApplicationRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/Create", runtime.WithHTTPPathPattern("/organizations/{collaborator.organization_ids.organization_id}/applications")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationRegistry_Create_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationRegistry_Create_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_Create_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_Create_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1481,20 +1437,22 @@ func RegisterApplicationRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/Get", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationRegistry_Get_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationRegistry_Get_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1504,20 +1462,22 @@ func RegisterApplicationRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/List", runtime.WithHTTPPathPattern("/applications")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationRegistry_List_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationRegistry_List_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1527,20 +1487,22 @@ func RegisterApplicationRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/List", runtime.WithHTTPPathPattern("/users/{collaborator.user_ids.user_id}/applications")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationRegistry_List_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationRegistry_List_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_List_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_List_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1550,20 +1512,22 @@ func RegisterApplicationRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/List", runtime.WithHTTPPathPattern("/organizations/{collaborator.organization_ids.organization_id}/applications")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationRegistry_List_2(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationRegistry_List_2(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_List_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_List_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1573,20 +1537,22 @@ func RegisterApplicationRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/Update", runtime.WithHTTPPathPattern("/applications/{application.ids.application_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationRegistry_Update_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationRegistry_Update_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_Update_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1596,20 +1562,22 @@ func RegisterApplicationRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/Delete", runtime.WithHTTPPathPattern("/applications/{application_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationRegistry_Delete_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationRegistry_Delete_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1619,20 +1587,22 @@ func RegisterApplicationRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/Restore", runtime.WithHTTPPathPattern("/applications/{application_id}/restore")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationRegistry_Restore_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationRegistry_Restore_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_Restore_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_Restore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1642,20 +1612,22 @@ func RegisterApplicationRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/Purge", runtime.WithHTTPPathPattern("/applications/{application_id}/purge")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationRegistry_Purge_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationRegistry_Purge_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_Purge_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_Purge_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1665,20 +1637,22 @@ func RegisterApplicationRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/IssueDevEUI", runtime.WithHTTPPathPattern("/applications/{application_id}/dev-eui")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationRegistry_IssueDevEUI_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationRegistry_IssueDevEUI_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_IssueDevEUI_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_IssueDevEUI_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1697,20 +1671,22 @@ func RegisterApplicationAccessHandlerServer(ctx context.Context, mux *runtime.Se var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/ListRights", runtime.WithHTTPPathPattern("/applications/{application_id}/rights")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationAccess_ListRights_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationAccess_ListRights_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_ListRights_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_ListRights_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1720,20 +1696,22 @@ func RegisterApplicationAccessHandlerServer(ctx context.Context, mux *runtime.Se var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/CreateAPIKey", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/api-keys")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationAccess_CreateAPIKey_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationAccess_CreateAPIKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_CreateAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_CreateAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1743,20 +1721,22 @@ func RegisterApplicationAccessHandlerServer(ctx context.Context, mux *runtime.Se var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/ListAPIKeys", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/api-keys")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationAccess_ListAPIKeys_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationAccess_ListAPIKeys_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_ListAPIKeys_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_ListAPIKeys_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1766,20 +1746,22 @@ func RegisterApplicationAccessHandlerServer(ctx context.Context, mux *runtime.Se var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/GetAPIKey", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/api-keys/{key_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationAccess_GetAPIKey_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationAccess_GetAPIKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_GetAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_GetAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1789,20 +1771,22 @@ func RegisterApplicationAccessHandlerServer(ctx context.Context, mux *runtime.Se var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/UpdateAPIKey", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/api-keys/{api_key.id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationAccess_UpdateAPIKey_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationAccess_UpdateAPIKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_UpdateAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_UpdateAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1812,20 +1796,22 @@ func RegisterApplicationAccessHandlerServer(ctx context.Context, mux *runtime.Se var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/GetCollaborator", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/collaborator/user/{collaborator.user_ids.user_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationAccess_GetCollaborator_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationAccess_GetCollaborator_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_GetCollaborator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_GetCollaborator_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1835,20 +1821,22 @@ func RegisterApplicationAccessHandlerServer(ctx context.Context, mux *runtime.Se var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/GetCollaborator", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/collaborator/organization/{collaborator.organization_ids.organization_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationAccess_GetCollaborator_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationAccess_GetCollaborator_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_GetCollaborator_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_GetCollaborator_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1858,20 +1846,22 @@ func RegisterApplicationAccessHandlerServer(ctx context.Context, mux *runtime.Se var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/SetCollaborator", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/collaborators")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationAccess_SetCollaborator_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationAccess_SetCollaborator_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_SetCollaborator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_SetCollaborator_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1881,20 +1871,22 @@ func RegisterApplicationAccessHandlerServer(ctx context.Context, mux *runtime.Se var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/ListCollaborators", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/collaborators")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationAccess_ListCollaborators_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationAccess_ListCollaborators_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_ListCollaborators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_ListCollaborators_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1943,19 +1935,21 @@ func RegisterApplicationRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/Create", runtime.WithHTTPPathPattern("/users/{collaborator.user_ids.user_id}/applications")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationRegistry_Create_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationRegistry_Create_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_Create_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1963,19 +1957,21 @@ func RegisterApplicationRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/Create", runtime.WithHTTPPathPattern("/organizations/{collaborator.organization_ids.organization_id}/applications")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationRegistry_Create_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationRegistry_Create_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_Create_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_Create_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1983,19 +1979,21 @@ func RegisterApplicationRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/Get", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationRegistry_Get_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationRegistry_Get_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2003,19 +2001,21 @@ func RegisterApplicationRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/List", runtime.WithHTTPPathPattern("/applications")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationRegistry_List_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationRegistry_List_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2023,19 +2023,21 @@ func RegisterApplicationRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/List", runtime.WithHTTPPathPattern("/users/{collaborator.user_ids.user_id}/applications")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationRegistry_List_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationRegistry_List_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_List_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_List_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2043,19 +2045,21 @@ func RegisterApplicationRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/List", runtime.WithHTTPPathPattern("/organizations/{collaborator.organization_ids.organization_id}/applications")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationRegistry_List_2(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationRegistry_List_2(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_List_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_List_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2063,19 +2067,21 @@ func RegisterApplicationRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/Update", runtime.WithHTTPPathPattern("/applications/{application.ids.application_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationRegistry_Update_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationRegistry_Update_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_Update_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2083,19 +2089,21 @@ func RegisterApplicationRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/Delete", runtime.WithHTTPPathPattern("/applications/{application_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationRegistry_Delete_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationRegistry_Delete_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2103,19 +2111,21 @@ func RegisterApplicationRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/Restore", runtime.WithHTTPPathPattern("/applications/{application_id}/restore")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationRegistry_Restore_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationRegistry_Restore_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_Restore_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_Restore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2123,19 +2133,21 @@ func RegisterApplicationRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/Purge", runtime.WithHTTPPathPattern("/applications/{application_id}/purge")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationRegistry_Purge_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationRegistry_Purge_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_Purge_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_Purge_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2143,19 +2155,21 @@ func RegisterApplicationRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationRegistry/IssueDevEUI", runtime.WithHTTPPathPattern("/applications/{application_id}/dev-eui")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationRegistry_IssueDevEUI_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationRegistry_IssueDevEUI_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationRegistry_IssueDevEUI_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationRegistry_IssueDevEUI_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2163,27 +2177,27 @@ func RegisterApplicationRegistryHandlerClient(ctx context.Context, mux *runtime. } var ( - pattern_ApplicationRegistry_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "collaborator.user_ids.user_id", "applications"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationRegistry_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "collaborator.user_ids.user_id", "applications"}, "")) - pattern_ApplicationRegistry_Create_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "collaborator.organization_ids.organization_id", "applications"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationRegistry_Create_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "collaborator.organization_ids.organization_id", "applications"}, "")) - pattern_ApplicationRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"applications", "application_ids.application_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"applications", "application_ids.application_id"}, "")) - pattern_ApplicationRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"applications"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"applications"}, "")) - pattern_ApplicationRegistry_List_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "collaborator.user_ids.user_id", "applications"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationRegistry_List_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "collaborator.user_ids.user_id", "applications"}, "")) - pattern_ApplicationRegistry_List_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "collaborator.organization_ids.organization_id", "applications"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationRegistry_List_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "collaborator.organization_ids.organization_id", "applications"}, "")) - pattern_ApplicationRegistry_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"applications", "application.ids.application_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationRegistry_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"applications", "application.ids.application_id"}, "")) - pattern_ApplicationRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"applications", "application_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"applications", "application_id"}, "")) - pattern_ApplicationRegistry_Restore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_id", "restore"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationRegistry_Restore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_id", "restore"}, "")) - pattern_ApplicationRegistry_Purge_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_id", "purge"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationRegistry_Purge_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_id", "purge"}, "")) - pattern_ApplicationRegistry_IssueDevEUI_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_id", "dev-eui"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationRegistry_IssueDevEUI_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_id", "dev-eui"}, "")) ) var ( @@ -2252,19 +2266,21 @@ func RegisterApplicationAccessHandlerClient(ctx context.Context, mux *runtime.Se ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/ListRights", runtime.WithHTTPPathPattern("/applications/{application_id}/rights")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationAccess_ListRights_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationAccess_ListRights_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_ListRights_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_ListRights_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2272,19 +2288,21 @@ func RegisterApplicationAccessHandlerClient(ctx context.Context, mux *runtime.Se ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/CreateAPIKey", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/api-keys")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationAccess_CreateAPIKey_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationAccess_CreateAPIKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_CreateAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_CreateAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2292,19 +2310,21 @@ func RegisterApplicationAccessHandlerClient(ctx context.Context, mux *runtime.Se ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/ListAPIKeys", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/api-keys")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationAccess_ListAPIKeys_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationAccess_ListAPIKeys_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_ListAPIKeys_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_ListAPIKeys_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2312,19 +2332,21 @@ func RegisterApplicationAccessHandlerClient(ctx context.Context, mux *runtime.Se ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/GetAPIKey", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/api-keys/{key_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationAccess_GetAPIKey_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationAccess_GetAPIKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_GetAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_GetAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2332,19 +2354,21 @@ func RegisterApplicationAccessHandlerClient(ctx context.Context, mux *runtime.Se ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/UpdateAPIKey", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/api-keys/{api_key.id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationAccess_UpdateAPIKey_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationAccess_UpdateAPIKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_UpdateAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_UpdateAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2352,19 +2376,21 @@ func RegisterApplicationAccessHandlerClient(ctx context.Context, mux *runtime.Se ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/GetCollaborator", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/collaborator/user/{collaborator.user_ids.user_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationAccess_GetCollaborator_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationAccess_GetCollaborator_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_GetCollaborator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_GetCollaborator_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2372,19 +2398,21 @@ func RegisterApplicationAccessHandlerClient(ctx context.Context, mux *runtime.Se ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/GetCollaborator", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/collaborator/organization/{collaborator.organization_ids.organization_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationAccess_GetCollaborator_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationAccess_GetCollaborator_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_GetCollaborator_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_GetCollaborator_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2392,19 +2420,21 @@ func RegisterApplicationAccessHandlerClient(ctx context.Context, mux *runtime.Se ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/SetCollaborator", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/collaborators")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationAccess_SetCollaborator_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationAccess_SetCollaborator_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_SetCollaborator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_SetCollaborator_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2412,19 +2442,21 @@ func RegisterApplicationAccessHandlerClient(ctx context.Context, mux *runtime.Se ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationAccess/ListCollaborators", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/collaborators")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationAccess_ListCollaborators_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationAccess_ListCollaborators_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationAccess_ListCollaborators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationAccess_ListCollaborators_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2432,23 +2464,23 @@ func RegisterApplicationAccessHandlerClient(ctx context.Context, mux *runtime.Se } var ( - pattern_ApplicationAccess_ListRights_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_id", "rights"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationAccess_ListRights_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_id", "rights"}, "")) - pattern_ApplicationAccess_CreateAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_ids.application_id", "api-keys"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationAccess_CreateAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_ids.application_id", "api-keys"}, "")) - pattern_ApplicationAccess_ListAPIKeys_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_ids.application_id", "api-keys"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationAccess_ListAPIKeys_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_ids.application_id", "api-keys"}, "")) - pattern_ApplicationAccess_GetAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"applications", "application_ids.application_id", "api-keys", "key_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationAccess_GetAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"applications", "application_ids.application_id", "api-keys", "key_id"}, "")) - pattern_ApplicationAccess_UpdateAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"applications", "application_ids.application_id", "api-keys", "api_key.id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationAccess_UpdateAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"applications", "application_ids.application_id", "api-keys", "api_key.id"}, "")) - pattern_ApplicationAccess_GetCollaborator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"applications", "application_ids.application_id", "collaborator", "user", "collaborator.user_ids.user_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationAccess_GetCollaborator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"applications", "application_ids.application_id", "collaborator", "user", "collaborator.user_ids.user_id"}, "")) - pattern_ApplicationAccess_GetCollaborator_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"applications", "application_ids.application_id", "collaborator", "organization", "collaborator.organization_ids.organization_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationAccess_GetCollaborator_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"applications", "application_ids.application_id", "collaborator", "organization", "collaborator.organization_ids.organization_id"}, "")) - pattern_ApplicationAccess_SetCollaborator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_ids.application_id", "collaborators"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationAccess_SetCollaborator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_ids.application_id", "collaborators"}, "")) - pattern_ApplicationAccess_ListCollaborators_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_ids.application_id", "collaborators"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationAccess_ListCollaborators_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_ids.application_id", "collaborators"}, "")) ) var ( diff --git a/pkg/ttnpb/application_services.pb.validate.go b/pkg/ttnpb/application_services.pb.validate.go index 4fe10699d0..90a1820015 100644 --- a/pkg/ttnpb/application_services.pb.validate.go +++ b/pkg/ttnpb/application_services.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,8 +29,5 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) - -// define the regex for a UUID once up-front -var _application_services_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") diff --git a/pkg/ttnpb/application_services_grpc.pb.go b/pkg/ttnpb/application_services_grpc.pb.go new file mode 100644 index 0000000000..cc8fabd4bc --- /dev/null +++ b/pkg/ttnpb/application_services_grpc.pb.go @@ -0,0 +1,768 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/application_services.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// ApplicationRegistryClient is the client API for ApplicationRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ApplicationRegistryClient interface { + // Create a new application. This also sets the given organization or user as + // first collaborator with all possible rights. + Create(ctx context.Context, in *CreateApplicationRequest, opts ...grpc.CallOption) (*Application, error) + // Get the application with the given identifiers, selecting the fields specified + // in the field mask. + // More or less fields may be returned, depending on the rights of the caller. + Get(ctx context.Context, in *GetApplicationRequest, opts ...grpc.CallOption) (*Application, error) + // List applications where the given user or organization is a direct collaborator. + // If no user or organization is given, this returns the applications the caller + // has access to. + // Similar to Get, this selects the fields given by the field mask. + // More or less fields may be returned, depending on the rights of the caller. + List(ctx context.Context, in *ListApplicationsRequest, opts ...grpc.CallOption) (*Applications, error) + // Update the application, changing the fields specified by the field mask to the provided values. + Update(ctx context.Context, in *UpdateApplicationRequest, opts ...grpc.CallOption) (*Application, error) + // Delete the application. This may not release the application ID for reuse. + // All end devices must be deleted from the application before it can be deleted. + Delete(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Restore a recently deleted application. + // + // Deployment configuration may specify if, and for how long after deletion, + // entities can be restored. + Restore(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Purge the application. This will release the application ID for reuse. + // All end devices must be deleted from the application before it can be deleted. + // The application owner is responsible for clearing data from any (external) integrations + // that may store and expose data by application ID + Purge(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Request DevEUI from the configured address block for a device inside the application. + // The maximum number of DevEUI's issued per application can be configured. + IssueDevEUI(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*IssueDevEUIResponse, error) +} + +type applicationRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewApplicationRegistryClient(cc grpc.ClientConnInterface) ApplicationRegistryClient { + return &applicationRegistryClient{cc} +} + +func (c *applicationRegistryClient) Create(ctx context.Context, in *CreateApplicationRequest, opts ...grpc.CallOption) (*Application, error) { + out := new(Application) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationRegistry/Create", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationRegistryClient) Get(ctx context.Context, in *GetApplicationRequest, opts ...grpc.CallOption) (*Application, error) { + out := new(Application) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationRegistry/Get", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationRegistryClient) List(ctx context.Context, in *ListApplicationsRequest, opts ...grpc.CallOption) (*Applications, error) { + out := new(Applications) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationRegistry/List", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationRegistryClient) Update(ctx context.Context, in *UpdateApplicationRequest, opts ...grpc.CallOption) (*Application, error) { + out := new(Application) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationRegistry/Update", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationRegistryClient) Delete(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationRegistry/Delete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationRegistryClient) Restore(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationRegistry/Restore", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationRegistryClient) Purge(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationRegistry/Purge", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationRegistryClient) IssueDevEUI(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*IssueDevEUIResponse, error) { + out := new(IssueDevEUIResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationRegistry/IssueDevEUI", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ApplicationRegistryServer is the server API for ApplicationRegistry service. +// All implementations must embed UnimplementedApplicationRegistryServer +// for forward compatibility +type ApplicationRegistryServer interface { + // Create a new application. This also sets the given organization or user as + // first collaborator with all possible rights. + Create(context.Context, *CreateApplicationRequest) (*Application, error) + // Get the application with the given identifiers, selecting the fields specified + // in the field mask. + // More or less fields may be returned, depending on the rights of the caller. + Get(context.Context, *GetApplicationRequest) (*Application, error) + // List applications where the given user or organization is a direct collaborator. + // If no user or organization is given, this returns the applications the caller + // has access to. + // Similar to Get, this selects the fields given by the field mask. + // More or less fields may be returned, depending on the rights of the caller. + List(context.Context, *ListApplicationsRequest) (*Applications, error) + // Update the application, changing the fields specified by the field mask to the provided values. + Update(context.Context, *UpdateApplicationRequest) (*Application, error) + // Delete the application. This may not release the application ID for reuse. + // All end devices must be deleted from the application before it can be deleted. + Delete(context.Context, *ApplicationIdentifiers) (*emptypb.Empty, error) + // Restore a recently deleted application. + // + // Deployment configuration may specify if, and for how long after deletion, + // entities can be restored. + Restore(context.Context, *ApplicationIdentifiers) (*emptypb.Empty, error) + // Purge the application. This will release the application ID for reuse. + // All end devices must be deleted from the application before it can be deleted. + // The application owner is responsible for clearing data from any (external) integrations + // that may store and expose data by application ID + Purge(context.Context, *ApplicationIdentifiers) (*emptypb.Empty, error) + // Request DevEUI from the configured address block for a device inside the application. + // The maximum number of DevEUI's issued per application can be configured. + IssueDevEUI(context.Context, *ApplicationIdentifiers) (*IssueDevEUIResponse, error) + mustEmbedUnimplementedApplicationRegistryServer() +} + +// UnimplementedApplicationRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedApplicationRegistryServer struct { +} + +func (UnimplementedApplicationRegistryServer) Create(context.Context, *CreateApplicationRequest) (*Application, error) { + return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") +} +func (UnimplementedApplicationRegistryServer) Get(context.Context, *GetApplicationRequest) (*Application, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (UnimplementedApplicationRegistryServer) List(context.Context, *ListApplicationsRequest) (*Applications, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedApplicationRegistryServer) Update(context.Context, *UpdateApplicationRequest) (*Application, error) { + return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") +} +func (UnimplementedApplicationRegistryServer) Delete(context.Context, *ApplicationIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedApplicationRegistryServer) Restore(context.Context, *ApplicationIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Restore not implemented") +} +func (UnimplementedApplicationRegistryServer) Purge(context.Context, *ApplicationIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Purge not implemented") +} +func (UnimplementedApplicationRegistryServer) IssueDevEUI(context.Context, *ApplicationIdentifiers) (*IssueDevEUIResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method IssueDevEUI not implemented") +} +func (UnimplementedApplicationRegistryServer) mustEmbedUnimplementedApplicationRegistryServer() {} + +// UnsafeApplicationRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ApplicationRegistryServer will +// result in compilation errors. +type UnsafeApplicationRegistryServer interface { + mustEmbedUnimplementedApplicationRegistryServer() +} + +func RegisterApplicationRegistryServer(s grpc.ServiceRegistrar, srv ApplicationRegistryServer) { + s.RegisterService(&ApplicationRegistry_ServiceDesc, srv) +} + +func _ApplicationRegistry_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateApplicationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationRegistryServer).Create(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationRegistry/Create", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationRegistryServer).Create(ctx, req.(*CreateApplicationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetApplicationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationRegistryServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationRegistry/Get", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationRegistryServer).Get(ctx, req.(*GetApplicationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListApplicationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationRegistryServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationRegistry/List", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationRegistryServer).List(ctx, req.(*ListApplicationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationRegistry_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateApplicationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationRegistryServer).Update(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationRegistry/Update", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationRegistryServer).Update(ctx, req.(*UpdateApplicationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApplicationIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationRegistryServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationRegistry/Delete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationRegistryServer).Delete(ctx, req.(*ApplicationIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationRegistry_Restore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApplicationIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationRegistryServer).Restore(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationRegistry/Restore", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationRegistryServer).Restore(ctx, req.(*ApplicationIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationRegistry_Purge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApplicationIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationRegistryServer).Purge(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationRegistry/Purge", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationRegistryServer).Purge(ctx, req.(*ApplicationIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationRegistry_IssueDevEUI_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApplicationIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationRegistryServer).IssueDevEUI(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationRegistry/IssueDevEUI", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationRegistryServer).IssueDevEUI(ctx, req.(*ApplicationIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// ApplicationRegistry_ServiceDesc is the grpc.ServiceDesc for ApplicationRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ApplicationRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.ApplicationRegistry", + HandlerType: (*ApplicationRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Create", + Handler: _ApplicationRegistry_Create_Handler, + }, + { + MethodName: "Get", + Handler: _ApplicationRegistry_Get_Handler, + }, + { + MethodName: "List", + Handler: _ApplicationRegistry_List_Handler, + }, + { + MethodName: "Update", + Handler: _ApplicationRegistry_Update_Handler, + }, + { + MethodName: "Delete", + Handler: _ApplicationRegistry_Delete_Handler, + }, + { + MethodName: "Restore", + Handler: _ApplicationRegistry_Restore_Handler, + }, + { + MethodName: "Purge", + Handler: _ApplicationRegistry_Purge_Handler, + }, + { + MethodName: "IssueDevEUI", + Handler: _ApplicationRegistry_IssueDevEUI_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/application_services.proto", +} + +// ApplicationAccessClient is the client API for ApplicationAccess service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ApplicationAccessClient interface { + // List the rights the caller has on this application. + ListRights(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*Rights, error) + // Create an API key scoped to this application. + CreateAPIKey(ctx context.Context, in *CreateApplicationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) + // List the API keys for this application. + ListAPIKeys(ctx context.Context, in *ListApplicationAPIKeysRequest, opts ...grpc.CallOption) (*APIKeys, error) + // Get a single API key of this application. + GetAPIKey(ctx context.Context, in *GetApplicationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) + // Update the rights of an API key of the application. + // This method can also be used to delete the API key, by giving it no rights. + // The caller is required to have all assigned or/and removed rights. + UpdateAPIKey(ctx context.Context, in *UpdateApplicationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) + // Get the rights of a collaborator (member) of the application. + // Pseudo-rights in the response (such as the "_ALL" right) are not expanded. + GetCollaborator(ctx context.Context, in *GetApplicationCollaboratorRequest, opts ...grpc.CallOption) (*GetCollaboratorResponse, error) + // Set the rights of a collaborator (member) on the application. + // This method can also be used to delete the collaborator, by giving them no rights. + // The caller is required to have all assigned or/and removed rights. + SetCollaborator(ctx context.Context, in *SetApplicationCollaboratorRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // List the collaborators on this application. + ListCollaborators(ctx context.Context, in *ListApplicationCollaboratorsRequest, opts ...grpc.CallOption) (*Collaborators, error) +} + +type applicationAccessClient struct { + cc grpc.ClientConnInterface +} + +func NewApplicationAccessClient(cc grpc.ClientConnInterface) ApplicationAccessClient { + return &applicationAccessClient{cc} +} + +func (c *applicationAccessClient) ListRights(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*Rights, error) { + out := new(Rights) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationAccess/ListRights", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationAccessClient) CreateAPIKey(ctx context.Context, in *CreateApplicationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { + out := new(APIKey) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationAccess/CreateAPIKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationAccessClient) ListAPIKeys(ctx context.Context, in *ListApplicationAPIKeysRequest, opts ...grpc.CallOption) (*APIKeys, error) { + out := new(APIKeys) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationAccess/ListAPIKeys", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationAccessClient) GetAPIKey(ctx context.Context, in *GetApplicationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { + out := new(APIKey) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationAccess/GetAPIKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationAccessClient) UpdateAPIKey(ctx context.Context, in *UpdateApplicationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { + out := new(APIKey) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationAccess/UpdateAPIKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationAccessClient) GetCollaborator(ctx context.Context, in *GetApplicationCollaboratorRequest, opts ...grpc.CallOption) (*GetCollaboratorResponse, error) { + out := new(GetCollaboratorResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationAccess/GetCollaborator", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationAccessClient) SetCollaborator(ctx context.Context, in *SetApplicationCollaboratorRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationAccess/SetCollaborator", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationAccessClient) ListCollaborators(ctx context.Context, in *ListApplicationCollaboratorsRequest, opts ...grpc.CallOption) (*Collaborators, error) { + out := new(Collaborators) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationAccess/ListCollaborators", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ApplicationAccessServer is the server API for ApplicationAccess service. +// All implementations must embed UnimplementedApplicationAccessServer +// for forward compatibility +type ApplicationAccessServer interface { + // List the rights the caller has on this application. + ListRights(context.Context, *ApplicationIdentifiers) (*Rights, error) + // Create an API key scoped to this application. + CreateAPIKey(context.Context, *CreateApplicationAPIKeyRequest) (*APIKey, error) + // List the API keys for this application. + ListAPIKeys(context.Context, *ListApplicationAPIKeysRequest) (*APIKeys, error) + // Get a single API key of this application. + GetAPIKey(context.Context, *GetApplicationAPIKeyRequest) (*APIKey, error) + // Update the rights of an API key of the application. + // This method can also be used to delete the API key, by giving it no rights. + // The caller is required to have all assigned or/and removed rights. + UpdateAPIKey(context.Context, *UpdateApplicationAPIKeyRequest) (*APIKey, error) + // Get the rights of a collaborator (member) of the application. + // Pseudo-rights in the response (such as the "_ALL" right) are not expanded. + GetCollaborator(context.Context, *GetApplicationCollaboratorRequest) (*GetCollaboratorResponse, error) + // Set the rights of a collaborator (member) on the application. + // This method can also be used to delete the collaborator, by giving them no rights. + // The caller is required to have all assigned or/and removed rights. + SetCollaborator(context.Context, *SetApplicationCollaboratorRequest) (*emptypb.Empty, error) + // List the collaborators on this application. + ListCollaborators(context.Context, *ListApplicationCollaboratorsRequest) (*Collaborators, error) + mustEmbedUnimplementedApplicationAccessServer() +} + +// UnimplementedApplicationAccessServer must be embedded to have forward compatible implementations. +type UnimplementedApplicationAccessServer struct { +} + +func (UnimplementedApplicationAccessServer) ListRights(context.Context, *ApplicationIdentifiers) (*Rights, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListRights not implemented") +} +func (UnimplementedApplicationAccessServer) CreateAPIKey(context.Context, *CreateApplicationAPIKeyRequest) (*APIKey, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateAPIKey not implemented") +} +func (UnimplementedApplicationAccessServer) ListAPIKeys(context.Context, *ListApplicationAPIKeysRequest) (*APIKeys, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListAPIKeys not implemented") +} +func (UnimplementedApplicationAccessServer) GetAPIKey(context.Context, *GetApplicationAPIKeyRequest) (*APIKey, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAPIKey not implemented") +} +func (UnimplementedApplicationAccessServer) UpdateAPIKey(context.Context, *UpdateApplicationAPIKeyRequest) (*APIKey, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateAPIKey not implemented") +} +func (UnimplementedApplicationAccessServer) GetCollaborator(context.Context, *GetApplicationCollaboratorRequest) (*GetCollaboratorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCollaborator not implemented") +} +func (UnimplementedApplicationAccessServer) SetCollaborator(context.Context, *SetApplicationCollaboratorRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetCollaborator not implemented") +} +func (UnimplementedApplicationAccessServer) ListCollaborators(context.Context, *ListApplicationCollaboratorsRequest) (*Collaborators, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListCollaborators not implemented") +} +func (UnimplementedApplicationAccessServer) mustEmbedUnimplementedApplicationAccessServer() {} + +// UnsafeApplicationAccessServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ApplicationAccessServer will +// result in compilation errors. +type UnsafeApplicationAccessServer interface { + mustEmbedUnimplementedApplicationAccessServer() +} + +func RegisterApplicationAccessServer(s grpc.ServiceRegistrar, srv ApplicationAccessServer) { + s.RegisterService(&ApplicationAccess_ServiceDesc, srv) +} + +func _ApplicationAccess_ListRights_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApplicationIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationAccessServer).ListRights(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationAccess/ListRights", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationAccessServer).ListRights(ctx, req.(*ApplicationIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationAccess_CreateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateApplicationAPIKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationAccessServer).CreateAPIKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationAccess/CreateAPIKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationAccessServer).CreateAPIKey(ctx, req.(*CreateApplicationAPIKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationAccess_ListAPIKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListApplicationAPIKeysRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationAccessServer).ListAPIKeys(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationAccess/ListAPIKeys", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationAccessServer).ListAPIKeys(ctx, req.(*ListApplicationAPIKeysRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationAccess_GetAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetApplicationAPIKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationAccessServer).GetAPIKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationAccess/GetAPIKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationAccessServer).GetAPIKey(ctx, req.(*GetApplicationAPIKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationAccess_UpdateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateApplicationAPIKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationAccessServer).UpdateAPIKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationAccess/UpdateAPIKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationAccessServer).UpdateAPIKey(ctx, req.(*UpdateApplicationAPIKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationAccess_GetCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetApplicationCollaboratorRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationAccessServer).GetCollaborator(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationAccess/GetCollaborator", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationAccessServer).GetCollaborator(ctx, req.(*GetApplicationCollaboratorRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationAccess_SetCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetApplicationCollaboratorRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationAccessServer).SetCollaborator(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationAccess/SetCollaborator", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationAccessServer).SetCollaborator(ctx, req.(*SetApplicationCollaboratorRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationAccess_ListCollaborators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListApplicationCollaboratorsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationAccessServer).ListCollaborators(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationAccess/ListCollaborators", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationAccessServer).ListCollaborators(ctx, req.(*ListApplicationCollaboratorsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ApplicationAccess_ServiceDesc is the grpc.ServiceDesc for ApplicationAccess service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ApplicationAccess_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.ApplicationAccess", + HandlerType: (*ApplicationAccessServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListRights", + Handler: _ApplicationAccess_ListRights_Handler, + }, + { + MethodName: "CreateAPIKey", + Handler: _ApplicationAccess_CreateAPIKey_Handler, + }, + { + MethodName: "ListAPIKeys", + Handler: _ApplicationAccess_ListAPIKeys_Handler, + }, + { + MethodName: "GetAPIKey", + Handler: _ApplicationAccess_GetAPIKey_Handler, + }, + { + MethodName: "UpdateAPIKey", + Handler: _ApplicationAccess_UpdateAPIKey_Handler, + }, + { + MethodName: "GetCollaborator", + Handler: _ApplicationAccess_GetCollaborator_Handler, + }, + { + MethodName: "SetCollaborator", + Handler: _ApplicationAccess_SetCollaborator_Handler, + }, + { + MethodName: "ListCollaborators", + Handler: _ApplicationAccess_ListCollaborators_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/application_services.proto", +} diff --git a/pkg/ttnpb/applicationserver.pb.go b/pkg/ttnpb/applicationserver.pb.go index d0256fac2f..73c550cc64 100644 --- a/pkg/ttnpb/applicationserver.pb.go +++ b/pkg/ttnpb/applicationserver.pb.go @@ -1,36 +1,48 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/applicationserver.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + emptypb "google.golang.org/protobuf/types/known/emptypb" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type AsConfiguration_PubSub_Providers_Status int32 @@ -43,1910 +55,1861 @@ const ( AsConfiguration_PubSub_Providers_DISABLED AsConfiguration_PubSub_Providers_Status = 2 ) -var AsConfiguration_PubSub_Providers_Status_name = map[int32]string{ - 0: "ENABLED", - 1: "WARNING", - 2: "DISABLED", -} +// Enum value maps for AsConfiguration_PubSub_Providers_Status. +var ( + AsConfiguration_PubSub_Providers_Status_name = map[int32]string{ + 0: "ENABLED", + 1: "WARNING", + 2: "DISABLED", + } + AsConfiguration_PubSub_Providers_Status_value = map[string]int32{ + "ENABLED": 0, + "WARNING": 1, + "DISABLED": 2, + } +) -var AsConfiguration_PubSub_Providers_Status_value = map[string]int32{ - "ENABLED": 0, - "WARNING": 1, - "DISABLED": 2, +func (x AsConfiguration_PubSub_Providers_Status) Enum() *AsConfiguration_PubSub_Providers_Status { + p := new(AsConfiguration_PubSub_Providers_Status) + *p = x + return p } func (x AsConfiguration_PubSub_Providers_Status) String() string { - return proto.EnumName(AsConfiguration_PubSub_Providers_Status_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (AsConfiguration_PubSub_Providers_Status) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_applicationserver_proto_enumTypes[0].Descriptor() +} + +func (AsConfiguration_PubSub_Providers_Status) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_applicationserver_proto_enumTypes[0] +} + +func (x AsConfiguration_PubSub_Providers_Status) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AsConfiguration_PubSub_Providers_Status.Descriptor instead. func (AsConfiguration_PubSub_Providers_Status) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{4, 0, 0, 0} + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{4, 0, 0, 0} } type ApplicationLink struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Default message payload formatters to use when there are no formatters // defined on the end device level. DefaultFormatters *MessagePayloadFormatters `protobuf:"bytes,3,opt,name=default_formatters,json=defaultFormatters,proto3" json:"default_formatters,omitempty"` // Skip decryption of uplink payloads and encryption of downlink payloads. // Leave empty for the using the Application Server's default setting. - SkipPayloadCrypto *types.BoolValue `protobuf:"bytes,5,opt,name=skip_payload_crypto,json=skipPayloadCrypto,proto3" json:"skip_payload_crypto,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + SkipPayloadCrypto *wrapperspb.BoolValue `protobuf:"bytes,5,opt,name=skip_payload_crypto,json=skipPayloadCrypto,proto3" json:"skip_payload_crypto,omitempty"` } -func (m *ApplicationLink) Reset() { *m = ApplicationLink{} } -func (m *ApplicationLink) String() string { return proto.CompactTextString(m) } -func (*ApplicationLink) ProtoMessage() {} -func (*ApplicationLink) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{0} -} -func (m *ApplicationLink) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationLink.Unmarshal(m, b) -} -func (m *ApplicationLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationLink.Marshal(b, m, deterministic) -} -func (m *ApplicationLink) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationLink.Merge(m, src) +func (x *ApplicationLink) Reset() { + *x = ApplicationLink{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationLink) XXX_Size() int { - return xxx_messageInfo_ApplicationLink.Size(m) + +func (x *ApplicationLink) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationLink) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationLink.DiscardUnknown(m) + +func (*ApplicationLink) ProtoMessage() {} + +func (x *ApplicationLink) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationLink proto.InternalMessageInfo +// Deprecated: Use ApplicationLink.ProtoReflect.Descriptor instead. +func (*ApplicationLink) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{0} +} -func (m *ApplicationLink) GetDefaultFormatters() *MessagePayloadFormatters { - if m != nil { - return m.DefaultFormatters +func (x *ApplicationLink) GetDefaultFormatters() *MessagePayloadFormatters { + if x != nil { + return x.DefaultFormatters } return nil } -func (m *ApplicationLink) GetSkipPayloadCrypto() *types.BoolValue { - if m != nil { - return m.SkipPayloadCrypto +func (x *ApplicationLink) GetSkipPayloadCrypto() *wrapperspb.BoolValue { + if x != nil { + return x.SkipPayloadCrypto } return nil } type GetApplicationLinkRequest struct { - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GetApplicationLinkRequest) Reset() { *m = GetApplicationLinkRequest{} } -func (m *GetApplicationLinkRequest) String() string { return proto.CompactTextString(m) } -func (*GetApplicationLinkRequest) ProtoMessage() {} -func (*GetApplicationLinkRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{1} -} -func (m *GetApplicationLinkRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetApplicationLinkRequest.Unmarshal(m, b) + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *GetApplicationLinkRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetApplicationLinkRequest.Marshal(b, m, deterministic) -} -func (m *GetApplicationLinkRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetApplicationLinkRequest.Merge(m, src) + +func (x *GetApplicationLinkRequest) Reset() { + *x = GetApplicationLinkRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetApplicationLinkRequest) XXX_Size() int { - return xxx_messageInfo_GetApplicationLinkRequest.Size(m) + +func (x *GetApplicationLinkRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetApplicationLinkRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetApplicationLinkRequest.DiscardUnknown(m) + +func (*GetApplicationLinkRequest) ProtoMessage() {} + +func (x *GetApplicationLinkRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetApplicationLinkRequest proto.InternalMessageInfo +// Deprecated: Use GetApplicationLinkRequest.ProtoReflect.Descriptor instead. +func (*GetApplicationLinkRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{1} +} -func (m *GetApplicationLinkRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *GetApplicationLinkRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *GetApplicationLinkRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *GetApplicationLinkRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type SetApplicationLinkRequest struct { - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` - Link *ApplicationLink `protobuf:"bytes,2,opt,name=link,proto3" json:"link,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SetApplicationLinkRequest) Reset() { *m = SetApplicationLinkRequest{} } -func (m *SetApplicationLinkRequest) String() string { return proto.CompactTextString(m) } -func (*SetApplicationLinkRequest) ProtoMessage() {} -func (*SetApplicationLinkRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{2} -} -func (m *SetApplicationLinkRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetApplicationLinkRequest.Unmarshal(m, b) + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + Link *ApplicationLink `protobuf:"bytes,2,opt,name=link,proto3" json:"link,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *SetApplicationLinkRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetApplicationLinkRequest.Marshal(b, m, deterministic) -} -func (m *SetApplicationLinkRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetApplicationLinkRequest.Merge(m, src) + +func (x *SetApplicationLinkRequest) Reset() { + *x = SetApplicationLinkRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SetApplicationLinkRequest) XXX_Size() int { - return xxx_messageInfo_SetApplicationLinkRequest.Size(m) + +func (x *SetApplicationLinkRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SetApplicationLinkRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetApplicationLinkRequest.DiscardUnknown(m) + +func (*SetApplicationLinkRequest) ProtoMessage() {} + +func (x *SetApplicationLinkRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SetApplicationLinkRequest proto.InternalMessageInfo +// Deprecated: Use SetApplicationLinkRequest.ProtoReflect.Descriptor instead. +func (*SetApplicationLinkRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{2} +} -func (m *SetApplicationLinkRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *SetApplicationLinkRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *SetApplicationLinkRequest) GetLink() *ApplicationLink { - if m != nil { - return m.Link +func (x *SetApplicationLinkRequest) GetLink() *ApplicationLink { + if x != nil { + return x.Link } return nil } -func (m *SetApplicationLinkRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *SetApplicationLinkRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } // Link stats as monitored by the Application Server. type ApplicationLinkStats struct { - LinkedAt *types.Timestamp `protobuf:"bytes,1,opt,name=linked_at,json=linkedAt,proto3" json:"linked_at,omitempty"` - NetworkServerAddress string `protobuf:"bytes,2,opt,name=network_server_address,json=networkServerAddress,proto3" json:"network_server_address,omitempty"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LinkedAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=linked_at,json=linkedAt,proto3" json:"linked_at,omitempty"` + NetworkServerAddress string `protobuf:"bytes,2,opt,name=network_server_address,json=networkServerAddress,proto3" json:"network_server_address,omitempty"` // Timestamp when the last upstream message has been received from a Network Server. // This can be a join-accept, uplink message or downlink message event. - LastUpReceivedAt *types.Timestamp `protobuf:"bytes,3,opt,name=last_up_received_at,json=lastUpReceivedAt,proto3" json:"last_up_received_at,omitempty"` + LastUpReceivedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=last_up_received_at,json=lastUpReceivedAt,proto3" json:"last_up_received_at,omitempty"` // Number of upstream messages received. UpCount uint64 `protobuf:"varint,4,opt,name=up_count,json=upCount,proto3" json:"up_count,omitempty"` // Timestamp when the last downlink message has been forwarded to a Network Server. - LastDownlinkForwardedAt *types.Timestamp `protobuf:"bytes,5,opt,name=last_downlink_forwarded_at,json=lastDownlinkForwardedAt,proto3" json:"last_downlink_forwarded_at,omitempty"` + LastDownlinkForwardedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_downlink_forwarded_at,json=lastDownlinkForwardedAt,proto3" json:"last_downlink_forwarded_at,omitempty"` // Number of downlink messages forwarded. - DownlinkCount uint64 `protobuf:"varint,6,opt,name=downlink_count,json=downlinkCount,proto3" json:"downlink_count,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + DownlinkCount uint64 `protobuf:"varint,6,opt,name=downlink_count,json=downlinkCount,proto3" json:"downlink_count,omitempty"` } -func (m *ApplicationLinkStats) Reset() { *m = ApplicationLinkStats{} } -func (m *ApplicationLinkStats) String() string { return proto.CompactTextString(m) } -func (*ApplicationLinkStats) ProtoMessage() {} -func (*ApplicationLinkStats) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{3} -} -func (m *ApplicationLinkStats) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationLinkStats.Unmarshal(m, b) -} -func (m *ApplicationLinkStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationLinkStats.Marshal(b, m, deterministic) -} -func (m *ApplicationLinkStats) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationLinkStats.Merge(m, src) +func (x *ApplicationLinkStats) Reset() { + *x = ApplicationLinkStats{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationLinkStats) XXX_Size() int { - return xxx_messageInfo_ApplicationLinkStats.Size(m) + +func (x *ApplicationLinkStats) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationLinkStats) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationLinkStats.DiscardUnknown(m) + +func (*ApplicationLinkStats) ProtoMessage() {} + +func (x *ApplicationLinkStats) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationLinkStats proto.InternalMessageInfo +// Deprecated: Use ApplicationLinkStats.ProtoReflect.Descriptor instead. +func (*ApplicationLinkStats) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{3} +} -func (m *ApplicationLinkStats) GetLinkedAt() *types.Timestamp { - if m != nil { - return m.LinkedAt +func (x *ApplicationLinkStats) GetLinkedAt() *timestamppb.Timestamp { + if x != nil { + return x.LinkedAt } return nil } -func (m *ApplicationLinkStats) GetNetworkServerAddress() string { - if m != nil { - return m.NetworkServerAddress +func (x *ApplicationLinkStats) GetNetworkServerAddress() string { + if x != nil { + return x.NetworkServerAddress } return "" } -func (m *ApplicationLinkStats) GetLastUpReceivedAt() *types.Timestamp { - if m != nil { - return m.LastUpReceivedAt +func (x *ApplicationLinkStats) GetLastUpReceivedAt() *timestamppb.Timestamp { + if x != nil { + return x.LastUpReceivedAt } return nil } -func (m *ApplicationLinkStats) GetUpCount() uint64 { - if m != nil { - return m.UpCount +func (x *ApplicationLinkStats) GetUpCount() uint64 { + if x != nil { + return x.UpCount } return 0 } -func (m *ApplicationLinkStats) GetLastDownlinkForwardedAt() *types.Timestamp { - if m != nil { - return m.LastDownlinkForwardedAt +func (x *ApplicationLinkStats) GetLastDownlinkForwardedAt() *timestamppb.Timestamp { + if x != nil { + return x.LastDownlinkForwardedAt } return nil } -func (m *ApplicationLinkStats) GetDownlinkCount() uint64 { - if m != nil { - return m.DownlinkCount +func (x *ApplicationLinkStats) GetDownlinkCount() uint64 { + if x != nil { + return x.DownlinkCount } return 0 } // Application Server configuration. type AsConfiguration struct { - Pubsub *AsConfiguration_PubSub `protobuf:"bytes,1,opt,name=pubsub,proto3" json:"pubsub,omitempty"` - Webhooks *AsConfiguration_Webhooks `protobuf:"bytes,2,opt,name=webhooks,proto3" json:"webhooks,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *AsConfiguration) Reset() { *m = AsConfiguration{} } -func (m *AsConfiguration) String() string { return proto.CompactTextString(m) } -func (*AsConfiguration) ProtoMessage() {} -func (*AsConfiguration) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{4} -} -func (m *AsConfiguration) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AsConfiguration.Unmarshal(m, b) -} -func (m *AsConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AsConfiguration.Marshal(b, m, deterministic) -} -func (m *AsConfiguration) XXX_Merge(src proto.Message) { - xxx_messageInfo_AsConfiguration.Merge(m, src) -} -func (m *AsConfiguration) XXX_Size() int { - return xxx_messageInfo_AsConfiguration.Size(m) -} -func (m *AsConfiguration) XXX_DiscardUnknown() { - xxx_messageInfo_AsConfiguration.DiscardUnknown(m) + Pubsub *AsConfiguration_PubSub `protobuf:"bytes,1,opt,name=pubsub,proto3" json:"pubsub,omitempty"` + Webhooks *AsConfiguration_Webhooks `protobuf:"bytes,2,opt,name=webhooks,proto3" json:"webhooks,omitempty"` } -var xxx_messageInfo_AsConfiguration proto.InternalMessageInfo - -func (m *AsConfiguration) GetPubsub() *AsConfiguration_PubSub { - if m != nil { - return m.Pubsub +func (x *AsConfiguration) Reset() { + *x = AsConfiguration{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (m *AsConfiguration) GetWebhooks() *AsConfiguration_Webhooks { - if m != nil { - return m.Webhooks - } - return nil +func (x *AsConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) } -type AsConfiguration_PubSub struct { - Providers *AsConfiguration_PubSub_Providers `protobuf:"bytes,1,opt,name=providers,proto3" json:"providers,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +func (*AsConfiguration) ProtoMessage() {} -func (m *AsConfiguration_PubSub) Reset() { *m = AsConfiguration_PubSub{} } -func (m *AsConfiguration_PubSub) String() string { return proto.CompactTextString(m) } -func (*AsConfiguration_PubSub) ProtoMessage() {} -func (*AsConfiguration_PubSub) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{4, 0} -} -func (m *AsConfiguration_PubSub) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AsConfiguration_PubSub.Unmarshal(m, b) -} -func (m *AsConfiguration_PubSub) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AsConfiguration_PubSub.Marshal(b, m, deterministic) -} -func (m *AsConfiguration_PubSub) XXX_Merge(src proto.Message) { - xxx_messageInfo_AsConfiguration_PubSub.Merge(m, src) -} -func (m *AsConfiguration_PubSub) XXX_Size() int { - return xxx_messageInfo_AsConfiguration_PubSub.Size(m) -} -func (m *AsConfiguration_PubSub) XXX_DiscardUnknown() { - xxx_messageInfo_AsConfiguration_PubSub.DiscardUnknown(m) +func (x *AsConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AsConfiguration_PubSub proto.InternalMessageInfo +// Deprecated: Use AsConfiguration.ProtoReflect.Descriptor instead. +func (*AsConfiguration) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{4} +} -func (m *AsConfiguration_PubSub) GetProviders() *AsConfiguration_PubSub_Providers { - if m != nil { - return m.Providers +func (x *AsConfiguration) GetPubsub() *AsConfiguration_PubSub { + if x != nil { + return x.Pubsub } return nil } -type AsConfiguration_PubSub_Providers struct { - Mqtt AsConfiguration_PubSub_Providers_Status `protobuf:"varint,1,opt,name=mqtt,proto3,enum=ttn.lorawan.v3.AsConfiguration_PubSub_Providers_Status" json:"mqtt,omitempty"` - Nats AsConfiguration_PubSub_Providers_Status `protobuf:"varint,2,opt,name=nats,proto3,enum=ttn.lorawan.v3.AsConfiguration_PubSub_Providers_Status" json:"nats,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *AsConfiguration) GetWebhooks() *AsConfiguration_Webhooks { + if x != nil { + return x.Webhooks + } + return nil } -func (m *AsConfiguration_PubSub_Providers) Reset() { *m = AsConfiguration_PubSub_Providers{} } -func (m *AsConfiguration_PubSub_Providers) String() string { return proto.CompactTextString(m) } -func (*AsConfiguration_PubSub_Providers) ProtoMessage() {} -func (*AsConfiguration_PubSub_Providers) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{4, 0, 0} -} -func (m *AsConfiguration_PubSub_Providers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AsConfiguration_PubSub_Providers.Unmarshal(m, b) -} -func (m *AsConfiguration_PubSub_Providers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AsConfiguration_PubSub_Providers.Marshal(b, m, deterministic) -} -func (m *AsConfiguration_PubSub_Providers) XXX_Merge(src proto.Message) { - xxx_messageInfo_AsConfiguration_PubSub_Providers.Merge(m, src) -} -func (m *AsConfiguration_PubSub_Providers) XXX_Size() int { - return xxx_messageInfo_AsConfiguration_PubSub_Providers.Size(m) -} -func (m *AsConfiguration_PubSub_Providers) XXX_DiscardUnknown() { - xxx_messageInfo_AsConfiguration_PubSub_Providers.DiscardUnknown(m) +type GetAsConfigurationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -var xxx_messageInfo_AsConfiguration_PubSub_Providers proto.InternalMessageInfo - -func (m *AsConfiguration_PubSub_Providers) GetMqtt() AsConfiguration_PubSub_Providers_Status { - if m != nil { - return m.Mqtt +func (x *GetAsConfigurationRequest) Reset() { + *x = GetAsConfigurationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return AsConfiguration_PubSub_Providers_ENABLED } -func (m *AsConfiguration_PubSub_Providers) GetNats() AsConfiguration_PubSub_Providers_Status { - if m != nil { - return m.Nats - } - return AsConfiguration_PubSub_Providers_ENABLED +func (x *GetAsConfigurationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -type AsConfiguration_Webhooks struct { - UnhealthyAttemptsThreshold int64 `protobuf:"varint,1,opt,name=unhealthy_attempts_threshold,json=unhealthyAttemptsThreshold,proto3" json:"unhealthy_attempts_threshold,omitempty"` - UnhealthyRetryInterval *types.Duration `protobuf:"bytes,2,opt,name=unhealthy_retry_interval,json=unhealthyRetryInterval,proto3" json:"unhealthy_retry_interval,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +func (*GetAsConfigurationRequest) ProtoMessage() {} -func (m *AsConfiguration_Webhooks) Reset() { *m = AsConfiguration_Webhooks{} } -func (m *AsConfiguration_Webhooks) String() string { return proto.CompactTextString(m) } -func (*AsConfiguration_Webhooks) ProtoMessage() {} -func (*AsConfiguration_Webhooks) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{4, 1} -} -func (m *AsConfiguration_Webhooks) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AsConfiguration_Webhooks.Unmarshal(m, b) -} -func (m *AsConfiguration_Webhooks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AsConfiguration_Webhooks.Marshal(b, m, deterministic) -} -func (m *AsConfiguration_Webhooks) XXX_Merge(src proto.Message) { - xxx_messageInfo_AsConfiguration_Webhooks.Merge(m, src) -} -func (m *AsConfiguration_Webhooks) XXX_Size() int { - return xxx_messageInfo_AsConfiguration_Webhooks.Size(m) +func (x *GetAsConfigurationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *AsConfiguration_Webhooks) XXX_DiscardUnknown() { - xxx_messageInfo_AsConfiguration_Webhooks.DiscardUnknown(m) + +// Deprecated: Use GetAsConfigurationRequest.ProtoReflect.Descriptor instead. +func (*GetAsConfigurationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{5} } -var xxx_messageInfo_AsConfiguration_Webhooks proto.InternalMessageInfo +type GetAsConfigurationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *AsConfiguration_Webhooks) GetUnhealthyAttemptsThreshold() int64 { - if m != nil { - return m.UnhealthyAttemptsThreshold - } - return 0 + Configuration *AsConfiguration `protobuf:"bytes,1,opt,name=configuration,proto3" json:"configuration,omitempty"` } -func (m *AsConfiguration_Webhooks) GetUnhealthyRetryInterval() *types.Duration { - if m != nil { - return m.UnhealthyRetryInterval +func (x *GetAsConfigurationResponse) Reset() { + *x = GetAsConfigurationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil -} - -type GetAsConfigurationRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *GetAsConfigurationRequest) Reset() { *m = GetAsConfigurationRequest{} } -func (m *GetAsConfigurationRequest) String() string { return proto.CompactTextString(m) } -func (*GetAsConfigurationRequest) ProtoMessage() {} -func (*GetAsConfigurationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{5} -} -func (m *GetAsConfigurationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetAsConfigurationRequest.Unmarshal(m, b) -} -func (m *GetAsConfigurationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetAsConfigurationRequest.Marshal(b, m, deterministic) -} -func (m *GetAsConfigurationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetAsConfigurationRequest.Merge(m, src) -} -func (m *GetAsConfigurationRequest) XXX_Size() int { - return xxx_messageInfo_GetAsConfigurationRequest.Size(m) -} -func (m *GetAsConfigurationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetAsConfigurationRequest.DiscardUnknown(m) +func (x *GetAsConfigurationResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_GetAsConfigurationRequest proto.InternalMessageInfo +func (*GetAsConfigurationResponse) ProtoMessage() {} -type GetAsConfigurationResponse struct { - Configuration *AsConfiguration `protobuf:"bytes,1,opt,name=configuration,proto3" json:"configuration,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *GetAsConfigurationResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *GetAsConfigurationResponse) Reset() { *m = GetAsConfigurationResponse{} } -func (m *GetAsConfigurationResponse) String() string { return proto.CompactTextString(m) } -func (*GetAsConfigurationResponse) ProtoMessage() {} +// Deprecated: Use GetAsConfigurationResponse.ProtoReflect.Descriptor instead. func (*GetAsConfigurationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{6} -} -func (m *GetAsConfigurationResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetAsConfigurationResponse.Unmarshal(m, b) -} -func (m *GetAsConfigurationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetAsConfigurationResponse.Marshal(b, m, deterministic) -} -func (m *GetAsConfigurationResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetAsConfigurationResponse.Merge(m, src) -} -func (m *GetAsConfigurationResponse) XXX_Size() int { - return xxx_messageInfo_GetAsConfigurationResponse.Size(m) + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{6} } -func (m *GetAsConfigurationResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetAsConfigurationResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetAsConfigurationResponse proto.InternalMessageInfo -func (m *GetAsConfigurationResponse) GetConfiguration() *AsConfiguration { - if m != nil { - return m.Configuration +func (x *GetAsConfigurationResponse) GetConfiguration() *AsConfiguration { + if x != nil { + return x.Configuration } return nil } // Container for multiple Application uplink messages. type NsAsHandleUplinkRequest struct { - ApplicationUps []*ApplicationUp `protobuf:"bytes,1,rep,name=application_ups,json=applicationUps,proto3" json:"application_ups,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *NsAsHandleUplinkRequest) Reset() { *m = NsAsHandleUplinkRequest{} } -func (m *NsAsHandleUplinkRequest) String() string { return proto.CompactTextString(m) } -func (*NsAsHandleUplinkRequest) ProtoMessage() {} -func (*NsAsHandleUplinkRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{7} -} -func (m *NsAsHandleUplinkRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NsAsHandleUplinkRequest.Unmarshal(m, b) -} -func (m *NsAsHandleUplinkRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NsAsHandleUplinkRequest.Marshal(b, m, deterministic) -} -func (m *NsAsHandleUplinkRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_NsAsHandleUplinkRequest.Merge(m, src) -} -func (m *NsAsHandleUplinkRequest) XXX_Size() int { - return xxx_messageInfo_NsAsHandleUplinkRequest.Size(m) -} -func (m *NsAsHandleUplinkRequest) XXX_DiscardUnknown() { - xxx_messageInfo_NsAsHandleUplinkRequest.DiscardUnknown(m) + ApplicationUps []*ApplicationUp `protobuf:"bytes,1,rep,name=application_ups,json=applicationUps,proto3" json:"application_ups,omitempty"` } -var xxx_messageInfo_NsAsHandleUplinkRequest proto.InternalMessageInfo - -func (m *NsAsHandleUplinkRequest) GetApplicationUps() []*ApplicationUp { - if m != nil { - return m.ApplicationUps +func (x *NsAsHandleUplinkRequest) Reset() { + *x = NsAsHandleUplinkRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -type EncodeDownlinkRequest struct { - EndDeviceIds *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` - VersionIds *EndDeviceVersionIdentifiers `protobuf:"bytes,2,opt,name=version_ids,json=versionIds,proto3" json:"version_ids,omitempty"` - Downlink *ApplicationDownlink `protobuf:"bytes,3,opt,name=downlink,proto3" json:"downlink,omitempty"` - Formatter PayloadFormatter `protobuf:"varint,4,opt,name=formatter,proto3,enum=ttn.lorawan.v3.PayloadFormatter" json:"formatter,omitempty"` - Parameter string `protobuf:"bytes,5,opt,name=parameter,proto3" json:"parameter,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *EncodeDownlinkRequest) Reset() { *m = EncodeDownlinkRequest{} } -func (m *EncodeDownlinkRequest) String() string { return proto.CompactTextString(m) } -func (*EncodeDownlinkRequest) ProtoMessage() {} -func (*EncodeDownlinkRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{8} -} -func (m *EncodeDownlinkRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EncodeDownlinkRequest.Unmarshal(m, b) -} -func (m *EncodeDownlinkRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EncodeDownlinkRequest.Marshal(b, m, deterministic) -} -func (m *EncodeDownlinkRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_EncodeDownlinkRequest.Merge(m, src) -} -func (m *EncodeDownlinkRequest) XXX_Size() int { - return xxx_messageInfo_EncodeDownlinkRequest.Size(m) -} -func (m *EncodeDownlinkRequest) XXX_DiscardUnknown() { - xxx_messageInfo_EncodeDownlinkRequest.DiscardUnknown(m) +func (x *NsAsHandleUplinkRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_EncodeDownlinkRequest proto.InternalMessageInfo +func (*NsAsHandleUplinkRequest) ProtoMessage() {} -func (m *EncodeDownlinkRequest) GetEndDeviceIds() *EndDeviceIdentifiers { - if m != nil { - return m.EndDeviceIds +func (x *NsAsHandleUplinkRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *EncodeDownlinkRequest) GetVersionIds() *EndDeviceVersionIdentifiers { - if m != nil { - return m.VersionIds - } - return nil +// Deprecated: Use NsAsHandleUplinkRequest.ProtoReflect.Descriptor instead. +func (*NsAsHandleUplinkRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{7} } -func (m *EncodeDownlinkRequest) GetDownlink() *ApplicationDownlink { - if m != nil { - return m.Downlink +func (x *NsAsHandleUplinkRequest) GetApplicationUps() []*ApplicationUp { + if x != nil { + return x.ApplicationUps } return nil } -func (m *EncodeDownlinkRequest) GetFormatter() PayloadFormatter { - if m != nil { - return m.Formatter - } - return PayloadFormatter_FORMATTER_NONE -} +type EncodeDownlinkRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *EncodeDownlinkRequest) GetParameter() string { - if m != nil { - return m.Parameter - } - return "" + EndDeviceIds *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` + VersionIds *EndDeviceVersionIdentifiers `protobuf:"bytes,2,opt,name=version_ids,json=versionIds,proto3" json:"version_ids,omitempty"` + Downlink *ApplicationDownlink `protobuf:"bytes,3,opt,name=downlink,proto3" json:"downlink,omitempty"` + Formatter PayloadFormatter `protobuf:"varint,4,opt,name=formatter,proto3,enum=ttn.lorawan.v3.PayloadFormatter" json:"formatter,omitempty"` + Parameter string `protobuf:"bytes,5,opt,name=parameter,proto3" json:"parameter,omitempty"` } -type EncodeDownlinkResponse struct { - Downlink *ApplicationDownlink `protobuf:"bytes,1,opt,name=downlink,proto3" json:"downlink,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *EncodeDownlinkRequest) Reset() { + *x = EncodeDownlinkRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EncodeDownlinkResponse) Reset() { *m = EncodeDownlinkResponse{} } -func (m *EncodeDownlinkResponse) String() string { return proto.CompactTextString(m) } -func (*EncodeDownlinkResponse) ProtoMessage() {} -func (*EncodeDownlinkResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{9} -} -func (m *EncodeDownlinkResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EncodeDownlinkResponse.Unmarshal(m, b) -} -func (m *EncodeDownlinkResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EncodeDownlinkResponse.Marshal(b, m, deterministic) -} -func (m *EncodeDownlinkResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_EncodeDownlinkResponse.Merge(m, src) -} -func (m *EncodeDownlinkResponse) XXX_Size() int { - return xxx_messageInfo_EncodeDownlinkResponse.Size(m) -} -func (m *EncodeDownlinkResponse) XXX_DiscardUnknown() { - xxx_messageInfo_EncodeDownlinkResponse.DiscardUnknown(m) +func (x *EncodeDownlinkRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_EncodeDownlinkResponse proto.InternalMessageInfo +func (*EncodeDownlinkRequest) ProtoMessage() {} -func (m *EncodeDownlinkResponse) GetDownlink() *ApplicationDownlink { - if m != nil { - return m.Downlink +func (x *EncodeDownlinkRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type DecodeUplinkRequest struct { - EndDeviceIds *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` - VersionIds *EndDeviceVersionIdentifiers `protobuf:"bytes,2,opt,name=version_ids,json=versionIds,proto3" json:"version_ids,omitempty"` - Uplink *ApplicationUplink `protobuf:"bytes,3,opt,name=uplink,proto3" json:"uplink,omitempty"` - Formatter PayloadFormatter `protobuf:"varint,4,opt,name=formatter,proto3,enum=ttn.lorawan.v3.PayloadFormatter" json:"formatter,omitempty"` - Parameter string `protobuf:"bytes,5,opt,name=parameter,proto3" json:"parameter,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DecodeUplinkRequest) Reset() { *m = DecodeUplinkRequest{} } -func (m *DecodeUplinkRequest) String() string { return proto.CompactTextString(m) } -func (*DecodeUplinkRequest) ProtoMessage() {} -func (*DecodeUplinkRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{10} -} -func (m *DecodeUplinkRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DecodeUplinkRequest.Unmarshal(m, b) -} -func (m *DecodeUplinkRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DecodeUplinkRequest.Marshal(b, m, deterministic) -} -func (m *DecodeUplinkRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DecodeUplinkRequest.Merge(m, src) -} -func (m *DecodeUplinkRequest) XXX_Size() int { - return xxx_messageInfo_DecodeUplinkRequest.Size(m) -} -func (m *DecodeUplinkRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DecodeUplinkRequest.DiscardUnknown(m) +// Deprecated: Use EncodeDownlinkRequest.ProtoReflect.Descriptor instead. +func (*EncodeDownlinkRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{8} } -var xxx_messageInfo_DecodeUplinkRequest proto.InternalMessageInfo - -func (m *DecodeUplinkRequest) GetEndDeviceIds() *EndDeviceIdentifiers { - if m != nil { - return m.EndDeviceIds +func (x *EncodeDownlinkRequest) GetEndDeviceIds() *EndDeviceIdentifiers { + if x != nil { + return x.EndDeviceIds } return nil } -func (m *DecodeUplinkRequest) GetVersionIds() *EndDeviceVersionIdentifiers { - if m != nil { - return m.VersionIds +func (x *EncodeDownlinkRequest) GetVersionIds() *EndDeviceVersionIdentifiers { + if x != nil { + return x.VersionIds } return nil } -func (m *DecodeUplinkRequest) GetUplink() *ApplicationUplink { - if m != nil { - return m.Uplink +func (x *EncodeDownlinkRequest) GetDownlink() *ApplicationDownlink { + if x != nil { + return x.Downlink } return nil } -func (m *DecodeUplinkRequest) GetFormatter() PayloadFormatter { - if m != nil { - return m.Formatter +func (x *EncodeDownlinkRequest) GetFormatter() PayloadFormatter { + if x != nil { + return x.Formatter } return PayloadFormatter_FORMATTER_NONE } -func (m *DecodeUplinkRequest) GetParameter() string { - if m != nil { - return m.Parameter +func (x *EncodeDownlinkRequest) GetParameter() string { + if x != nil { + return x.Parameter } return "" } -type DecodeUplinkResponse struct { - Uplink *ApplicationUplink `protobuf:"bytes,1,opt,name=uplink,proto3" json:"uplink,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type EncodeDownlinkResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *DecodeUplinkResponse) Reset() { *m = DecodeUplinkResponse{} } -func (m *DecodeUplinkResponse) String() string { return proto.CompactTextString(m) } -func (*DecodeUplinkResponse) ProtoMessage() {} -func (*DecodeUplinkResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{11} -} -func (m *DecodeUplinkResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DecodeUplinkResponse.Unmarshal(m, b) -} -func (m *DecodeUplinkResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DecodeUplinkResponse.Marshal(b, m, deterministic) -} -func (m *DecodeUplinkResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_DecodeUplinkResponse.Merge(m, src) -} -func (m *DecodeUplinkResponse) XXX_Size() int { - return xxx_messageInfo_DecodeUplinkResponse.Size(m) + Downlink *ApplicationDownlink `protobuf:"bytes,1,opt,name=downlink,proto3" json:"downlink,omitempty"` } -func (m *DecodeUplinkResponse) XXX_DiscardUnknown() { - xxx_messageInfo_DecodeUplinkResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_DecodeUplinkResponse proto.InternalMessageInfo -func (m *DecodeUplinkResponse) GetUplink() *ApplicationUplink { - if m != nil { - return m.Uplink +func (x *EncodeDownlinkResponse) Reset() { + *x = EncodeDownlinkResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -type DecodeDownlinkRequest struct { - EndDeviceIds *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` - VersionIds *EndDeviceVersionIdentifiers `protobuf:"bytes,2,opt,name=version_ids,json=versionIds,proto3" json:"version_ids,omitempty"` - Downlink *ApplicationDownlink `protobuf:"bytes,3,opt,name=downlink,proto3" json:"downlink,omitempty"` - Formatter PayloadFormatter `protobuf:"varint,4,opt,name=formatter,proto3,enum=ttn.lorawan.v3.PayloadFormatter" json:"formatter,omitempty"` - Parameter string `protobuf:"bytes,5,opt,name=parameter,proto3" json:"parameter,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DecodeDownlinkRequest) Reset() { *m = DecodeDownlinkRequest{} } -func (m *DecodeDownlinkRequest) String() string { return proto.CompactTextString(m) } -func (*DecodeDownlinkRequest) ProtoMessage() {} -func (*DecodeDownlinkRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{12} -} -func (m *DecodeDownlinkRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DecodeDownlinkRequest.Unmarshal(m, b) -} -func (m *DecodeDownlinkRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DecodeDownlinkRequest.Marshal(b, m, deterministic) -} -func (m *DecodeDownlinkRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DecodeDownlinkRequest.Merge(m, src) -} -func (m *DecodeDownlinkRequest) XXX_Size() int { - return xxx_messageInfo_DecodeDownlinkRequest.Size(m) -} -func (m *DecodeDownlinkRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DecodeDownlinkRequest.DiscardUnknown(m) +func (x *EncodeDownlinkResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_DecodeDownlinkRequest proto.InternalMessageInfo +func (*EncodeDownlinkResponse) ProtoMessage() {} -func (m *DecodeDownlinkRequest) GetEndDeviceIds() *EndDeviceIdentifiers { - if m != nil { - return m.EndDeviceIds +func (x *EncodeDownlinkResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *DecodeDownlinkRequest) GetVersionIds() *EndDeviceVersionIdentifiers { - if m != nil { - return m.VersionIds - } - return nil +// Deprecated: Use EncodeDownlinkResponse.ProtoReflect.Descriptor instead. +func (*EncodeDownlinkResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{9} } -func (m *DecodeDownlinkRequest) GetDownlink() *ApplicationDownlink { - if m != nil { - return m.Downlink +func (x *EncodeDownlinkResponse) GetDownlink() *ApplicationDownlink { + if x != nil { + return x.Downlink } return nil } -func (m *DecodeDownlinkRequest) GetFormatter() PayloadFormatter { - if m != nil { - return m.Formatter - } - return PayloadFormatter_FORMATTER_NONE -} - -func (m *DecodeDownlinkRequest) GetParameter() string { - if m != nil { - return m.Parameter - } - return "" -} +type DecodeUplinkRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -type DecodeDownlinkResponse struct { - Downlink *ApplicationDownlink `protobuf:"bytes,1,opt,name=downlink,proto3" json:"downlink,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + EndDeviceIds *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` + VersionIds *EndDeviceVersionIdentifiers `protobuf:"bytes,2,opt,name=version_ids,json=versionIds,proto3" json:"version_ids,omitempty"` + Uplink *ApplicationUplink `protobuf:"bytes,3,opt,name=uplink,proto3" json:"uplink,omitempty"` + Formatter PayloadFormatter `protobuf:"varint,4,opt,name=formatter,proto3,enum=ttn.lorawan.v3.PayloadFormatter" json:"formatter,omitempty"` + Parameter string `protobuf:"bytes,5,opt,name=parameter,proto3" json:"parameter,omitempty"` } -func (m *DecodeDownlinkResponse) Reset() { *m = DecodeDownlinkResponse{} } -func (m *DecodeDownlinkResponse) String() string { return proto.CompactTextString(m) } -func (*DecodeDownlinkResponse) ProtoMessage() {} -func (*DecodeDownlinkResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_df9d75a19dc066e1, []int{13} -} -func (m *DecodeDownlinkResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DecodeDownlinkResponse.Unmarshal(m, b) -} -func (m *DecodeDownlinkResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DecodeDownlinkResponse.Marshal(b, m, deterministic) -} -func (m *DecodeDownlinkResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_DecodeDownlinkResponse.Merge(m, src) -} -func (m *DecodeDownlinkResponse) XXX_Size() int { - return xxx_messageInfo_DecodeDownlinkResponse.Size(m) -} -func (m *DecodeDownlinkResponse) XXX_DiscardUnknown() { - xxx_messageInfo_DecodeDownlinkResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_DecodeDownlinkResponse proto.InternalMessageInfo - -func (m *DecodeDownlinkResponse) GetDownlink() *ApplicationDownlink { - if m != nil { - return m.Downlink +func (x *DecodeUplinkRequest) Reset() { + *x = DecodeUplinkRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil -} - -func init() { - proto.RegisterEnum("ttn.lorawan.v3.AsConfiguration_PubSub_Providers_Status", AsConfiguration_PubSub_Providers_Status_name, AsConfiguration_PubSub_Providers_Status_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.AsConfiguration_PubSub_Providers_Status", AsConfiguration_PubSub_Providers_Status_name, AsConfiguration_PubSub_Providers_Status_value) - proto.RegisterType((*ApplicationLink)(nil), "ttn.lorawan.v3.ApplicationLink") - golang_proto.RegisterType((*ApplicationLink)(nil), "ttn.lorawan.v3.ApplicationLink") - proto.RegisterType((*GetApplicationLinkRequest)(nil), "ttn.lorawan.v3.GetApplicationLinkRequest") - golang_proto.RegisterType((*GetApplicationLinkRequest)(nil), "ttn.lorawan.v3.GetApplicationLinkRequest") - proto.RegisterType((*SetApplicationLinkRequest)(nil), "ttn.lorawan.v3.SetApplicationLinkRequest") - golang_proto.RegisterType((*SetApplicationLinkRequest)(nil), "ttn.lorawan.v3.SetApplicationLinkRequest") - proto.RegisterType((*ApplicationLinkStats)(nil), "ttn.lorawan.v3.ApplicationLinkStats") - golang_proto.RegisterType((*ApplicationLinkStats)(nil), "ttn.lorawan.v3.ApplicationLinkStats") - proto.RegisterType((*AsConfiguration)(nil), "ttn.lorawan.v3.AsConfiguration") - golang_proto.RegisterType((*AsConfiguration)(nil), "ttn.lorawan.v3.AsConfiguration") - proto.RegisterType((*AsConfiguration_PubSub)(nil), "ttn.lorawan.v3.AsConfiguration.PubSub") - golang_proto.RegisterType((*AsConfiguration_PubSub)(nil), "ttn.lorawan.v3.AsConfiguration.PubSub") - proto.RegisterType((*AsConfiguration_PubSub_Providers)(nil), "ttn.lorawan.v3.AsConfiguration.PubSub.Providers") - golang_proto.RegisterType((*AsConfiguration_PubSub_Providers)(nil), "ttn.lorawan.v3.AsConfiguration.PubSub.Providers") - proto.RegisterType((*AsConfiguration_Webhooks)(nil), "ttn.lorawan.v3.AsConfiguration.Webhooks") - golang_proto.RegisterType((*AsConfiguration_Webhooks)(nil), "ttn.lorawan.v3.AsConfiguration.Webhooks") - proto.RegisterType((*GetAsConfigurationRequest)(nil), "ttn.lorawan.v3.GetAsConfigurationRequest") - golang_proto.RegisterType((*GetAsConfigurationRequest)(nil), "ttn.lorawan.v3.GetAsConfigurationRequest") - proto.RegisterType((*GetAsConfigurationResponse)(nil), "ttn.lorawan.v3.GetAsConfigurationResponse") - golang_proto.RegisterType((*GetAsConfigurationResponse)(nil), "ttn.lorawan.v3.GetAsConfigurationResponse") - proto.RegisterType((*NsAsHandleUplinkRequest)(nil), "ttn.lorawan.v3.NsAsHandleUplinkRequest") - golang_proto.RegisterType((*NsAsHandleUplinkRequest)(nil), "ttn.lorawan.v3.NsAsHandleUplinkRequest") - proto.RegisterType((*EncodeDownlinkRequest)(nil), "ttn.lorawan.v3.EncodeDownlinkRequest") - golang_proto.RegisterType((*EncodeDownlinkRequest)(nil), "ttn.lorawan.v3.EncodeDownlinkRequest") - proto.RegisterType((*EncodeDownlinkResponse)(nil), "ttn.lorawan.v3.EncodeDownlinkResponse") - golang_proto.RegisterType((*EncodeDownlinkResponse)(nil), "ttn.lorawan.v3.EncodeDownlinkResponse") - proto.RegisterType((*DecodeUplinkRequest)(nil), "ttn.lorawan.v3.DecodeUplinkRequest") - golang_proto.RegisterType((*DecodeUplinkRequest)(nil), "ttn.lorawan.v3.DecodeUplinkRequest") - proto.RegisterType((*DecodeUplinkResponse)(nil), "ttn.lorawan.v3.DecodeUplinkResponse") - golang_proto.RegisterType((*DecodeUplinkResponse)(nil), "ttn.lorawan.v3.DecodeUplinkResponse") - proto.RegisterType((*DecodeDownlinkRequest)(nil), "ttn.lorawan.v3.DecodeDownlinkRequest") - golang_proto.RegisterType((*DecodeDownlinkRequest)(nil), "ttn.lorawan.v3.DecodeDownlinkRequest") - proto.RegisterType((*DecodeDownlinkResponse)(nil), "ttn.lorawan.v3.DecodeDownlinkResponse") - golang_proto.RegisterType((*DecodeDownlinkResponse)(nil), "ttn.lorawan.v3.DecodeDownlinkResponse") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/applicationserver.proto", fileDescriptor_df9d75a19dc066e1) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/applicationserver.proto", fileDescriptor_df9d75a19dc066e1) -} - -var fileDescriptor_df9d75a19dc066e1 = []byte{ - // 1947 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0x4b, 0x6c, 0x1b, 0xc7, - 0x19, 0xee, 0x90, 0x94, 0x4c, 0x8d, 0x65, 0x59, 0x1e, 0x39, 0x8e, 0xc4, 0xb8, 0xb1, 0xba, 0x71, - 0x5c, 0x49, 0x0d, 0x77, 0x5d, 0xb9, 0x69, 0x62, 0x15, 0x8d, 0xba, 0x7a, 0x58, 0x96, 0x2a, 0xa9, - 0xf2, 0x52, 0x8e, 0x10, 0xe7, 0x41, 0x0c, 0xb9, 0x43, 0x72, 0xcb, 0xe5, 0xee, 0x66, 0x67, 0x96, - 0x8a, 0xfc, 0xb8, 0x04, 0x41, 0x0b, 0xe4, 0xd0, 0x43, 0x8a, 0x00, 0xbd, 0x16, 0xbd, 0xe5, 0xd6, - 0xe6, 0xd0, 0x5b, 0x11, 0xa0, 0xe8, 0xa9, 0xa7, 0x34, 0xc7, 0x1e, 0xfb, 0x38, 0xb4, 0x40, 0x51, - 0xf4, 0x18, 0xa0, 0x45, 0x31, 0xb3, 0xbb, 0xe4, 0x3e, 0x48, 0x91, 0x72, 0x0c, 0x05, 0x05, 0x7a, - 0x11, 0x66, 0x39, 0xff, 0xff, 0xcd, 0xf7, 0x3f, 0xe7, 0xdf, 0x15, 0x9c, 0x37, 0x6d, 0x17, 0x1f, - 0x62, 0xab, 0x48, 0x19, 0xae, 0x36, 0x15, 0xec, 0x18, 0x0a, 0x76, 0x1c, 0xd3, 0xa8, 0x62, 0x66, - 0xd8, 0x16, 0x25, 0x6e, 0x9b, 0xb8, 0xb2, 0xe3, 0xda, 0xcc, 0x46, 0x13, 0x8c, 0x59, 0x72, 0x20, - 0x2e, 0xb7, 0x6f, 0x14, 0xd4, 0xba, 0xc1, 0x1a, 0x5e, 0x45, 0xae, 0xda, 0x2d, 0x85, 0x58, 0x6d, - 0xfb, 0xc8, 0x71, 0xed, 0x77, 0x8e, 0x14, 0x21, 0x5c, 0x2d, 0xd6, 0x89, 0x55, 0x6c, 0x63, 0xd3, - 0xd0, 0x31, 0x23, 0x4a, 0x6a, 0xe1, 0x43, 0x16, 0x8a, 0x11, 0x88, 0xba, 0x5d, 0xb7, 0x7d, 0xe5, - 0x8a, 0x57, 0x13, 0x4f, 0xe2, 0x41, 0xac, 0x02, 0xf1, 0xb5, 0x88, 0xf8, 0x7e, 0x83, 0xec, 0x37, - 0x0c, 0xab, 0x4e, 0x37, 0x2d, 0xdd, 0xa3, 0xcc, 0x35, 0x08, 0x8d, 0x1e, 0x5d, 0xb7, 0x8b, 0x35, - 0x13, 0xd7, 0xa9, 0x82, 0x2d, 0xcb, 0x66, 0xbe, 0x31, 0x01, 0xca, 0xea, 0x89, 0x50, 0x7e, 0x48, - 0x6d, 0xab, 0x07, 0xc8, 0xe5, 0xba, 0x6d, 0xd7, 0x4d, 0xe2, 0x3b, 0x2c, 0xb5, 0xfb, 0x6c, 0xb0, - 0xdb, 0x31, 0x47, 0xf7, 0x5c, 0x21, 0x10, 0xec, 0x3f, 0x93, 0xdc, 0x27, 0x2d, 0x87, 0x1d, 0x05, - 0x9b, 0xb3, 0xc9, 0xcd, 0x9a, 0x41, 0x4c, 0xbd, 0xdc, 0xc2, 0xb4, 0x19, 0x48, 0x5c, 0x49, 0x4a, - 0x30, 0xa3, 0x45, 0x28, 0xc3, 0x2d, 0xa7, 0xdf, 0xf9, 0x87, 0x2e, 0x76, 0x1c, 0xe2, 0x86, 0xfc, - 0xa4, 0x74, 0xd4, 0x89, 0xa5, 0x97, 0x75, 0xd2, 0x36, 0xaa, 0x61, 0x6c, 0x9e, 0x4b, 0xcb, 0x18, - 0x3a, 0xb1, 0x98, 0x51, 0x33, 0xba, 0x40, 0xb3, 0x69, 0xa1, 0x16, 0xa1, 0x14, 0xd7, 0x49, 0xc7, - 0x51, 0x3d, 0x24, 0xde, 0x66, 0xcc, 0xdf, 0x95, 0xfe, 0x00, 0xe0, 0x79, 0xb5, 0x9b, 0x6f, 0xdb, - 0x86, 0xd5, 0x44, 0x07, 0x10, 0xe9, 0xa4, 0x86, 0x3d, 0x93, 0x95, 0x6b, 0xb6, 0xdb, 0xc2, 0x8c, - 0x11, 0x97, 0x4e, 0x67, 0x67, 0xc1, 0xdc, 0xd9, 0xc5, 0x39, 0x39, 0x9e, 0x84, 0xf2, 0x8e, 0x7f, - 0xda, 0x1e, 0x3e, 0x32, 0x6d, 0xac, 0xdf, 0xea, 0xc8, 0x6b, 0x17, 0x02, 0x8c, 0xee, 0x4f, 0x68, - 0x0b, 0x4e, 0xd1, 0xa6, 0xe1, 0x94, 0x1d, 0x5f, 0xb8, 0x5c, 0x75, 0x8f, 0x1c, 0x66, 0x4f, 0x8f, - 0x08, 0xe4, 0x82, 0xec, 0xfb, 0x4c, 0x0e, 0x7d, 0x26, 0xaf, 0xd8, 0xb6, 0xf9, 0x2a, 0x36, 0x3d, - 0xa2, 0x5d, 0xe0, 0x6a, 0xc1, 0x11, 0xab, 0x42, 0x69, 0x29, 0xff, 0xaf, 0x8f, 0x66, 0x72, 0x79, - 0x30, 0x09, 0xb6, 0xf8, 0xdf, 0xcc, 0x56, 0x2e, 0x9f, 0x99, 0xcc, 0x6e, 0xe5, 0xf2, 0xb9, 0xc9, - 0x11, 0xe9, 0x97, 0x00, 0xce, 0x6c, 0x10, 0x96, 0xb0, 0x4b, 0x23, 0x6f, 0x7b, 0x84, 0x32, 0xf4, - 0x1a, 0x3c, 0x1f, 0xa9, 0xb0, 0xb2, 0xa1, 0xd3, 0x69, 0x20, 0x18, 0x5c, 0x4b, 0xda, 0x16, 0x01, - 0xd8, 0xec, 0x7a, 0x7e, 0x25, 0xff, 0xf9, 0xca, 0xc8, 0xfb, 0x20, 0x33, 0x09, 0xb4, 0x09, 0x1c, - 0x95, 0xa0, 0xe8, 0x26, 0x84, 0xdd, 0x5c, 0x99, 0xce, 0xf4, 0xb1, 0xeb, 0x16, 0x17, 0xd9, 0xc1, - 0xb4, 0xa9, 0x8d, 0xd5, 0xc2, 0xa5, 0xf4, 0x4f, 0x00, 0x67, 0x4a, 0x5f, 0x06, 0xe7, 0xef, 0xc2, - 0x9c, 0x69, 0x58, 0x21, 0xdb, 0x2b, 0xc7, 0xe0, 0x71, 0x42, 0x11, 0x20, 0xa1, 0x96, 0x30, 0x39, - 0x7b, 0x12, 0x93, 0xff, 0x9d, 0x85, 0x17, 0x13, 0xf0, 0x25, 0x86, 0x19, 0x45, 0x2f, 0xc1, 0x31, - 0x8e, 0x4d, 0xf4, 0x32, 0x66, 0x81, 0x9d, 0x69, 0xc8, 0xfd, 0xb0, 0xe4, 0xb4, 0xbc, 0x2f, 0xac, - 0x32, 0xf4, 0x3b, 0x00, 0x2f, 0x59, 0x84, 0x1d, 0xda, 0x6e, 0xb3, 0xec, 0xb7, 0xce, 0x32, 0xd6, - 0x75, 0x97, 0x50, 0x2a, 0xcc, 0x1b, 0x5b, 0xf9, 0x09, 0xf8, 0x7c, 0xe5, 0x7d, 0xe0, 0xfe, 0x18, - 0x2c, 0xbe, 0x07, 0xde, 0x9a, 0x5b, 0x5e, 0x9a, 0x5b, 0x5e, 0x7a, 0x1d, 0x17, 0xef, 0xab, 0xc5, - 0x7b, 0xd7, 0x8b, 0x37, 0xdf, 0x7c, 0x18, 0x59, 0x77, 0x97, 0x6f, 0x14, 0xdf, 0x5c, 0x88, 0x6c, - 0xcc, 0xbf, 0x21, 0xcf, 0x2f, 0x70, 0x3d, 0xb5, 0x78, 0x0f, 0x17, 0xef, 0xfb, 0x7a, 0xdd, 0x75, - 0x77, 0x29, 0xf4, 0xba, 0x1b, 0xf3, 0x73, 0xcb, 0x4b, 0x4b, 0xaf, 0xf3, 0xd5, 0x83, 0x6f, 0xbe, - 0xf0, 0xe2, 0xa3, 0xf9, 0xe5, 0xab, 0x0f, 0xdf, 0xba, 0xaa, 0x5d, 0x0c, 0xe8, 0x96, 0x04, 0x5b, - 0xd5, 0x27, 0x8b, 0x36, 0xe1, 0x94, 0x89, 0x29, 0x2b, 0x7b, 0x4e, 0xd9, 0x25, 0x55, 0x62, 0xb4, - 0x7d, 0x57, 0x64, 0x07, 0xba, 0x62, 0x92, 0xab, 0xdd, 0x75, 0xb4, 0x40, 0x49, 0x65, 0x68, 0x06, - 0xe6, 0x3d, 0xa7, 0x5c, 0xb5, 0x3d, 0x8b, 0x4d, 0xe7, 0x66, 0xc1, 0x5c, 0x4e, 0x3b, 0xe3, 0x39, - 0xab, 0xfc, 0x11, 0x1d, 0xc0, 0x82, 0x38, 0x45, 0xb7, 0x0f, 0x2d, 0xee, 0x42, 0x5e, 0xed, 0x87, - 0xd8, 0xd5, 0xfd, 0xc3, 0x46, 0x06, 0x1e, 0xf6, 0x34, 0xd7, 0x5e, 0x0b, 0x94, 0x6f, 0x85, 0xba, - 0x2a, 0x43, 0xcf, 0xc3, 0x89, 0x0e, 0xa6, 0x7f, 0xf2, 0xa8, 0x38, 0xf9, 0x5c, 0xf8, 0xab, 0x38, - 0x5f, 0xfa, 0x4f, 0x0e, 0x9e, 0x57, 0xe9, 0xaa, 0x6d, 0xd5, 0x8c, 0x7a, 0xd0, 0x9e, 0xd1, 0x2b, - 0x70, 0xd4, 0xf1, 0x2a, 0xd4, 0xab, 0xf4, 0xcd, 0xef, 0xb8, 0x82, 0xbc, 0xe7, 0x55, 0x4a, 0x5e, - 0x45, 0x0b, 0xb4, 0xd0, 0x1a, 0xcc, 0x1f, 0x92, 0x4a, 0xc3, 0xb6, 0x9b, 0x34, 0xc8, 0xe8, 0xb9, - 0x41, 0x08, 0x07, 0x81, 0xbc, 0xd6, 0xd1, 0x2c, 0x7c, 0x92, 0x81, 0xa3, 0x3e, 0x30, 0xda, 0x85, - 0x63, 0x8e, 0x6b, 0xb7, 0x0d, 0x9d, 0xf7, 0x40, 0x9f, 0xd3, 0xf5, 0xe1, 0x38, 0xc9, 0x7b, 0xa1, - 0x9e, 0xd6, 0x85, 0x28, 0xfc, 0x05, 0xc0, 0xb1, 0xce, 0x06, 0xfa, 0x3e, 0xcc, 0xf1, 0x66, 0x2c, - 0x80, 0x27, 0x16, 0x5f, 0x3a, 0x29, 0xb0, 0xcc, 0xeb, 0xc5, 0xa3, 0x9a, 0x00, 0xe1, 0x60, 0x16, - 0x66, 0xbe, 0xdd, 0x5f, 0x04, 0x8c, 0x83, 0x48, 0x2f, 0xc3, 0x51, 0xff, 0x19, 0x9d, 0x85, 0x67, - 0xd6, 0x77, 0xd5, 0x95, 0xed, 0xf5, 0xb5, 0xc9, 0xaf, 0xf0, 0x87, 0x03, 0x55, 0xdb, 0xdd, 0xdc, - 0xdd, 0x98, 0x04, 0x68, 0x1c, 0xe6, 0xd7, 0x36, 0x4b, 0xfe, 0x56, 0xa6, 0x30, 0xfa, 0xb7, 0x8f, - 0x66, 0x32, 0xd3, 0xbc, 0x1f, 0x67, 0x27, 0x73, 0x85, 0x9f, 0x03, 0x98, 0x0f, 0x3d, 0x8b, 0xbe, - 0x07, 0x2f, 0x7b, 0x56, 0x83, 0x60, 0x93, 0x35, 0x8e, 0xca, 0xfc, 0x32, 0x68, 0x39, 0x8c, 0x96, - 0x59, 0xc3, 0x25, 0xb4, 0x61, 0x9b, 0xba, 0x30, 0x3f, 0xab, 0x15, 0x3a, 0x32, 0x6a, 0x20, 0xb2, - 0x1f, 0x4a, 0xa0, 0x12, 0x9c, 0xee, 0x22, 0xb8, 0x84, 0xb9, 0x47, 0x65, 0xc3, 0x62, 0xc4, 0x6d, - 0x63, 0x33, 0x88, 0xf3, 0x4c, 0x2a, 0x53, 0xd7, 0x02, 0x4b, 0xb5, 0x4b, 0x1d, 0x55, 0x8d, 0x6b, - 0x6e, 0x06, 0x8a, 0xd2, 0x33, 0xfe, 0x35, 0x11, 0xf7, 0x4b, 0xd0, 0x72, 0xa5, 0x2a, 0x2c, 0xf4, - 0xda, 0xa4, 0x0e, 0x9f, 0xca, 0xd0, 0x3a, 0x3c, 0x57, 0x8d, 0x6e, 0x04, 0xa9, 0x71, 0x65, 0x80, - 0xd3, 0xb5, 0xb8, 0x96, 0xd4, 0x84, 0x4f, 0xef, 0x52, 0x95, 0xde, 0xc6, 0x96, 0x6e, 0x92, 0xbb, - 0x8e, 0x19, 0x69, 0xf9, 0x7b, 0xf1, 0x96, 0xef, 0x39, 0x3c, 0xfd, 0xb2, 0x73, 0x67, 0x17, 0xbf, - 0x7a, 0x4c, 0x8b, 0xbe, 0xeb, 0x88, 0x06, 0xfd, 0x01, 0xc8, 0xe4, 0xe3, 0x9d, 0xfe, 0xae, 0x43, - 0xa5, 0x7f, 0x64, 0xe0, 0x53, 0xeb, 0x56, 0xd5, 0xd6, 0x49, 0x58, 0xb4, 0xe1, 0x59, 0xfb, 0x70, - 0xa2, 0x3b, 0x7e, 0x44, 0x6e, 0x97, 0xab, 0xc9, 0xa3, 0xd6, 0x2d, 0x7d, 0x4d, 0x08, 0xf5, 0xbe, - 0x5b, 0xc6, 0x49, 0x77, 0x9f, 0xa2, 0x6d, 0x78, 0xb6, 0x4d, 0x5c, 0x1a, 0x5e, 0x58, 0x7e, 0x98, - 0xbe, 0xd1, 0x17, 0xf2, 0x55, 0x5f, 0x36, 0x82, 0xac, 0xc1, 0x76, 0xf8, 0x1b, 0xef, 0x89, 0xf9, - 0xb0, 0x7d, 0x04, 0x8d, 0xf0, 0xb9, 0x63, 0x1c, 0x11, 0x5a, 0x18, 0x21, 0xd7, 0x51, 0x47, 0xb7, - 0xe1, 0x58, 0x67, 0xb0, 0x11, 0x4d, 0x71, 0x62, 0x71, 0x36, 0x89, 0x95, 0x1c, 0x68, 0x04, 0xd0, - 0xbb, 0x02, 0xa8, 0xab, 0x8c, 0x2e, 0xc3, 0x31, 0x07, 0xbb, 0xb8, 0x45, 0x38, 0x12, 0xef, 0x98, - 0x63, 0x5a, 0xf7, 0x07, 0xe9, 0x35, 0x78, 0x29, 0xe9, 0xef, 0x20, 0x7d, 0x96, 0x23, 0xc6, 0x80, - 0xa1, 0x8d, 0xe9, 0x9a, 0x20, 0xfd, 0x35, 0x03, 0xa7, 0xd6, 0x08, 0xc7, 0x8e, 0x67, 0xcd, 0xff, - 0x42, 0x24, 0x57, 0xe1, 0xa8, 0xe7, 0x44, 0xe2, 0xf8, 0xb5, 0x63, 0x13, 0x3a, 0x11, 0xc5, 0x40, - 0xf5, 0xd4, 0x62, 0x78, 0x07, 0x5e, 0x8c, 0xfb, 0x39, 0x88, 0xe0, 0xcd, 0x8e, 0x11, 0x60, 0x48, - 0x23, 0x42, 0xea, 0xa2, 0x0e, 0x7d, 0xcc, 0xff, 0xd7, 0xe1, 0x69, 0xd5, 0x61, 0xd2, 0xdf, 0x4f, - 0xa8, 0x0e, 0x17, 0x3f, 0x1d, 0x81, 0x19, 0x95, 0xa2, 0x0f, 0x01, 0x3c, 0xb3, 0x41, 0x98, 0x78, - 0x7d, 0x9a, 0x4f, 0x22, 0xf4, 0x7d, 0x15, 0x29, 0x0c, 0x9a, 0xb6, 0xa5, 0x57, 0xde, 0xfd, 0xec, - 0xcf, 0x3f, 0xcd, 0xbc, 0x8c, 0xbe, 0xad, 0x60, 0x1a, 0xfb, 0x2e, 0xa0, 0x3c, 0x48, 0xbc, 0x0f, - 0xc8, 0xf1, 0xe7, 0x47, 0x8a, 0xf0, 0xf0, 0xcf, 0x00, 0x3c, 0x53, 0xea, 0xc7, 0xab, 0xf4, 0xf8, - 0xbc, 0x54, 0xc1, 0xeb, 0x3b, 0x85, 0xc7, 0xe4, 0xb5, 0x04, 0x16, 0xd0, 0x43, 0x08, 0xd7, 0x88, - 0x49, 0x18, 0x11, 0xe4, 0x86, 0x7c, 0x8f, 0x29, 0x5c, 0x4a, 0xdd, 0xf2, 0xeb, 0xfc, 0xcd, 0x5d, - 0x92, 0x05, 0xa1, 0xb9, 0x85, 0x6b, 0x83, 0x08, 0x05, 0x8e, 0xf9, 0x00, 0xc0, 0xf1, 0x20, 0x60, - 0xfe, 0x3b, 0xc7, 0xb0, 0x04, 0xae, 0x0e, 0x70, 0x8d, 0x40, 0x93, 0xbe, 0x25, 0xe8, 0xc8, 0xe8, - 0x85, 0xe1, 0xe8, 0x28, 0x54, 0x70, 0x78, 0x0f, 0xc0, 0xc9, 0x0d, 0xc2, 0xe2, 0x13, 0x71, 0xcf, - 0x74, 0xea, 0x39, 0xb2, 0x14, 0x16, 0x86, 0x11, 0xf5, 0x33, 0x5f, 0x9a, 0x11, 0x0c, 0xa7, 0xd0, - 0x05, 0xce, 0x30, 0x36, 0x94, 0x2c, 0x1e, 0xc0, 0x1c, 0x1f, 0x4a, 0xd0, 0x0f, 0xe0, 0x78, 0x74, - 0x30, 0x41, 0x5f, 0x4f, 0xc2, 0xf7, 0x19, 0x5d, 0xfa, 0x05, 0x69, 0xf1, 0xe3, 0x73, 0x70, 0x44, - 0x75, 0x1c, 0x95, 0xa2, 0x7d, 0x38, 0x56, 0xf2, 0x2a, 0xb4, 0xea, 0x1a, 0x15, 0x32, 0xb4, 0xeb, - 0x8f, 0x1f, 0x7c, 0xae, 0x03, 0xf4, 0x7b, 0x00, 0x2f, 0x84, 0x35, 0x7a, 0xc7, 0x23, 0x1e, 0xd9, - 0xf3, 0x68, 0x03, 0xa5, 0x22, 0x16, 0x13, 0x19, 0xc0, 0x59, 0x7a, 0x47, 0xf8, 0xc9, 0x95, 0x5a, - 0xe9, 0x48, 0xc6, 0x5b, 0xb5, 0x3c, 0x28, 0xf1, 0x7d, 0xd1, 0xb4, 0x5e, 0x67, 0xf9, 0x48, 0xe1, - 0x6d, 0x45, 0x71, 0x3c, 0xda, 0xe0, 0x05, 0xf2, 0x29, 0x80, 0x17, 0x13, 0x54, 0x1d, 0x13, 0x57, - 0xc9, 0x17, 0x34, 0xe8, 0x81, 0x30, 0xc8, 0x93, 0x9c, 0x53, 0x33, 0xc8, 0xf5, 0x79, 0x73, 0x9b, - 0x3e, 0x4e, 0x46, 0x68, 0xdb, 0xa0, 0x0c, 0x0d, 0x75, 0xbd, 0x1d, 0x5b, 0x79, 0x21, 0x26, 0x95, - 0x34, 0x61, 0xde, 0x36, 0xda, 0x3a, 0x79, 0x67, 0xea, 0xd8, 0x93, 0x30, 0x00, 0xfd, 0x02, 0xc0, - 0xa7, 0x36, 0x08, 0xdb, 0xb9, 0xb3, 0xbf, 0xbf, 0x6a, 0x5b, 0x16, 0xa9, 0x8a, 0xcc, 0xb4, 0x6a, - 0xf6, 0xd0, 0xa9, 0x2b, 0xa5, 0x3e, 0x9b, 0xa5, 0xb0, 0x86, 0xef, 0xf5, 0x8f, 0xc4, 0x07, 0xbc, - 0x62, 0xb5, 0xa3, 0x5e, 0x34, 0x38, 0x97, 0xdf, 0x02, 0x38, 0x51, 0x32, 0x5a, 0x9e, 0x89, 0x59, - 0x58, 0xb1, 0xc7, 0x57, 0x4c, 0xdf, 0x14, 0xb9, 0x2f, 0x98, 0x30, 0xc9, 0x3e, 0x8d, 0x14, 0xf1, - 0x1c, 0x85, 0x06, 0xac, 0x79, 0x86, 0xfc, 0x11, 0xc0, 0x89, 0xf8, 0xd0, 0x8c, 0x9e, 0x4f, 0xa7, - 0x47, 0x8f, 0xe1, 0xa9, 0x70, 0x6d, 0x90, 0x58, 0xd0, 0xf9, 0x4e, 0xd5, 0x3a, 0x51, 0x00, 0x44, - 0x10, 0xe1, 0xd6, 0x7d, 0x06, 0xe0, 0x78, 0x74, 0x9c, 0x44, 0xa9, 0x71, 0xa3, 0xc7, 0x50, 0x9f, - 0xce, 0xfc, 0x5e, 0x13, 0xe9, 0xe9, 0x76, 0x2a, 0xcf, 0x51, 0x74, 0x12, 0x5a, 0xc5, 0x63, 0x16, - 0x1f, 0xb0, 0xd2, 0x31, 0xeb, 0x39, 0xf0, 0xa6, 0x63, 0xd6, 0x7b, 0x4e, 0xfb, 0x12, 0x62, 0xd6, - 0xb1, 0x6e, 0xf1, 0xef, 0x39, 0x38, 0xa5, 0xd2, 0x4e, 0x4b, 0xd2, 0x48, 0xdd, 0xa0, 0xcc, 0x3d, - 0x42, 0xbf, 0x02, 0x30, 0xbb, 0x41, 0x58, 0x3a, 0x84, 0x1b, 0x84, 0x45, 0xa4, 0x7d, 0x43, 0x67, - 0xfa, 0xb6, 0x38, 0xa9, 0x29, 0x6c, 0x23, 0xa8, 0x7a, 0x0a, 0xb6, 0xa1, 0x1f, 0x65, 0x60, 0xb6, - 0xd4, 0x8b, 0x74, 0xe9, 0x64, 0xa4, 0x7f, 0x03, 0x04, 0xeb, 0x5f, 0x83, 0xc2, 0xb1, 0xb4, 0xe5, - 0xc7, 0xa4, 0x2d, 0xc7, 0x69, 0x2f, 0x81, 0x85, 0x7b, 0x3b, 0xd2, 0xed, 0x27, 0x75, 0x12, 0xcf, - 0xd9, 0x0f, 0x01, 0x1c, 0xf5, 0xe7, 0xcf, 0x21, 0xaf, 0x9f, 0x7e, 0xcd, 0x72, 0x47, 0x38, 0x62, - 0x63, 0x61, 0xfd, 0x89, 0x5c, 0x38, 0x2b, 0x2f, 0x7e, 0xf2, 0xa7, 0x67, 0xc1, 0x3d, 0xa5, 0x6e, - 0xcb, 0xac, 0x41, 0x98, 0xf8, 0xd7, 0x98, 0x1c, 0x7c, 0x23, 0x56, 0xe2, 0xff, 0xc9, 0x69, 0xdf, - 0x50, 0x9c, 0x66, 0x5d, 0x61, 0xcc, 0x72, 0x2a, 0x95, 0x51, 0xc1, 0xea, 0xc6, 0x7f, 0x03, 0x00, - 0x00, 0xff, 0xff, 0x21, 0x02, 0x3f, 0x3c, 0x4f, 0x1c, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// AsClient is the client API for As service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type AsClient interface { - // Get a link configuration from the Application Server to Network Server. - // This only contains the configuration. Use GetLinkStats to view statistics and any link errors. - GetLink(ctx context.Context, in *GetApplicationLinkRequest, opts ...grpc.CallOption) (*ApplicationLink, error) - // Set a link configuration from the Application Server a Network Server. - // This call returns immediately after setting the link configuration; it does not wait for a link to establish. - // To get link statistics or errors, use GetLinkStats. - // Note that there can only be one Application Server instance linked to a Network Server for a given application at a time. - SetLink(ctx context.Context, in *SetApplicationLinkRequest, opts ...grpc.CallOption) (*ApplicationLink, error) - // Delete the link between the Application Server and Network Server for the specified application. - DeleteLink(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) - // GetLinkStats returns the link statistics. - // This call returns a NotFound error code if there is no link for the given application identifiers. - // This call returns the error code of the link error if linking to a Network Server failed. - GetLinkStats(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*ApplicationLinkStats, error) - GetConfiguration(ctx context.Context, in *GetAsConfigurationRequest, opts ...grpc.CallOption) (*GetAsConfigurationResponse, error) } -type asClient struct { - cc *grpc.ClientConn +func (x *DecodeUplinkRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func NewAsClient(cc *grpc.ClientConn) AsClient { - return &asClient{cc} -} +func (*DecodeUplinkRequest) ProtoMessage() {} -func (c *asClient) GetLink(ctx context.Context, in *GetApplicationLinkRequest, opts ...grpc.CallOption) (*ApplicationLink, error) { - out := new(ApplicationLink) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.As/GetLink", in, out, opts...) - if err != nil { - return nil, err +func (x *DecodeUplinkRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return out, nil + return mi.MessageOf(x) } -func (c *asClient) SetLink(ctx context.Context, in *SetApplicationLinkRequest, opts ...grpc.CallOption) (*ApplicationLink, error) { - out := new(ApplicationLink) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.As/SetLink", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// Deprecated: Use DecodeUplinkRequest.ProtoReflect.Descriptor instead. +func (*DecodeUplinkRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{10} } -func (c *asClient) DeleteLink(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.As/DeleteLink", in, out, opts...) - if err != nil { - return nil, err +func (x *DecodeUplinkRequest) GetEndDeviceIds() *EndDeviceIdentifiers { + if x != nil { + return x.EndDeviceIds } - return out, nil + return nil } -func (c *asClient) GetLinkStats(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*ApplicationLinkStats, error) { - out := new(ApplicationLinkStats) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.As/GetLinkStats", in, out, opts...) - if err != nil { - return nil, err +func (x *DecodeUplinkRequest) GetVersionIds() *EndDeviceVersionIdentifiers { + if x != nil { + return x.VersionIds } - return out, nil + return nil } -func (c *asClient) GetConfiguration(ctx context.Context, in *GetAsConfigurationRequest, opts ...grpc.CallOption) (*GetAsConfigurationResponse, error) { - out := new(GetAsConfigurationResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.As/GetConfiguration", in, out, opts...) - if err != nil { - return nil, err +func (x *DecodeUplinkRequest) GetUplink() *ApplicationUplink { + if x != nil { + return x.Uplink } - return out, nil -} - -// AsServer is the server API for As service. -type AsServer interface { - // Get a link configuration from the Application Server to Network Server. - // This only contains the configuration. Use GetLinkStats to view statistics and any link errors. - GetLink(context.Context, *GetApplicationLinkRequest) (*ApplicationLink, error) - // Set a link configuration from the Application Server a Network Server. - // This call returns immediately after setting the link configuration; it does not wait for a link to establish. - // To get link statistics or errors, use GetLinkStats. - // Note that there can only be one Application Server instance linked to a Network Server for a given application at a time. - SetLink(context.Context, *SetApplicationLinkRequest) (*ApplicationLink, error) - // Delete the link between the Application Server and Network Server for the specified application. - DeleteLink(context.Context, *ApplicationIdentifiers) (*types.Empty, error) - // GetLinkStats returns the link statistics. - // This call returns a NotFound error code if there is no link for the given application identifiers. - // This call returns the error code of the link error if linking to a Network Server failed. - GetLinkStats(context.Context, *ApplicationIdentifiers) (*ApplicationLinkStats, error) - GetConfiguration(context.Context, *GetAsConfigurationRequest) (*GetAsConfigurationResponse, error) -} - -// UnimplementedAsServer can be embedded to have forward compatible implementations. -type UnimplementedAsServer struct { -} - -func (*UnimplementedAsServer) GetLink(ctx context.Context, req *GetApplicationLinkRequest) (*ApplicationLink, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetLink not implemented") -} -func (*UnimplementedAsServer) SetLink(ctx context.Context, req *SetApplicationLinkRequest) (*ApplicationLink, error) { - return nil, status.Errorf(codes.Unimplemented, "method SetLink not implemented") -} -func (*UnimplementedAsServer) DeleteLink(ctx context.Context, req *ApplicationIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteLink not implemented") -} -func (*UnimplementedAsServer) GetLinkStats(ctx context.Context, req *ApplicationIdentifiers) (*ApplicationLinkStats, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetLinkStats not implemented") -} -func (*UnimplementedAsServer) GetConfiguration(ctx context.Context, req *GetAsConfigurationRequest) (*GetAsConfigurationResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetConfiguration not implemented") -} - -func RegisterAsServer(s *grpc.Server, srv AsServer) { - s.RegisterService(&_As_serviceDesc, srv) + return nil } -func _As_GetLink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetApplicationLinkRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AsServer).GetLink(ctx, in) +func (x *DecodeUplinkRequest) GetFormatter() PayloadFormatter { + if x != nil { + return x.Formatter } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.As/GetLink", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AsServer).GetLink(ctx, req.(*GetApplicationLinkRequest)) - } - return interceptor(ctx, in, info, handler) + return PayloadFormatter_FORMATTER_NONE } -func _As_SetLink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetApplicationLinkRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AsServer).SetLink(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.As/SetLink", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AsServer).SetLink(ctx, req.(*SetApplicationLinkRequest)) +func (x *DecodeUplinkRequest) GetParameter() string { + if x != nil { + return x.Parameter } - return interceptor(ctx, in, info, handler) + return "" } -func _As_DeleteLink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AsServer).DeleteLink(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.As/DeleteLink", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AsServer).DeleteLink(ctx, req.(*ApplicationIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} +type DecodeUplinkResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func _As_GetLinkStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AsServer).GetLinkStats(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.As/GetLinkStats", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AsServer).GetLinkStats(ctx, req.(*ApplicationIdentifiers)) - } - return interceptor(ctx, in, info, handler) + Uplink *ApplicationUplink `protobuf:"bytes,1,opt,name=uplink,proto3" json:"uplink,omitempty"` } -func _As_GetConfiguration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetAsConfigurationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AsServer).GetConfiguration(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.As/GetConfiguration", +func (x *DecodeUplinkResponse) Reset() { + *x = DecodeUplinkResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AsServer).GetConfiguration(ctx, req.(*GetAsConfigurationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _As_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.As", - HandlerType: (*AsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetLink", - Handler: _As_GetLink_Handler, - }, - { - MethodName: "SetLink", - Handler: _As_SetLink_Handler, - }, - { - MethodName: "DeleteLink", - Handler: _As_DeleteLink_Handler, - }, - { - MethodName: "GetLinkStats", - Handler: _As_GetLinkStats_Handler, - }, - { - MethodName: "GetConfiguration", - Handler: _As_GetConfiguration_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/applicationserver.proto", -} - -// NsAsClient is the client API for NsAs service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type NsAsClient interface { - // Handle Application uplink messages. - HandleUplink(ctx context.Context, in *NsAsHandleUplinkRequest, opts ...grpc.CallOption) (*types.Empty, error) } -type nsAsClient struct { - cc *grpc.ClientConn +func (x *DecodeUplinkResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func NewNsAsClient(cc *grpc.ClientConn) NsAsClient { - return &nsAsClient{cc} -} +func (*DecodeUplinkResponse) ProtoMessage() {} -func (c *nsAsClient) HandleUplink(ctx context.Context, in *NsAsHandleUplinkRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsAs/HandleUplink", in, out, opts...) - if err != nil { - return nil, err +func (x *DecodeUplinkResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return out, nil + return mi.MessageOf(x) } -// NsAsServer is the server API for NsAs service. -type NsAsServer interface { - // Handle Application uplink messages. - HandleUplink(context.Context, *NsAsHandleUplinkRequest) (*types.Empty, error) -} - -// UnimplementedNsAsServer can be embedded to have forward compatible implementations. -type UnimplementedNsAsServer struct { -} - -func (*UnimplementedNsAsServer) HandleUplink(ctx context.Context, req *NsAsHandleUplinkRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method HandleUplink not implemented") -} - -func RegisterNsAsServer(s *grpc.Server, srv NsAsServer) { - s.RegisterService(&_NsAs_serviceDesc, srv) +// Deprecated: Use DecodeUplinkResponse.ProtoReflect.Descriptor instead. +func (*DecodeUplinkResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{11} } -func _NsAs_HandleUplink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(NsAsHandleUplinkRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NsAsServer).HandleUplink(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NsAs/HandleUplink", +func (x *DecodeUplinkResponse) GetUplink() *ApplicationUplink { + if x != nil { + return x.Uplink } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NsAsServer).HandleUplink(ctx, req.(*NsAsHandleUplinkRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _NsAs_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.NsAs", - HandlerType: (*NsAsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "HandleUplink", - Handler: _NsAs_HandleUplink_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/applicationserver.proto", -} - -// AppAsClient is the client API for AppAs service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type AppAsClient interface { - // Subscribe to upstream messages. - Subscribe(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (AppAs_SubscribeClient, error) - // Push downlink messages to the end of the downlink queue. - DownlinkQueuePush(ctx context.Context, in *DownlinkQueueRequest, opts ...grpc.CallOption) (*types.Empty, error) - // Replace the entire downlink queue with the specified messages. - // This can also be used to empty the queue by specifying no messages. - DownlinkQueueReplace(ctx context.Context, in *DownlinkQueueRequest, opts ...grpc.CallOption) (*types.Empty, error) - // List the items currently in the downlink queue. - DownlinkQueueList(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*ApplicationDownlinks, error) - // Get connection information to connect an MQTT client. - GetMQTTConnectionInfo(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*MQTTConnectionInfo, error) - // Simulate an upstream message. This can be used to test integrations. - SimulateUplink(ctx context.Context, in *ApplicationUp, opts ...grpc.CallOption) (*types.Empty, error) - EncodeDownlink(ctx context.Context, in *EncodeDownlinkRequest, opts ...grpc.CallOption) (*EncodeDownlinkResponse, error) - DecodeUplink(ctx context.Context, in *DecodeUplinkRequest, opts ...grpc.CallOption) (*DecodeUplinkResponse, error) - DecodeDownlink(ctx context.Context, in *DecodeDownlinkRequest, opts ...grpc.CallOption) (*DecodeDownlinkResponse, error) + return nil } -type appAsClient struct { - cc *grpc.ClientConn -} +type DecodeDownlinkRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func NewAppAsClient(cc *grpc.ClientConn) AppAsClient { - return &appAsClient{cc} + EndDeviceIds *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` + VersionIds *EndDeviceVersionIdentifiers `protobuf:"bytes,2,opt,name=version_ids,json=versionIds,proto3" json:"version_ids,omitempty"` + Downlink *ApplicationDownlink `protobuf:"bytes,3,opt,name=downlink,proto3" json:"downlink,omitempty"` + Formatter PayloadFormatter `protobuf:"varint,4,opt,name=formatter,proto3,enum=ttn.lorawan.v3.PayloadFormatter" json:"formatter,omitempty"` + Parameter string `protobuf:"bytes,5,opt,name=parameter,proto3" json:"parameter,omitempty"` } -func (c *appAsClient) Subscribe(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (AppAs_SubscribeClient, error) { - stream, err := c.cc.NewStream(ctx, &_AppAs_serviceDesc.Streams[0], "/ttn.lorawan.v3.AppAs/Subscribe", opts...) - if err != nil { - return nil, err - } - x := &appAsSubscribeClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err +func (x *DecodeDownlinkRequest) Reset() { + *x = DecodeDownlinkRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return x, nil } -type AppAs_SubscribeClient interface { - Recv() (*ApplicationUp, error) - grpc.ClientStream +func (x *DecodeDownlinkRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -type appAsSubscribeClient struct { - grpc.ClientStream -} +func (*DecodeDownlinkRequest) ProtoMessage() {} -func (x *appAsSubscribeClient) Recv() (*ApplicationUp, error) { - m := new(ApplicationUp) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err +func (x *DecodeDownlinkRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return m, nil + return mi.MessageOf(x) } -func (c *appAsClient) DownlinkQueuePush(ctx context.Context, in *DownlinkQueueRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppAs/DownlinkQueuePush", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// Deprecated: Use DecodeDownlinkRequest.ProtoReflect.Descriptor instead. +func (*DecodeDownlinkRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{12} } -func (c *appAsClient) DownlinkQueueReplace(ctx context.Context, in *DownlinkQueueRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppAs/DownlinkQueueReplace", in, out, opts...) - if err != nil { - return nil, err +func (x *DecodeDownlinkRequest) GetEndDeviceIds() *EndDeviceIdentifiers { + if x != nil { + return x.EndDeviceIds } - return out, nil + return nil } -func (c *appAsClient) DownlinkQueueList(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*ApplicationDownlinks, error) { - out := new(ApplicationDownlinks) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppAs/DownlinkQueueList", in, out, opts...) - if err != nil { - return nil, err +func (x *DecodeDownlinkRequest) GetVersionIds() *EndDeviceVersionIdentifiers { + if x != nil { + return x.VersionIds } - return out, nil + return nil } -func (c *appAsClient) GetMQTTConnectionInfo(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*MQTTConnectionInfo, error) { - out := new(MQTTConnectionInfo) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppAs/GetMQTTConnectionInfo", in, out, opts...) - if err != nil { - return nil, err +func (x *DecodeDownlinkRequest) GetDownlink() *ApplicationDownlink { + if x != nil { + return x.Downlink } - return out, nil + return nil } -func (c *appAsClient) SimulateUplink(ctx context.Context, in *ApplicationUp, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppAs/SimulateUplink", in, out, opts...) - if err != nil { - return nil, err +func (x *DecodeDownlinkRequest) GetFormatter() PayloadFormatter { + if x != nil { + return x.Formatter } - return out, nil + return PayloadFormatter_FORMATTER_NONE } -func (c *appAsClient) EncodeDownlink(ctx context.Context, in *EncodeDownlinkRequest, opts ...grpc.CallOption) (*EncodeDownlinkResponse, error) { - out := new(EncodeDownlinkResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppAs/EncodeDownlink", in, out, opts...) - if err != nil { - return nil, err +func (x *DecodeDownlinkRequest) GetParameter() string { + if x != nil { + return x.Parameter } - return out, nil + return "" } -func (c *appAsClient) DecodeUplink(ctx context.Context, in *DecodeUplinkRequest, opts ...grpc.CallOption) (*DecodeUplinkResponse, error) { - out := new(DecodeUplinkResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppAs/DecodeUplink", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +type DecodeDownlinkResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Downlink *ApplicationDownlink `protobuf:"bytes,1,opt,name=downlink,proto3" json:"downlink,omitempty"` } -func (c *appAsClient) DecodeDownlink(ctx context.Context, in *DecodeDownlinkRequest, opts ...grpc.CallOption) (*DecodeDownlinkResponse, error) { - out := new(DecodeDownlinkResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppAs/DecodeDownlink", in, out, opts...) - if err != nil { - return nil, err +func (x *DecodeDownlinkResponse) Reset() { + *x = DecodeDownlinkResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return out, nil } -// AppAsServer is the server API for AppAs service. -type AppAsServer interface { - // Subscribe to upstream messages. - Subscribe(*ApplicationIdentifiers, AppAs_SubscribeServer) error - // Push downlink messages to the end of the downlink queue. - DownlinkQueuePush(context.Context, *DownlinkQueueRequest) (*types.Empty, error) - // Replace the entire downlink queue with the specified messages. - // This can also be used to empty the queue by specifying no messages. - DownlinkQueueReplace(context.Context, *DownlinkQueueRequest) (*types.Empty, error) - // List the items currently in the downlink queue. - DownlinkQueueList(context.Context, *EndDeviceIdentifiers) (*ApplicationDownlinks, error) - // Get connection information to connect an MQTT client. - GetMQTTConnectionInfo(context.Context, *ApplicationIdentifiers) (*MQTTConnectionInfo, error) - // Simulate an upstream message. This can be used to test integrations. - SimulateUplink(context.Context, *ApplicationUp) (*types.Empty, error) - EncodeDownlink(context.Context, *EncodeDownlinkRequest) (*EncodeDownlinkResponse, error) - DecodeUplink(context.Context, *DecodeUplinkRequest) (*DecodeUplinkResponse, error) - DecodeDownlink(context.Context, *DecodeDownlinkRequest) (*DecodeDownlinkResponse, error) +func (x *DecodeDownlinkResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -// UnimplementedAppAsServer can be embedded to have forward compatible implementations. -type UnimplementedAppAsServer struct { -} +func (*DecodeDownlinkResponse) ProtoMessage() {} -func (*UnimplementedAppAsServer) Subscribe(req *ApplicationIdentifiers, srv AppAs_SubscribeServer) error { - return status.Errorf(codes.Unimplemented, "method Subscribe not implemented") -} -func (*UnimplementedAppAsServer) DownlinkQueuePush(ctx context.Context, req *DownlinkQueueRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DownlinkQueuePush not implemented") -} -func (*UnimplementedAppAsServer) DownlinkQueueReplace(ctx context.Context, req *DownlinkQueueRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DownlinkQueueReplace not implemented") -} -func (*UnimplementedAppAsServer) DownlinkQueueList(ctx context.Context, req *EndDeviceIdentifiers) (*ApplicationDownlinks, error) { - return nil, status.Errorf(codes.Unimplemented, "method DownlinkQueueList not implemented") -} -func (*UnimplementedAppAsServer) GetMQTTConnectionInfo(ctx context.Context, req *ApplicationIdentifiers) (*MQTTConnectionInfo, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetMQTTConnectionInfo not implemented") -} -func (*UnimplementedAppAsServer) SimulateUplink(ctx context.Context, req *ApplicationUp) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method SimulateUplink not implemented") -} -func (*UnimplementedAppAsServer) EncodeDownlink(ctx context.Context, req *EncodeDownlinkRequest) (*EncodeDownlinkResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method EncodeDownlink not implemented") -} -func (*UnimplementedAppAsServer) DecodeUplink(ctx context.Context, req *DecodeUplinkRequest) (*DecodeUplinkResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DecodeUplink not implemented") -} -func (*UnimplementedAppAsServer) DecodeDownlink(ctx context.Context, req *DecodeDownlinkRequest) (*DecodeDownlinkResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DecodeDownlink not implemented") +func (x *DecodeDownlinkResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func RegisterAppAsServer(s *grpc.Server, srv AppAsServer) { - s.RegisterService(&_AppAs_serviceDesc, srv) +// Deprecated: Use DecodeDownlinkResponse.ProtoReflect.Descriptor instead. +func (*DecodeDownlinkResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{13} } -func _AppAs_Subscribe_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(ApplicationIdentifiers) - if err := stream.RecvMsg(m); err != nil { - return err +func (x *DecodeDownlinkResponse) GetDownlink() *ApplicationDownlink { + if x != nil { + return x.Downlink } - return srv.(AppAsServer).Subscribe(m, &appAsSubscribeServer{stream}) -} - -type AppAs_SubscribeServer interface { - Send(*ApplicationUp) error - grpc.ServerStream + return nil } -type appAsSubscribeServer struct { - grpc.ServerStream -} +type AsConfiguration_PubSub struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *appAsSubscribeServer) Send(m *ApplicationUp) error { - return x.ServerStream.SendMsg(m) + Providers *AsConfiguration_PubSub_Providers `protobuf:"bytes,1,opt,name=providers,proto3" json:"providers,omitempty"` } -func _AppAs_DownlinkQueuePush_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DownlinkQueueRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AppAsServer).DownlinkQueuePush(ctx, in) +func (x *AsConfiguration_PubSub) Reset() { + *x = AsConfiguration_PubSub{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.AppAs/DownlinkQueuePush", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AppAsServer).DownlinkQueuePush(ctx, req.(*DownlinkQueueRequest)) - } - return interceptor(ctx, in, info, handler) } -func _AppAs_DownlinkQueueReplace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DownlinkQueueRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AppAsServer).DownlinkQueueReplace(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.AppAs/DownlinkQueueReplace", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AppAsServer).DownlinkQueueReplace(ctx, req.(*DownlinkQueueRequest)) - } - return interceptor(ctx, in, info, handler) +func (x *AsConfiguration_PubSub) String() string { + return protoimpl.X.MessageStringOf(x) } -func _AppAs_DownlinkQueueList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(EndDeviceIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AppAsServer).DownlinkQueueList(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.AppAs/DownlinkQueueList", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AppAsServer).DownlinkQueueList(ctx, req.(*EndDeviceIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} +func (*AsConfiguration_PubSub) ProtoMessage() {} -func _AppAs_GetMQTTConnectionInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AppAsServer).GetMQTTConnectionInfo(ctx, in) +func (x *AsConfiguration_PubSub) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.AppAs/GetMQTTConnectionInfo", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AppAsServer).GetMQTTConnectionInfo(ctx, req.(*ApplicationIdentifiers)) - } - return interceptor(ctx, in, info, handler) + return mi.MessageOf(x) } -func _AppAs_SimulateUplink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationUp) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AppAsServer).SimulateUplink(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.AppAs/SimulateUplink", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AppAsServer).SimulateUplink(ctx, req.(*ApplicationUp)) - } - return interceptor(ctx, in, info, handler) +// Deprecated: Use AsConfiguration_PubSub.ProtoReflect.Descriptor instead. +func (*AsConfiguration_PubSub) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{4, 0} } -func _AppAs_EncodeDownlink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(EncodeDownlinkRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AppAsServer).EncodeDownlink(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.AppAs/EncodeDownlink", +func (x *AsConfiguration_PubSub) GetProviders() *AsConfiguration_PubSub_Providers { + if x != nil { + return x.Providers } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AppAsServer).EncodeDownlink(ctx, req.(*EncodeDownlinkRequest)) - } - return interceptor(ctx, in, info, handler) + return nil } -func _AppAs_DecodeUplink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DecodeUplinkRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AppAsServer).DecodeUplink(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.AppAs/DecodeUplink", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AppAsServer).DecodeUplink(ctx, req.(*DecodeUplinkRequest)) - } - return interceptor(ctx, in, info, handler) +type AsConfiguration_Webhooks struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UnhealthyAttemptsThreshold int64 `protobuf:"varint,1,opt,name=unhealthy_attempts_threshold,json=unhealthyAttemptsThreshold,proto3" json:"unhealthy_attempts_threshold,omitempty"` + UnhealthyRetryInterval *durationpb.Duration `protobuf:"bytes,2,opt,name=unhealthy_retry_interval,json=unhealthyRetryInterval,proto3" json:"unhealthy_retry_interval,omitempty"` } -func _AppAs_DecodeDownlink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DecodeDownlinkRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AppAsServer).DecodeDownlink(ctx, in) +func (x *AsConfiguration_Webhooks) Reset() { + *x = AsConfiguration_Webhooks{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.AppAs/DecodeDownlink", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AppAsServer).DecodeDownlink(ctx, req.(*DecodeDownlinkRequest)) - } - return interceptor(ctx, in, info, handler) } -var _AppAs_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.AppAs", - HandlerType: (*AppAsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "DownlinkQueuePush", - Handler: _AppAs_DownlinkQueuePush_Handler, - }, - { - MethodName: "DownlinkQueueReplace", - Handler: _AppAs_DownlinkQueueReplace_Handler, - }, - { - MethodName: "DownlinkQueueList", - Handler: _AppAs_DownlinkQueueList_Handler, - }, - { - MethodName: "GetMQTTConnectionInfo", - Handler: _AppAs_GetMQTTConnectionInfo_Handler, - }, - { - MethodName: "SimulateUplink", - Handler: _AppAs_SimulateUplink_Handler, - }, - { - MethodName: "EncodeDownlink", - Handler: _AppAs_EncodeDownlink_Handler, - }, - { - MethodName: "DecodeUplink", - Handler: _AppAs_DecodeUplink_Handler, - }, - { - MethodName: "DecodeDownlink", - Handler: _AppAs_DecodeDownlink_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "Subscribe", - Handler: _AppAs_Subscribe_Handler, - ServerStreams: true, - }, - }, - Metadata: "lorawan-stack/api/applicationserver.proto", +func (x *AsConfiguration_Webhooks) String() string { + return protoimpl.X.MessageStringOf(x) } -// AsEndDeviceRegistryClient is the client API for AsEndDeviceRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type AsEndDeviceRegistryClient interface { - // Get returns the device that matches the given identifiers. - // If there are multiple matches, an error will be returned. - Get(ctx context.Context, in *GetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) - // Set creates or updates the device. - Set(ctx context.Context, in *SetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) - // Delete deletes the device that matches the given identifiers. - // If there are multiple matches, an error will be returned. - Delete(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) -} +func (*AsConfiguration_Webhooks) ProtoMessage() {} -type asEndDeviceRegistryClient struct { - cc *grpc.ClientConn +func (x *AsConfiguration_Webhooks) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func NewAsEndDeviceRegistryClient(cc *grpc.ClientConn) AsEndDeviceRegistryClient { - return &asEndDeviceRegistryClient{cc} +// Deprecated: Use AsConfiguration_Webhooks.ProtoReflect.Descriptor instead. +func (*AsConfiguration_Webhooks) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{4, 1} } -func (c *asEndDeviceRegistryClient) Get(ctx context.Context, in *GetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { - out := new(EndDevice) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AsEndDeviceRegistry/Get", in, out, opts...) - if err != nil { - return nil, err +func (x *AsConfiguration_Webhooks) GetUnhealthyAttemptsThreshold() int64 { + if x != nil { + return x.UnhealthyAttemptsThreshold } - return out, nil + return 0 } -func (c *asEndDeviceRegistryClient) Set(ctx context.Context, in *SetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { - out := new(EndDevice) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AsEndDeviceRegistry/Set", in, out, opts...) - if err != nil { - return nil, err +func (x *AsConfiguration_Webhooks) GetUnhealthyRetryInterval() *durationpb.Duration { + if x != nil { + return x.UnhealthyRetryInterval } - return out, nil + return nil } -func (c *asEndDeviceRegistryClient) Delete(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AsEndDeviceRegistry/Delete", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} +type AsConfiguration_PubSub_Providers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -// AsEndDeviceRegistryServer is the server API for AsEndDeviceRegistry service. -type AsEndDeviceRegistryServer interface { - // Get returns the device that matches the given identifiers. - // If there are multiple matches, an error will be returned. - Get(context.Context, *GetEndDeviceRequest) (*EndDevice, error) - // Set creates or updates the device. - Set(context.Context, *SetEndDeviceRequest) (*EndDevice, error) - // Delete deletes the device that matches the given identifiers. - // If there are multiple matches, an error will be returned. - Delete(context.Context, *EndDeviceIdentifiers) (*types.Empty, error) + Mqtt AsConfiguration_PubSub_Providers_Status `protobuf:"varint,1,opt,name=mqtt,proto3,enum=ttn.lorawan.v3.AsConfiguration_PubSub_Providers_Status" json:"mqtt,omitempty"` + Nats AsConfiguration_PubSub_Providers_Status `protobuf:"varint,2,opt,name=nats,proto3,enum=ttn.lorawan.v3.AsConfiguration_PubSub_Providers_Status" json:"nats,omitempty"` } -// UnimplementedAsEndDeviceRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedAsEndDeviceRegistryServer struct { +func (x *AsConfiguration_PubSub_Providers) Reset() { + *x = AsConfiguration_PubSub_Providers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (*UnimplementedAsEndDeviceRegistryServer) Get(ctx context.Context, req *GetEndDeviceRequest) (*EndDevice, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") -} -func (*UnimplementedAsEndDeviceRegistryServer) Set(ctx context.Context, req *SetEndDeviceRequest) (*EndDevice, error) { - return nil, status.Errorf(codes.Unimplemented, "method Set not implemented") -} -func (*UnimplementedAsEndDeviceRegistryServer) Delete(ctx context.Context, req *EndDeviceIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +func (x *AsConfiguration_PubSub_Providers) String() string { + return protoimpl.X.MessageStringOf(x) } -func RegisterAsEndDeviceRegistryServer(s *grpc.Server, srv AsEndDeviceRegistryServer) { - s.RegisterService(&_AsEndDeviceRegistry_serviceDesc, srv) -} +func (*AsConfiguration_PubSub_Providers) ProtoMessage() {} -func _AsEndDeviceRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetEndDeviceRequest) - if err := dec(in); err != nil { - return nil, err +func (x *AsConfiguration_PubSub_Providers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - if interceptor == nil { - return srv.(AsEndDeviceRegistryServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.AsEndDeviceRegistry/Get", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AsEndDeviceRegistryServer).Get(ctx, req.(*GetEndDeviceRequest)) - } - return interceptor(ctx, in, info, handler) + return mi.MessageOf(x) } -func _AsEndDeviceRegistry_Set_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetEndDeviceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AsEndDeviceRegistryServer).Set(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.AsEndDeviceRegistry/Set", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AsEndDeviceRegistryServer).Set(ctx, req.(*SetEndDeviceRequest)) - } - return interceptor(ctx, in, info, handler) +// Deprecated: Use AsConfiguration_PubSub_Providers.ProtoReflect.Descriptor instead. +func (*AsConfiguration_PubSub_Providers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_proto_rawDescGZIP(), []int{4, 0, 0} } -func _AsEndDeviceRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(EndDeviceIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AsEndDeviceRegistryServer).Delete(ctx, in) +func (x *AsConfiguration_PubSub_Providers) GetMqtt() AsConfiguration_PubSub_Providers_Status { + if x != nil { + return x.Mqtt } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.AsEndDeviceRegistry/Delete", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AsEndDeviceRegistryServer).Delete(ctx, req.(*EndDeviceIdentifiers)) + return AsConfiguration_PubSub_Providers_ENABLED +} + +func (x *AsConfiguration_PubSub_Providers) GetNats() AsConfiguration_PubSub_Providers_Status { + if x != nil { + return x.Nats } - return interceptor(ctx, in, info, handler) + return AsConfiguration_PubSub_Providers_ENABLED } -var _AsEndDeviceRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.AsEndDeviceRegistry", - HandlerType: (*AsEndDeviceRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Get", - Handler: _AsEndDeviceRegistry_Get_Handler, - }, - { - MethodName: "Set", - Handler: _AsEndDeviceRegistry_Set_Handler, - }, - { - MethodName: "Delete", - Handler: _AsEndDeviceRegistry_Delete_Handler, +var File_lorawan_stack_api_applicationserver_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_applicationserver_proto_rawDesc = []byte{ + 0x0a, 0x29, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x41, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, + 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, + 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, + 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xd2, 0x01, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, + 0x69, 0x6e, 0x6b, 0x12, 0x57, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4a, 0x0a, 0x13, + 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x73, 0x6b, 0x69, 0x70, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, + 0x10, 0x01, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, + 0x08, 0x04, 0x10, 0x05, 0x22, 0xb1, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, + 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xf0, 0x01, 0x0a, 0x19, 0x53, 0x65, 0x74, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x73, 0x12, 0x3d, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, + 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xfd, 0x03, 0x0a, 0x14, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x41, 0x74, 0x12, 0xc5, 0x01, + 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, + 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, + 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, + 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, + 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, + 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, + 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, + 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, + 0x14, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, + 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, + 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x19, 0x0a, 0x08, 0x75, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x07, 0x75, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x1a, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x17, 0x6c, 0x61, 0x73, + 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xfe, 0x04, 0x0a, 0x0f, + 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x3e, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x52, 0x06, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x12, + 0x44, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x08, 0x77, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x1a, 0xc0, 0x02, 0x0a, 0x06, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, + 0x12, 0x4e, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, + 0x1a, 0xe5, 0x01, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x4b, + 0x0a, 0x04, 0x6d, 0x71, 0x74, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, + 0x62, 0x53, 0x75, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x04, 0x6d, 0x71, 0x74, 0x74, 0x12, 0x4b, 0x0a, 0x04, 0x6e, + 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x73, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, + 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x04, 0x6e, 0x61, 0x74, 0x73, 0x22, 0x38, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, + 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x1a, 0x06, 0xea, 0xaa, 0x19, 0x02, + 0x18, 0x01, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x1a, 0xa1, 0x01, 0x0a, 0x08, 0x57, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x40, 0x0a, 0x1c, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x5f, 0x74, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1a, 0x75, 0x6e, 0x68, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x54, 0x68, + 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x53, 0x0a, 0x18, 0x75, 0x6e, 0x68, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x79, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x52, + 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x1b, 0x0a, 0x19, + 0x47, 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x63, 0x0a, 0x1a, 0x47, 0x65, 0x74, + 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, + 0x0a, 0x17, 0x4e, 0x73, 0x41, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x69, + 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x0f, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, + 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x73, 0x22, 0xee, 0x02, 0x0a, 0x15, + 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x49, 0x0a, 0x08, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x48, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x12, 0x1c, + 0x0a, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x22, 0x59, 0x0a, 0x16, + 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x08, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0xe6, 0x02, 0x0a, 0x13, 0x44, 0x65, 0x63, 0x6f, + 0x64, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x48, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x22, 0x51, 0x0a, 0x14, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, + 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x06, 0x75, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x22, 0xee, 0x02, 0x0a, 0x15, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, + 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x64, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x73, 0x12, 0x49, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x48, 0x0a, 0x09, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x22, 0x59, 0x0a, 0x16, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, + 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x32, + 0xd1, 0x05, 0x0a, 0x02, 0x41, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4c, 0x69, + 0x6e, 0x6b, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x3e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x98, + 0x01, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x1a, 0x36, + 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x3a, 0x01, 0x2a, 0x12, 0x7c, 0x0a, 0x0a, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x2a, + 0x26, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x92, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4c, + 0x69, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, + 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, + 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x84, 0x01, 0x0a, + 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, + 0x12, 0x11, 0x2f, 0x61, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x32, 0x57, 0x0a, 0x04, 0x4e, 0x73, 0x41, 0x73, 0x12, 0x4f, 0x0a, 0x0c, 0x48, + 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x27, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x73, 0x41, + 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x32, 0xb3, 0x0d, 0x0a, + 0x05, 0x41, 0x70, 0x70, 0x41, 0x73, 0x12, 0x54, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x1d, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x30, 0x01, 0x12, 0xcb, 0x01, 0x0a, + 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x75, + 0x73, 0x68, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x72, 0x22, 0x6d, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x6f, + 0x77, 0x6e, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x3a, 0x01, 0x2a, 0x12, 0xd1, 0x01, 0x0a, 0x14, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, + 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x7b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x75, 0x22, 0x70, 0x2f, 0x61, 0x73, 0x2f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, + 0x6f, 0x77, 0x6e, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0xb3, + 0x01, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, + 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x12, 0x4a, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x64, 0x6f, 0x77, 0x6e, 0x12, 0xa3, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4d, 0x51, 0x54, 0x54, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x51, 0x54, 0x54, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x38, 0x12, 0x36, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x53, + 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x1d, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x7a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x22, 0x6f, 0x2f, 0x61, + 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x75, 0x70, 0x2f, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, + 0x12, 0xdb, 0x01, 0x0a, 0x0e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x63, 0x6f, + 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x7a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x22, 0x6f, 0x2f, 0x61, 0x73, 0x2f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, + 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x64, 0x6f, 0x77, 0x6e, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0xd3, + 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, + 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x6c, 0x69, + 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x72, 0x22, 0x6d, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, + 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x70, 0x2f, 0x64, 0x65, 0x63, 0x6f, 0x64, + 0x65, 0x3a, 0x01, 0x2a, 0x12, 0xdb, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x22, 0x6f, + 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x2f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x3a, + 0x01, 0x2a, 0x32, 0xeb, 0x04, 0x0a, 0x13, 0x41, 0x73, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xb2, 0x01, 0x0a, 0x03, 0x47, + 0x65, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x12, 0x63, 0x2f, 0x61, 0x73, 0x2f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, + 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, + 0x86, 0x02, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0xbe, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb7, + 0x01, 0x1a, 0x63, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x4d, 0x22, 0x48, 0x2f, 0x61, 0x73, + 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, + 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x95, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x2a, 0x45, 0x2f, 0x61, 0x73, 0x2f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, + 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_applicationserver_proto_rawDescOnce sync.Once + file_lorawan_stack_api_applicationserver_proto_rawDescData = file_lorawan_stack_api_applicationserver_proto_rawDesc +) + +func file_lorawan_stack_api_applicationserver_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_applicationserver_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_applicationserver_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_applicationserver_proto_rawDescData) + }) + return file_lorawan_stack_api_applicationserver_proto_rawDescData +} + +var file_lorawan_stack_api_applicationserver_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_lorawan_stack_api_applicationserver_proto_msgTypes = make([]protoimpl.MessageInfo, 17) +var file_lorawan_stack_api_applicationserver_proto_goTypes = []interface{}{ + (AsConfiguration_PubSub_Providers_Status)(0), // 0: ttn.lorawan.v3.AsConfiguration.PubSub.Providers.Status + (*ApplicationLink)(nil), // 1: ttn.lorawan.v3.ApplicationLink + (*GetApplicationLinkRequest)(nil), // 2: ttn.lorawan.v3.GetApplicationLinkRequest + (*SetApplicationLinkRequest)(nil), // 3: ttn.lorawan.v3.SetApplicationLinkRequest + (*ApplicationLinkStats)(nil), // 4: ttn.lorawan.v3.ApplicationLinkStats + (*AsConfiguration)(nil), // 5: ttn.lorawan.v3.AsConfiguration + (*GetAsConfigurationRequest)(nil), // 6: ttn.lorawan.v3.GetAsConfigurationRequest + (*GetAsConfigurationResponse)(nil), // 7: ttn.lorawan.v3.GetAsConfigurationResponse + (*NsAsHandleUplinkRequest)(nil), // 8: ttn.lorawan.v3.NsAsHandleUplinkRequest + (*EncodeDownlinkRequest)(nil), // 9: ttn.lorawan.v3.EncodeDownlinkRequest + (*EncodeDownlinkResponse)(nil), // 10: ttn.lorawan.v3.EncodeDownlinkResponse + (*DecodeUplinkRequest)(nil), // 11: ttn.lorawan.v3.DecodeUplinkRequest + (*DecodeUplinkResponse)(nil), // 12: ttn.lorawan.v3.DecodeUplinkResponse + (*DecodeDownlinkRequest)(nil), // 13: ttn.lorawan.v3.DecodeDownlinkRequest + (*DecodeDownlinkResponse)(nil), // 14: ttn.lorawan.v3.DecodeDownlinkResponse + (*AsConfiguration_PubSub)(nil), // 15: ttn.lorawan.v3.AsConfiguration.PubSub + (*AsConfiguration_Webhooks)(nil), // 16: ttn.lorawan.v3.AsConfiguration.Webhooks + (*AsConfiguration_PubSub_Providers)(nil), // 17: ttn.lorawan.v3.AsConfiguration.PubSub.Providers + (*MessagePayloadFormatters)(nil), // 18: ttn.lorawan.v3.MessagePayloadFormatters + (*wrapperspb.BoolValue)(nil), // 19: google.protobuf.BoolValue + (*ApplicationIdentifiers)(nil), // 20: ttn.lorawan.v3.ApplicationIdentifiers + (*fieldmaskpb.FieldMask)(nil), // 21: google.protobuf.FieldMask + (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp + (*ApplicationUp)(nil), // 23: ttn.lorawan.v3.ApplicationUp + (*EndDeviceIdentifiers)(nil), // 24: ttn.lorawan.v3.EndDeviceIdentifiers + (*EndDeviceVersionIdentifiers)(nil), // 25: ttn.lorawan.v3.EndDeviceVersionIdentifiers + (*ApplicationDownlink)(nil), // 26: ttn.lorawan.v3.ApplicationDownlink + (PayloadFormatter)(0), // 27: ttn.lorawan.v3.PayloadFormatter + (*ApplicationUplink)(nil), // 28: ttn.lorawan.v3.ApplicationUplink + (*durationpb.Duration)(nil), // 29: google.protobuf.Duration + (*DownlinkQueueRequest)(nil), // 30: ttn.lorawan.v3.DownlinkQueueRequest + (*GetEndDeviceRequest)(nil), // 31: ttn.lorawan.v3.GetEndDeviceRequest + (*SetEndDeviceRequest)(nil), // 32: ttn.lorawan.v3.SetEndDeviceRequest + (*emptypb.Empty)(nil), // 33: google.protobuf.Empty + (*ApplicationDownlinks)(nil), // 34: ttn.lorawan.v3.ApplicationDownlinks + (*MQTTConnectionInfo)(nil), // 35: ttn.lorawan.v3.MQTTConnectionInfo + (*EndDevice)(nil), // 36: ttn.lorawan.v3.EndDevice +} +var file_lorawan_stack_api_applicationserver_proto_depIdxs = []int32{ + 18, // 0: ttn.lorawan.v3.ApplicationLink.default_formatters:type_name -> ttn.lorawan.v3.MessagePayloadFormatters + 19, // 1: ttn.lorawan.v3.ApplicationLink.skip_payload_crypto:type_name -> google.protobuf.BoolValue + 20, // 2: ttn.lorawan.v3.GetApplicationLinkRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 21, // 3: ttn.lorawan.v3.GetApplicationLinkRequest.field_mask:type_name -> google.protobuf.FieldMask + 20, // 4: ttn.lorawan.v3.SetApplicationLinkRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 1, // 5: ttn.lorawan.v3.SetApplicationLinkRequest.link:type_name -> ttn.lorawan.v3.ApplicationLink + 21, // 6: ttn.lorawan.v3.SetApplicationLinkRequest.field_mask:type_name -> google.protobuf.FieldMask + 22, // 7: ttn.lorawan.v3.ApplicationLinkStats.linked_at:type_name -> google.protobuf.Timestamp + 22, // 8: ttn.lorawan.v3.ApplicationLinkStats.last_up_received_at:type_name -> google.protobuf.Timestamp + 22, // 9: ttn.lorawan.v3.ApplicationLinkStats.last_downlink_forwarded_at:type_name -> google.protobuf.Timestamp + 15, // 10: ttn.lorawan.v3.AsConfiguration.pubsub:type_name -> ttn.lorawan.v3.AsConfiguration.PubSub + 16, // 11: ttn.lorawan.v3.AsConfiguration.webhooks:type_name -> ttn.lorawan.v3.AsConfiguration.Webhooks + 5, // 12: ttn.lorawan.v3.GetAsConfigurationResponse.configuration:type_name -> ttn.lorawan.v3.AsConfiguration + 23, // 13: ttn.lorawan.v3.NsAsHandleUplinkRequest.application_ups:type_name -> ttn.lorawan.v3.ApplicationUp + 24, // 14: ttn.lorawan.v3.EncodeDownlinkRequest.end_device_ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 25, // 15: ttn.lorawan.v3.EncodeDownlinkRequest.version_ids:type_name -> ttn.lorawan.v3.EndDeviceVersionIdentifiers + 26, // 16: ttn.lorawan.v3.EncodeDownlinkRequest.downlink:type_name -> ttn.lorawan.v3.ApplicationDownlink + 27, // 17: ttn.lorawan.v3.EncodeDownlinkRequest.formatter:type_name -> ttn.lorawan.v3.PayloadFormatter + 26, // 18: ttn.lorawan.v3.EncodeDownlinkResponse.downlink:type_name -> ttn.lorawan.v3.ApplicationDownlink + 24, // 19: ttn.lorawan.v3.DecodeUplinkRequest.end_device_ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 25, // 20: ttn.lorawan.v3.DecodeUplinkRequest.version_ids:type_name -> ttn.lorawan.v3.EndDeviceVersionIdentifiers + 28, // 21: ttn.lorawan.v3.DecodeUplinkRequest.uplink:type_name -> ttn.lorawan.v3.ApplicationUplink + 27, // 22: ttn.lorawan.v3.DecodeUplinkRequest.formatter:type_name -> ttn.lorawan.v3.PayloadFormatter + 28, // 23: ttn.lorawan.v3.DecodeUplinkResponse.uplink:type_name -> ttn.lorawan.v3.ApplicationUplink + 24, // 24: ttn.lorawan.v3.DecodeDownlinkRequest.end_device_ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 25, // 25: ttn.lorawan.v3.DecodeDownlinkRequest.version_ids:type_name -> ttn.lorawan.v3.EndDeviceVersionIdentifiers + 26, // 26: ttn.lorawan.v3.DecodeDownlinkRequest.downlink:type_name -> ttn.lorawan.v3.ApplicationDownlink + 27, // 27: ttn.lorawan.v3.DecodeDownlinkRequest.formatter:type_name -> ttn.lorawan.v3.PayloadFormatter + 26, // 28: ttn.lorawan.v3.DecodeDownlinkResponse.downlink:type_name -> ttn.lorawan.v3.ApplicationDownlink + 17, // 29: ttn.lorawan.v3.AsConfiguration.PubSub.providers:type_name -> ttn.lorawan.v3.AsConfiguration.PubSub.Providers + 29, // 30: ttn.lorawan.v3.AsConfiguration.Webhooks.unhealthy_retry_interval:type_name -> google.protobuf.Duration + 0, // 31: ttn.lorawan.v3.AsConfiguration.PubSub.Providers.mqtt:type_name -> ttn.lorawan.v3.AsConfiguration.PubSub.Providers.Status + 0, // 32: ttn.lorawan.v3.AsConfiguration.PubSub.Providers.nats:type_name -> ttn.lorawan.v3.AsConfiguration.PubSub.Providers.Status + 2, // 33: ttn.lorawan.v3.As.GetLink:input_type -> ttn.lorawan.v3.GetApplicationLinkRequest + 3, // 34: ttn.lorawan.v3.As.SetLink:input_type -> ttn.lorawan.v3.SetApplicationLinkRequest + 20, // 35: ttn.lorawan.v3.As.DeleteLink:input_type -> ttn.lorawan.v3.ApplicationIdentifiers + 20, // 36: ttn.lorawan.v3.As.GetLinkStats:input_type -> ttn.lorawan.v3.ApplicationIdentifiers + 6, // 37: ttn.lorawan.v3.As.GetConfiguration:input_type -> ttn.lorawan.v3.GetAsConfigurationRequest + 8, // 38: ttn.lorawan.v3.NsAs.HandleUplink:input_type -> ttn.lorawan.v3.NsAsHandleUplinkRequest + 20, // 39: ttn.lorawan.v3.AppAs.Subscribe:input_type -> ttn.lorawan.v3.ApplicationIdentifiers + 30, // 40: ttn.lorawan.v3.AppAs.DownlinkQueuePush:input_type -> ttn.lorawan.v3.DownlinkQueueRequest + 30, // 41: ttn.lorawan.v3.AppAs.DownlinkQueueReplace:input_type -> ttn.lorawan.v3.DownlinkQueueRequest + 24, // 42: ttn.lorawan.v3.AppAs.DownlinkQueueList:input_type -> ttn.lorawan.v3.EndDeviceIdentifiers + 20, // 43: ttn.lorawan.v3.AppAs.GetMQTTConnectionInfo:input_type -> ttn.lorawan.v3.ApplicationIdentifiers + 23, // 44: ttn.lorawan.v3.AppAs.SimulateUplink:input_type -> ttn.lorawan.v3.ApplicationUp + 9, // 45: ttn.lorawan.v3.AppAs.EncodeDownlink:input_type -> ttn.lorawan.v3.EncodeDownlinkRequest + 11, // 46: ttn.lorawan.v3.AppAs.DecodeUplink:input_type -> ttn.lorawan.v3.DecodeUplinkRequest + 13, // 47: ttn.lorawan.v3.AppAs.DecodeDownlink:input_type -> ttn.lorawan.v3.DecodeDownlinkRequest + 31, // 48: ttn.lorawan.v3.AsEndDeviceRegistry.Get:input_type -> ttn.lorawan.v3.GetEndDeviceRequest + 32, // 49: ttn.lorawan.v3.AsEndDeviceRegistry.Set:input_type -> ttn.lorawan.v3.SetEndDeviceRequest + 24, // 50: ttn.lorawan.v3.AsEndDeviceRegistry.Delete:input_type -> ttn.lorawan.v3.EndDeviceIdentifiers + 1, // 51: ttn.lorawan.v3.As.GetLink:output_type -> ttn.lorawan.v3.ApplicationLink + 1, // 52: ttn.lorawan.v3.As.SetLink:output_type -> ttn.lorawan.v3.ApplicationLink + 33, // 53: ttn.lorawan.v3.As.DeleteLink:output_type -> google.protobuf.Empty + 4, // 54: ttn.lorawan.v3.As.GetLinkStats:output_type -> ttn.lorawan.v3.ApplicationLinkStats + 7, // 55: ttn.lorawan.v3.As.GetConfiguration:output_type -> ttn.lorawan.v3.GetAsConfigurationResponse + 33, // 56: ttn.lorawan.v3.NsAs.HandleUplink:output_type -> google.protobuf.Empty + 23, // 57: ttn.lorawan.v3.AppAs.Subscribe:output_type -> ttn.lorawan.v3.ApplicationUp + 33, // 58: ttn.lorawan.v3.AppAs.DownlinkQueuePush:output_type -> google.protobuf.Empty + 33, // 59: ttn.lorawan.v3.AppAs.DownlinkQueueReplace:output_type -> google.protobuf.Empty + 34, // 60: ttn.lorawan.v3.AppAs.DownlinkQueueList:output_type -> ttn.lorawan.v3.ApplicationDownlinks + 35, // 61: ttn.lorawan.v3.AppAs.GetMQTTConnectionInfo:output_type -> ttn.lorawan.v3.MQTTConnectionInfo + 33, // 62: ttn.lorawan.v3.AppAs.SimulateUplink:output_type -> google.protobuf.Empty + 10, // 63: ttn.lorawan.v3.AppAs.EncodeDownlink:output_type -> ttn.lorawan.v3.EncodeDownlinkResponse + 12, // 64: ttn.lorawan.v3.AppAs.DecodeUplink:output_type -> ttn.lorawan.v3.DecodeUplinkResponse + 14, // 65: ttn.lorawan.v3.AppAs.DecodeDownlink:output_type -> ttn.lorawan.v3.DecodeDownlinkResponse + 36, // 66: ttn.lorawan.v3.AsEndDeviceRegistry.Get:output_type -> ttn.lorawan.v3.EndDevice + 36, // 67: ttn.lorawan.v3.AsEndDeviceRegistry.Set:output_type -> ttn.lorawan.v3.EndDevice + 33, // 68: ttn.lorawan.v3.AsEndDeviceRegistry.Delete:output_type -> google.protobuf.Empty + 51, // [51:69] is the sub-list for method output_type + 33, // [33:51] is the sub-list for method input_type + 33, // [33:33] is the sub-list for extension type_name + 33, // [33:33] is the sub-list for extension extendee + 0, // [0:33] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_applicationserver_proto_init() } +func file_lorawan_stack_api_applicationserver_proto_init() { + if File_lorawan_stack_api_applicationserver_proto != nil { + return + } + file_lorawan_stack_api_end_device_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_messages_proto_init() + file_lorawan_stack_api_mqtt_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_applicationserver_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationLink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetApplicationLinkRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetApplicationLinkRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationLinkStats); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AsConfiguration); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAsConfigurationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAsConfigurationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NsAsHandleUplinkRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EncodeDownlinkRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EncodeDownlinkResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DecodeUplinkRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DecodeUplinkResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DecodeDownlinkRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DecodeDownlinkResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AsConfiguration_PubSub); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AsConfiguration_Webhooks); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AsConfiguration_PubSub_Providers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_applicationserver_proto_rawDesc, + NumEnums: 1, + NumMessages: 17, + NumExtensions: 0, + NumServices: 4, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/applicationserver.proto", + GoTypes: file_lorawan_stack_api_applicationserver_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_applicationserver_proto_depIdxs, + EnumInfos: file_lorawan_stack_api_applicationserver_proto_enumTypes, + MessageInfos: file_lorawan_stack_api_applicationserver_proto_msgTypes, + }.Build() + File_lorawan_stack_api_applicationserver_proto = out.File + file_lorawan_stack_api_applicationserver_proto_rawDesc = nil + file_lorawan_stack_api_applicationserver_proto_goTypes = nil + file_lorawan_stack_api_applicationserver_proto_depIdxs = nil } diff --git a/pkg/ttnpb/applicationserver.pb.gw.go b/pkg/ttnpb/applicationserver.pb.gw.go index 7f62fda9be..f54e6284d4 100644 --- a/pkg/ttnpb/applicationserver.pb.gw.go +++ b/pkg/ttnpb/applicationserver.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join var ( @@ -54,7 +52,6 @@ func request_As_GetLink_0(ctx context.Context, marshaler runtime.Marshaler, clie } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -88,7 +85,6 @@ func local_request_As_GetLink_0(ctx context.Context, marshaler runtime.Marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -130,7 +126,6 @@ func request_As_SetLink_0(ctx context.Context, marshaler runtime.Marshaler, clie } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -165,7 +160,6 @@ func local_request_As_SetLink_0(ctx context.Context, marshaler runtime.Marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -192,7 +186,6 @@ func request_As_DeleteLink_0(ctx context.Context, marshaler runtime.Marshaler, c } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -219,7 +212,6 @@ func local_request_As_DeleteLink_0(ctx context.Context, marshaler runtime.Marsha } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -246,7 +238,6 @@ func request_As_GetLinkStats_0(ctx context.Context, marshaler runtime.Marshaler, } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -273,7 +264,6 @@ func local_request_As_GetLinkStats_0(ctx context.Context, marshaler runtime.Mars } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -326,7 +316,6 @@ func request_AppAs_DownlinkQueuePush_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -337,7 +326,6 @@ func request_AppAs_DownlinkQueuePush_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -372,7 +360,6 @@ func local_request_AppAs_DownlinkQueuePush_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -383,7 +370,6 @@ func local_request_AppAs_DownlinkQueuePush_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -418,7 +404,6 @@ func request_AppAs_DownlinkQueueReplace_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -429,7 +414,6 @@ func request_AppAs_DownlinkQueueReplace_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -464,7 +448,6 @@ func local_request_AppAs_DownlinkQueueReplace_0(ctx context.Context, marshaler r } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -475,7 +458,6 @@ func local_request_AppAs_DownlinkQueueReplace_0(ctx context.Context, marshaler r } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -506,7 +488,6 @@ func request_AppAs_DownlinkQueueList_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -517,7 +498,6 @@ func request_AppAs_DownlinkQueueList_0(ctx context.Context, marshaler runtime.Ma } protoReq.DeviceId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "device_id", err) } @@ -551,7 +531,6 @@ func local_request_AppAs_DownlinkQueueList_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -562,7 +541,6 @@ func local_request_AppAs_DownlinkQueueList_0(ctx context.Context, marshaler runt } protoReq.DeviceId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "device_id", err) } @@ -596,7 +574,6 @@ func request_AppAs_GetMQTTConnectionInfo_0(ctx context.Context, marshaler runtim } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -623,7 +600,6 @@ func local_request_AppAs_GetMQTTConnectionInfo_0(ctx context.Context, marshaler } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -658,7 +634,6 @@ func request_AppAs_SimulateUplink_0(ctx context.Context, marshaler runtime.Marsh } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -669,7 +644,6 @@ func request_AppAs_SimulateUplink_0(ctx context.Context, marshaler runtime.Marsh } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -704,7 +678,6 @@ func local_request_AppAs_SimulateUplink_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -715,7 +688,6 @@ func local_request_AppAs_SimulateUplink_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -750,7 +722,6 @@ func request_AppAs_EncodeDownlink_0(ctx context.Context, marshaler runtime.Marsh } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -761,7 +732,6 @@ func request_AppAs_EncodeDownlink_0(ctx context.Context, marshaler runtime.Marsh } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -796,7 +766,6 @@ func local_request_AppAs_EncodeDownlink_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -807,7 +776,6 @@ func local_request_AppAs_EncodeDownlink_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -842,7 +810,6 @@ func request_AppAs_DecodeUplink_0(ctx context.Context, marshaler runtime.Marshal } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -853,7 +820,6 @@ func request_AppAs_DecodeUplink_0(ctx context.Context, marshaler runtime.Marshal } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -888,7 +854,6 @@ func local_request_AppAs_DecodeUplink_0(ctx context.Context, marshaler runtime.M } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -899,7 +864,6 @@ func local_request_AppAs_DecodeUplink_0(ctx context.Context, marshaler runtime.M } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -934,7 +898,6 @@ func request_AppAs_DecodeDownlink_0(ctx context.Context, marshaler runtime.Marsh } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -945,7 +908,6 @@ func request_AppAs_DecodeDownlink_0(ctx context.Context, marshaler runtime.Marsh } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -980,7 +942,6 @@ func local_request_AppAs_DecodeDownlink_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -991,7 +952,6 @@ func local_request_AppAs_DecodeDownlink_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -1022,7 +982,6 @@ func request_AsEndDeviceRegistry_Get_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -1033,7 +992,6 @@ func request_AsEndDeviceRegistry_Get_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -1067,7 +1025,6 @@ func local_request_AsEndDeviceRegistry_Get_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -1078,7 +1035,6 @@ func local_request_AsEndDeviceRegistry_Get_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -1120,7 +1076,6 @@ func request_AsEndDeviceRegistry_Set_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.application_ids.application_id", err) } @@ -1131,7 +1086,6 @@ func request_AsEndDeviceRegistry_Set_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.device_id", err) } @@ -1166,7 +1120,6 @@ func local_request_AsEndDeviceRegistry_Set_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.application_ids.application_id", err) } @@ -1177,7 +1130,6 @@ func local_request_AsEndDeviceRegistry_Set_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.device_id", err) } @@ -1212,7 +1164,6 @@ func request_AsEndDeviceRegistry_Set_1(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.application_ids.application_id", err) } @@ -1247,7 +1198,6 @@ func local_request_AsEndDeviceRegistry_Set_1(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.application_ids.application_id", err) } @@ -1278,7 +1228,6 @@ func request_AsEndDeviceRegistry_Delete_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1289,7 +1238,6 @@ func request_AsEndDeviceRegistry_Delete_0(ctx context.Context, marshaler runtime } protoReq.DeviceId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "device_id", err) } @@ -1323,7 +1271,6 @@ func local_request_AsEndDeviceRegistry_Delete_0(ctx context.Context, marshaler r } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1334,7 +1281,6 @@ func local_request_AsEndDeviceRegistry_Delete_0(ctx context.Context, marshaler r } protoReq.DeviceId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "device_id", err) } @@ -1363,20 +1309,22 @@ func RegisterAsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.As/GetLink", runtime.WithHTTPPathPattern("/as/applications/{application_ids.application_id}/link")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_As_GetLink_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_As_GetLink_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_As_GetLink_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_As_GetLink_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1386,20 +1334,22 @@ func RegisterAsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.As/SetLink", runtime.WithHTTPPathPattern("/as/applications/{application_ids.application_id}/link")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_As_SetLink_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_As_SetLink_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_As_SetLink_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_As_SetLink_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1409,20 +1359,22 @@ func RegisterAsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.As/DeleteLink", runtime.WithHTTPPathPattern("/as/applications/{application_id}/link")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_As_DeleteLink_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_As_DeleteLink_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_As_DeleteLink_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_As_DeleteLink_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1432,20 +1384,22 @@ func RegisterAsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.As/GetLinkStats", runtime.WithHTTPPathPattern("/as/applications/{application_id}/link/stats")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_As_GetLinkStats_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_As_GetLinkStats_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_As_GetLinkStats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_As_GetLinkStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1455,20 +1409,22 @@ func RegisterAsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.As/GetConfiguration", runtime.WithHTTPPathPattern("/as/configuration")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_As_GetConfiguration_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_As_GetConfiguration_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_As_GetConfiguration_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_As_GetConfiguration_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1487,20 +1443,22 @@ func RegisterAppAsHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.AppAs/DownlinkQueuePush", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/push")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AppAs_DownlinkQueuePush_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AppAs_DownlinkQueuePush_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AppAs_DownlinkQueuePush_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AppAs_DownlinkQueuePush_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1510,20 +1468,22 @@ func RegisterAppAsHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.AppAs/DownlinkQueueReplace", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/replace")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AppAs_DownlinkQueueReplace_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AppAs_DownlinkQueueReplace_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AppAs_DownlinkQueueReplace_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AppAs_DownlinkQueueReplace_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1533,20 +1493,22 @@ func RegisterAppAsHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.AppAs/DownlinkQueueList", runtime.WithHTTPPathPattern("/as/applications/{application_ids.application_id}/devices/{device_id}/down")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AppAs_DownlinkQueueList_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AppAs_DownlinkQueueList_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AppAs_DownlinkQueueList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AppAs_DownlinkQueueList_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1556,20 +1518,22 @@ func RegisterAppAsHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.AppAs/GetMQTTConnectionInfo", runtime.WithHTTPPathPattern("/as/applications/{application_id}/mqtt-connection-info")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AppAs_GetMQTTConnectionInfo_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AppAs_GetMQTTConnectionInfo_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AppAs_GetMQTTConnectionInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AppAs_GetMQTTConnectionInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1579,20 +1543,22 @@ func RegisterAppAsHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.AppAs/SimulateUplink", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/up/simulate")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AppAs_SimulateUplink_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AppAs_SimulateUplink_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AppAs_SimulateUplink_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AppAs_SimulateUplink_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1602,20 +1568,22 @@ func RegisterAppAsHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.AppAs/EncodeDownlink", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/encode")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AppAs_EncodeDownlink_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AppAs_EncodeDownlink_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AppAs_EncodeDownlink_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AppAs_EncodeDownlink_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1625,20 +1593,22 @@ func RegisterAppAsHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.AppAs/DecodeUplink", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/up/decode")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AppAs_DecodeUplink_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AppAs_DecodeUplink_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AppAs_DecodeUplink_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AppAs_DecodeUplink_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1648,20 +1618,22 @@ func RegisterAppAsHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.AppAs/DecodeDownlink", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/decode")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AppAs_DecodeDownlink_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AppAs_DecodeDownlink_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AppAs_DecodeDownlink_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AppAs_DecodeDownlink_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1680,20 +1652,22 @@ func RegisterAsEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.AsEndDeviceRegistry/Get", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AsEndDeviceRegistry_Get_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AsEndDeviceRegistry_Get_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AsEndDeviceRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AsEndDeviceRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1703,20 +1677,22 @@ func RegisterAsEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.AsEndDeviceRegistry/Set", runtime.WithHTTPPathPattern("/as/applications/{end_device.ids.application_ids.application_id}/devices/{end_device.ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AsEndDeviceRegistry_Set_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AsEndDeviceRegistry_Set_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AsEndDeviceRegistry_Set_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AsEndDeviceRegistry_Set_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1726,20 +1702,22 @@ func RegisterAsEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.AsEndDeviceRegistry/Set", runtime.WithHTTPPathPattern("/as/applications/{end_device.ids.application_ids.application_id}/devices")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AsEndDeviceRegistry_Set_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AsEndDeviceRegistry_Set_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AsEndDeviceRegistry_Set_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AsEndDeviceRegistry_Set_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1749,20 +1727,22 @@ func RegisterAsEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.AsEndDeviceRegistry/Delete", runtime.WithHTTPPathPattern("/as/applications/{application_ids.application_id}/devices/{device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AsEndDeviceRegistry_Delete_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AsEndDeviceRegistry_Delete_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AsEndDeviceRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AsEndDeviceRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1811,19 +1791,21 @@ func RegisterAsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.As/GetLink", runtime.WithHTTPPathPattern("/as/applications/{application_ids.application_id}/link")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_As_GetLink_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_As_GetLink_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_As_GetLink_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_As_GetLink_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1831,19 +1813,21 @@ func RegisterAsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.As/SetLink", runtime.WithHTTPPathPattern("/as/applications/{application_ids.application_id}/link")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_As_SetLink_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_As_SetLink_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_As_SetLink_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_As_SetLink_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1851,19 +1835,21 @@ func RegisterAsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.As/DeleteLink", runtime.WithHTTPPathPattern("/as/applications/{application_id}/link")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_As_DeleteLink_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_As_DeleteLink_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_As_DeleteLink_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_As_DeleteLink_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1871,19 +1857,21 @@ func RegisterAsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.As/GetLinkStats", runtime.WithHTTPPathPattern("/as/applications/{application_id}/link/stats")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_As_GetLinkStats_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_As_GetLinkStats_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_As_GetLinkStats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_As_GetLinkStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1891,19 +1879,21 @@ func RegisterAsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.As/GetConfiguration", runtime.WithHTTPPathPattern("/as/configuration")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_As_GetConfiguration_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_As_GetConfiguration_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_As_GetConfiguration_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_As_GetConfiguration_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1911,15 +1901,15 @@ func RegisterAsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client } var ( - pattern_As_GetLink_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"as", "applications", "application_ids.application_id", "link"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_As_GetLink_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"as", "applications", "application_ids.application_id", "link"}, "")) - pattern_As_SetLink_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"as", "applications", "application_ids.application_id", "link"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_As_SetLink_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"as", "applications", "application_ids.application_id", "link"}, "")) - pattern_As_DeleteLink_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"as", "applications", "application_id", "link"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_As_DeleteLink_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"as", "applications", "application_id", "link"}, "")) - pattern_As_GetLinkStats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"as", "applications", "application_id", "link", "stats"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_As_GetLinkStats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"as", "applications", "application_id", "link", "stats"}, "")) - pattern_As_GetConfiguration_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"as", "configuration"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_As_GetConfiguration_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"as", "configuration"}, "")) ) var ( @@ -1976,19 +1966,21 @@ func RegisterAppAsHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.AppAs/DownlinkQueuePush", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/push")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AppAs_DownlinkQueuePush_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_AppAs_DownlinkQueuePush_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AppAs_DownlinkQueuePush_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AppAs_DownlinkQueuePush_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1996,19 +1988,21 @@ func RegisterAppAsHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.AppAs/DownlinkQueueReplace", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/replace")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AppAs_DownlinkQueueReplace_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_AppAs_DownlinkQueueReplace_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AppAs_DownlinkQueueReplace_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AppAs_DownlinkQueueReplace_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2016,19 +2010,21 @@ func RegisterAppAsHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.AppAs/DownlinkQueueList", runtime.WithHTTPPathPattern("/as/applications/{application_ids.application_id}/devices/{device_id}/down")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AppAs_DownlinkQueueList_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_AppAs_DownlinkQueueList_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AppAs_DownlinkQueueList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AppAs_DownlinkQueueList_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2036,19 +2032,21 @@ func RegisterAppAsHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.AppAs/GetMQTTConnectionInfo", runtime.WithHTTPPathPattern("/as/applications/{application_id}/mqtt-connection-info")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AppAs_GetMQTTConnectionInfo_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_AppAs_GetMQTTConnectionInfo_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AppAs_GetMQTTConnectionInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AppAs_GetMQTTConnectionInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2056,19 +2054,21 @@ func RegisterAppAsHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.AppAs/SimulateUplink", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/up/simulate")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AppAs_SimulateUplink_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_AppAs_SimulateUplink_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AppAs_SimulateUplink_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AppAs_SimulateUplink_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2076,19 +2076,21 @@ func RegisterAppAsHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.AppAs/EncodeDownlink", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/encode")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AppAs_EncodeDownlink_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_AppAs_EncodeDownlink_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AppAs_EncodeDownlink_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AppAs_EncodeDownlink_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2096,19 +2098,21 @@ func RegisterAppAsHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.AppAs/DecodeUplink", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/up/decode")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AppAs_DecodeUplink_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_AppAs_DecodeUplink_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AppAs_DecodeUplink_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AppAs_DecodeUplink_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2116,19 +2120,21 @@ func RegisterAppAsHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.AppAs/DecodeDownlink", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/decode")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AppAs_DecodeDownlink_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_AppAs_DecodeDownlink_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AppAs_DecodeDownlink_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AppAs_DecodeDownlink_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2136,21 +2142,21 @@ func RegisterAppAsHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie } var ( - pattern_AppAs_DownlinkQueuePush_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "down", "push"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_AppAs_DownlinkQueuePush_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "down", "push"}, "")) - pattern_AppAs_DownlinkQueueReplace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "down", "replace"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_AppAs_DownlinkQueueReplace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "down", "replace"}, "")) - pattern_AppAs_DownlinkQueueList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"as", "applications", "application_ids.application_id", "devices", "device_id", "down"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_AppAs_DownlinkQueueList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"as", "applications", "application_ids.application_id", "devices", "device_id", "down"}, "")) - pattern_AppAs_GetMQTTConnectionInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"as", "applications", "application_id", "mqtt-connection-info"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_AppAs_GetMQTTConnectionInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"as", "applications", "application_id", "mqtt-connection-info"}, "")) - pattern_AppAs_SimulateUplink_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "up", "simulate"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_AppAs_SimulateUplink_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "up", "simulate"}, "")) - pattern_AppAs_EncodeDownlink_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "down", "encode"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_AppAs_EncodeDownlink_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "down", "encode"}, "")) - pattern_AppAs_DecodeUplink_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "up", "decode"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_AppAs_DecodeUplink_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "up", "decode"}, "")) - pattern_AppAs_DecodeDownlink_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "down", "decode"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_AppAs_DecodeDownlink_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "down", "decode"}, "")) ) var ( @@ -2213,19 +2219,21 @@ func RegisterAsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.AsEndDeviceRegistry/Get", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AsEndDeviceRegistry_Get_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_AsEndDeviceRegistry_Get_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AsEndDeviceRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AsEndDeviceRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2233,19 +2241,21 @@ func RegisterAsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.AsEndDeviceRegistry/Set", runtime.WithHTTPPathPattern("/as/applications/{end_device.ids.application_ids.application_id}/devices/{end_device.ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AsEndDeviceRegistry_Set_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_AsEndDeviceRegistry_Set_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AsEndDeviceRegistry_Set_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AsEndDeviceRegistry_Set_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2253,19 +2263,21 @@ func RegisterAsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.AsEndDeviceRegistry/Set", runtime.WithHTTPPathPattern("/as/applications/{end_device.ids.application_ids.application_id}/devices")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AsEndDeviceRegistry_Set_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_AsEndDeviceRegistry_Set_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AsEndDeviceRegistry_Set_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AsEndDeviceRegistry_Set_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2273,19 +2285,21 @@ func RegisterAsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.AsEndDeviceRegistry/Delete", runtime.WithHTTPPathPattern("/as/applications/{application_ids.application_id}/devices/{device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AsEndDeviceRegistry_Delete_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_AsEndDeviceRegistry_Delete_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AsEndDeviceRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AsEndDeviceRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2293,13 +2307,13 @@ func RegisterAsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. } var ( - pattern_AsEndDeviceRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_AsEndDeviceRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id"}, "")) - pattern_AsEndDeviceRegistry_Set_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"as", "applications", "end_device.ids.application_ids.application_id", "devices", "end_device.ids.device_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_AsEndDeviceRegistry_Set_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"as", "applications", "end_device.ids.application_ids.application_id", "devices", "end_device.ids.device_id"}, "")) - pattern_AsEndDeviceRegistry_Set_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"as", "applications", "end_device.ids.application_ids.application_id", "devices"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_AsEndDeviceRegistry_Set_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"as", "applications", "end_device.ids.application_ids.application_id", "devices"}, "")) - pattern_AsEndDeviceRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"as", "applications", "application_ids.application_id", "devices", "device_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_AsEndDeviceRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"as", "applications", "application_ids.application_id", "devices", "device_id"}, "")) ) var ( diff --git a/pkg/ttnpb/applicationserver.pb.setters.fm.go b/pkg/ttnpb/applicationserver.pb.setters.fm.go index 8c2cc4b682..8b0df846d3 100644 --- a/pkg/ttnpb/applicationserver.pb.setters.fm.go +++ b/pkg/ttnpb/applicationserver.pb.setters.fm.go @@ -441,8 +441,7 @@ func (dst *EncodeDownlinkRequest) SetFields(src *EncodeDownlinkRequest, paths .. if src != nil { dst.Formatter = src.Formatter } else { - var zero PayloadFormatter - dst.Formatter = zero + dst.Formatter = 0 } case "parameter": if len(subs) > 0 { @@ -583,8 +582,7 @@ func (dst *DecodeUplinkRequest) SetFields(src *DecodeUplinkRequest, paths ...str if src != nil { dst.Formatter = src.Formatter } else { - var zero PayloadFormatter - dst.Formatter = zero + dst.Formatter = 0 } case "parameter": if len(subs) > 0 { @@ -725,8 +723,7 @@ func (dst *DecodeDownlinkRequest) SetFields(src *DecodeDownlinkRequest, paths .. if src != nil { dst.Formatter = src.Formatter } else { - var zero PayloadFormatter - dst.Formatter = zero + dst.Formatter = 0 } case "parameter": if len(subs) > 0 { @@ -858,8 +855,7 @@ func (dst *AsConfiguration_PubSub_Providers) SetFields(src *AsConfiguration_PubS if src != nil { dst.Mqtt = src.Mqtt } else { - var zero AsConfiguration_PubSub_Providers_Status - dst.Mqtt = zero + dst.Mqtt = 0 } case "nats": if len(subs) > 0 { @@ -868,8 +864,7 @@ func (dst *AsConfiguration_PubSub_Providers) SetFields(src *AsConfiguration_PubS if src != nil { dst.Nats = src.Nats } else { - var zero AsConfiguration_PubSub_Providers_Status - dst.Nats = zero + dst.Nats = 0 } default: diff --git a/pkg/ttnpb/applicationserver.pb.validate.go b/pkg/ttnpb/applicationserver.pb.validate.go index 960b74a507..063d511545 100644 --- a/pkg/ttnpb/applicationserver.pb.validate.go +++ b/pkg/ttnpb/applicationserver.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _applicationserver_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on ApplicationLink with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/applicationserver_flags.pb.go b/pkg/ttnpb/applicationserver_flags.pb.go index 84310e81c7..f195f833ad 100644 --- a/pkg/ttnpb/applicationserver_flags.pb.go +++ b/pkg/ttnpb/applicationserver_flags.pb.go @@ -1,15 +1,15 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/applicationserver.proto package ttnpb import ( flagsplugin "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - types "github.com/gogo/protobuf/types" pflag "github.com/spf13/pflag" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) // AddSelectFlagsForApplicationLink adds flags to select fields in ApplicationLink. @@ -60,7 +60,7 @@ func (m *ApplicationLink) SetFromFlags(flags *pflag.FlagSet, prefix string) (pat if val, changed, err := flagsplugin.GetBool(flags, flagsplugin.Prefix("skip_payload_crypto", prefix)); err != nil { return nil, err } else if changed { - m.SkipPayloadCrypto = &types.BoolValue{Value: val} + m.SkipPayloadCrypto = &wrapperspb.BoolValue{Value: val} paths = append(paths, flagsplugin.Prefix("skip_payload_crypto", prefix)) } return paths, nil diff --git a/pkg/ttnpb/applicationserver_grpc.pb.go b/pkg/ttnpb/applicationserver_grpc.pb.go new file mode 100644 index 0000000000..db8d727538 --- /dev/null +++ b/pkg/ttnpb/applicationserver_grpc.pb.go @@ -0,0 +1,942 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/applicationserver.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// AsClient is the client API for As service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type AsClient interface { + // Get a link configuration from the Application Server to Network Server. + // This only contains the configuration. Use GetLinkStats to view statistics and any link errors. + GetLink(ctx context.Context, in *GetApplicationLinkRequest, opts ...grpc.CallOption) (*ApplicationLink, error) + // Set a link configuration from the Application Server a Network Server. + // This call returns immediately after setting the link configuration; it does not wait for a link to establish. + // To get link statistics or errors, use GetLinkStats. + // Note that there can only be one Application Server instance linked to a Network Server for a given application at a time. + SetLink(ctx context.Context, in *SetApplicationLinkRequest, opts ...grpc.CallOption) (*ApplicationLink, error) + // Delete the link between the Application Server and Network Server for the specified application. + DeleteLink(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) + // GetLinkStats returns the link statistics. + // This call returns a NotFound error code if there is no link for the given application identifiers. + // This call returns the error code of the link error if linking to a Network Server failed. + GetLinkStats(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*ApplicationLinkStats, error) + GetConfiguration(ctx context.Context, in *GetAsConfigurationRequest, opts ...grpc.CallOption) (*GetAsConfigurationResponse, error) +} + +type asClient struct { + cc grpc.ClientConnInterface +} + +func NewAsClient(cc grpc.ClientConnInterface) AsClient { + return &asClient{cc} +} + +func (c *asClient) GetLink(ctx context.Context, in *GetApplicationLinkRequest, opts ...grpc.CallOption) (*ApplicationLink, error) { + out := new(ApplicationLink) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.As/GetLink", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *asClient) SetLink(ctx context.Context, in *SetApplicationLinkRequest, opts ...grpc.CallOption) (*ApplicationLink, error) { + out := new(ApplicationLink) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.As/SetLink", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *asClient) DeleteLink(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.As/DeleteLink", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *asClient) GetLinkStats(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*ApplicationLinkStats, error) { + out := new(ApplicationLinkStats) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.As/GetLinkStats", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *asClient) GetConfiguration(ctx context.Context, in *GetAsConfigurationRequest, opts ...grpc.CallOption) (*GetAsConfigurationResponse, error) { + out := new(GetAsConfigurationResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.As/GetConfiguration", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AsServer is the server API for As service. +// All implementations must embed UnimplementedAsServer +// for forward compatibility +type AsServer interface { + // Get a link configuration from the Application Server to Network Server. + // This only contains the configuration. Use GetLinkStats to view statistics and any link errors. + GetLink(context.Context, *GetApplicationLinkRequest) (*ApplicationLink, error) + // Set a link configuration from the Application Server a Network Server. + // This call returns immediately after setting the link configuration; it does not wait for a link to establish. + // To get link statistics or errors, use GetLinkStats. + // Note that there can only be one Application Server instance linked to a Network Server for a given application at a time. + SetLink(context.Context, *SetApplicationLinkRequest) (*ApplicationLink, error) + // Delete the link between the Application Server and Network Server for the specified application. + DeleteLink(context.Context, *ApplicationIdentifiers) (*emptypb.Empty, error) + // GetLinkStats returns the link statistics. + // This call returns a NotFound error code if there is no link for the given application identifiers. + // This call returns the error code of the link error if linking to a Network Server failed. + GetLinkStats(context.Context, *ApplicationIdentifiers) (*ApplicationLinkStats, error) + GetConfiguration(context.Context, *GetAsConfigurationRequest) (*GetAsConfigurationResponse, error) + mustEmbedUnimplementedAsServer() +} + +// UnimplementedAsServer must be embedded to have forward compatible implementations. +type UnimplementedAsServer struct { +} + +func (UnimplementedAsServer) GetLink(context.Context, *GetApplicationLinkRequest) (*ApplicationLink, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetLink not implemented") +} +func (UnimplementedAsServer) SetLink(context.Context, *SetApplicationLinkRequest) (*ApplicationLink, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetLink not implemented") +} +func (UnimplementedAsServer) DeleteLink(context.Context, *ApplicationIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteLink not implemented") +} +func (UnimplementedAsServer) GetLinkStats(context.Context, *ApplicationIdentifiers) (*ApplicationLinkStats, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetLinkStats not implemented") +} +func (UnimplementedAsServer) GetConfiguration(context.Context, *GetAsConfigurationRequest) (*GetAsConfigurationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetConfiguration not implemented") +} +func (UnimplementedAsServer) mustEmbedUnimplementedAsServer() {} + +// UnsafeAsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AsServer will +// result in compilation errors. +type UnsafeAsServer interface { + mustEmbedUnimplementedAsServer() +} + +func RegisterAsServer(s grpc.ServiceRegistrar, srv AsServer) { + s.RegisterService(&As_ServiceDesc, srv) +} + +func _As_GetLink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetApplicationLinkRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AsServer).GetLink(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.As/GetLink", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AsServer).GetLink(ctx, req.(*GetApplicationLinkRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _As_SetLink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetApplicationLinkRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AsServer).SetLink(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.As/SetLink", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AsServer).SetLink(ctx, req.(*SetApplicationLinkRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _As_DeleteLink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApplicationIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AsServer).DeleteLink(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.As/DeleteLink", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AsServer).DeleteLink(ctx, req.(*ApplicationIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _As_GetLinkStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApplicationIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AsServer).GetLinkStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.As/GetLinkStats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AsServer).GetLinkStats(ctx, req.(*ApplicationIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _As_GetConfiguration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAsConfigurationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AsServer).GetConfiguration(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.As/GetConfiguration", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AsServer).GetConfiguration(ctx, req.(*GetAsConfigurationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// As_ServiceDesc is the grpc.ServiceDesc for As service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var As_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.As", + HandlerType: (*AsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetLink", + Handler: _As_GetLink_Handler, + }, + { + MethodName: "SetLink", + Handler: _As_SetLink_Handler, + }, + { + MethodName: "DeleteLink", + Handler: _As_DeleteLink_Handler, + }, + { + MethodName: "GetLinkStats", + Handler: _As_GetLinkStats_Handler, + }, + { + MethodName: "GetConfiguration", + Handler: _As_GetConfiguration_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/applicationserver.proto", +} + +// NsAsClient is the client API for NsAs service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type NsAsClient interface { + // Handle Application uplink messages. + HandleUplink(ctx context.Context, in *NsAsHandleUplinkRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type nsAsClient struct { + cc grpc.ClientConnInterface +} + +func NewNsAsClient(cc grpc.ClientConnInterface) NsAsClient { + return &nsAsClient{cc} +} + +func (c *nsAsClient) HandleUplink(ctx context.Context, in *NsAsHandleUplinkRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsAs/HandleUplink", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// NsAsServer is the server API for NsAs service. +// All implementations must embed UnimplementedNsAsServer +// for forward compatibility +type NsAsServer interface { + // Handle Application uplink messages. + HandleUplink(context.Context, *NsAsHandleUplinkRequest) (*emptypb.Empty, error) + mustEmbedUnimplementedNsAsServer() +} + +// UnimplementedNsAsServer must be embedded to have forward compatible implementations. +type UnimplementedNsAsServer struct { +} + +func (UnimplementedNsAsServer) HandleUplink(context.Context, *NsAsHandleUplinkRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method HandleUplink not implemented") +} +func (UnimplementedNsAsServer) mustEmbedUnimplementedNsAsServer() {} + +// UnsafeNsAsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to NsAsServer will +// result in compilation errors. +type UnsafeNsAsServer interface { + mustEmbedUnimplementedNsAsServer() +} + +func RegisterNsAsServer(s grpc.ServiceRegistrar, srv NsAsServer) { + s.RegisterService(&NsAs_ServiceDesc, srv) +} + +func _NsAs_HandleUplink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(NsAsHandleUplinkRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NsAsServer).HandleUplink(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NsAs/HandleUplink", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NsAsServer).HandleUplink(ctx, req.(*NsAsHandleUplinkRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// NsAs_ServiceDesc is the grpc.ServiceDesc for NsAs service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var NsAs_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.NsAs", + HandlerType: (*NsAsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "HandleUplink", + Handler: _NsAs_HandleUplink_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/applicationserver.proto", +} + +// AppAsClient is the client API for AppAs service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type AppAsClient interface { + // Subscribe to upstream messages. + Subscribe(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (AppAs_SubscribeClient, error) + // Push downlink messages to the end of the downlink queue. + DownlinkQueuePush(ctx context.Context, in *DownlinkQueueRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Replace the entire downlink queue with the specified messages. + // This can also be used to empty the queue by specifying no messages. + DownlinkQueueReplace(ctx context.Context, in *DownlinkQueueRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // List the items currently in the downlink queue. + DownlinkQueueList(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*ApplicationDownlinks, error) + // Get connection information to connect an MQTT client. + GetMQTTConnectionInfo(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*MQTTConnectionInfo, error) + // Simulate an upstream message. This can be used to test integrations. + SimulateUplink(ctx context.Context, in *ApplicationUp, opts ...grpc.CallOption) (*emptypb.Empty, error) + EncodeDownlink(ctx context.Context, in *EncodeDownlinkRequest, opts ...grpc.CallOption) (*EncodeDownlinkResponse, error) + DecodeUplink(ctx context.Context, in *DecodeUplinkRequest, opts ...grpc.CallOption) (*DecodeUplinkResponse, error) + DecodeDownlink(ctx context.Context, in *DecodeDownlinkRequest, opts ...grpc.CallOption) (*DecodeDownlinkResponse, error) +} + +type appAsClient struct { + cc grpc.ClientConnInterface +} + +func NewAppAsClient(cc grpc.ClientConnInterface) AppAsClient { + return &appAsClient{cc} +} + +func (c *appAsClient) Subscribe(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (AppAs_SubscribeClient, error) { + stream, err := c.cc.NewStream(ctx, &AppAs_ServiceDesc.Streams[0], "/ttn.lorawan.v3.AppAs/Subscribe", opts...) + if err != nil { + return nil, err + } + x := &appAsSubscribeClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type AppAs_SubscribeClient interface { + Recv() (*ApplicationUp, error) + grpc.ClientStream +} + +type appAsSubscribeClient struct { + grpc.ClientStream +} + +func (x *appAsSubscribeClient) Recv() (*ApplicationUp, error) { + m := new(ApplicationUp) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *appAsClient) DownlinkQueuePush(ctx context.Context, in *DownlinkQueueRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppAs/DownlinkQueuePush", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *appAsClient) DownlinkQueueReplace(ctx context.Context, in *DownlinkQueueRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppAs/DownlinkQueueReplace", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *appAsClient) DownlinkQueueList(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*ApplicationDownlinks, error) { + out := new(ApplicationDownlinks) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppAs/DownlinkQueueList", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *appAsClient) GetMQTTConnectionInfo(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*MQTTConnectionInfo, error) { + out := new(MQTTConnectionInfo) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppAs/GetMQTTConnectionInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *appAsClient) SimulateUplink(ctx context.Context, in *ApplicationUp, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppAs/SimulateUplink", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *appAsClient) EncodeDownlink(ctx context.Context, in *EncodeDownlinkRequest, opts ...grpc.CallOption) (*EncodeDownlinkResponse, error) { + out := new(EncodeDownlinkResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppAs/EncodeDownlink", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *appAsClient) DecodeUplink(ctx context.Context, in *DecodeUplinkRequest, opts ...grpc.CallOption) (*DecodeUplinkResponse, error) { + out := new(DecodeUplinkResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppAs/DecodeUplink", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *appAsClient) DecodeDownlink(ctx context.Context, in *DecodeDownlinkRequest, opts ...grpc.CallOption) (*DecodeDownlinkResponse, error) { + out := new(DecodeDownlinkResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppAs/DecodeDownlink", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AppAsServer is the server API for AppAs service. +// All implementations must embed UnimplementedAppAsServer +// for forward compatibility +type AppAsServer interface { + // Subscribe to upstream messages. + Subscribe(*ApplicationIdentifiers, AppAs_SubscribeServer) error + // Push downlink messages to the end of the downlink queue. + DownlinkQueuePush(context.Context, *DownlinkQueueRequest) (*emptypb.Empty, error) + // Replace the entire downlink queue with the specified messages. + // This can also be used to empty the queue by specifying no messages. + DownlinkQueueReplace(context.Context, *DownlinkQueueRequest) (*emptypb.Empty, error) + // List the items currently in the downlink queue. + DownlinkQueueList(context.Context, *EndDeviceIdentifiers) (*ApplicationDownlinks, error) + // Get connection information to connect an MQTT client. + GetMQTTConnectionInfo(context.Context, *ApplicationIdentifiers) (*MQTTConnectionInfo, error) + // Simulate an upstream message. This can be used to test integrations. + SimulateUplink(context.Context, *ApplicationUp) (*emptypb.Empty, error) + EncodeDownlink(context.Context, *EncodeDownlinkRequest) (*EncodeDownlinkResponse, error) + DecodeUplink(context.Context, *DecodeUplinkRequest) (*DecodeUplinkResponse, error) + DecodeDownlink(context.Context, *DecodeDownlinkRequest) (*DecodeDownlinkResponse, error) + mustEmbedUnimplementedAppAsServer() +} + +// UnimplementedAppAsServer must be embedded to have forward compatible implementations. +type UnimplementedAppAsServer struct { +} + +func (UnimplementedAppAsServer) Subscribe(*ApplicationIdentifiers, AppAs_SubscribeServer) error { + return status.Errorf(codes.Unimplemented, "method Subscribe not implemented") +} +func (UnimplementedAppAsServer) DownlinkQueuePush(context.Context, *DownlinkQueueRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DownlinkQueuePush not implemented") +} +func (UnimplementedAppAsServer) DownlinkQueueReplace(context.Context, *DownlinkQueueRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DownlinkQueueReplace not implemented") +} +func (UnimplementedAppAsServer) DownlinkQueueList(context.Context, *EndDeviceIdentifiers) (*ApplicationDownlinks, error) { + return nil, status.Errorf(codes.Unimplemented, "method DownlinkQueueList not implemented") +} +func (UnimplementedAppAsServer) GetMQTTConnectionInfo(context.Context, *ApplicationIdentifiers) (*MQTTConnectionInfo, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetMQTTConnectionInfo not implemented") +} +func (UnimplementedAppAsServer) SimulateUplink(context.Context, *ApplicationUp) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SimulateUplink not implemented") +} +func (UnimplementedAppAsServer) EncodeDownlink(context.Context, *EncodeDownlinkRequest) (*EncodeDownlinkResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method EncodeDownlink not implemented") +} +func (UnimplementedAppAsServer) DecodeUplink(context.Context, *DecodeUplinkRequest) (*DecodeUplinkResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DecodeUplink not implemented") +} +func (UnimplementedAppAsServer) DecodeDownlink(context.Context, *DecodeDownlinkRequest) (*DecodeDownlinkResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DecodeDownlink not implemented") +} +func (UnimplementedAppAsServer) mustEmbedUnimplementedAppAsServer() {} + +// UnsafeAppAsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AppAsServer will +// result in compilation errors. +type UnsafeAppAsServer interface { + mustEmbedUnimplementedAppAsServer() +} + +func RegisterAppAsServer(s grpc.ServiceRegistrar, srv AppAsServer) { + s.RegisterService(&AppAs_ServiceDesc, srv) +} + +func _AppAs_Subscribe_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(ApplicationIdentifiers) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(AppAsServer).Subscribe(m, &appAsSubscribeServer{stream}) +} + +type AppAs_SubscribeServer interface { + Send(*ApplicationUp) error + grpc.ServerStream +} + +type appAsSubscribeServer struct { + grpc.ServerStream +} + +func (x *appAsSubscribeServer) Send(m *ApplicationUp) error { + return x.ServerStream.SendMsg(m) +} + +func _AppAs_DownlinkQueuePush_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DownlinkQueueRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AppAsServer).DownlinkQueuePush(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.AppAs/DownlinkQueuePush", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AppAsServer).DownlinkQueuePush(ctx, req.(*DownlinkQueueRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AppAs_DownlinkQueueReplace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DownlinkQueueRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AppAsServer).DownlinkQueueReplace(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.AppAs/DownlinkQueueReplace", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AppAsServer).DownlinkQueueReplace(ctx, req.(*DownlinkQueueRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AppAs_DownlinkQueueList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EndDeviceIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AppAsServer).DownlinkQueueList(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.AppAs/DownlinkQueueList", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AppAsServer).DownlinkQueueList(ctx, req.(*EndDeviceIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _AppAs_GetMQTTConnectionInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApplicationIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AppAsServer).GetMQTTConnectionInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.AppAs/GetMQTTConnectionInfo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AppAsServer).GetMQTTConnectionInfo(ctx, req.(*ApplicationIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _AppAs_SimulateUplink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApplicationUp) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AppAsServer).SimulateUplink(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.AppAs/SimulateUplink", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AppAsServer).SimulateUplink(ctx, req.(*ApplicationUp)) + } + return interceptor(ctx, in, info, handler) +} + +func _AppAs_EncodeDownlink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EncodeDownlinkRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AppAsServer).EncodeDownlink(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.AppAs/EncodeDownlink", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AppAsServer).EncodeDownlink(ctx, req.(*EncodeDownlinkRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AppAs_DecodeUplink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DecodeUplinkRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AppAsServer).DecodeUplink(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.AppAs/DecodeUplink", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AppAsServer).DecodeUplink(ctx, req.(*DecodeUplinkRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AppAs_DecodeDownlink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DecodeDownlinkRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AppAsServer).DecodeDownlink(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.AppAs/DecodeDownlink", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AppAsServer).DecodeDownlink(ctx, req.(*DecodeDownlinkRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// AppAs_ServiceDesc is the grpc.ServiceDesc for AppAs service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var AppAs_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.AppAs", + HandlerType: (*AppAsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "DownlinkQueuePush", + Handler: _AppAs_DownlinkQueuePush_Handler, + }, + { + MethodName: "DownlinkQueueReplace", + Handler: _AppAs_DownlinkQueueReplace_Handler, + }, + { + MethodName: "DownlinkQueueList", + Handler: _AppAs_DownlinkQueueList_Handler, + }, + { + MethodName: "GetMQTTConnectionInfo", + Handler: _AppAs_GetMQTTConnectionInfo_Handler, + }, + { + MethodName: "SimulateUplink", + Handler: _AppAs_SimulateUplink_Handler, + }, + { + MethodName: "EncodeDownlink", + Handler: _AppAs_EncodeDownlink_Handler, + }, + { + MethodName: "DecodeUplink", + Handler: _AppAs_DecodeUplink_Handler, + }, + { + MethodName: "DecodeDownlink", + Handler: _AppAs_DecodeDownlink_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "Subscribe", + Handler: _AppAs_Subscribe_Handler, + ServerStreams: true, + }, + }, + Metadata: "lorawan-stack/api/applicationserver.proto", +} + +// AsEndDeviceRegistryClient is the client API for AsEndDeviceRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type AsEndDeviceRegistryClient interface { + // Get returns the device that matches the given identifiers. + // If there are multiple matches, an error will be returned. + Get(ctx context.Context, in *GetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) + // Set creates or updates the device. + Set(ctx context.Context, in *SetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) + // Delete deletes the device that matches the given identifiers. + // If there are multiple matches, an error will be returned. + Delete(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type asEndDeviceRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewAsEndDeviceRegistryClient(cc grpc.ClientConnInterface) AsEndDeviceRegistryClient { + return &asEndDeviceRegistryClient{cc} +} + +func (c *asEndDeviceRegistryClient) Get(ctx context.Context, in *GetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { + out := new(EndDevice) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AsEndDeviceRegistry/Get", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *asEndDeviceRegistryClient) Set(ctx context.Context, in *SetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { + out := new(EndDevice) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AsEndDeviceRegistry/Set", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *asEndDeviceRegistryClient) Delete(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AsEndDeviceRegistry/Delete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AsEndDeviceRegistryServer is the server API for AsEndDeviceRegistry service. +// All implementations must embed UnimplementedAsEndDeviceRegistryServer +// for forward compatibility +type AsEndDeviceRegistryServer interface { + // Get returns the device that matches the given identifiers. + // If there are multiple matches, an error will be returned. + Get(context.Context, *GetEndDeviceRequest) (*EndDevice, error) + // Set creates or updates the device. + Set(context.Context, *SetEndDeviceRequest) (*EndDevice, error) + // Delete deletes the device that matches the given identifiers. + // If there are multiple matches, an error will be returned. + Delete(context.Context, *EndDeviceIdentifiers) (*emptypb.Empty, error) + mustEmbedUnimplementedAsEndDeviceRegistryServer() +} + +// UnimplementedAsEndDeviceRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedAsEndDeviceRegistryServer struct { +} + +func (UnimplementedAsEndDeviceRegistryServer) Get(context.Context, *GetEndDeviceRequest) (*EndDevice, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (UnimplementedAsEndDeviceRegistryServer) Set(context.Context, *SetEndDeviceRequest) (*EndDevice, error) { + return nil, status.Errorf(codes.Unimplemented, "method Set not implemented") +} +func (UnimplementedAsEndDeviceRegistryServer) Delete(context.Context, *EndDeviceIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedAsEndDeviceRegistryServer) mustEmbedUnimplementedAsEndDeviceRegistryServer() {} + +// UnsafeAsEndDeviceRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AsEndDeviceRegistryServer will +// result in compilation errors. +type UnsafeAsEndDeviceRegistryServer interface { + mustEmbedUnimplementedAsEndDeviceRegistryServer() +} + +func RegisterAsEndDeviceRegistryServer(s grpc.ServiceRegistrar, srv AsEndDeviceRegistryServer) { + s.RegisterService(&AsEndDeviceRegistry_ServiceDesc, srv) +} + +func _AsEndDeviceRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetEndDeviceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AsEndDeviceRegistryServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.AsEndDeviceRegistry/Get", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AsEndDeviceRegistryServer).Get(ctx, req.(*GetEndDeviceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AsEndDeviceRegistry_Set_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetEndDeviceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AsEndDeviceRegistryServer).Set(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.AsEndDeviceRegistry/Set", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AsEndDeviceRegistryServer).Set(ctx, req.(*SetEndDeviceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AsEndDeviceRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EndDeviceIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AsEndDeviceRegistryServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.AsEndDeviceRegistry/Delete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AsEndDeviceRegistryServer).Delete(ctx, req.(*EndDeviceIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// AsEndDeviceRegistry_ServiceDesc is the grpc.ServiceDesc for AsEndDeviceRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var AsEndDeviceRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.AsEndDeviceRegistry", + HandlerType: (*AsEndDeviceRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Get", + Handler: _AsEndDeviceRegistry_Get_Handler, + }, + { + MethodName: "Set", + Handler: _AsEndDeviceRegistry_Set_Handler, + }, + { + MethodName: "Delete", + Handler: _AsEndDeviceRegistry_Delete_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/applicationserver.proto", +} diff --git a/pkg/ttnpb/applicationserver_integrations_storage.pb.go b/pkg/ttnpb/applicationserver_integrations_storage.pb.go index 1c4bcf038f..1aad8cf7ad 100644 --- a/pkg/ttnpb/applicationserver_integrations_storage.pb.go +++ b/pkg/ttnpb/applicationserver_integrations_storage.pb.go @@ -1,36 +1,51 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2020 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/applicationserver_integrations_storage.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type GetStoredApplicationUpRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Query upstream messages from all end devices of an application. Cannot be used in conjunction with end_device_ids. ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` // Query upstream messages from a single end device. Cannot be used in conjunction with application_ids. @@ -38,120 +53,129 @@ type GetStoredApplicationUpRequest struct { // Query upstream messages of a specific type. If not set, then all upstream messages are returned. Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` // Limit number of results. - Limit *types.UInt32Value `protobuf:"bytes,4,opt,name=limit,proto3" json:"limit,omitempty"` + Limit *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=limit,proto3" json:"limit,omitempty"` // Query upstream messages after this timestamp only. Cannot be used in conjunction with last. - After *types.Timestamp `protobuf:"bytes,5,opt,name=after,proto3" json:"after,omitempty"` + After *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=after,proto3" json:"after,omitempty"` // Query upstream messages before this timestamp only. Cannot be used in conjunction with last. - Before *types.Timestamp `protobuf:"bytes,6,opt,name=before,proto3" json:"before,omitempty"` + Before *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=before,proto3" json:"before,omitempty"` // Query uplinks on a specific FPort only. - FPort *types.UInt32Value `protobuf:"bytes,7,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` + FPort *wrapperspb.UInt32Value `protobuf:"bytes,7,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` // Order results. Order string `protobuf:"bytes,8,opt,name=order,proto3" json:"order,omitempty"` // The names of the upstream message fields that should be returned. See the API reference // for allowed field names for each type of upstream message. - FieldMask *types.FieldMask `protobuf:"bytes,9,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,9,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` // Query upstream messages that have arrived in the last minutes or hours. Cannot be used in conjunction with after and before. - Last *types.Duration `protobuf:"bytes,10,opt,name=last,proto3" json:"last,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Last *durationpb.Duration `protobuf:"bytes,10,opt,name=last,proto3" json:"last,omitempty"` } -func (m *GetStoredApplicationUpRequest) Reset() { *m = GetStoredApplicationUpRequest{} } -func (m *GetStoredApplicationUpRequest) String() string { return proto.CompactTextString(m) } -func (*GetStoredApplicationUpRequest) ProtoMessage() {} -func (*GetStoredApplicationUpRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_6ff0e9f52f73d254, []int{0} -} -func (m *GetStoredApplicationUpRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetStoredApplicationUpRequest.Unmarshal(m, b) -} -func (m *GetStoredApplicationUpRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetStoredApplicationUpRequest.Marshal(b, m, deterministic) -} -func (m *GetStoredApplicationUpRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetStoredApplicationUpRequest.Merge(m, src) +func (x *GetStoredApplicationUpRequest) Reset() { + *x = GetStoredApplicationUpRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_integrations_storage_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetStoredApplicationUpRequest) XXX_Size() int { - return xxx_messageInfo_GetStoredApplicationUpRequest.Size(m) + +func (x *GetStoredApplicationUpRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetStoredApplicationUpRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetStoredApplicationUpRequest.DiscardUnknown(m) + +func (*GetStoredApplicationUpRequest) ProtoMessage() {} + +func (x *GetStoredApplicationUpRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_integrations_storage_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetStoredApplicationUpRequest proto.InternalMessageInfo +// Deprecated: Use GetStoredApplicationUpRequest.ProtoReflect.Descriptor instead. +func (*GetStoredApplicationUpRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_integrations_storage_proto_rawDescGZIP(), []int{0} +} -func (m *GetStoredApplicationUpRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *GetStoredApplicationUpRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *GetStoredApplicationUpRequest) GetEndDeviceIds() *EndDeviceIdentifiers { - if m != nil { - return m.EndDeviceIds +func (x *GetStoredApplicationUpRequest) GetEndDeviceIds() *EndDeviceIdentifiers { + if x != nil { + return x.EndDeviceIds } return nil } -func (m *GetStoredApplicationUpRequest) GetType() string { - if m != nil { - return m.Type +func (x *GetStoredApplicationUpRequest) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *GetStoredApplicationUpRequest) GetLimit() *types.UInt32Value { - if m != nil { - return m.Limit +func (x *GetStoredApplicationUpRequest) GetLimit() *wrapperspb.UInt32Value { + if x != nil { + return x.Limit } return nil } -func (m *GetStoredApplicationUpRequest) GetAfter() *types.Timestamp { - if m != nil { - return m.After +func (x *GetStoredApplicationUpRequest) GetAfter() *timestamppb.Timestamp { + if x != nil { + return x.After } return nil } -func (m *GetStoredApplicationUpRequest) GetBefore() *types.Timestamp { - if m != nil { - return m.Before +func (x *GetStoredApplicationUpRequest) GetBefore() *timestamppb.Timestamp { + if x != nil { + return x.Before } return nil } -func (m *GetStoredApplicationUpRequest) GetFPort() *types.UInt32Value { - if m != nil { - return m.FPort +func (x *GetStoredApplicationUpRequest) GetFPort() *wrapperspb.UInt32Value { + if x != nil { + return x.FPort } return nil } -func (m *GetStoredApplicationUpRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *GetStoredApplicationUpRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *GetStoredApplicationUpRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *GetStoredApplicationUpRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *GetStoredApplicationUpRequest) GetLast() *types.Duration { - if m != nil { - return m.Last +func (x *GetStoredApplicationUpRequest) GetLast() *durationpb.Duration { + if x != nil { + return x.Last } return nil } type GetStoredApplicationUpCountRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Count upstream messages from all end devices of an application. Cannot be used in conjunction with end_device_ids. ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` // Count upstream messages from a single end device. Cannot be used in conjunction with application_ids. @@ -159,354 +183,436 @@ type GetStoredApplicationUpCountRequest struct { // Count upstream messages of a specific type. If not set, then all upstream messages are returned. Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` // Count upstream messages after this timestamp only. Cannot be used in conjunction with last. - After *types.Timestamp `protobuf:"bytes,4,opt,name=after,proto3" json:"after,omitempty"` + After *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=after,proto3" json:"after,omitempty"` // Count upstream messages before this timestamp only. Cannot be used in conjunction with last. - Before *types.Timestamp `protobuf:"bytes,5,opt,name=before,proto3" json:"before,omitempty"` + Before *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=before,proto3" json:"before,omitempty"` // Count uplinks on a specific FPort only. - FPort *types.UInt32Value `protobuf:"bytes,6,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` + FPort *wrapperspb.UInt32Value `protobuf:"bytes,6,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` // Count upstream messages that have arrived in the last minutes or hours. Cannot be used in conjunction with after and before. - Last *types.Duration `protobuf:"bytes,7,opt,name=last,proto3" json:"last,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Last *durationpb.Duration `protobuf:"bytes,7,opt,name=last,proto3" json:"last,omitempty"` } -func (m *GetStoredApplicationUpCountRequest) Reset() { *m = GetStoredApplicationUpCountRequest{} } -func (m *GetStoredApplicationUpCountRequest) String() string { return proto.CompactTextString(m) } -func (*GetStoredApplicationUpCountRequest) ProtoMessage() {} -func (*GetStoredApplicationUpCountRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_6ff0e9f52f73d254, []int{1} -} -func (m *GetStoredApplicationUpCountRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetStoredApplicationUpCountRequest.Unmarshal(m, b) -} -func (m *GetStoredApplicationUpCountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetStoredApplicationUpCountRequest.Marshal(b, m, deterministic) -} -func (m *GetStoredApplicationUpCountRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetStoredApplicationUpCountRequest.Merge(m, src) +func (x *GetStoredApplicationUpCountRequest) Reset() { + *x = GetStoredApplicationUpCountRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_integrations_storage_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetStoredApplicationUpCountRequest) XXX_Size() int { - return xxx_messageInfo_GetStoredApplicationUpCountRequest.Size(m) + +func (x *GetStoredApplicationUpCountRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetStoredApplicationUpCountRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetStoredApplicationUpCountRequest.DiscardUnknown(m) + +func (*GetStoredApplicationUpCountRequest) ProtoMessage() {} + +func (x *GetStoredApplicationUpCountRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_integrations_storage_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetStoredApplicationUpCountRequest proto.InternalMessageInfo +// Deprecated: Use GetStoredApplicationUpCountRequest.ProtoReflect.Descriptor instead. +func (*GetStoredApplicationUpCountRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_integrations_storage_proto_rawDescGZIP(), []int{1} +} -func (m *GetStoredApplicationUpCountRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *GetStoredApplicationUpCountRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *GetStoredApplicationUpCountRequest) GetEndDeviceIds() *EndDeviceIdentifiers { - if m != nil { - return m.EndDeviceIds +func (x *GetStoredApplicationUpCountRequest) GetEndDeviceIds() *EndDeviceIdentifiers { + if x != nil { + return x.EndDeviceIds } return nil } -func (m *GetStoredApplicationUpCountRequest) GetType() string { - if m != nil { - return m.Type +func (x *GetStoredApplicationUpCountRequest) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *GetStoredApplicationUpCountRequest) GetAfter() *types.Timestamp { - if m != nil { - return m.After +func (x *GetStoredApplicationUpCountRequest) GetAfter() *timestamppb.Timestamp { + if x != nil { + return x.After } return nil } -func (m *GetStoredApplicationUpCountRequest) GetBefore() *types.Timestamp { - if m != nil { - return m.Before +func (x *GetStoredApplicationUpCountRequest) GetBefore() *timestamppb.Timestamp { + if x != nil { + return x.Before } return nil } -func (m *GetStoredApplicationUpCountRequest) GetFPort() *types.UInt32Value { - if m != nil { - return m.FPort +func (x *GetStoredApplicationUpCountRequest) GetFPort() *wrapperspb.UInt32Value { + if x != nil { + return x.FPort } return nil } -func (m *GetStoredApplicationUpCountRequest) GetLast() *types.Duration { - if m != nil { - return m.Last +func (x *GetStoredApplicationUpCountRequest) GetLast() *durationpb.Duration { + if x != nil { + return x.Last } return nil } type GetStoredApplicationUpCountResponse struct { - // Number of stored messages by end device ID. - Count map[string]uint32 `protobuf:"bytes,1,rep,name=count,proto3" json:"count,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetStoredApplicationUpCountResponse) Reset() { *m = GetStoredApplicationUpCountResponse{} } -func (m *GetStoredApplicationUpCountResponse) String() string { return proto.CompactTextString(m) } -func (*GetStoredApplicationUpCountResponse) ProtoMessage() {} -func (*GetStoredApplicationUpCountResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_6ff0e9f52f73d254, []int{2} -} -func (m *GetStoredApplicationUpCountResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetStoredApplicationUpCountResponse.Unmarshal(m, b) -} -func (m *GetStoredApplicationUpCountResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetStoredApplicationUpCountResponse.Marshal(b, m, deterministic) -} -func (m *GetStoredApplicationUpCountResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetStoredApplicationUpCountResponse.Merge(m, src) -} -func (m *GetStoredApplicationUpCountResponse) XXX_Size() int { - return xxx_messageInfo_GetStoredApplicationUpCountResponse.Size(m) -} -func (m *GetStoredApplicationUpCountResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetStoredApplicationUpCountResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetStoredApplicationUpCountResponse proto.InternalMessageInfo - -func (m *GetStoredApplicationUpCountResponse) GetCount() map[string]uint32 { - if m != nil { - return m.Count - } - return nil -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func init() { - proto.RegisterType((*GetStoredApplicationUpRequest)(nil), "ttn.lorawan.v3.GetStoredApplicationUpRequest") - golang_proto.RegisterType((*GetStoredApplicationUpRequest)(nil), "ttn.lorawan.v3.GetStoredApplicationUpRequest") - proto.RegisterType((*GetStoredApplicationUpCountRequest)(nil), "ttn.lorawan.v3.GetStoredApplicationUpCountRequest") - golang_proto.RegisterType((*GetStoredApplicationUpCountRequest)(nil), "ttn.lorawan.v3.GetStoredApplicationUpCountRequest") - proto.RegisterType((*GetStoredApplicationUpCountResponse)(nil), "ttn.lorawan.v3.GetStoredApplicationUpCountResponse") - golang_proto.RegisterType((*GetStoredApplicationUpCountResponse)(nil), "ttn.lorawan.v3.GetStoredApplicationUpCountResponse") - proto.RegisterMapType((map[string]uint32)(nil), "ttn.lorawan.v3.GetStoredApplicationUpCountResponse.CountEntry") - golang_proto.RegisterMapType((map[string]uint32)(nil), "ttn.lorawan.v3.GetStoredApplicationUpCountResponse.CountEntry") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/applicationserver_integrations_storage.proto", fileDescriptor_6ff0e9f52f73d254) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/applicationserver_integrations_storage.proto", fileDescriptor_6ff0e9f52f73d254) -} - -var fileDescriptor_6ff0e9f52f73d254 = []byte{ - // 919 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x56, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xee, 0x3a, 0xb6, 0x4b, 0x26, 0x69, 0x02, 0xa3, 0x0a, 0x2d, 0xa6, 0x69, 0x2d, 0x17, 0xa1, - 0x5c, 0xbc, 0x5b, 0xd9, 0x42, 0x0a, 0x1c, 0x2a, 0xd5, 0xb4, 0xa0, 0x80, 0x50, 0x61, 0xda, 0x70, - 0xc8, 0x65, 0x35, 0xde, 0x7d, 0xde, 0x0c, 0x5e, 0xcf, 0x4c, 0x67, 0xc6, 0x0e, 0x26, 0xca, 0x01, - 0x6e, 0x9c, 0xf9, 0x27, 0x90, 0x38, 0x70, 0xe2, 0x04, 0x02, 0x84, 0x38, 0x71, 0x03, 0x0e, 0xbd, - 0x71, 0x01, 0x89, 0xff, 0x21, 0x27, 0xb4, 0xb3, 0xeb, 0xdf, 0x49, 0xea, 0x46, 0x48, 0xd0, 0xdb, - 0xbc, 0xb7, 0xdf, 0xfb, 0xf6, 0xed, 0x7b, 0xdf, 0xa7, 0x1d, 0x74, 0x3b, 0x11, 0x8a, 0x1e, 0x52, - 0x5e, 0xd7, 0x86, 0x86, 0x5d, 0x9f, 0x4a, 0xe6, 0x53, 0x29, 0x13, 0x16, 0x52, 0xc3, 0x04, 0xd7, - 0xa0, 0x06, 0xa0, 0x02, 0xc6, 0x0d, 0xc4, 0x2a, 0xcb, 0x04, 0xda, 0x08, 0x45, 0x63, 0xf0, 0xa4, - 0x12, 0x46, 0xe0, 0x0d, 0x63, 0xb8, 0x97, 0x73, 0x78, 0x83, 0x66, 0xe5, 0x4e, 0xcc, 0xcc, 0x41, - 0xbf, 0xed, 0x85, 0xa2, 0xe7, 0x03, 0x1f, 0x88, 0xa1, 0x54, 0xe2, 0xe3, 0xa1, 0x6f, 0xc1, 0x61, - 0x3d, 0x06, 0x5e, 0x1f, 0xd0, 0x84, 0x45, 0xd4, 0x80, 0xbf, 0x70, 0xc8, 0x28, 0x2b, 0xf5, 0x29, - 0x8a, 0x58, 0xc4, 0x22, 0x2b, 0x6e, 0xf7, 0x3b, 0x36, 0xb2, 0x81, 0x3d, 0xe5, 0xf0, 0x6b, 0xb1, - 0x10, 0x71, 0x02, 0x59, 0xeb, 0x9c, 0x0b, 0x93, 0xf5, 0x99, 0x3f, 0xad, 0xe6, 0x4f, 0xc7, 0x1c, - 0x1d, 0x06, 0x49, 0x14, 0xf4, 0xa8, 0xee, 0xe6, 0x88, 0x1b, 0xf3, 0x08, 0xc3, 0x7a, 0xa0, 0x0d, - 0xed, 0xc9, 0x1c, 0x70, 0x7d, 0x1e, 0x10, 0xf5, 0xb3, 0x59, 0x9c, 0xf5, 0xfc, 0x50, 0x51, 0x29, - 0x41, 0x8d, 0x5a, 0xb8, 0xb9, 0x38, 0x62, 0x16, 0x01, 0x37, 0xac, 0xc3, 0x26, 0xa0, 0xea, 0x22, - 0xa8, 0x07, 0x5a, 0xd3, 0x18, 0x72, 0x44, 0xed, 0xf3, 0x32, 0xda, 0x7a, 0x1b, 0xcc, 0x03, 0x23, - 0x14, 0x44, 0x77, 0x26, 0x3b, 0xda, 0x93, 0x04, 0x1e, 0xf5, 0x41, 0x1b, 0x7c, 0x1f, 0x6d, 0x4e, - 0xed, 0x2e, 0x60, 0x91, 0x76, 0x9d, 0xaa, 0xb3, 0xbd, 0xd6, 0x78, 0xd5, 0x9b, 0xdd, 0x92, 0x37, - 0x55, 0xbe, 0x3b, 0x69, 0x85, 0x6c, 0xd0, 0xe9, 0xbc, 0xc6, 0xef, 0xa0, 0x0d, 0xe0, 0x51, 0x10, - 0xc1, 0x80, 0x85, 0x60, 0xf9, 0x0a, 0x96, 0xef, 0x95, 0x79, 0xbe, 0x7b, 0x3c, 0xba, 0x6b, 0x41, - 0xd3, 0x6c, 0xeb, 0x30, 0xc9, 0x6a, 0xfc, 0xd8, 0x41, 0x45, 0x33, 0x94, 0xe0, 0xae, 0x54, 0x9d, - 0xed, 0xd5, 0xd6, 0x4f, 0xce, 0x49, 0xeb, 0x7b, 0x47, 0x7d, 0xeb, 0x90, 0x4b, 0x64, 0xa3, 0x2f, - 0x13, 0xc6, 0xbb, 0x41, 0xfe, 0xc1, 0xe4, 0x85, 0x3c, 0xe6, 0x42, 0xf5, 0x68, 0xc2, 0x3e, 0x81, - 0x88, 0xac, 0x7d, 0x24, 0x18, 0x0f, 0x68, 0x18, 0x82, 0x34, 0x64, 0x3d, 0x12, 0x87, 0xdc, 0x22, - 0x68, 0xd8, 0x25, 0x57, 0xc6, 0x11, 0x9f, 0x0d, 0x35, 0x70, 0x43, 0x36, 0xc7, 0x61, 0x87, 0xb2, - 0x04, 0xa2, 0xa9, 0xc4, 0xa3, 0x3e, 0xf4, 0x21, 0x22, 0x95, 0xd9, 0x44, 0xc0, 0xf8, 0x48, 0x8f, - 0x11, 0xd9, 0x4c, 0x44, 0x3e, 0x4c, 0x2d, 0x92, 0x01, 0x44, 0x64, 0x3d, 0x75, 0x44, 0x3a, 0x8c, - 0x88, 0x1a, 0x4a, 0xec, 0x07, 0xe1, 0x06, 0x2a, 0x25, 0xac, 0xc7, 0x8c, 0x5b, 0xb4, 0xc3, 0xb9, - 0xe6, 0x65, 0x7a, 0xf0, 0x46, 0x7a, 0xf0, 0xf6, 0x76, 0xb9, 0x69, 0x36, 0x3e, 0xa4, 0x49, 0x1f, - 0x48, 0x06, 0xc5, 0xb7, 0x50, 0x89, 0x76, 0x0c, 0x28, 0xb7, 0x64, 0x6b, 0x2a, 0x0b, 0x35, 0x0f, - 0x47, 0x22, 0x24, 0x19, 0x10, 0x37, 0x50, 0xb9, 0x0d, 0x1d, 0xa1, 0xc0, 0x2d, 0x3f, 0xb1, 0x24, - 0x47, 0xe2, 0x26, 0x2a, 0x77, 0x02, 0x29, 0x94, 0x71, 0x2f, 0x2f, 0xd3, 0x5a, 0xe7, 0x7d, 0xa1, - 0x0c, 0xde, 0x41, 0x25, 0xa1, 0x22, 0x50, 0xee, 0x73, 0x76, 0x51, 0xb5, 0x93, 0xd6, 0x0d, 0xb5, - 0x45, 0x2e, 0x91, 0xf5, 0xba, 0x82, 0x10, 0xd8, 0x00, 0xa2, 0x80, 0x1a, 0xb2, 0x36, 0x1d, 0x64, - 0x05, 0xf8, 0x75, 0x84, 0x26, 0xee, 0x72, 0x57, 0xcf, 0x68, 0xf3, 0xad, 0x14, 0xf2, 0x1e, 0xd5, - 0x5d, 0xb2, 0xda, 0x19, 0x1d, 0x71, 0x1d, 0x15, 0x13, 0xaa, 0x8d, 0x8b, 0x6c, 0xd1, 0x4b, 0x0b, - 0x45, 0x77, 0x73, 0xcb, 0x11, 0x0b, 0xab, 0xfd, 0x56, 0x44, 0xb5, 0xd3, 0xbd, 0xf0, 0xa6, 0xe8, - 0x73, 0xf3, 0x4c, 0x18, 0xe2, 0xe7, 0x59, 0x43, 0x7c, 0xed, 0x9c, 0xb4, 0xbe, 0x72, 0xd4, 0x97, - 0xa7, 0x19, 0xe2, 0xff, 0xac, 0xfe, 0xb1, 0x92, 0x8b, 0x4f, 0xaf, 0xe4, 0xd2, 0x05, 0x94, 0x5c, - 0x5e, 0x5e, 0xc9, 0x23, 0x51, 0x5d, 0x5e, 0x4e, 0x54, 0xdf, 0x38, 0xe8, 0xe6, 0xb9, 0xa2, 0xd2, - 0x32, 0xfd, 0x23, 0xe2, 0x87, 0xa8, 0x14, 0xa6, 0x09, 0xd7, 0xa9, 0xae, 0x6c, 0xaf, 0x35, 0x6e, - 0xcf, 0xef, 0x7e, 0x09, 0x0e, 0xcf, 0x46, 0xf7, 0xb8, 0x51, 0x43, 0x92, 0x91, 0x55, 0x76, 0x10, - 0x9a, 0x24, 0xf1, 0xf3, 0x68, 0xa5, 0x0b, 0x43, 0xab, 0xd6, 0x55, 0x92, 0x1e, 0xf1, 0x55, 0x54, - 0x1a, 0xa4, 0x1f, 0x67, 0x15, 0x77, 0x85, 0x64, 0xc1, 0x1b, 0x85, 0x1d, 0xa7, 0xf1, 0x43, 0x09, - 0x5d, 0x9d, 0x79, 0xd5, 0x83, 0xec, 0x0f, 0x8d, 0xbf, 0x2b, 0xa0, 0x17, 0x4f, 0x6f, 0x06, 0xd7, - 0x97, 0x6b, 0x3a, 0x37, 0x52, 0x65, 0xeb, 0x1c, 0xbf, 0xec, 0xc9, 0xda, 0xaf, 0xce, 0x67, 0xbf, - 0xff, 0xf5, 0x45, 0xe1, 0x17, 0x07, 0x1f, 0xf9, 0x54, 0xcf, 0x5c, 0x20, 0xfc, 0xa3, 0x59, 0xc3, - 0x78, 0x73, 0x86, 0x9c, 0x8b, 0x8f, 0xfd, 0x0c, 0xba, 0x58, 0x37, 0x3e, 0x1e, 0xfb, 0x92, 0x86, - 0xdd, 0xf4, 0xc7, 0xe8, 0xe7, 0x57, 0x11, 0xff, 0x28, 0x55, 0xe2, 0xf1, 0xfe, 0xbb, 0x78, 0x77, - 0xf1, 0xf5, 0x4f, 0x7a, 0xdf, 0x19, 0x64, 0xb7, 0x1c, 0xfc, 0x77, 0x01, 0xbd, 0x7c, 0xce, 0x2e, - 0x71, 0xe3, 0xa9, 0x16, 0x9f, 0x0d, 0xb2, 0x79, 0x01, 0xb1, 0xd4, 0xfe, 0xc8, 0xc6, 0xfb, 0xd8, - 0xc1, 0x9f, 0x3a, 0xff, 0xe1, 0x7c, 0x7d, 0x2b, 0xd4, 0xfd, 0x0f, 0xf0, 0xfd, 0x7f, 0x6d, 0xca, - 0x19, 0x65, 0xeb, 0xb5, 0x1f, 0xff, 0xbc, 0xee, 0xec, 0xfb, 0xb1, 0xf0, 0xcc, 0x01, 0x98, 0x03, - 0xc6, 0x63, 0xed, 0x71, 0x30, 0x87, 0x42, 0x75, 0xfd, 0xd9, 0x7b, 0xd1, 0xa0, 0xe9, 0xcb, 0x6e, - 0xec, 0x1b, 0xc3, 0x65, 0xbb, 0x5d, 0xb6, 0x4e, 0x6e, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0x5b, - 0x07, 0x69, 0x0e, 0xc4, 0x0a, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// ApplicationUpStorageClient is the client API for ApplicationUpStorage service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ApplicationUpStorageClient interface { - // Returns a stream of application messages that have been stored in the database. - GetStoredApplicationUp(ctx context.Context, in *GetStoredApplicationUpRequest, opts ...grpc.CallOption) (ApplicationUpStorage_GetStoredApplicationUpClient, error) - // Returns how many application messages have been stored in the database for an application or end device. - GetStoredApplicationUpCount(ctx context.Context, in *GetStoredApplicationUpCountRequest, opts ...grpc.CallOption) (*GetStoredApplicationUpCountResponse, error) -} - -type applicationUpStorageClient struct { - cc *grpc.ClientConn -} - -func NewApplicationUpStorageClient(cc *grpc.ClientConn) ApplicationUpStorageClient { - return &applicationUpStorageClient{cc} + // Number of stored messages by end device ID. + Count map[string]uint32 `protobuf:"bytes,1,rep,name=count,proto3" json:"count,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` } -func (c *applicationUpStorageClient) GetStoredApplicationUp(ctx context.Context, in *GetStoredApplicationUpRequest, opts ...grpc.CallOption) (ApplicationUpStorage_GetStoredApplicationUpClient, error) { - stream, err := c.cc.NewStream(ctx, &_ApplicationUpStorage_serviceDesc.Streams[0], "/ttn.lorawan.v3.ApplicationUpStorage/GetStoredApplicationUp", opts...) - if err != nil { - return nil, err - } - x := &applicationUpStorageGetStoredApplicationUpClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err +func (x *GetStoredApplicationUpCountResponse) Reset() { + *x = GetStoredApplicationUpCountResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_integrations_storage_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil } -type ApplicationUpStorage_GetStoredApplicationUpClient interface { - Recv() (*ApplicationUp, error) - grpc.ClientStream +func (x *GetStoredApplicationUpCountResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -type applicationUpStorageGetStoredApplicationUpClient struct { - grpc.ClientStream -} +func (*GetStoredApplicationUpCountResponse) ProtoMessage() {} -func (x *applicationUpStorageGetStoredApplicationUpClient) Recv() (*ApplicationUp, error) { - m := new(ApplicationUp) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err +func (x *GetStoredApplicationUpCountResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_integrations_storage_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return m, nil -} - -func (c *applicationUpStorageClient) GetStoredApplicationUpCount(ctx context.Context, in *GetStoredApplicationUpCountRequest, opts ...grpc.CallOption) (*GetStoredApplicationUpCountResponse, error) { - out := new(GetStoredApplicationUpCountResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationUpStorage/GetStoredApplicationUpCount", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ApplicationUpStorageServer is the server API for ApplicationUpStorage service. -type ApplicationUpStorageServer interface { - // Returns a stream of application messages that have been stored in the database. - GetStoredApplicationUp(*GetStoredApplicationUpRequest, ApplicationUpStorage_GetStoredApplicationUpServer) error - // Returns how many application messages have been stored in the database for an application or end device. - GetStoredApplicationUpCount(context.Context, *GetStoredApplicationUpCountRequest) (*GetStoredApplicationUpCountResponse, error) -} - -// UnimplementedApplicationUpStorageServer can be embedded to have forward compatible implementations. -type UnimplementedApplicationUpStorageServer struct { -} - -func (*UnimplementedApplicationUpStorageServer) GetStoredApplicationUp(req *GetStoredApplicationUpRequest, srv ApplicationUpStorage_GetStoredApplicationUpServer) error { - return status.Errorf(codes.Unimplemented, "method GetStoredApplicationUp not implemented") -} -func (*UnimplementedApplicationUpStorageServer) GetStoredApplicationUpCount(ctx context.Context, req *GetStoredApplicationUpCountRequest) (*GetStoredApplicationUpCountResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetStoredApplicationUpCount not implemented") + return mi.MessageOf(x) } -func RegisterApplicationUpStorageServer(s *grpc.Server, srv ApplicationUpStorageServer) { - s.RegisterService(&_ApplicationUpStorage_serviceDesc, srv) +// Deprecated: Use GetStoredApplicationUpCountResponse.ProtoReflect.Descriptor instead. +func (*GetStoredApplicationUpCountResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_integrations_storage_proto_rawDescGZIP(), []int{2} } -func _ApplicationUpStorage_GetStoredApplicationUp_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(GetStoredApplicationUpRequest) - if err := stream.RecvMsg(m); err != nil { - return err +func (x *GetStoredApplicationUpCountResponse) GetCount() map[string]uint32 { + if x != nil { + return x.Count } - return srv.(ApplicationUpStorageServer).GetStoredApplicationUp(m, &applicationUpStorageGetStoredApplicationUpServer{stream}) -} - -type ApplicationUpStorage_GetStoredApplicationUpServer interface { - Send(*ApplicationUp) error - grpc.ServerStream -} - -type applicationUpStorageGetStoredApplicationUpServer struct { - grpc.ServerStream + return nil } -func (x *applicationUpStorageGetStoredApplicationUpServer) Send(m *ApplicationUp) error { - return x.ServerStream.SendMsg(m) -} +var File_lorawan_stack_api_applicationserver_integrations_storage_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_applicationserver_integrations_storage_proto_rawDesc = []byte{ + 0x0a, 0x3e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, + 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, + 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x89, 0x06, 0x0a, 0x1d, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x0f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, + 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0c, 0x65, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0xd7, 0x01, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0xc2, 0x01, 0xfa, 0x42, 0xbe, 0x01, 0x72, + 0xbb, 0x01, 0x52, 0x00, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x11, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x6f, 0x72, + 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x52, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, + 0x63, 0x65, 0x70, 0x74, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, + 0x63, 0x6b, 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x63, + 0x6b, 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, + 0x52, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x52, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, + 0x65, 0x64, 0x52, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, + 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x0f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x52, + 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, + 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x33, 0x0a, + 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x66, 0x50, 0x6f, + 0x72, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x22, 0xfa, 0x42, 0x1f, 0x72, 0x1d, 0x52, 0x00, 0x52, 0x0c, 0x2d, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x2d, 0x0a, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x22, 0xd2, 0x04, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x53, 0x74, + 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, + 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, + 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x4a, + 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0c, 0x65, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0xc4, 0x01, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0xaf, 0x01, 0xfa, 0x42, 0xab, 0x01, + 0x72, 0xa8, 0x01, 0x52, 0x00, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x6b, + 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x63, 0x6b, 0x52, + 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0f, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, + 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, + 0x52, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, + 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x0f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x52, 0x0c, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, + 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2d, 0x0a, 0x04, + 0x6c, 0x61, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x22, 0xb5, 0x01, 0x0a, 0x23, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x38, 0x0a, 0x0a, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x32, 0xbf, 0x05, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0xbc, 0x02, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x22, 0xd1, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xca, 0x01, 0x12, + 0x7b, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x5a, 0x4b, 0x12, 0x49, + 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x30, 0x01, 0x12, 0xe7, 0x02, 0x0a, 0x1b, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xde, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd7, 0x01, 0x12, 0x81, + 0x01, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5a, 0x51, 0x12, 0x4f, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, + 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_applicationserver_integrations_storage_proto_rawDescOnce sync.Once + file_lorawan_stack_api_applicationserver_integrations_storage_proto_rawDescData = file_lorawan_stack_api_applicationserver_integrations_storage_proto_rawDesc +) -func _ApplicationUpStorage_GetStoredApplicationUpCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetStoredApplicationUpCountRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationUpStorageServer).GetStoredApplicationUpCount(ctx, in) +func file_lorawan_stack_api_applicationserver_integrations_storage_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_applicationserver_integrations_storage_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_applicationserver_integrations_storage_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_applicationserver_integrations_storage_proto_rawDescData) + }) + return file_lorawan_stack_api_applicationserver_integrations_storage_proto_rawDescData +} + +var file_lorawan_stack_api_applicationserver_integrations_storage_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_lorawan_stack_api_applicationserver_integrations_storage_proto_goTypes = []interface{}{ + (*GetStoredApplicationUpRequest)(nil), // 0: ttn.lorawan.v3.GetStoredApplicationUpRequest + (*GetStoredApplicationUpCountRequest)(nil), // 1: ttn.lorawan.v3.GetStoredApplicationUpCountRequest + (*GetStoredApplicationUpCountResponse)(nil), // 2: ttn.lorawan.v3.GetStoredApplicationUpCountResponse + nil, // 3: ttn.lorawan.v3.GetStoredApplicationUpCountResponse.CountEntry + (*ApplicationIdentifiers)(nil), // 4: ttn.lorawan.v3.ApplicationIdentifiers + (*EndDeviceIdentifiers)(nil), // 5: ttn.lorawan.v3.EndDeviceIdentifiers + (*wrapperspb.UInt32Value)(nil), // 6: google.protobuf.UInt32Value + (*timestamppb.Timestamp)(nil), // 7: google.protobuf.Timestamp + (*fieldmaskpb.FieldMask)(nil), // 8: google.protobuf.FieldMask + (*durationpb.Duration)(nil), // 9: google.protobuf.Duration + (*ApplicationUp)(nil), // 10: ttn.lorawan.v3.ApplicationUp +} +var file_lorawan_stack_api_applicationserver_integrations_storage_proto_depIdxs = []int32{ + 4, // 0: ttn.lorawan.v3.GetStoredApplicationUpRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 5, // 1: ttn.lorawan.v3.GetStoredApplicationUpRequest.end_device_ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 6, // 2: ttn.lorawan.v3.GetStoredApplicationUpRequest.limit:type_name -> google.protobuf.UInt32Value + 7, // 3: ttn.lorawan.v3.GetStoredApplicationUpRequest.after:type_name -> google.protobuf.Timestamp + 7, // 4: ttn.lorawan.v3.GetStoredApplicationUpRequest.before:type_name -> google.protobuf.Timestamp + 6, // 5: ttn.lorawan.v3.GetStoredApplicationUpRequest.f_port:type_name -> google.protobuf.UInt32Value + 8, // 6: ttn.lorawan.v3.GetStoredApplicationUpRequest.field_mask:type_name -> google.protobuf.FieldMask + 9, // 7: ttn.lorawan.v3.GetStoredApplicationUpRequest.last:type_name -> google.protobuf.Duration + 4, // 8: ttn.lorawan.v3.GetStoredApplicationUpCountRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 5, // 9: ttn.lorawan.v3.GetStoredApplicationUpCountRequest.end_device_ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 7, // 10: ttn.lorawan.v3.GetStoredApplicationUpCountRequest.after:type_name -> google.protobuf.Timestamp + 7, // 11: ttn.lorawan.v3.GetStoredApplicationUpCountRequest.before:type_name -> google.protobuf.Timestamp + 6, // 12: ttn.lorawan.v3.GetStoredApplicationUpCountRequest.f_port:type_name -> google.protobuf.UInt32Value + 9, // 13: ttn.lorawan.v3.GetStoredApplicationUpCountRequest.last:type_name -> google.protobuf.Duration + 3, // 14: ttn.lorawan.v3.GetStoredApplicationUpCountResponse.count:type_name -> ttn.lorawan.v3.GetStoredApplicationUpCountResponse.CountEntry + 0, // 15: ttn.lorawan.v3.ApplicationUpStorage.GetStoredApplicationUp:input_type -> ttn.lorawan.v3.GetStoredApplicationUpRequest + 1, // 16: ttn.lorawan.v3.ApplicationUpStorage.GetStoredApplicationUpCount:input_type -> ttn.lorawan.v3.GetStoredApplicationUpCountRequest + 10, // 17: ttn.lorawan.v3.ApplicationUpStorage.GetStoredApplicationUp:output_type -> ttn.lorawan.v3.ApplicationUp + 2, // 18: ttn.lorawan.v3.ApplicationUpStorage.GetStoredApplicationUpCount:output_type -> ttn.lorawan.v3.GetStoredApplicationUpCountResponse + 17, // [17:19] is the sub-list for method output_type + 15, // [15:17] is the sub-list for method input_type + 15, // [15:15] is the sub-list for extension type_name + 15, // [15:15] is the sub-list for extension extendee + 0, // [0:15] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_applicationserver_integrations_storage_proto_init() } +func file_lorawan_stack_api_applicationserver_integrations_storage_proto_init() { + if File_lorawan_stack_api_applicationserver_integrations_storage_proto != nil { + return } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationUpStorage/GetStoredApplicationUpCount", + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_messages_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_applicationserver_integrations_storage_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetStoredApplicationUpRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_integrations_storage_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetStoredApplicationUpCountRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_integrations_storage_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetStoredApplicationUpCountResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationUpStorageServer).GetStoredApplicationUpCount(ctx, req.(*GetStoredApplicationUpCountRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ApplicationUpStorage_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.ApplicationUpStorage", - HandlerType: (*ApplicationUpStorageServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetStoredApplicationUpCount", - Handler: _ApplicationUpStorage_GetStoredApplicationUpCount_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "GetStoredApplicationUp", - Handler: _ApplicationUpStorage_GetStoredApplicationUp_Handler, - ServerStreams: true, + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_applicationserver_integrations_storage_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 1, }, - }, - Metadata: "lorawan-stack/api/applicationserver_integrations_storage.proto", + GoTypes: file_lorawan_stack_api_applicationserver_integrations_storage_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_applicationserver_integrations_storage_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_applicationserver_integrations_storage_proto_msgTypes, + }.Build() + File_lorawan_stack_api_applicationserver_integrations_storage_proto = out.File + file_lorawan_stack_api_applicationserver_integrations_storage_proto_rawDesc = nil + file_lorawan_stack_api_applicationserver_integrations_storage_proto_goTypes = nil + file_lorawan_stack_api_applicationserver_integrations_storage_proto_depIdxs = nil } diff --git a/pkg/ttnpb/applicationserver_integrations_storage.pb.gw.go b/pkg/ttnpb/applicationserver_integrations_storage.pb.gw.go index c3e19353c3..9842f49f72 100644 --- a/pkg/ttnpb/applicationserver_integrations_storage.pb.gw.go +++ b/pkg/ttnpb/applicationserver_integrations_storage.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join var ( @@ -54,7 +52,6 @@ func request_ApplicationUpStorage_GetStoredApplicationUp_0(ctx context.Context, } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -65,7 +62,6 @@ func request_ApplicationUpStorage_GetStoredApplicationUp_0(ctx context.Context, } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -76,7 +72,6 @@ func request_ApplicationUpStorage_GetStoredApplicationUp_0(ctx context.Context, } protoReq.Type, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "type", err) } @@ -122,7 +117,6 @@ func request_ApplicationUpStorage_GetStoredApplicationUp_1(ctx context.Context, } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -133,7 +127,6 @@ func request_ApplicationUpStorage_GetStoredApplicationUp_1(ctx context.Context, } protoReq.Type, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "type", err) } @@ -179,7 +172,6 @@ func request_ApplicationUpStorage_GetStoredApplicationUpCount_0(ctx context.Cont } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -190,7 +182,6 @@ func request_ApplicationUpStorage_GetStoredApplicationUpCount_0(ctx context.Cont } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -201,7 +192,6 @@ func request_ApplicationUpStorage_GetStoredApplicationUpCount_0(ctx context.Cont } protoReq.Type, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "type", err) } @@ -235,7 +225,6 @@ func local_request_ApplicationUpStorage_GetStoredApplicationUpCount_0(ctx contex } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -246,7 +235,6 @@ func local_request_ApplicationUpStorage_GetStoredApplicationUpCount_0(ctx contex } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -257,7 +245,6 @@ func local_request_ApplicationUpStorage_GetStoredApplicationUpCount_0(ctx contex } protoReq.Type, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "type", err) } @@ -295,7 +282,6 @@ func request_ApplicationUpStorage_GetStoredApplicationUpCount_1(ctx context.Cont } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -306,7 +292,6 @@ func request_ApplicationUpStorage_GetStoredApplicationUpCount_1(ctx context.Cont } protoReq.Type, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "type", err) } @@ -340,7 +325,6 @@ func local_request_ApplicationUpStorage_GetStoredApplicationUpCount_1(ctx contex } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -351,7 +335,6 @@ func local_request_ApplicationUpStorage_GetStoredApplicationUpCount_1(ctx contex } protoReq.Type, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "type", err) } @@ -394,20 +377,22 @@ func RegisterApplicationUpStorageHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationUpStorage/GetStoredApplicationUpCount", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/packages/storage/{type}/count")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationUpStorage_GetStoredApplicationUpCount_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationUpStorage_GetStoredApplicationUpCount_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationUpStorage_GetStoredApplicationUpCount_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationUpStorage_GetStoredApplicationUpCount_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -417,20 +402,22 @@ func RegisterApplicationUpStorageHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationUpStorage/GetStoredApplicationUpCount", runtime.WithHTTPPathPattern("/as/applications/{application_ids.application_id}/packages/storage/{type}/count")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationUpStorage_GetStoredApplicationUpCount_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationUpStorage_GetStoredApplicationUpCount_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationUpStorage_GetStoredApplicationUpCount_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationUpStorage_GetStoredApplicationUpCount_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -479,19 +466,21 @@ func RegisterApplicationUpStorageHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationUpStorage/GetStoredApplicationUp", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/packages/storage/{type}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationUpStorage_GetStoredApplicationUp_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationUpStorage_GetStoredApplicationUp_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationUpStorage_GetStoredApplicationUp_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) + forward_ApplicationUpStorage_GetStoredApplicationUp_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) }) @@ -499,19 +488,21 @@ func RegisterApplicationUpStorageHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationUpStorage/GetStoredApplicationUp", runtime.WithHTTPPathPattern("/as/applications/{application_ids.application_id}/packages/storage/{type}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationUpStorage_GetStoredApplicationUp_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationUpStorage_GetStoredApplicationUp_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationUpStorage_GetStoredApplicationUp_1(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) + forward_ApplicationUpStorage_GetStoredApplicationUp_1(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) }) @@ -519,19 +510,21 @@ func RegisterApplicationUpStorageHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationUpStorage/GetStoredApplicationUpCount", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/packages/storage/{type}/count")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationUpStorage_GetStoredApplicationUpCount_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationUpStorage_GetStoredApplicationUpCount_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationUpStorage_GetStoredApplicationUpCount_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationUpStorage_GetStoredApplicationUpCount_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -539,19 +532,21 @@ func RegisterApplicationUpStorageHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationUpStorage/GetStoredApplicationUpCount", runtime.WithHTTPPathPattern("/as/applications/{application_ids.application_id}/packages/storage/{type}/count")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationUpStorage_GetStoredApplicationUpCount_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationUpStorage_GetStoredApplicationUpCount_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationUpStorage_GetStoredApplicationUpCount_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationUpStorage_GetStoredApplicationUpCount_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -559,13 +554,13 @@ func RegisterApplicationUpStorageHandlerClient(ctx context.Context, mux *runtime } var ( - pattern_ApplicationUpStorage_GetStoredApplicationUp_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "packages", "storage", "type"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationUpStorage_GetStoredApplicationUp_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "packages", "storage", "type"}, "")) - pattern_ApplicationUpStorage_GetStoredApplicationUp_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"as", "applications", "application_ids.application_id", "packages", "storage", "type"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationUpStorage_GetStoredApplicationUp_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"as", "applications", "application_ids.application_id", "packages", "storage", "type"}, "")) - pattern_ApplicationUpStorage_GetStoredApplicationUpCount_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6, 1, 0, 4, 1, 5, 7, 2, 8}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "packages", "storage", "type", "count"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationUpStorage_GetStoredApplicationUpCount_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6, 1, 0, 4, 1, 5, 7, 2, 8}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "packages", "storage", "type", "count"}, "")) - pattern_ApplicationUpStorage_GetStoredApplicationUpCount_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"as", "applications", "application_ids.application_id", "packages", "storage", "type", "count"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationUpStorage_GetStoredApplicationUpCount_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"as", "applications", "application_ids.application_id", "packages", "storage", "type", "count"}, "")) ) var ( diff --git a/pkg/ttnpb/applicationserver_integrations_storage.pb.validate.go b/pkg/ttnpb/applicationserver_integrations_storage.pb.validate.go index 53ec77bf32..907996ef17 100644 --- a/pkg/ttnpb/applicationserver_integrations_storage.pb.validate.go +++ b/pkg/ttnpb/applicationserver_integrations_storage.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _applicationserver_integrations_storage_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on GetStoredApplicationUpRequest with // the rules defined in the proto definition for this message. If any rules // are violated, an error is returned. diff --git a/pkg/ttnpb/applicationserver_integrations_storage_grpc.pb.go b/pkg/ttnpb/applicationserver_integrations_storage_grpc.pb.go new file mode 100644 index 0000000000..fb372c6c71 --- /dev/null +++ b/pkg/ttnpb/applicationserver_integrations_storage_grpc.pb.go @@ -0,0 +1,173 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/applicationserver_integrations_storage.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// ApplicationUpStorageClient is the client API for ApplicationUpStorage service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ApplicationUpStorageClient interface { + // Returns a stream of application messages that have been stored in the database. + GetStoredApplicationUp(ctx context.Context, in *GetStoredApplicationUpRequest, opts ...grpc.CallOption) (ApplicationUpStorage_GetStoredApplicationUpClient, error) + // Returns how many application messages have been stored in the database for an application or end device. + GetStoredApplicationUpCount(ctx context.Context, in *GetStoredApplicationUpCountRequest, opts ...grpc.CallOption) (*GetStoredApplicationUpCountResponse, error) +} + +type applicationUpStorageClient struct { + cc grpc.ClientConnInterface +} + +func NewApplicationUpStorageClient(cc grpc.ClientConnInterface) ApplicationUpStorageClient { + return &applicationUpStorageClient{cc} +} + +func (c *applicationUpStorageClient) GetStoredApplicationUp(ctx context.Context, in *GetStoredApplicationUpRequest, opts ...grpc.CallOption) (ApplicationUpStorage_GetStoredApplicationUpClient, error) { + stream, err := c.cc.NewStream(ctx, &ApplicationUpStorage_ServiceDesc.Streams[0], "/ttn.lorawan.v3.ApplicationUpStorage/GetStoredApplicationUp", opts...) + if err != nil { + return nil, err + } + x := &applicationUpStorageGetStoredApplicationUpClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type ApplicationUpStorage_GetStoredApplicationUpClient interface { + Recv() (*ApplicationUp, error) + grpc.ClientStream +} + +type applicationUpStorageGetStoredApplicationUpClient struct { + grpc.ClientStream +} + +func (x *applicationUpStorageGetStoredApplicationUpClient) Recv() (*ApplicationUp, error) { + m := new(ApplicationUp) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *applicationUpStorageClient) GetStoredApplicationUpCount(ctx context.Context, in *GetStoredApplicationUpCountRequest, opts ...grpc.CallOption) (*GetStoredApplicationUpCountResponse, error) { + out := new(GetStoredApplicationUpCountResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationUpStorage/GetStoredApplicationUpCount", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ApplicationUpStorageServer is the server API for ApplicationUpStorage service. +// All implementations must embed UnimplementedApplicationUpStorageServer +// for forward compatibility +type ApplicationUpStorageServer interface { + // Returns a stream of application messages that have been stored in the database. + GetStoredApplicationUp(*GetStoredApplicationUpRequest, ApplicationUpStorage_GetStoredApplicationUpServer) error + // Returns how many application messages have been stored in the database for an application or end device. + GetStoredApplicationUpCount(context.Context, *GetStoredApplicationUpCountRequest) (*GetStoredApplicationUpCountResponse, error) + mustEmbedUnimplementedApplicationUpStorageServer() +} + +// UnimplementedApplicationUpStorageServer must be embedded to have forward compatible implementations. +type UnimplementedApplicationUpStorageServer struct { +} + +func (UnimplementedApplicationUpStorageServer) GetStoredApplicationUp(*GetStoredApplicationUpRequest, ApplicationUpStorage_GetStoredApplicationUpServer) error { + return status.Errorf(codes.Unimplemented, "method GetStoredApplicationUp not implemented") +} +func (UnimplementedApplicationUpStorageServer) GetStoredApplicationUpCount(context.Context, *GetStoredApplicationUpCountRequest) (*GetStoredApplicationUpCountResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetStoredApplicationUpCount not implemented") +} +func (UnimplementedApplicationUpStorageServer) mustEmbedUnimplementedApplicationUpStorageServer() {} + +// UnsafeApplicationUpStorageServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ApplicationUpStorageServer will +// result in compilation errors. +type UnsafeApplicationUpStorageServer interface { + mustEmbedUnimplementedApplicationUpStorageServer() +} + +func RegisterApplicationUpStorageServer(s grpc.ServiceRegistrar, srv ApplicationUpStorageServer) { + s.RegisterService(&ApplicationUpStorage_ServiceDesc, srv) +} + +func _ApplicationUpStorage_GetStoredApplicationUp_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(GetStoredApplicationUpRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ApplicationUpStorageServer).GetStoredApplicationUp(m, &applicationUpStorageGetStoredApplicationUpServer{stream}) +} + +type ApplicationUpStorage_GetStoredApplicationUpServer interface { + Send(*ApplicationUp) error + grpc.ServerStream +} + +type applicationUpStorageGetStoredApplicationUpServer struct { + grpc.ServerStream +} + +func (x *applicationUpStorageGetStoredApplicationUpServer) Send(m *ApplicationUp) error { + return x.ServerStream.SendMsg(m) +} + +func _ApplicationUpStorage_GetStoredApplicationUpCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetStoredApplicationUpCountRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationUpStorageServer).GetStoredApplicationUpCount(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationUpStorage/GetStoredApplicationUpCount", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationUpStorageServer).GetStoredApplicationUpCount(ctx, req.(*GetStoredApplicationUpCountRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ApplicationUpStorage_ServiceDesc is the grpc.ServiceDesc for ApplicationUpStorage service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ApplicationUpStorage_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.ApplicationUpStorage", + HandlerType: (*ApplicationUpStorageServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetStoredApplicationUpCount", + Handler: _ApplicationUpStorage_GetStoredApplicationUpCount_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "GetStoredApplicationUp", + Handler: _ApplicationUpStorage_GetStoredApplicationUp_Handler, + ServerStreams: true, + }, + }, + Metadata: "lorawan-stack/api/applicationserver_integrations_storage.proto", +} diff --git a/pkg/ttnpb/applicationserver_integrations_storage_json.pb.go b/pkg/ttnpb/applicationserver_integrations_storage_json.pb.go index d91b2257d1..bf60aa42e2 100644 --- a/pkg/ttnpb/applicationserver_integrations_storage_json.pb.go +++ b/pkg/ttnpb/applicationserver_integrations_storage_json.pb.go @@ -1,15 +1,15 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/applicationserver_integrations_storage.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" - types "github.com/gogo/protobuf/types" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) // MarshalProtoJSON marshals the GetStoredApplicationUpRequest message to JSON. @@ -24,7 +24,7 @@ func (x *GetStoredApplicationUpRequest) MarshalProtoJSON(s *jsonplugin.MarshalSt s.WriteMoreIf(&wroteField) s.WriteObjectField("application_ids") // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ApplicationIds) + golang.MarshalMessage(s, x.ApplicationIds) } if x.EndDeviceIds != nil || s.HasField("end_device_ids") { s.WriteMoreIf(&wroteField) @@ -51,7 +51,7 @@ func (x *GetStoredApplicationUpRequest) MarshalProtoJSON(s *jsonplugin.MarshalSt if x.After == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.After) + golang.MarshalTimestamp(s, x.After) } } if x.Before != nil || s.HasField("before") { @@ -60,7 +60,7 @@ func (x *GetStoredApplicationUpRequest) MarshalProtoJSON(s *jsonplugin.MarshalSt if x.Before == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.Before) + golang.MarshalTimestamp(s, x.Before) } } if x.FPort != nil || s.HasField("f_port") { @@ -83,7 +83,7 @@ func (x *GetStoredApplicationUpRequest) MarshalProtoJSON(s *jsonplugin.MarshalSt if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } if x.Last != nil || s.HasField("last") { @@ -92,7 +92,7 @@ func (x *GetStoredApplicationUpRequest) MarshalProtoJSON(s *jsonplugin.MarshalSt if x.Last == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.Last) + golang.MarshalDuration(s, x.Last) } } s.WriteObjectEnd() @@ -120,7 +120,7 @@ func (x *GetStoredApplicationUpRequest) UnmarshalProtoJSON(s *jsonplugin.Unmarsh } // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. var v ApplicationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ApplicationIds = &v case "end_device_ids", "endDeviceIds": if s.ReadNil() { @@ -142,14 +142,14 @@ func (x *GetStoredApplicationUpRequest) UnmarshalProtoJSON(s *jsonplugin.Unmarsh if s.Err() != nil { return } - x.Limit = &types.UInt32Value{Value: v} + x.Limit = &wrapperspb.UInt32Value{Value: v} case "after": s.AddField("after") if s.ReadNil() { x.After = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -160,7 +160,7 @@ func (x *GetStoredApplicationUpRequest) UnmarshalProtoJSON(s *jsonplugin.Unmarsh x.Before = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -175,7 +175,7 @@ func (x *GetStoredApplicationUpRequest) UnmarshalProtoJSON(s *jsonplugin.Unmarsh if s.Err() != nil { return } - x.FPort = &types.UInt32Value{Value: v} + x.FPort = &wrapperspb.UInt32Value{Value: v} case "order": s.AddField("order") x.Order = s.ReadString() @@ -185,7 +185,7 @@ func (x *GetStoredApplicationUpRequest) UnmarshalProtoJSON(s *jsonplugin.Unmarsh x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -196,7 +196,7 @@ func (x *GetStoredApplicationUpRequest) UnmarshalProtoJSON(s *jsonplugin.Unmarsh x.Last = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -222,7 +222,7 @@ func (x *GetStoredApplicationUpCountRequest) MarshalProtoJSON(s *jsonplugin.Mars s.WriteMoreIf(&wroteField) s.WriteObjectField("application_ids") // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ApplicationIds) + golang.MarshalMessage(s, x.ApplicationIds) } if x.EndDeviceIds != nil || s.HasField("end_device_ids") { s.WriteMoreIf(&wroteField) @@ -240,7 +240,7 @@ func (x *GetStoredApplicationUpCountRequest) MarshalProtoJSON(s *jsonplugin.Mars if x.After == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.After) + golang.MarshalTimestamp(s, x.After) } } if x.Before != nil || s.HasField("before") { @@ -249,7 +249,7 @@ func (x *GetStoredApplicationUpCountRequest) MarshalProtoJSON(s *jsonplugin.Mars if x.Before == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.Before) + golang.MarshalTimestamp(s, x.Before) } } if x.FPort != nil || s.HasField("f_port") { @@ -267,7 +267,7 @@ func (x *GetStoredApplicationUpCountRequest) MarshalProtoJSON(s *jsonplugin.Mars if x.Last == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.Last) + golang.MarshalDuration(s, x.Last) } } s.WriteObjectEnd() @@ -295,7 +295,7 @@ func (x *GetStoredApplicationUpCountRequest) UnmarshalProtoJSON(s *jsonplugin.Un } // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. var v ApplicationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ApplicationIds = &v case "end_device_ids", "endDeviceIds": if s.ReadNil() { @@ -313,7 +313,7 @@ func (x *GetStoredApplicationUpCountRequest) UnmarshalProtoJSON(s *jsonplugin.Un x.After = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -324,7 +324,7 @@ func (x *GetStoredApplicationUpCountRequest) UnmarshalProtoJSON(s *jsonplugin.Un x.Before = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -339,14 +339,14 @@ func (x *GetStoredApplicationUpCountRequest) UnmarshalProtoJSON(s *jsonplugin.Un if s.Err() != nil { return } - x.FPort = &types.UInt32Value{Value: v} + x.FPort = &wrapperspb.UInt32Value{Value: v} case "last": s.AddField("last") if s.ReadNil() { x.Last = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } diff --git a/pkg/ttnpb/applicationserver_json.pb.go b/pkg/ttnpb/applicationserver_json.pb.go index 3e83724552..fd213d4ee6 100644 --- a/pkg/ttnpb/applicationserver_json.pb.go +++ b/pkg/ttnpb/applicationserver_json.pb.go @@ -1,15 +1,15 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/applicationserver.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" - types "github.com/gogo/protobuf/types" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) // MarshalProtoJSON marshals the ApplicationLink message to JSON. @@ -68,7 +68,7 @@ func (x *ApplicationLink) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { if s.Err() != nil { return } - x.SkipPayloadCrypto = &types.BoolValue{Value: v} + x.SkipPayloadCrypto = &wrapperspb.BoolValue{Value: v} } }) } @@ -78,6 +78,76 @@ func (x *ApplicationLink) UnmarshalJSON(b []byte) error { return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) } +// MarshalProtoJSON marshals the GetApplicationLinkRequest message to JSON. +func (x *GetApplicationLinkRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.ApplicationIds != nil || s.HasField("application_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("application_ids") + // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.ApplicationIds) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the GetApplicationLinkRequest to JSON. +func (x *GetApplicationLinkRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the GetApplicationLinkRequest message from JSON. +func (x *GetApplicationLinkRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "application_ids", "applicationIds": + s.AddField("application_ids") + if s.ReadNil() { + x.ApplicationIds = nil + return + } + // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationIdentifiers + golang.UnmarshalMessage(s, &v) + x.ApplicationIds = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the GetApplicationLinkRequest from JSON. +func (x *GetApplicationLinkRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + // MarshalProtoJSON marshals the SetApplicationLinkRequest message to JSON. func (x *SetApplicationLinkRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x == nil { @@ -90,7 +160,7 @@ func (x *SetApplicationLinkRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) s.WriteMoreIf(&wroteField) s.WriteObjectField("application_ids") // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ApplicationIds) + golang.MarshalMessage(s, x.ApplicationIds) } if x.Link != nil || s.HasField("link") { s.WriteMoreIf(&wroteField) @@ -103,7 +173,7 @@ func (x *SetApplicationLinkRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -131,7 +201,7 @@ func (x *SetApplicationLinkRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalSt } // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. var v ApplicationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ApplicationIds = &v case "link": if s.ReadNil() { @@ -146,7 +216,7 @@ func (x *SetApplicationLinkRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalSt x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -313,7 +383,7 @@ func (x *AsConfiguration) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("webhooks") // NOTE: AsConfiguration_Webhooks does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Webhooks) + golang.MarshalMessage(s, x.Webhooks) } s.WriteObjectEnd() } @@ -347,7 +417,7 @@ func (x *AsConfiguration) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: AsConfiguration_Webhooks does not seem to implement UnmarshalProtoJSON. var v AsConfiguration_Webhooks - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Webhooks = &v } }) @@ -484,7 +554,7 @@ func (x *EncodeDownlinkRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("version_ids") // NOTE: EndDeviceVersionIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.VersionIds) + golang.MarshalMessage(s, x.VersionIds) } if x.Downlink != nil || s.HasField("downlink") { s.WriteMoreIf(&wroteField) @@ -533,7 +603,7 @@ func (x *EncodeDownlinkRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) } // NOTE: EndDeviceVersionIdentifiers does not seem to implement UnmarshalProtoJSON. var v EndDeviceVersionIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.VersionIds = &v case "downlink": if s.ReadNil() { @@ -620,7 +690,7 @@ func (x *DecodeUplinkRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("version_ids") // NOTE: EndDeviceVersionIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.VersionIds) + golang.MarshalMessage(s, x.VersionIds) } if x.Uplink != nil || s.HasField("uplink") { s.WriteMoreIf(&wroteField) @@ -669,7 +739,7 @@ func (x *DecodeUplinkRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: EndDeviceVersionIdentifiers does not seem to implement UnmarshalProtoJSON. var v EndDeviceVersionIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.VersionIds = &v case "uplink": if s.ReadNil() { @@ -756,7 +826,7 @@ func (x *DecodeDownlinkRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("version_ids") // NOTE: EndDeviceVersionIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.VersionIds) + golang.MarshalMessage(s, x.VersionIds) } if x.Downlink != nil || s.HasField("downlink") { s.WriteMoreIf(&wroteField) @@ -805,7 +875,7 @@ func (x *DecodeDownlinkRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) } // NOTE: EndDeviceVersionIdentifiers does not seem to implement UnmarshalProtoJSON. var v EndDeviceVersionIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.VersionIds = &v case "downlink": if s.ReadNil() { diff --git a/pkg/ttnpb/applicationserver_packages.pb.go b/pkg/ttnpb/applicationserver_packages.pb.go index 7a4e4cb48a..7910ee622f 100644 --- a/pkg/ttnpb/applicationserver_packages.pb.go +++ b/pkg/ttnpb/applicationserver_packages.pb.go @@ -1,1271 +1,1512 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/applicationserver_packages.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + structpb "google.golang.org/protobuf/types/known/structpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type ApplicationPackage struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - DefaultFPort uint32 `protobuf:"varint,2,opt,name=default_f_port,json=defaultFPort,proto3" json:"default_f_port,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationPackage) Reset() { *m = ApplicationPackage{} } -func (m *ApplicationPackage) String() string { return proto.CompactTextString(m) } -func (*ApplicationPackage) ProtoMessage() {} -func (*ApplicationPackage) Descriptor() ([]byte, []int) { - return fileDescriptor_aa4ce58e965b6ca0, []int{0} -} -func (m *ApplicationPackage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPackage.Unmarshal(m, b) -} -func (m *ApplicationPackage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPackage.Marshal(b, m, deterministic) + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + DefaultFPort uint32 `protobuf:"varint,2,opt,name=default_f_port,json=defaultFPort,proto3" json:"default_f_port,omitempty"` } -func (m *ApplicationPackage) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPackage.Merge(m, src) + +func (x *ApplicationPackage) Reset() { + *x = ApplicationPackage{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationPackage) XXX_Size() int { - return xxx_messageInfo_ApplicationPackage.Size(m) + +func (x *ApplicationPackage) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationPackage) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPackage.DiscardUnknown(m) + +func (*ApplicationPackage) ProtoMessage() {} + +func (x *ApplicationPackage) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationPackage proto.InternalMessageInfo +// Deprecated: Use ApplicationPackage.ProtoReflect.Descriptor instead. +func (*ApplicationPackage) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_packages_proto_rawDescGZIP(), []int{0} +} -func (m *ApplicationPackage) GetName() string { - if m != nil { - return m.Name +func (x *ApplicationPackage) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *ApplicationPackage) GetDefaultFPort() uint32 { - if m != nil { - return m.DefaultFPort +func (x *ApplicationPackage) GetDefaultFPort() uint32 { + if x != nil { + return x.DefaultFPort } return 0 } type ApplicationPackages struct { - Packages []*ApplicationPackage `protobuf:"bytes,1,rep,name=packages,proto3" json:"packages,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationPackages) Reset() { *m = ApplicationPackages{} } -func (m *ApplicationPackages) String() string { return proto.CompactTextString(m) } -func (*ApplicationPackages) ProtoMessage() {} -func (*ApplicationPackages) Descriptor() ([]byte, []int) { - return fileDescriptor_aa4ce58e965b6ca0, []int{1} -} -func (m *ApplicationPackages) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPackages.Unmarshal(m, b) -} -func (m *ApplicationPackages) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPackages.Marshal(b, m, deterministic) + Packages []*ApplicationPackage `protobuf:"bytes,1,rep,name=packages,proto3" json:"packages,omitempty"` } -func (m *ApplicationPackages) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPackages.Merge(m, src) + +func (x *ApplicationPackages) Reset() { + *x = ApplicationPackages{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationPackages) XXX_Size() int { - return xxx_messageInfo_ApplicationPackages.Size(m) + +func (x *ApplicationPackages) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationPackages) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPackages.DiscardUnknown(m) + +func (*ApplicationPackages) ProtoMessage() {} + +func (x *ApplicationPackages) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationPackages proto.InternalMessageInfo +// Deprecated: Use ApplicationPackages.ProtoReflect.Descriptor instead. +func (*ApplicationPackages) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_packages_proto_rawDescGZIP(), []int{1} +} -func (m *ApplicationPackages) GetPackages() []*ApplicationPackage { - if m != nil { - return m.Packages +func (x *ApplicationPackages) GetPackages() []*ApplicationPackage { + if x != nil { + return x.Packages } return nil } type ApplicationPackageAssociationIdentifiers struct { - EndDeviceIds *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` - FPort uint32 `protobuf:"varint,2,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationPackageAssociationIdentifiers) Reset() { - *m = ApplicationPackageAssociationIdentifiers{} -} -func (m *ApplicationPackageAssociationIdentifiers) String() string { return proto.CompactTextString(m) } -func (*ApplicationPackageAssociationIdentifiers) ProtoMessage() {} -func (*ApplicationPackageAssociationIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_aa4ce58e965b6ca0, []int{2} -} -func (m *ApplicationPackageAssociationIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPackageAssociationIdentifiers.Unmarshal(m, b) + EndDeviceIds *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` + FPort uint32 `protobuf:"varint,2,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` } -func (m *ApplicationPackageAssociationIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPackageAssociationIdentifiers.Marshal(b, m, deterministic) -} -func (m *ApplicationPackageAssociationIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPackageAssociationIdentifiers.Merge(m, src) + +func (x *ApplicationPackageAssociationIdentifiers) Reset() { + *x = ApplicationPackageAssociationIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationPackageAssociationIdentifiers) XXX_Size() int { - return xxx_messageInfo_ApplicationPackageAssociationIdentifiers.Size(m) + +func (x *ApplicationPackageAssociationIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationPackageAssociationIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPackageAssociationIdentifiers.DiscardUnknown(m) + +func (*ApplicationPackageAssociationIdentifiers) ProtoMessage() {} + +func (x *ApplicationPackageAssociationIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationPackageAssociationIdentifiers proto.InternalMessageInfo +// Deprecated: Use ApplicationPackageAssociationIdentifiers.ProtoReflect.Descriptor instead. +func (*ApplicationPackageAssociationIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_packages_proto_rawDescGZIP(), []int{2} +} -func (m *ApplicationPackageAssociationIdentifiers) GetEndDeviceIds() *EndDeviceIdentifiers { - if m != nil { - return m.EndDeviceIds +func (x *ApplicationPackageAssociationIdentifiers) GetEndDeviceIds() *EndDeviceIdentifiers { + if x != nil { + return x.EndDeviceIds } return nil } -func (m *ApplicationPackageAssociationIdentifiers) GetFPort() uint32 { - if m != nil { - return m.FPort +func (x *ApplicationPackageAssociationIdentifiers) GetFPort() uint32 { + if x != nil { + return x.FPort } return 0 } type ApplicationPackageAssociation struct { - Ids *ApplicationPackageAssociationIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` - CreatedAt *types.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *types.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - PackageName string `protobuf:"bytes,4,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - Data *types.Struct `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ApplicationPackageAssociation) Reset() { *m = ApplicationPackageAssociation{} } -func (m *ApplicationPackageAssociation) String() string { return proto.CompactTextString(m) } -func (*ApplicationPackageAssociation) ProtoMessage() {} -func (*ApplicationPackageAssociation) Descriptor() ([]byte, []int) { - return fileDescriptor_aa4ce58e965b6ca0, []int{3} -} -func (m *ApplicationPackageAssociation) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPackageAssociation.Unmarshal(m, b) -} -func (m *ApplicationPackageAssociation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPackageAssociation.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ids *ApplicationPackageAssociationIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + PackageName string `protobuf:"bytes,4,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + Data *structpb.Struct `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` } -func (m *ApplicationPackageAssociation) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPackageAssociation.Merge(m, src) + +func (x *ApplicationPackageAssociation) Reset() { + *x = ApplicationPackageAssociation{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationPackageAssociation) XXX_Size() int { - return xxx_messageInfo_ApplicationPackageAssociation.Size(m) + +func (x *ApplicationPackageAssociation) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationPackageAssociation) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPackageAssociation.DiscardUnknown(m) + +func (*ApplicationPackageAssociation) ProtoMessage() {} + +func (x *ApplicationPackageAssociation) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationPackageAssociation proto.InternalMessageInfo +// Deprecated: Use ApplicationPackageAssociation.ProtoReflect.Descriptor instead. +func (*ApplicationPackageAssociation) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_packages_proto_rawDescGZIP(), []int{3} +} -func (m *ApplicationPackageAssociation) GetIds() *ApplicationPackageAssociationIdentifiers { - if m != nil { - return m.Ids +func (x *ApplicationPackageAssociation) GetIds() *ApplicationPackageAssociationIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *ApplicationPackageAssociation) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *ApplicationPackageAssociation) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *ApplicationPackageAssociation) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *ApplicationPackageAssociation) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *ApplicationPackageAssociation) GetPackageName() string { - if m != nil { - return m.PackageName +func (x *ApplicationPackageAssociation) GetPackageName() string { + if x != nil { + return x.PackageName } return "" } -func (m *ApplicationPackageAssociation) GetData() *types.Struct { - if m != nil { - return m.Data +func (x *ApplicationPackageAssociation) GetData() *structpb.Struct { + if x != nil { + return x.Data } return nil } type ApplicationPackageAssociations struct { - Associations []*ApplicationPackageAssociation `protobuf:"bytes,1,rep,name=associations,proto3" json:"associations,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationPackageAssociations) Reset() { *m = ApplicationPackageAssociations{} } -func (m *ApplicationPackageAssociations) String() string { return proto.CompactTextString(m) } -func (*ApplicationPackageAssociations) ProtoMessage() {} -func (*ApplicationPackageAssociations) Descriptor() ([]byte, []int) { - return fileDescriptor_aa4ce58e965b6ca0, []int{4} -} -func (m *ApplicationPackageAssociations) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPackageAssociations.Unmarshal(m, b) -} -func (m *ApplicationPackageAssociations) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPackageAssociations.Marshal(b, m, deterministic) + Associations []*ApplicationPackageAssociation `protobuf:"bytes,1,rep,name=associations,proto3" json:"associations,omitempty"` } -func (m *ApplicationPackageAssociations) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPackageAssociations.Merge(m, src) + +func (x *ApplicationPackageAssociations) Reset() { + *x = ApplicationPackageAssociations{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationPackageAssociations) XXX_Size() int { - return xxx_messageInfo_ApplicationPackageAssociations.Size(m) + +func (x *ApplicationPackageAssociations) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationPackageAssociations) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPackageAssociations.DiscardUnknown(m) + +func (*ApplicationPackageAssociations) ProtoMessage() {} + +func (x *ApplicationPackageAssociations) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationPackageAssociations proto.InternalMessageInfo +// Deprecated: Use ApplicationPackageAssociations.ProtoReflect.Descriptor instead. +func (*ApplicationPackageAssociations) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_packages_proto_rawDescGZIP(), []int{4} +} -func (m *ApplicationPackageAssociations) GetAssociations() []*ApplicationPackageAssociation { - if m != nil { - return m.Associations +func (x *ApplicationPackageAssociations) GetAssociations() []*ApplicationPackageAssociation { + if x != nil { + return x.Associations } return nil } type GetApplicationPackageAssociationRequest struct { - Ids *ApplicationPackageAssociationIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GetApplicationPackageAssociationRequest) Reset() { - *m = GetApplicationPackageAssociationRequest{} -} -func (m *GetApplicationPackageAssociationRequest) String() string { return proto.CompactTextString(m) } -func (*GetApplicationPackageAssociationRequest) ProtoMessage() {} -func (*GetApplicationPackageAssociationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_aa4ce58e965b6ca0, []int{5} -} -func (m *GetApplicationPackageAssociationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetApplicationPackageAssociationRequest.Unmarshal(m, b) + Ids *ApplicationPackageAssociationIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *GetApplicationPackageAssociationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetApplicationPackageAssociationRequest.Marshal(b, m, deterministic) -} -func (m *GetApplicationPackageAssociationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetApplicationPackageAssociationRequest.Merge(m, src) + +func (x *GetApplicationPackageAssociationRequest) Reset() { + *x = GetApplicationPackageAssociationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetApplicationPackageAssociationRequest) XXX_Size() int { - return xxx_messageInfo_GetApplicationPackageAssociationRequest.Size(m) + +func (x *GetApplicationPackageAssociationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetApplicationPackageAssociationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetApplicationPackageAssociationRequest.DiscardUnknown(m) + +func (*GetApplicationPackageAssociationRequest) ProtoMessage() {} + +func (x *GetApplicationPackageAssociationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetApplicationPackageAssociationRequest proto.InternalMessageInfo +// Deprecated: Use GetApplicationPackageAssociationRequest.ProtoReflect.Descriptor instead. +func (*GetApplicationPackageAssociationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_packages_proto_rawDescGZIP(), []int{5} +} -func (m *GetApplicationPackageAssociationRequest) GetIds() *ApplicationPackageAssociationIdentifiers { - if m != nil { - return m.Ids +func (x *GetApplicationPackageAssociationRequest) GetIds() *ApplicationPackageAssociationIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *GetApplicationPackageAssociationRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *GetApplicationPackageAssociationRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type ListApplicationPackageAssociationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Ids *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` // Limit the number of results per page. // Each page is ordered by the FPort. Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,4,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,4,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *ListApplicationPackageAssociationRequest) Reset() { - *m = ListApplicationPackageAssociationRequest{} -} -func (m *ListApplicationPackageAssociationRequest) String() string { return proto.CompactTextString(m) } -func (*ListApplicationPackageAssociationRequest) ProtoMessage() {} -func (*ListApplicationPackageAssociationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_aa4ce58e965b6ca0, []int{6} -} -func (m *ListApplicationPackageAssociationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListApplicationPackageAssociationRequest.Unmarshal(m, b) -} -func (m *ListApplicationPackageAssociationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListApplicationPackageAssociationRequest.Marshal(b, m, deterministic) -} -func (m *ListApplicationPackageAssociationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListApplicationPackageAssociationRequest.Merge(m, src) +func (x *ListApplicationPackageAssociationRequest) Reset() { + *x = ListApplicationPackageAssociationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListApplicationPackageAssociationRequest) XXX_Size() int { - return xxx_messageInfo_ListApplicationPackageAssociationRequest.Size(m) + +func (x *ListApplicationPackageAssociationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListApplicationPackageAssociationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListApplicationPackageAssociationRequest.DiscardUnknown(m) + +func (*ListApplicationPackageAssociationRequest) ProtoMessage() {} + +func (x *ListApplicationPackageAssociationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListApplicationPackageAssociationRequest proto.InternalMessageInfo +// Deprecated: Use ListApplicationPackageAssociationRequest.ProtoReflect.Descriptor instead. +func (*ListApplicationPackageAssociationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_packages_proto_rawDescGZIP(), []int{6} +} -func (m *ListApplicationPackageAssociationRequest) GetIds() *EndDeviceIdentifiers { - if m != nil { - return m.Ids +func (x *ListApplicationPackageAssociationRequest) GetIds() *EndDeviceIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *ListApplicationPackageAssociationRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListApplicationPackageAssociationRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListApplicationPackageAssociationRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListApplicationPackageAssociationRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *ListApplicationPackageAssociationRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *ListApplicationPackageAssociationRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type SetApplicationPackageAssociationRequest struct { - Association *ApplicationPackageAssociation `protobuf:"bytes,1,opt,name=association,proto3" json:"association,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SetApplicationPackageAssociationRequest) Reset() { - *m = SetApplicationPackageAssociationRequest{} -} -func (m *SetApplicationPackageAssociationRequest) String() string { return proto.CompactTextString(m) } -func (*SetApplicationPackageAssociationRequest) ProtoMessage() {} -func (*SetApplicationPackageAssociationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_aa4ce58e965b6ca0, []int{7} -} -func (m *SetApplicationPackageAssociationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetApplicationPackageAssociationRequest.Unmarshal(m, b) -} -func (m *SetApplicationPackageAssociationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetApplicationPackageAssociationRequest.Marshal(b, m, deterministic) + Association *ApplicationPackageAssociation `protobuf:"bytes,1,opt,name=association,proto3" json:"association,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *SetApplicationPackageAssociationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetApplicationPackageAssociationRequest.Merge(m, src) + +func (x *SetApplicationPackageAssociationRequest) Reset() { + *x = SetApplicationPackageAssociationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SetApplicationPackageAssociationRequest) XXX_Size() int { - return xxx_messageInfo_SetApplicationPackageAssociationRequest.Size(m) + +func (x *SetApplicationPackageAssociationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SetApplicationPackageAssociationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetApplicationPackageAssociationRequest.DiscardUnknown(m) + +func (*SetApplicationPackageAssociationRequest) ProtoMessage() {} + +func (x *SetApplicationPackageAssociationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SetApplicationPackageAssociationRequest proto.InternalMessageInfo +// Deprecated: Use SetApplicationPackageAssociationRequest.ProtoReflect.Descriptor instead. +func (*SetApplicationPackageAssociationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_packages_proto_rawDescGZIP(), []int{7} +} -func (m *SetApplicationPackageAssociationRequest) GetAssociation() *ApplicationPackageAssociation { - if m != nil { - return m.Association +func (x *SetApplicationPackageAssociationRequest) GetAssociation() *ApplicationPackageAssociation { + if x != nil { + return x.Association } return nil } -func (m *SetApplicationPackageAssociationRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *SetApplicationPackageAssociationRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type ApplicationPackageDefaultAssociationIdentifiers struct { - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` - FPort uint32 `protobuf:"varint,2,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + FPort uint32 `protobuf:"varint,2,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` } -func (m *ApplicationPackageDefaultAssociationIdentifiers) Reset() { - *m = ApplicationPackageDefaultAssociationIdentifiers{} +func (x *ApplicationPackageDefaultAssociationIdentifiers) Reset() { + *x = ApplicationPackageDefaultAssociationIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationPackageDefaultAssociationIdentifiers) String() string { - return proto.CompactTextString(m) + +func (x *ApplicationPackageDefaultAssociationIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } + func (*ApplicationPackageDefaultAssociationIdentifiers) ProtoMessage() {} -func (*ApplicationPackageDefaultAssociationIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_aa4ce58e965b6ca0, []int{8} -} -func (m *ApplicationPackageDefaultAssociationIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPackageDefaultAssociationIdentifiers.Unmarshal(m, b) -} -func (m *ApplicationPackageDefaultAssociationIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPackageDefaultAssociationIdentifiers.Marshal(b, m, deterministic) -} -func (m *ApplicationPackageDefaultAssociationIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPackageDefaultAssociationIdentifiers.Merge(m, src) -} -func (m *ApplicationPackageDefaultAssociationIdentifiers) XXX_Size() int { - return xxx_messageInfo_ApplicationPackageDefaultAssociationIdentifiers.Size(m) -} -func (m *ApplicationPackageDefaultAssociationIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPackageDefaultAssociationIdentifiers.DiscardUnknown(m) + +func (x *ApplicationPackageDefaultAssociationIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationPackageDefaultAssociationIdentifiers proto.InternalMessageInfo +// Deprecated: Use ApplicationPackageDefaultAssociationIdentifiers.ProtoReflect.Descriptor instead. +func (*ApplicationPackageDefaultAssociationIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_packages_proto_rawDescGZIP(), []int{8} +} -func (m *ApplicationPackageDefaultAssociationIdentifiers) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *ApplicationPackageDefaultAssociationIdentifiers) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *ApplicationPackageDefaultAssociationIdentifiers) GetFPort() uint32 { - if m != nil { - return m.FPort +func (x *ApplicationPackageDefaultAssociationIdentifiers) GetFPort() uint32 { + if x != nil { + return x.FPort } return 0 } type ApplicationPackageDefaultAssociation struct { - Ids *ApplicationPackageDefaultAssociationIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` - CreatedAt *types.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *types.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - PackageName string `protobuf:"bytes,4,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - Data *types.Struct `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ApplicationPackageDefaultAssociation) Reset() { *m = ApplicationPackageDefaultAssociation{} } -func (m *ApplicationPackageDefaultAssociation) String() string { return proto.CompactTextString(m) } -func (*ApplicationPackageDefaultAssociation) ProtoMessage() {} -func (*ApplicationPackageDefaultAssociation) Descriptor() ([]byte, []int) { - return fileDescriptor_aa4ce58e965b6ca0, []int{9} -} -func (m *ApplicationPackageDefaultAssociation) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPackageDefaultAssociation.Unmarshal(m, b) -} -func (m *ApplicationPackageDefaultAssociation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPackageDefaultAssociation.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ids *ApplicationPackageDefaultAssociationIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + PackageName string `protobuf:"bytes,4,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + Data *structpb.Struct `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` } -func (m *ApplicationPackageDefaultAssociation) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPackageDefaultAssociation.Merge(m, src) + +func (x *ApplicationPackageDefaultAssociation) Reset() { + *x = ApplicationPackageDefaultAssociation{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationPackageDefaultAssociation) XXX_Size() int { - return xxx_messageInfo_ApplicationPackageDefaultAssociation.Size(m) + +func (x *ApplicationPackageDefaultAssociation) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationPackageDefaultAssociation) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPackageDefaultAssociation.DiscardUnknown(m) + +func (*ApplicationPackageDefaultAssociation) ProtoMessage() {} + +func (x *ApplicationPackageDefaultAssociation) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationPackageDefaultAssociation proto.InternalMessageInfo +// Deprecated: Use ApplicationPackageDefaultAssociation.ProtoReflect.Descriptor instead. +func (*ApplicationPackageDefaultAssociation) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_packages_proto_rawDescGZIP(), []int{9} +} -func (m *ApplicationPackageDefaultAssociation) GetIds() *ApplicationPackageDefaultAssociationIdentifiers { - if m != nil { - return m.Ids +func (x *ApplicationPackageDefaultAssociation) GetIds() *ApplicationPackageDefaultAssociationIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *ApplicationPackageDefaultAssociation) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *ApplicationPackageDefaultAssociation) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *ApplicationPackageDefaultAssociation) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *ApplicationPackageDefaultAssociation) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *ApplicationPackageDefaultAssociation) GetPackageName() string { - if m != nil { - return m.PackageName +func (x *ApplicationPackageDefaultAssociation) GetPackageName() string { + if x != nil { + return x.PackageName } return "" } -func (m *ApplicationPackageDefaultAssociation) GetData() *types.Struct { - if m != nil { - return m.Data +func (x *ApplicationPackageDefaultAssociation) GetData() *structpb.Struct { + if x != nil { + return x.Data } return nil } type ApplicationPackageDefaultAssociations struct { - Defaults []*ApplicationPackageDefaultAssociation `protobuf:"bytes,1,rep,name=defaults,proto3" json:"defaults,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationPackageDefaultAssociations) Reset() { *m = ApplicationPackageDefaultAssociations{} } -func (m *ApplicationPackageDefaultAssociations) String() string { return proto.CompactTextString(m) } -func (*ApplicationPackageDefaultAssociations) ProtoMessage() {} -func (*ApplicationPackageDefaultAssociations) Descriptor() ([]byte, []int) { - return fileDescriptor_aa4ce58e965b6ca0, []int{10} -} -func (m *ApplicationPackageDefaultAssociations) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPackageDefaultAssociations.Unmarshal(m, b) -} -func (m *ApplicationPackageDefaultAssociations) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPackageDefaultAssociations.Marshal(b, m, deterministic) -} -func (m *ApplicationPackageDefaultAssociations) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPackageDefaultAssociations.Merge(m, src) -} -func (m *ApplicationPackageDefaultAssociations) XXX_Size() int { - return xxx_messageInfo_ApplicationPackageDefaultAssociations.Size(m) -} -func (m *ApplicationPackageDefaultAssociations) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPackageDefaultAssociations.DiscardUnknown(m) + Defaults []*ApplicationPackageDefaultAssociation `protobuf:"bytes,1,rep,name=defaults,proto3" json:"defaults,omitempty"` } -var xxx_messageInfo_ApplicationPackageDefaultAssociations proto.InternalMessageInfo - -func (m *ApplicationPackageDefaultAssociations) GetDefaults() []*ApplicationPackageDefaultAssociation { - if m != nil { - return m.Defaults +func (x *ApplicationPackageDefaultAssociations) Reset() { + *x = ApplicationPackageDefaultAssociations{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -type GetApplicationPackageDefaultAssociationRequest struct { - Ids *ApplicationPackageDefaultAssociationIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetApplicationPackageDefaultAssociationRequest) Reset() { - *m = GetApplicationPackageDefaultAssociationRequest{} -} -func (m *GetApplicationPackageDefaultAssociationRequest) String() string { - return proto.CompactTextString(m) -} -func (*GetApplicationPackageDefaultAssociationRequest) ProtoMessage() {} -func (*GetApplicationPackageDefaultAssociationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_aa4ce58e965b6ca0, []int{11} -} -func (m *GetApplicationPackageDefaultAssociationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetApplicationPackageDefaultAssociationRequest.Unmarshal(m, b) -} -func (m *GetApplicationPackageDefaultAssociationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetApplicationPackageDefaultAssociationRequest.Marshal(b, m, deterministic) -} -func (m *GetApplicationPackageDefaultAssociationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetApplicationPackageDefaultAssociationRequest.Merge(m, src) -} -func (m *GetApplicationPackageDefaultAssociationRequest) XXX_Size() int { - return xxx_messageInfo_GetApplicationPackageDefaultAssociationRequest.Size(m) -} -func (m *GetApplicationPackageDefaultAssociationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetApplicationPackageDefaultAssociationRequest.DiscardUnknown(m) +func (x *ApplicationPackageDefaultAssociations) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_GetApplicationPackageDefaultAssociationRequest proto.InternalMessageInfo +func (*ApplicationPackageDefaultAssociations) ProtoMessage() {} -func (m *GetApplicationPackageDefaultAssociationRequest) GetIds() *ApplicationPackageDefaultAssociationIdentifiers { - if m != nil { - return m.Ids +func (x *ApplicationPackageDefaultAssociations) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *GetApplicationPackageDefaultAssociationRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +// Deprecated: Use ApplicationPackageDefaultAssociations.ProtoReflect.Descriptor instead. +func (*ApplicationPackageDefaultAssociations) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_packages_proto_rawDescGZIP(), []int{10} +} + +func (x *ApplicationPackageDefaultAssociations) GetDefaults() []*ApplicationPackageDefaultAssociation { + if x != nil { + return x.Defaults } return nil } -type ListApplicationPackageDefaultAssociationRequest struct { - Ids *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` - // Limit the number of results per page. - // Each page is ordered by the FPort. - Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` - // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,4,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type GetApplicationPackageDefaultAssociationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ListApplicationPackageDefaultAssociationRequest) Reset() { - *m = ListApplicationPackageDefaultAssociationRequest{} -} -func (m *ListApplicationPackageDefaultAssociationRequest) String() string { - return proto.CompactTextString(m) -} -func (*ListApplicationPackageDefaultAssociationRequest) ProtoMessage() {} -func (*ListApplicationPackageDefaultAssociationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_aa4ce58e965b6ca0, []int{12} -} -func (m *ListApplicationPackageDefaultAssociationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListApplicationPackageDefaultAssociationRequest.Unmarshal(m, b) -} -func (m *ListApplicationPackageDefaultAssociationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListApplicationPackageDefaultAssociationRequest.Marshal(b, m, deterministic) -} -func (m *ListApplicationPackageDefaultAssociationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListApplicationPackageDefaultAssociationRequest.Merge(m, src) -} -func (m *ListApplicationPackageDefaultAssociationRequest) XXX_Size() int { - return xxx_messageInfo_ListApplicationPackageDefaultAssociationRequest.Size(m) -} -func (m *ListApplicationPackageDefaultAssociationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListApplicationPackageDefaultAssociationRequest.DiscardUnknown(m) + Ids *ApplicationPackageDefaultAssociationIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -var xxx_messageInfo_ListApplicationPackageDefaultAssociationRequest proto.InternalMessageInfo - -func (m *ListApplicationPackageDefaultAssociationRequest) GetIds() *ApplicationIdentifiers { - if m != nil { - return m.Ids +func (x *GetApplicationPackageDefaultAssociationRequest) Reset() { + *x = GetApplicationPackageDefaultAssociationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (m *ListApplicationPackageDefaultAssociationRequest) GetLimit() uint32 { - if m != nil { - return m.Limit - } - return 0 +func (x *GetApplicationPackageDefaultAssociationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListApplicationPackageDefaultAssociationRequest) GetPage() uint32 { - if m != nil { - return m.Page - } - return 0 -} +func (*GetApplicationPackageDefaultAssociationRequest) ProtoMessage() {} -func (m *ListApplicationPackageDefaultAssociationRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *GetApplicationPackageDefaultAssociationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil -} - -type SetApplicationPackageDefaultAssociationRequest struct { - Default *ApplicationPackageDefaultAssociation `protobuf:"bytes,1,opt,name=default,proto3" json:"default,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + return mi.MessageOf(x) } -func (m *SetApplicationPackageDefaultAssociationRequest) Reset() { - *m = SetApplicationPackageDefaultAssociationRequest{} -} -func (m *SetApplicationPackageDefaultAssociationRequest) String() string { - return proto.CompactTextString(m) -} -func (*SetApplicationPackageDefaultAssociationRequest) ProtoMessage() {} -func (*SetApplicationPackageDefaultAssociationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_aa4ce58e965b6ca0, []int{13} -} -func (m *SetApplicationPackageDefaultAssociationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetApplicationPackageDefaultAssociationRequest.Unmarshal(m, b) -} -func (m *SetApplicationPackageDefaultAssociationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetApplicationPackageDefaultAssociationRequest.Marshal(b, m, deterministic) -} -func (m *SetApplicationPackageDefaultAssociationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetApplicationPackageDefaultAssociationRequest.Merge(m, src) -} -func (m *SetApplicationPackageDefaultAssociationRequest) XXX_Size() int { - return xxx_messageInfo_SetApplicationPackageDefaultAssociationRequest.Size(m) -} -func (m *SetApplicationPackageDefaultAssociationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetApplicationPackageDefaultAssociationRequest.DiscardUnknown(m) +// Deprecated: Use GetApplicationPackageDefaultAssociationRequest.ProtoReflect.Descriptor instead. +func (*GetApplicationPackageDefaultAssociationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_packages_proto_rawDescGZIP(), []int{11} } -var xxx_messageInfo_SetApplicationPackageDefaultAssociationRequest proto.InternalMessageInfo - -func (m *SetApplicationPackageDefaultAssociationRequest) GetDefault() *ApplicationPackageDefaultAssociation { - if m != nil { - return m.Default +func (x *GetApplicationPackageDefaultAssociationRequest) GetIds() *ApplicationPackageDefaultAssociationIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *SetApplicationPackageDefaultAssociationRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *GetApplicationPackageDefaultAssociationRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func init() { - proto.RegisterType((*ApplicationPackage)(nil), "ttn.lorawan.v3.ApplicationPackage") - golang_proto.RegisterType((*ApplicationPackage)(nil), "ttn.lorawan.v3.ApplicationPackage") - proto.RegisterType((*ApplicationPackages)(nil), "ttn.lorawan.v3.ApplicationPackages") - golang_proto.RegisterType((*ApplicationPackages)(nil), "ttn.lorawan.v3.ApplicationPackages") - proto.RegisterType((*ApplicationPackageAssociationIdentifiers)(nil), "ttn.lorawan.v3.ApplicationPackageAssociationIdentifiers") - golang_proto.RegisterType((*ApplicationPackageAssociationIdentifiers)(nil), "ttn.lorawan.v3.ApplicationPackageAssociationIdentifiers") - proto.RegisterType((*ApplicationPackageAssociation)(nil), "ttn.lorawan.v3.ApplicationPackageAssociation") - golang_proto.RegisterType((*ApplicationPackageAssociation)(nil), "ttn.lorawan.v3.ApplicationPackageAssociation") - proto.RegisterType((*ApplicationPackageAssociations)(nil), "ttn.lorawan.v3.ApplicationPackageAssociations") - golang_proto.RegisterType((*ApplicationPackageAssociations)(nil), "ttn.lorawan.v3.ApplicationPackageAssociations") - proto.RegisterType((*GetApplicationPackageAssociationRequest)(nil), "ttn.lorawan.v3.GetApplicationPackageAssociationRequest") - golang_proto.RegisterType((*GetApplicationPackageAssociationRequest)(nil), "ttn.lorawan.v3.GetApplicationPackageAssociationRequest") - proto.RegisterType((*ListApplicationPackageAssociationRequest)(nil), "ttn.lorawan.v3.ListApplicationPackageAssociationRequest") - golang_proto.RegisterType((*ListApplicationPackageAssociationRequest)(nil), "ttn.lorawan.v3.ListApplicationPackageAssociationRequest") - proto.RegisterType((*SetApplicationPackageAssociationRequest)(nil), "ttn.lorawan.v3.SetApplicationPackageAssociationRequest") - golang_proto.RegisterType((*SetApplicationPackageAssociationRequest)(nil), "ttn.lorawan.v3.SetApplicationPackageAssociationRequest") - proto.RegisterType((*ApplicationPackageDefaultAssociationIdentifiers)(nil), "ttn.lorawan.v3.ApplicationPackageDefaultAssociationIdentifiers") - golang_proto.RegisterType((*ApplicationPackageDefaultAssociationIdentifiers)(nil), "ttn.lorawan.v3.ApplicationPackageDefaultAssociationIdentifiers") - proto.RegisterType((*ApplicationPackageDefaultAssociation)(nil), "ttn.lorawan.v3.ApplicationPackageDefaultAssociation") - golang_proto.RegisterType((*ApplicationPackageDefaultAssociation)(nil), "ttn.lorawan.v3.ApplicationPackageDefaultAssociation") - proto.RegisterType((*ApplicationPackageDefaultAssociations)(nil), "ttn.lorawan.v3.ApplicationPackageDefaultAssociations") - golang_proto.RegisterType((*ApplicationPackageDefaultAssociations)(nil), "ttn.lorawan.v3.ApplicationPackageDefaultAssociations") - proto.RegisterType((*GetApplicationPackageDefaultAssociationRequest)(nil), "ttn.lorawan.v3.GetApplicationPackageDefaultAssociationRequest") - golang_proto.RegisterType((*GetApplicationPackageDefaultAssociationRequest)(nil), "ttn.lorawan.v3.GetApplicationPackageDefaultAssociationRequest") - proto.RegisterType((*ListApplicationPackageDefaultAssociationRequest)(nil), "ttn.lorawan.v3.ListApplicationPackageDefaultAssociationRequest") - golang_proto.RegisterType((*ListApplicationPackageDefaultAssociationRequest)(nil), "ttn.lorawan.v3.ListApplicationPackageDefaultAssociationRequest") - proto.RegisterType((*SetApplicationPackageDefaultAssociationRequest)(nil), "ttn.lorawan.v3.SetApplicationPackageDefaultAssociationRequest") - golang_proto.RegisterType((*SetApplicationPackageDefaultAssociationRequest)(nil), "ttn.lorawan.v3.SetApplicationPackageDefaultAssociationRequest") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/applicationserver_packages.proto", fileDescriptor_aa4ce58e965b6ca0) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/applicationserver_packages.proto", fileDescriptor_aa4ce58e965b6ca0) -} - -var fileDescriptor_aa4ce58e965b6ca0 = []byte{ - // 1289 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0x41, 0x6c, 0xdb, 0x54, - 0x18, 0xee, 0x4b, 0xd2, 0xb5, 0x7d, 0xed, 0x42, 0xf7, 0xd0, 0x58, 0x08, 0x50, 0x8a, 0x57, 0x68, - 0x28, 0xc4, 0x9e, 0x52, 0x26, 0x58, 0x27, 0x56, 0x9a, 0x75, 0x9b, 0x86, 0x60, 0x2a, 0x4e, 0x41, - 0xdd, 0xca, 0x08, 0xaf, 0xf1, 0x8b, 0x6b, 0x25, 0xb1, 0x8d, 0xdf, 0x4b, 0x46, 0xa8, 0x7a, 0x29, - 0xe2, 0x32, 0x21, 0x24, 0xb4, 0xcb, 0x4e, 0xdc, 0x41, 0xe2, 0xc2, 0x09, 0x76, 0x19, 0x17, 0x24, - 0x2e, 0x9c, 0x90, 0xb8, 0x70, 0x64, 0x07, 0x38, 0x21, 0x21, 0x4e, 0xbd, 0x80, 0xf2, 0x6c, 0x37, - 0x4e, 0xec, 0x24, 0x76, 0x5a, 0xe0, 0xc2, 0xcd, 0xce, 0x7b, 0xff, 0xff, 0xfe, 0xef, 0xff, 0xbf, - 0xff, 0x7b, 0x7f, 0x0c, 0x73, 0x55, 0xc3, 0xc2, 0xb7, 0xb0, 0x9e, 0xa5, 0x0c, 0x97, 0x2a, 0x12, - 0x36, 0x35, 0x09, 0x9b, 0x66, 0x55, 0x2b, 0x61, 0xa6, 0x19, 0x3a, 0x25, 0x56, 0x83, 0x58, 0x45, - 0x13, 0x97, 0x2a, 0x58, 0x25, 0x54, 0x34, 0x2d, 0x83, 0x19, 0x28, 0xc9, 0x98, 0x2e, 0x3a, 0x76, - 0x62, 0x63, 0x31, 0xbd, 0xaa, 0x6a, 0x6c, 0xbb, 0xbe, 0x25, 0x96, 0x8c, 0x9a, 0xb4, 0xbe, 0x4d, - 0xd6, 0xb7, 0x35, 0x5d, 0xa5, 0x57, 0x75, 0xa5, 0x4e, 0x99, 0xa5, 0x11, 0x2a, 0x71, 0xab, 0x52, - 0x56, 0x25, 0x7a, 0x56, 0x35, 0xb2, 0xe5, 0x2a, 0x56, 0xa9, 0x84, 0x75, 0xdd, 0x60, 0xf6, 0x19, - 0xb6, 0xd7, 0xf4, 0x8a, 0xc7, 0x0b, 0xd1, 0x1b, 0x46, 0xd3, 0xb4, 0x8c, 0xf7, 0x9b, 0x5e, 0xe3, - 0x06, 0xae, 0x6a, 0x0a, 0x66, 0x44, 0xf2, 0x3d, 0x38, 0x2e, 0xb2, 0x1e, 0x17, 0xaa, 0xa1, 0x1a, - 0xb6, 0xf1, 0x56, 0xbd, 0xcc, 0xdf, 0xf8, 0x0b, 0x7f, 0x72, 0xb6, 0x3f, 0xae, 0x1a, 0x86, 0x5a, - 0x25, 0x36, 0x68, 0x5f, 0x3c, 0x8f, 0x39, 0xab, 0x07, 0x3e, 0x48, 0xcd, 0x64, 0x4d, 0x67, 0x71, - 0xb6, 0x7b, 0xb1, 0xac, 0x91, 0xaa, 0x52, 0xac, 0x61, 0x5a, 0x71, 0x76, 0x3c, 0xd9, 0xbd, 0x83, - 0x69, 0x35, 0x42, 0x19, 0xae, 0x99, 0x5d, 0xa7, 0x1f, 0x6c, 0xa0, 0xcc, 0xaa, 0x97, 0x98, 0xb3, - 0x7a, 0xda, 0x5f, 0x17, 0x4d, 0x21, 0x3a, 0xd3, 0xca, 0x1a, 0xb1, 0x9c, 0x10, 0x85, 0x0f, 0x01, - 0x44, 0x2b, 0xed, 0x6a, 0xad, 0xd9, 0x65, 0x42, 0xe7, 0x61, 0x42, 0xc7, 0x35, 0x92, 0x02, 0xb3, - 0x20, 0x33, 0x91, 0x9f, 0xdf, 0xcf, 0xcf, 0x59, 0x42, 0x6a, 0x2e, 0x37, 0xf3, 0xce, 0x26, 0xce, - 0x7e, 0x70, 0x26, 0x7b, 0xee, 0x66, 0x66, 0x79, 0x69, 0x33, 0x7b, 0x73, 0xd9, 0x7d, 0x7d, 0x76, - 0x27, 0xf7, 0xfc, 0xee, 0x9c, 0xcc, 0x8d, 0xd0, 0x19, 0x98, 0x54, 0x48, 0x19, 0xd7, 0xab, 0xac, - 0x58, 0x2e, 0x9a, 0x86, 0xc5, 0x52, 0xb1, 0x59, 0x90, 0x39, 0x9e, 0x87, 0xfb, 0xf9, 0xb1, 0x85, - 0xd1, 0xd4, 0x5f, 0x20, 0x03, 0xe4, 0x29, 0x67, 0xc7, 0xe5, 0x35, 0xc3, 0x62, 0xc2, 0x9b, 0xf0, - 0x61, 0x7f, 0x10, 0x14, 0x5d, 0x80, 0xe3, 0x2e, 0x6f, 0x52, 0x60, 0x36, 0x9e, 0x99, 0xcc, 0x09, - 0x62, 0x27, 0x71, 0x44, 0xbf, 0x99, 0x7c, 0x60, 0x23, 0x7c, 0x09, 0x60, 0xc6, 0xbf, 0x61, 0x85, - 0x52, 0xa3, 0xa4, 0xf1, 0x5f, 0xae, 0xb6, 0xf3, 0x81, 0xd6, 0x61, 0x92, 0xe8, 0x4a, 0x51, 0x21, - 0x0d, 0xad, 0x44, 0x8a, 0x9a, 0x42, 0x39, 0xf8, 0xc9, 0xdc, 0x5c, 0xf7, 0x91, 0x97, 0x74, 0x65, - 0x95, 0x6f, 0xf2, 0x58, 0xe7, 0xc7, 0xf7, 0xf3, 0xa3, 0xb7, 0x41, 0x6c, 0x1a, 0xc8, 0x53, 0xa4, - 0xbd, 0x4e, 0xd1, 0x53, 0xf0, 0x58, 0xcf, 0x1c, 0x8c, 0x96, 0x5b, 0xe0, 0x97, 0xc6, 0xff, 0xf8, - 0xe2, 0xd1, 0xc4, 0x38, 0x98, 0x06, 0xc2, 0xed, 0x38, 0x7c, 0xa2, 0x6f, 0xbc, 0xe8, 0x6d, 0x18, - 0x6f, 0x47, 0xf6, 0xd2, 0xe0, 0x64, 0x04, 0x63, 0xcd, 0x4f, 0xbb, 0xd1, 0xf2, 0xa3, 0x47, 0x32, - 0x40, 0x6e, 0xb9, 0x45, 0x17, 0x21, 0x2c, 0x59, 0x04, 0x33, 0xa2, 0x14, 0xb1, 0x1d, 0xf0, 0x64, - 0x2e, 0x2d, 0xda, 0x24, 0x13, 0x5d, 0x92, 0x89, 0xeb, 0x2e, 0x0b, 0xf3, 0x76, 0xe4, 0x23, 0xd3, - 0x23, 0xf2, 0x84, 0x63, 0xb7, 0xc2, 0x5a, 0x4e, 0xea, 0xa6, 0xe2, 0x3a, 0x89, 0x47, 0x71, 0xe2, - 0xd8, 0xad, 0x30, 0xf4, 0x2a, 0x9c, 0x72, 0xaa, 0x58, 0xe4, 0x3c, 0x4c, 0x44, 0xe3, 0xe1, 0xa4, - 0x63, 0x7c, 0xad, 0x45, 0xc7, 0xe7, 0x60, 0x42, 0xc1, 0x0c, 0xa7, 0x46, 0x79, 0x28, 0xa7, 0x7c, - 0xa1, 0x14, 0x78, 0xd3, 0xc8, 0x7c, 0x93, 0xa7, 0x18, 0x14, 0xce, 0xf4, 0xcd, 0x27, 0x45, 0x6f, - 0xc0, 0x29, 0xec, 0x79, 0x77, 0x28, 0x9a, 0x8d, 0x54, 0x15, 0xb9, 0xc3, 0x85, 0x70, 0x0f, 0xc0, - 0xf9, 0x2b, 0x84, 0xf5, 0x37, 0x21, 0xef, 0xd5, 0x09, 0x65, 0x68, 0xfd, 0x68, 0xb8, 0xd0, 0x66, - 0x2e, 0xe7, 0xc0, 0x39, 0x08, 0xdb, 0x42, 0xd4, 0x93, 0x03, 0x97, 0x5b, 0x5b, 0x5e, 0xc7, 0xb4, - 0x22, 0x4f, 0x94, 0xdd, 0x47, 0xe1, 0x67, 0x00, 0x33, 0xaf, 0x69, 0x34, 0x5c, 0xf4, 0xaf, 0x78, - 0xa3, 0x8f, 0xda, 0x63, 0x3c, 0xd2, 0x19, 0x38, 0x5a, 0xd5, 0x6a, 0x9a, 0xdb, 0x59, 0xad, 0xd5, - 0x85, 0x78, 0xea, 0xd7, 0x31, 0xd9, 0xfe, 0x19, 0x21, 0x98, 0x30, 0xb1, 0x4a, 0x38, 0x05, 0x8f, - 0xcb, 0xfc, 0xb9, 0x0b, 0x5d, 0x22, 0x0a, 0xba, 0xfb, 0x00, 0xce, 0x17, 0x42, 0x96, 0xe6, 0x3a, - 0x9c, 0xf4, 0x94, 0xd5, 0x01, 0x19, 0x8d, 0x18, 0x1e, 0xb4, 0x5e, 0x5f, 0x87, 0xa9, 0xcf, 0x37, - 0x00, 0x4a, 0xfe, 0x33, 0x57, 0x6d, 0x21, 0xee, 0xa1, 0x8a, 0xd7, 0xe1, 0x43, 0x9e, 0xcb, 0xdc, - 0x23, 0x8b, 0xcf, 0xf4, 0x41, 0x13, 0x5c, 0xb4, 0x24, 0xf6, 0xee, 0x88, 0x28, 0x8d, 0x77, 0xe3, - 0x70, 0x2e, 0x4c, 0xec, 0xa8, 0xe4, 0xe5, 0xd5, 0xf2, 0xe0, 0x94, 0xf7, 0x85, 0xff, 0xbf, 0x50, - 0x86, 0x10, 0xca, 0x26, 0x7c, 0x3a, 0x4c, 0x5a, 0x29, 0x5a, 0x83, 0xe3, 0xce, 0xad, 0xef, 0x6a, - 0xe5, 0x0b, 0xc3, 0xd4, 0x47, 0x3e, 0xf0, 0x22, 0x7c, 0x0f, 0xa0, 0x18, 0x28, 0x97, 0x01, 0x56, - 0x4e, 0x6b, 0x6e, 0x1e, 0x29, 0x3f, 0x8e, 0x4e, 0x3c, 0x1f, 0x00, 0x28, 0x05, 0x8b, 0x67, 0x6f, - 0x2c, 0x79, 0x2f, 0x96, 0xe8, 0x0d, 0xf9, 0x5f, 0xa8, 0xe8, 0x77, 0x00, 0x8a, 0x85, 0x68, 0x15, - 0xdb, 0x80, 0x63, 0x4e, 0xc1, 0x1d, 0xa4, 0x43, 0xb1, 0xc6, 0x83, 0xdb, 0x75, 0x77, 0x88, 0x72, - 0xe5, 0x3e, 0x3b, 0x01, 0xd3, 0x01, 0xb3, 0x27, 0x51, 0x35, 0xca, 0xac, 0x26, 0xfa, 0x1c, 0xc0, - 0x44, 0xab, 0x9a, 0x28, 0xd4, 0xcd, 0x96, 0x3e, 0x3d, 0x18, 0x11, 0x15, 0xde, 0xda, 0xfb, 0xf1, - 0xc1, 0x9d, 0xd8, 0x1a, 0xba, 0x26, 0x61, 0xda, 0xf1, 0x0f, 0x4b, 0xda, 0xe9, 0x92, 0x68, 0xb1, - 0xf3, 0x7d, 0x57, 0xb2, 0x87, 0x5a, 0x2a, 0xed, 0x1c, 0x4c, 0xb7, 0xbb, 0x92, 0x3b, 0x25, 0xa3, - 0x3b, 0x31, 0x98, 0x6c, 0x35, 0x91, 0x47, 0x44, 0x5f, 0xec, 0x8e, 0x27, 0xe4, 0x4c, 0x92, 0x8e, - 0x76, 0xc7, 0x09, 0x77, 0x01, 0xc7, 0xf4, 0x29, 0x40, 0x9f, 0x00, 0x3f, 0xaa, 0x16, 0x92, 0xce, - 0x91, 0x5c, 0x0c, 0x0d, 0x34, 0xc0, 0x36, 0x00, 0xbb, 0xe4, 0x1d, 0xbe, 0x6c, 0x23, 0xfb, 0x4a, - 0xda, 0x45, 0xbf, 0x01, 0x38, 0xcd, 0xfb, 0xd1, 0xab, 0x60, 0xbe, 0x29, 0x2b, 0xec, 0xb8, 0x93, - 0x16, 0x23, 0x25, 0x86, 0x0a, 0x15, 0x9e, 0x18, 0x82, 0x4a, 0xc1, 0x69, 0x89, 0x94, 0x87, 0x41, - 0xc0, 0xd1, 0xbd, 0x18, 0x4c, 0x16, 0x06, 0x30, 0xa0, 0xf0, 0xcf, 0x30, 0xe0, 0xbe, 0xcd, 0x80, - 0xaf, 0x41, 0xfa, 0xab, 0x00, 0x06, 0x78, 0xa2, 0x14, 0x0f, 0xc3, 0x86, 0x01, 0x7e, 0x06, 0x33, - 0xa3, 0xdb, 0x81, 0xc3, 0x92, 0x25, 0xb0, 0x80, 0xfe, 0x04, 0xf0, 0xc4, 0x2a, 0xa9, 0x12, 0xd6, - 0xf1, 0x47, 0x6d, 0xe8, 0x79, 0x3c, 0xfd, 0x88, 0x4f, 0x80, 0x2e, 0xd5, 0x4c, 0xd6, 0x14, 0x3e, - 0xb6, 0x33, 0xf5, 0x11, 0x58, 0xd8, 0x0b, 0xc8, 0xd4, 0xb0, 0x99, 0x89, 0x9c, 0x09, 0xb7, 0x3f, - 0x7e, 0x07, 0xf0, 0xe4, 0x15, 0xc2, 0x02, 0x26, 0xb0, 0x0b, 0xa1, 0xc4, 0xa3, 0xa7, 0xde, 0xa7, - 0x87, 0x92, 0x77, 0xe1, 0x5d, 0x9e, 0x9d, 0x1b, 0x68, 0x63, 0xb8, 0x86, 0x09, 0xa1, 0x08, 0x3f, - 0x01, 0x78, 0xaa, 0xd5, 0xef, 0x41, 0xa3, 0xcd, 0x72, 0x38, 0x61, 0xe8, 0x0d, 0xfa, 0xec, 0x30, - 0xa0, 0xa9, 0x70, 0x91, 0xa3, 0x7e, 0x19, 0x9d, 0x0f, 0x83, 0xba, 0x57, 0xfb, 0xef, 0xc5, 0xe0, - 0xc9, 0x42, 0xb8, 0x52, 0x16, 0xfe, 0x8d, 0x52, 0x52, 0x0e, 0xaa, 0x96, 0xde, 0xf6, 0x83, 0x72, - 0x6e, 0x6e, 0xf1, 0x10, 0x25, 0xf5, 0xba, 0xf0, 0xb4, 0xf1, 0x0f, 0x00, 0xa6, 0xec, 0x36, 0x0e, - 0xc8, 0xc3, 0x61, 0xe7, 0xc4, 0x9e, 0x4d, 0xbd, 0xc1, 0xa1, 0xca, 0x0b, 0x6b, 0xd1, 0xef, 0xf4, - 0xfe, 0xfd, 0x99, 0x3f, 0xfb, 0xed, 0x2f, 0x33, 0xe0, 0x86, 0xa4, 0x1a, 0x22, 0xdb, 0x26, 0x8c, - 0x7f, 0x4f, 0x15, 0x75, 0xc2, 0x6e, 0x19, 0x56, 0x45, 0xea, 0xfc, 0x30, 0xd8, 0x58, 0x94, 0xcc, - 0x8a, 0x2a, 0x31, 0xa6, 0x9b, 0x5b, 0x5b, 0xc7, 0x78, 0x80, 0x8b, 0x7f, 0x07, 0x00, 0x00, 0xff, - 0xff, 0xeb, 0xd9, 0xe0, 0x56, 0xd5, 0x15, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// ApplicationPackageRegistryClient is the client API for ApplicationPackageRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ApplicationPackageRegistryClient interface { - // List returns the available packages for the end device. - List(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*ApplicationPackages, error) - // GetAssociation returns the association registered on the FPort of the end device. - GetAssociation(ctx context.Context, in *GetApplicationPackageAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageAssociation, error) - // ListAssociations returns all of the associations of the end device. - ListAssociations(ctx context.Context, in *ListApplicationPackageAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageAssociations, error) - // SetAssociation updates or creates the association on the FPort of the end device. - SetAssociation(ctx context.Context, in *SetApplicationPackageAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageAssociation, error) - // DeleteAssociation removes the association on the FPort of the end device. - DeleteAssociation(ctx context.Context, in *ApplicationPackageAssociationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) - // GetDefaultAssociation returns the default association registered on the FPort of the application. - GetDefaultAssociation(ctx context.Context, in *GetApplicationPackageDefaultAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageDefaultAssociation, error) - // ListDefaultAssociations returns all of the default associations of the application. - ListDefaultAssociations(ctx context.Context, in *ListApplicationPackageDefaultAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageDefaultAssociations, error) - // SetDefaultAssociation updates or creates the default association on the FPort of the application. - SetDefaultAssociation(ctx context.Context, in *SetApplicationPackageDefaultAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageDefaultAssociation, error) - // DeleteDefaultAssociation removes the default association on the FPort of the application. - DeleteDefaultAssociation(ctx context.Context, in *ApplicationPackageDefaultAssociationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) -} - -type applicationPackageRegistryClient struct { - cc *grpc.ClientConn -} +type ListApplicationPackageDefaultAssociationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func NewApplicationPackageRegistryClient(cc *grpc.ClientConn) ApplicationPackageRegistryClient { - return &applicationPackageRegistryClient{cc} + Ids *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` + // Limit the number of results per page. + // Each page is ordered by the FPort. + Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + // Page number for pagination. 0 is interpreted as 1. + Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,4,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (c *applicationPackageRegistryClient) List(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*ApplicationPackages, error) { - out := new(ApplicationPackages) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/List", in, out, opts...) - if err != nil { - return nil, err +func (x *ListApplicationPackageDefaultAssociationRequest) Reset() { + *x = ListApplicationPackageDefaultAssociationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return out, nil } -func (c *applicationPackageRegistryClient) GetAssociation(ctx context.Context, in *GetApplicationPackageAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageAssociation, error) { - out := new(ApplicationPackageAssociation) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/GetAssociation", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +func (x *ListApplicationPackageDefaultAssociationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (c *applicationPackageRegistryClient) ListAssociations(ctx context.Context, in *ListApplicationPackageAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageAssociations, error) { - out := new(ApplicationPackageAssociations) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/ListAssociations", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} +func (*ListApplicationPackageDefaultAssociationRequest) ProtoMessage() {} -func (c *applicationPackageRegistryClient) SetAssociation(ctx context.Context, in *SetApplicationPackageAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageAssociation, error) { - out := new(ApplicationPackageAssociation) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/SetAssociation", in, out, opts...) - if err != nil { - return nil, err +func (x *ListApplicationPackageDefaultAssociationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return out, nil + return mi.MessageOf(x) } -func (c *applicationPackageRegistryClient) DeleteAssociation(ctx context.Context, in *ApplicationPackageAssociationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/DeleteAssociation", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// Deprecated: Use ListApplicationPackageDefaultAssociationRequest.ProtoReflect.Descriptor instead. +func (*ListApplicationPackageDefaultAssociationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_packages_proto_rawDescGZIP(), []int{12} } -func (c *applicationPackageRegistryClient) GetDefaultAssociation(ctx context.Context, in *GetApplicationPackageDefaultAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageDefaultAssociation, error) { - out := new(ApplicationPackageDefaultAssociation) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/GetDefaultAssociation", in, out, opts...) - if err != nil { - return nil, err +func (x *ListApplicationPackageDefaultAssociationRequest) GetIds() *ApplicationIdentifiers { + if x != nil { + return x.Ids } - return out, nil + return nil } -func (c *applicationPackageRegistryClient) ListDefaultAssociations(ctx context.Context, in *ListApplicationPackageDefaultAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageDefaultAssociations, error) { - out := new(ApplicationPackageDefaultAssociations) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/ListDefaultAssociations", in, out, opts...) - if err != nil { - return nil, err +func (x *ListApplicationPackageDefaultAssociationRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } - return out, nil + return 0 } -func (c *applicationPackageRegistryClient) SetDefaultAssociation(ctx context.Context, in *SetApplicationPackageDefaultAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageDefaultAssociation, error) { - out := new(ApplicationPackageDefaultAssociation) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/SetDefaultAssociation", in, out, opts...) - if err != nil { - return nil, err +func (x *ListApplicationPackageDefaultAssociationRequest) GetPage() uint32 { + if x != nil { + return x.Page } - return out, nil + return 0 } -func (c *applicationPackageRegistryClient) DeleteDefaultAssociation(ctx context.Context, in *ApplicationPackageDefaultAssociationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/DeleteDefaultAssociation", in, out, opts...) - if err != nil { - return nil, err +func (x *ListApplicationPackageDefaultAssociationRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } - return out, nil -} - -// ApplicationPackageRegistryServer is the server API for ApplicationPackageRegistry service. -type ApplicationPackageRegistryServer interface { - // List returns the available packages for the end device. - List(context.Context, *EndDeviceIdentifiers) (*ApplicationPackages, error) - // GetAssociation returns the association registered on the FPort of the end device. - GetAssociation(context.Context, *GetApplicationPackageAssociationRequest) (*ApplicationPackageAssociation, error) - // ListAssociations returns all of the associations of the end device. - ListAssociations(context.Context, *ListApplicationPackageAssociationRequest) (*ApplicationPackageAssociations, error) - // SetAssociation updates or creates the association on the FPort of the end device. - SetAssociation(context.Context, *SetApplicationPackageAssociationRequest) (*ApplicationPackageAssociation, error) - // DeleteAssociation removes the association on the FPort of the end device. - DeleteAssociation(context.Context, *ApplicationPackageAssociationIdentifiers) (*types.Empty, error) - // GetDefaultAssociation returns the default association registered on the FPort of the application. - GetDefaultAssociation(context.Context, *GetApplicationPackageDefaultAssociationRequest) (*ApplicationPackageDefaultAssociation, error) - // ListDefaultAssociations returns all of the default associations of the application. - ListDefaultAssociations(context.Context, *ListApplicationPackageDefaultAssociationRequest) (*ApplicationPackageDefaultAssociations, error) - // SetDefaultAssociation updates or creates the default association on the FPort of the application. - SetDefaultAssociation(context.Context, *SetApplicationPackageDefaultAssociationRequest) (*ApplicationPackageDefaultAssociation, error) - // DeleteDefaultAssociation removes the default association on the FPort of the application. - DeleteDefaultAssociation(context.Context, *ApplicationPackageDefaultAssociationIdentifiers) (*types.Empty, error) -} - -// UnimplementedApplicationPackageRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedApplicationPackageRegistryServer struct { -} - -func (*UnimplementedApplicationPackageRegistryServer) List(ctx context.Context, req *EndDeviceIdentifiers) (*ApplicationPackages, error) { - return nil, status.Errorf(codes.Unimplemented, "method List not implemented") -} -func (*UnimplementedApplicationPackageRegistryServer) GetAssociation(ctx context.Context, req *GetApplicationPackageAssociationRequest) (*ApplicationPackageAssociation, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetAssociation not implemented") -} -func (*UnimplementedApplicationPackageRegistryServer) ListAssociations(ctx context.Context, req *ListApplicationPackageAssociationRequest) (*ApplicationPackageAssociations, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListAssociations not implemented") -} -func (*UnimplementedApplicationPackageRegistryServer) SetAssociation(ctx context.Context, req *SetApplicationPackageAssociationRequest) (*ApplicationPackageAssociation, error) { - return nil, status.Errorf(codes.Unimplemented, "method SetAssociation not implemented") -} -func (*UnimplementedApplicationPackageRegistryServer) DeleteAssociation(ctx context.Context, req *ApplicationPackageAssociationIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteAssociation not implemented") -} -func (*UnimplementedApplicationPackageRegistryServer) GetDefaultAssociation(ctx context.Context, req *GetApplicationPackageDefaultAssociationRequest) (*ApplicationPackageDefaultAssociation, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetDefaultAssociation not implemented") -} -func (*UnimplementedApplicationPackageRegistryServer) ListDefaultAssociations(ctx context.Context, req *ListApplicationPackageDefaultAssociationRequest) (*ApplicationPackageDefaultAssociations, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListDefaultAssociations not implemented") -} -func (*UnimplementedApplicationPackageRegistryServer) SetDefaultAssociation(ctx context.Context, req *SetApplicationPackageDefaultAssociationRequest) (*ApplicationPackageDefaultAssociation, error) { - return nil, status.Errorf(codes.Unimplemented, "method SetDefaultAssociation not implemented") -} -func (*UnimplementedApplicationPackageRegistryServer) DeleteDefaultAssociation(ctx context.Context, req *ApplicationPackageDefaultAssociationIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteDefaultAssociation not implemented") + return nil } -func RegisterApplicationPackageRegistryServer(s *grpc.Server, srv ApplicationPackageRegistryServer) { - s.RegisterService(&_ApplicationPackageRegistry_serviceDesc, srv) -} +type SetApplicationPackageDefaultAssociationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func _ApplicationPackageRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(EndDeviceIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationPackageRegistryServer).List(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/List", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationPackageRegistryServer).List(ctx, req.(*EndDeviceIdentifiers)) - } - return interceptor(ctx, in, info, handler) + Default *ApplicationPackageDefaultAssociation `protobuf:"bytes,1,opt,name=default,proto3" json:"default,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func _ApplicationPackageRegistry_GetAssociation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetApplicationPackageAssociationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationPackageRegistryServer).GetAssociation(ctx, in) +func (x *SetApplicationPackageDefaultAssociationRequest) Reset() { + *x = SetApplicationPackageDefaultAssociationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/GetAssociation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationPackageRegistryServer).GetAssociation(ctx, req.(*GetApplicationPackageAssociationRequest)) - } - return interceptor(ctx, in, info, handler) } -func _ApplicationPackageRegistry_ListAssociations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListApplicationPackageAssociationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationPackageRegistryServer).ListAssociations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/ListAssociations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationPackageRegistryServer).ListAssociations(ctx, req.(*ListApplicationPackageAssociationRequest)) - } - return interceptor(ctx, in, info, handler) +func (x *SetApplicationPackageDefaultAssociationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func _ApplicationPackageRegistry_SetAssociation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetApplicationPackageAssociationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationPackageRegistryServer).SetAssociation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/SetAssociation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationPackageRegistryServer).SetAssociation(ctx, req.(*SetApplicationPackageAssociationRequest)) - } - return interceptor(ctx, in, info, handler) -} +func (*SetApplicationPackageDefaultAssociationRequest) ProtoMessage() {} -func _ApplicationPackageRegistry_DeleteAssociation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationPackageAssociationIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationPackageRegistryServer).DeleteAssociation(ctx, in) +func (x *SetApplicationPackageDefaultAssociationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/DeleteAssociation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationPackageRegistryServer).DeleteAssociation(ctx, req.(*ApplicationPackageAssociationIdentifiers)) - } - return interceptor(ctx, in, info, handler) + return mi.MessageOf(x) } -func _ApplicationPackageRegistry_GetDefaultAssociation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetApplicationPackageDefaultAssociationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationPackageRegistryServer).GetDefaultAssociation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/GetDefaultAssociation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationPackageRegistryServer).GetDefaultAssociation(ctx, req.(*GetApplicationPackageDefaultAssociationRequest)) - } - return interceptor(ctx, in, info, handler) +// Deprecated: Use SetApplicationPackageDefaultAssociationRequest.ProtoReflect.Descriptor instead. +func (*SetApplicationPackageDefaultAssociationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_packages_proto_rawDescGZIP(), []int{13} } -func _ApplicationPackageRegistry_ListDefaultAssociations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListApplicationPackageDefaultAssociationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationPackageRegistryServer).ListDefaultAssociations(ctx, in) +func (x *SetApplicationPackageDefaultAssociationRequest) GetDefault() *ApplicationPackageDefaultAssociation { + if x != nil { + return x.Default } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/ListDefaultAssociations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationPackageRegistryServer).ListDefaultAssociations(ctx, req.(*ListApplicationPackageDefaultAssociationRequest)) - } - return interceptor(ctx, in, info, handler) + return nil } -func _ApplicationPackageRegistry_SetDefaultAssociation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetApplicationPackageDefaultAssociationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationPackageRegistryServer).SetDefaultAssociation(ctx, in) +func (x *SetApplicationPackageDefaultAssociationRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/SetDefaultAssociation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationPackageRegistryServer).SetDefaultAssociation(ctx, req.(*SetApplicationPackageDefaultAssociationRequest)) - } - return interceptor(ctx, in, info, handler) + return nil } -func _ApplicationPackageRegistry_DeleteDefaultAssociation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationPackageDefaultAssociationIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationPackageRegistryServer).DeleteDefaultAssociation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/DeleteDefaultAssociation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationPackageRegistryServer).DeleteDefaultAssociation(ctx, req.(*ApplicationPackageDefaultAssociationIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} +var File_lorawan_stack_api_applicationserver_packages_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_applicationserver_packages_proto_rawDesc = []byte{ + 0x0a, 0x32, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, + 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, + 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x83, 0x01, + 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x30, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, + 0x18, 0xff, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x50, + 0x6f, 0x72, 0x74, 0x22, 0x55, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x08, 0x70, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0xad, 0x01, 0x0a, 0x28, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, + 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, + 0x42, 0x07, 0x2a, 0x05, 0x18, 0xff, 0x01, 0x28, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, + 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x8a, 0x03, 0x0a, 0x1d, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x03, + 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, + 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x4a, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, + 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, + 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, + 0x2c, 0x7d, 0x24, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x08, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x73, 0x0a, 0x1e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x51, 0x0a, 0x0c, 0x61, 0x73, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, + 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xba, 0x01, 0x0a, + 0x27, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x39, + 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xdb, 0x01, 0x0a, 0x28, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, + 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0a, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xbf, 0x01, 0x0a, 0x27, 0x53, 0x65, 0x74, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, + 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, + 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xb9, 0x01, 0x0a, 0x2f, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x59, 0x0a, + 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, + 0xff, 0x01, 0x28, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x98, 0x03, 0x0a, 0x24, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x63, + 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, + 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, + 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4a, 0x0a, + 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x0b, 0x70, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, + 0x22, 0x79, 0x0a, 0x25, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x08, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xc8, 0x01, 0x0a, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, + 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5b, + 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xe4, 0x01, 0x0a, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x03, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x1e, + 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xc5, 0x01, + 0x0a, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, + 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x58, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, + 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x32, 0x9e, 0x11, 0x0a, 0x1a, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x72, 0x79, 0x12, 0xa9, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x1a, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x56, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, + 0x12, 0x4e, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, + 0x12, 0x93, 0x02, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x98, 0x01, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x91, 0x01, 0x12, 0x8e, 0x01, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x65, 0x6e, + 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x61, 0x73, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x66, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x12, 0xe9, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x12, 0x63, 0x2f, + 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, + 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0xba, 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, + 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbf, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb8, 0x01, 0x1a, 0xb2, 0x01, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x73, 0x73, 0x6f, + 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x65, 0x6e, 0x64, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x2f, 0x7b, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x69, 0x64, 0x73, 0x2e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x3a, 0x01, 0x2a, 0x12, + 0xf4, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x8c, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x85, + 0x01, 0x2a, 0x82, 0x01, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, + 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, + 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x66, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x12, 0xef, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, + 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, + 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x60, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5a, 0x12, 0x58, + 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x61, + 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, + 0x2e, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x12, 0xd6, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, + 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x43, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x73, 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x82, 0x02, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6d, 0x1a, 0x68, 0x2f, 0x61, 0x73, 0x2f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x73, 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xcd, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, + 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x58, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x52, 0x2a, 0x50, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, + 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x66, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_applicationserver_packages_proto_rawDescOnce sync.Once + file_lorawan_stack_api_applicationserver_packages_proto_rawDescData = file_lorawan_stack_api_applicationserver_packages_proto_rawDesc +) -var _ApplicationPackageRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.ApplicationPackageRegistry", - HandlerType: (*ApplicationPackageRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "List", - Handler: _ApplicationPackageRegistry_List_Handler, - }, - { - MethodName: "GetAssociation", - Handler: _ApplicationPackageRegistry_GetAssociation_Handler, - }, - { - MethodName: "ListAssociations", - Handler: _ApplicationPackageRegistry_ListAssociations_Handler, - }, - { - MethodName: "SetAssociation", - Handler: _ApplicationPackageRegistry_SetAssociation_Handler, - }, - { - MethodName: "DeleteAssociation", - Handler: _ApplicationPackageRegistry_DeleteAssociation_Handler, - }, - { - MethodName: "GetDefaultAssociation", - Handler: _ApplicationPackageRegistry_GetDefaultAssociation_Handler, - }, - { - MethodName: "ListDefaultAssociations", - Handler: _ApplicationPackageRegistry_ListDefaultAssociations_Handler, - }, - { - MethodName: "SetDefaultAssociation", - Handler: _ApplicationPackageRegistry_SetDefaultAssociation_Handler, - }, - { - MethodName: "DeleteDefaultAssociation", - Handler: _ApplicationPackageRegistry_DeleteDefaultAssociation_Handler, +func file_lorawan_stack_api_applicationserver_packages_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_applicationserver_packages_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_applicationserver_packages_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_applicationserver_packages_proto_rawDescData) + }) + return file_lorawan_stack_api_applicationserver_packages_proto_rawDescData +} + +var file_lorawan_stack_api_applicationserver_packages_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_lorawan_stack_api_applicationserver_packages_proto_goTypes = []interface{}{ + (*ApplicationPackage)(nil), // 0: ttn.lorawan.v3.ApplicationPackage + (*ApplicationPackages)(nil), // 1: ttn.lorawan.v3.ApplicationPackages + (*ApplicationPackageAssociationIdentifiers)(nil), // 2: ttn.lorawan.v3.ApplicationPackageAssociationIdentifiers + (*ApplicationPackageAssociation)(nil), // 3: ttn.lorawan.v3.ApplicationPackageAssociation + (*ApplicationPackageAssociations)(nil), // 4: ttn.lorawan.v3.ApplicationPackageAssociations + (*GetApplicationPackageAssociationRequest)(nil), // 5: ttn.lorawan.v3.GetApplicationPackageAssociationRequest + (*ListApplicationPackageAssociationRequest)(nil), // 6: ttn.lorawan.v3.ListApplicationPackageAssociationRequest + (*SetApplicationPackageAssociationRequest)(nil), // 7: ttn.lorawan.v3.SetApplicationPackageAssociationRequest + (*ApplicationPackageDefaultAssociationIdentifiers)(nil), // 8: ttn.lorawan.v3.ApplicationPackageDefaultAssociationIdentifiers + (*ApplicationPackageDefaultAssociation)(nil), // 9: ttn.lorawan.v3.ApplicationPackageDefaultAssociation + (*ApplicationPackageDefaultAssociations)(nil), // 10: ttn.lorawan.v3.ApplicationPackageDefaultAssociations + (*GetApplicationPackageDefaultAssociationRequest)(nil), // 11: ttn.lorawan.v3.GetApplicationPackageDefaultAssociationRequest + (*ListApplicationPackageDefaultAssociationRequest)(nil), // 12: ttn.lorawan.v3.ListApplicationPackageDefaultAssociationRequest + (*SetApplicationPackageDefaultAssociationRequest)(nil), // 13: ttn.lorawan.v3.SetApplicationPackageDefaultAssociationRequest + (*EndDeviceIdentifiers)(nil), // 14: ttn.lorawan.v3.EndDeviceIdentifiers + (*timestamppb.Timestamp)(nil), // 15: google.protobuf.Timestamp + (*structpb.Struct)(nil), // 16: google.protobuf.Struct + (*fieldmaskpb.FieldMask)(nil), // 17: google.protobuf.FieldMask + (*ApplicationIdentifiers)(nil), // 18: ttn.lorawan.v3.ApplicationIdentifiers + (*emptypb.Empty)(nil), // 19: google.protobuf.Empty +} +var file_lorawan_stack_api_applicationserver_packages_proto_depIdxs = []int32{ + 0, // 0: ttn.lorawan.v3.ApplicationPackages.packages:type_name -> ttn.lorawan.v3.ApplicationPackage + 14, // 1: ttn.lorawan.v3.ApplicationPackageAssociationIdentifiers.end_device_ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 2, // 2: ttn.lorawan.v3.ApplicationPackageAssociation.ids:type_name -> ttn.lorawan.v3.ApplicationPackageAssociationIdentifiers + 15, // 3: ttn.lorawan.v3.ApplicationPackageAssociation.created_at:type_name -> google.protobuf.Timestamp + 15, // 4: ttn.lorawan.v3.ApplicationPackageAssociation.updated_at:type_name -> google.protobuf.Timestamp + 16, // 5: ttn.lorawan.v3.ApplicationPackageAssociation.data:type_name -> google.protobuf.Struct + 3, // 6: ttn.lorawan.v3.ApplicationPackageAssociations.associations:type_name -> ttn.lorawan.v3.ApplicationPackageAssociation + 2, // 7: ttn.lorawan.v3.GetApplicationPackageAssociationRequest.ids:type_name -> ttn.lorawan.v3.ApplicationPackageAssociationIdentifiers + 17, // 8: ttn.lorawan.v3.GetApplicationPackageAssociationRequest.field_mask:type_name -> google.protobuf.FieldMask + 14, // 9: ttn.lorawan.v3.ListApplicationPackageAssociationRequest.ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 17, // 10: ttn.lorawan.v3.ListApplicationPackageAssociationRequest.field_mask:type_name -> google.protobuf.FieldMask + 3, // 11: ttn.lorawan.v3.SetApplicationPackageAssociationRequest.association:type_name -> ttn.lorawan.v3.ApplicationPackageAssociation + 17, // 12: ttn.lorawan.v3.SetApplicationPackageAssociationRequest.field_mask:type_name -> google.protobuf.FieldMask + 18, // 13: ttn.lorawan.v3.ApplicationPackageDefaultAssociationIdentifiers.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 8, // 14: ttn.lorawan.v3.ApplicationPackageDefaultAssociation.ids:type_name -> ttn.lorawan.v3.ApplicationPackageDefaultAssociationIdentifiers + 15, // 15: ttn.lorawan.v3.ApplicationPackageDefaultAssociation.created_at:type_name -> google.protobuf.Timestamp + 15, // 16: ttn.lorawan.v3.ApplicationPackageDefaultAssociation.updated_at:type_name -> google.protobuf.Timestamp + 16, // 17: ttn.lorawan.v3.ApplicationPackageDefaultAssociation.data:type_name -> google.protobuf.Struct + 9, // 18: ttn.lorawan.v3.ApplicationPackageDefaultAssociations.defaults:type_name -> ttn.lorawan.v3.ApplicationPackageDefaultAssociation + 8, // 19: ttn.lorawan.v3.GetApplicationPackageDefaultAssociationRequest.ids:type_name -> ttn.lorawan.v3.ApplicationPackageDefaultAssociationIdentifiers + 17, // 20: ttn.lorawan.v3.GetApplicationPackageDefaultAssociationRequest.field_mask:type_name -> google.protobuf.FieldMask + 18, // 21: ttn.lorawan.v3.ListApplicationPackageDefaultAssociationRequest.ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 17, // 22: ttn.lorawan.v3.ListApplicationPackageDefaultAssociationRequest.field_mask:type_name -> google.protobuf.FieldMask + 9, // 23: ttn.lorawan.v3.SetApplicationPackageDefaultAssociationRequest.default:type_name -> ttn.lorawan.v3.ApplicationPackageDefaultAssociation + 17, // 24: ttn.lorawan.v3.SetApplicationPackageDefaultAssociationRequest.field_mask:type_name -> google.protobuf.FieldMask + 14, // 25: ttn.lorawan.v3.ApplicationPackageRegistry.List:input_type -> ttn.lorawan.v3.EndDeviceIdentifiers + 5, // 26: ttn.lorawan.v3.ApplicationPackageRegistry.GetAssociation:input_type -> ttn.lorawan.v3.GetApplicationPackageAssociationRequest + 6, // 27: ttn.lorawan.v3.ApplicationPackageRegistry.ListAssociations:input_type -> ttn.lorawan.v3.ListApplicationPackageAssociationRequest + 7, // 28: ttn.lorawan.v3.ApplicationPackageRegistry.SetAssociation:input_type -> ttn.lorawan.v3.SetApplicationPackageAssociationRequest + 2, // 29: ttn.lorawan.v3.ApplicationPackageRegistry.DeleteAssociation:input_type -> ttn.lorawan.v3.ApplicationPackageAssociationIdentifiers + 11, // 30: ttn.lorawan.v3.ApplicationPackageRegistry.GetDefaultAssociation:input_type -> ttn.lorawan.v3.GetApplicationPackageDefaultAssociationRequest + 12, // 31: ttn.lorawan.v3.ApplicationPackageRegistry.ListDefaultAssociations:input_type -> ttn.lorawan.v3.ListApplicationPackageDefaultAssociationRequest + 13, // 32: ttn.lorawan.v3.ApplicationPackageRegistry.SetDefaultAssociation:input_type -> ttn.lorawan.v3.SetApplicationPackageDefaultAssociationRequest + 8, // 33: ttn.lorawan.v3.ApplicationPackageRegistry.DeleteDefaultAssociation:input_type -> ttn.lorawan.v3.ApplicationPackageDefaultAssociationIdentifiers + 1, // 34: ttn.lorawan.v3.ApplicationPackageRegistry.List:output_type -> ttn.lorawan.v3.ApplicationPackages + 3, // 35: ttn.lorawan.v3.ApplicationPackageRegistry.GetAssociation:output_type -> ttn.lorawan.v3.ApplicationPackageAssociation + 4, // 36: ttn.lorawan.v3.ApplicationPackageRegistry.ListAssociations:output_type -> ttn.lorawan.v3.ApplicationPackageAssociations + 3, // 37: ttn.lorawan.v3.ApplicationPackageRegistry.SetAssociation:output_type -> ttn.lorawan.v3.ApplicationPackageAssociation + 19, // 38: ttn.lorawan.v3.ApplicationPackageRegistry.DeleteAssociation:output_type -> google.protobuf.Empty + 9, // 39: ttn.lorawan.v3.ApplicationPackageRegistry.GetDefaultAssociation:output_type -> ttn.lorawan.v3.ApplicationPackageDefaultAssociation + 10, // 40: ttn.lorawan.v3.ApplicationPackageRegistry.ListDefaultAssociations:output_type -> ttn.lorawan.v3.ApplicationPackageDefaultAssociations + 9, // 41: ttn.lorawan.v3.ApplicationPackageRegistry.SetDefaultAssociation:output_type -> ttn.lorawan.v3.ApplicationPackageDefaultAssociation + 19, // 42: ttn.lorawan.v3.ApplicationPackageRegistry.DeleteDefaultAssociation:output_type -> google.protobuf.Empty + 34, // [34:43] is the sub-list for method output_type + 25, // [25:34] is the sub-list for method input_type + 25, // [25:25] is the sub-list for extension type_name + 25, // [25:25] is the sub-list for extension extendee + 0, // [0:25] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_applicationserver_packages_proto_init() } +func file_lorawan_stack_api_applicationserver_packages_proto_init() { + if File_lorawan_stack_api_applicationserver_packages_proto != nil { + return + } + file_lorawan_stack_api_identifiers_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPackage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPackages); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPackageAssociationIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPackageAssociation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPackageAssociations); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetApplicationPackageAssociationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListApplicationPackageAssociationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetApplicationPackageAssociationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPackageDefaultAssociationIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPackageDefaultAssociation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPackageDefaultAssociations); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetApplicationPackageDefaultAssociationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListApplicationPackageDefaultAssociationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_packages_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetApplicationPackageDefaultAssociationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_applicationserver_packages_proto_rawDesc, + NumEnums: 0, + NumMessages: 14, + NumExtensions: 0, + NumServices: 1, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/applicationserver_packages.proto", + GoTypes: file_lorawan_stack_api_applicationserver_packages_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_applicationserver_packages_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_applicationserver_packages_proto_msgTypes, + }.Build() + File_lorawan_stack_api_applicationserver_packages_proto = out.File + file_lorawan_stack_api_applicationserver_packages_proto_rawDesc = nil + file_lorawan_stack_api_applicationserver_packages_proto_goTypes = nil + file_lorawan_stack_api_applicationserver_packages_proto_depIdxs = nil } diff --git a/pkg/ttnpb/applicationserver_packages.pb.gw.go b/pkg/ttnpb/applicationserver_packages.pb.gw.go index 83aa22d22f..12533a7441 100644 --- a/pkg/ttnpb/applicationserver_packages.pb.gw.go +++ b/pkg/ttnpb/applicationserver_packages.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join var ( @@ -54,7 +52,6 @@ func request_ApplicationPackageRegistry_List_0(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -65,7 +62,6 @@ func request_ApplicationPackageRegistry_List_0(ctx context.Context, marshaler ru } protoReq.DeviceId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "device_id", err) } @@ -99,7 +95,6 @@ func local_request_ApplicationPackageRegistry_List_0(ctx context.Context, marsha } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -110,7 +105,6 @@ func local_request_ApplicationPackageRegistry_List_0(ctx context.Context, marsha } protoReq.DeviceId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "device_id", err) } @@ -148,7 +142,6 @@ func request_ApplicationPackageRegistry_GetAssociation_0(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "ids.end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.end_device_ids.application_ids.application_id", err) } @@ -159,7 +152,6 @@ func request_ApplicationPackageRegistry_GetAssociation_0(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "ids.end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.end_device_ids.device_id", err) } @@ -170,7 +162,6 @@ func request_ApplicationPackageRegistry_GetAssociation_0(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "ids.f_port", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.f_port", err) } @@ -204,7 +195,6 @@ func local_request_ApplicationPackageRegistry_GetAssociation_0(ctx context.Conte } err = runtime.PopulateFieldFromPath(&protoReq, "ids.end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.end_device_ids.application_ids.application_id", err) } @@ -215,7 +205,6 @@ func local_request_ApplicationPackageRegistry_GetAssociation_0(ctx context.Conte } err = runtime.PopulateFieldFromPath(&protoReq, "ids.end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.end_device_ids.device_id", err) } @@ -226,7 +215,6 @@ func local_request_ApplicationPackageRegistry_GetAssociation_0(ctx context.Conte } err = runtime.PopulateFieldFromPath(&protoReq, "ids.f_port", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.f_port", err) } @@ -264,7 +252,6 @@ func request_ApplicationPackageRegistry_ListAssociations_0(ctx context.Context, } err = runtime.PopulateFieldFromPath(&protoReq, "ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.application_ids.application_id", err) } @@ -275,7 +262,6 @@ func request_ApplicationPackageRegistry_ListAssociations_0(ctx context.Context, } err = runtime.PopulateFieldFromPath(&protoReq, "ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.device_id", err) } @@ -309,7 +295,6 @@ func local_request_ApplicationPackageRegistry_ListAssociations_0(ctx context.Con } err = runtime.PopulateFieldFromPath(&protoReq, "ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.application_ids.application_id", err) } @@ -320,7 +305,6 @@ func local_request_ApplicationPackageRegistry_ListAssociations_0(ctx context.Con } err = runtime.PopulateFieldFromPath(&protoReq, "ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.device_id", err) } @@ -362,7 +346,6 @@ func request_ApplicationPackageRegistry_SetAssociation_0(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "association.ids.end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "association.ids.end_device_ids.application_ids.application_id", err) } @@ -373,7 +356,6 @@ func request_ApplicationPackageRegistry_SetAssociation_0(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "association.ids.end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "association.ids.end_device_ids.device_id", err) } @@ -384,7 +366,6 @@ func request_ApplicationPackageRegistry_SetAssociation_0(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "association.ids.f_port", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "association.ids.f_port", err) } @@ -419,7 +400,6 @@ func local_request_ApplicationPackageRegistry_SetAssociation_0(ctx context.Conte } err = runtime.PopulateFieldFromPath(&protoReq, "association.ids.end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "association.ids.end_device_ids.application_ids.application_id", err) } @@ -430,7 +410,6 @@ func local_request_ApplicationPackageRegistry_SetAssociation_0(ctx context.Conte } err = runtime.PopulateFieldFromPath(&protoReq, "association.ids.end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "association.ids.end_device_ids.device_id", err) } @@ -441,7 +420,6 @@ func local_request_ApplicationPackageRegistry_SetAssociation_0(ctx context.Conte } err = runtime.PopulateFieldFromPath(&protoReq, "association.ids.f_port", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "association.ids.f_port", err) } @@ -472,7 +450,6 @@ func request_ApplicationPackageRegistry_DeleteAssociation_0(ctx context.Context, } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -483,7 +460,6 @@ func request_ApplicationPackageRegistry_DeleteAssociation_0(ctx context.Context, } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -494,7 +470,6 @@ func request_ApplicationPackageRegistry_DeleteAssociation_0(ctx context.Context, } protoReq.FPort, err = runtime.Uint32(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "f_port", err) } @@ -528,7 +503,6 @@ func local_request_ApplicationPackageRegistry_DeleteAssociation_0(ctx context.Co } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -539,7 +513,6 @@ func local_request_ApplicationPackageRegistry_DeleteAssociation_0(ctx context.Co } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -550,7 +523,6 @@ func local_request_ApplicationPackageRegistry_DeleteAssociation_0(ctx context.Co } protoReq.FPort, err = runtime.Uint32(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "f_port", err) } @@ -588,7 +560,6 @@ func request_ApplicationPackageRegistry_GetDefaultAssociation_0(ctx context.Cont } err = runtime.PopulateFieldFromPath(&protoReq, "ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.application_ids.application_id", err) } @@ -599,7 +570,6 @@ func request_ApplicationPackageRegistry_GetDefaultAssociation_0(ctx context.Cont } err = runtime.PopulateFieldFromPath(&protoReq, "ids.f_port", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.f_port", err) } @@ -633,7 +603,6 @@ func local_request_ApplicationPackageRegistry_GetDefaultAssociation_0(ctx contex } err = runtime.PopulateFieldFromPath(&protoReq, "ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.application_ids.application_id", err) } @@ -644,7 +613,6 @@ func local_request_ApplicationPackageRegistry_GetDefaultAssociation_0(ctx contex } err = runtime.PopulateFieldFromPath(&protoReq, "ids.f_port", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.f_port", err) } @@ -682,7 +650,6 @@ func request_ApplicationPackageRegistry_ListDefaultAssociations_0(ctx context.Co } err = runtime.PopulateFieldFromPath(&protoReq, "ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.application_id", err) } @@ -716,7 +683,6 @@ func local_request_ApplicationPackageRegistry_ListDefaultAssociations_0(ctx cont } err = runtime.PopulateFieldFromPath(&protoReq, "ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.application_id", err) } @@ -758,7 +724,6 @@ func request_ApplicationPackageRegistry_SetDefaultAssociation_0(ctx context.Cont } err = runtime.PopulateFieldFromPath(&protoReq, "default.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "default.ids.application_ids.application_id", err) } @@ -769,7 +734,6 @@ func request_ApplicationPackageRegistry_SetDefaultAssociation_0(ctx context.Cont } err = runtime.PopulateFieldFromPath(&protoReq, "default.ids.f_port", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "default.ids.f_port", err) } @@ -804,7 +768,6 @@ func local_request_ApplicationPackageRegistry_SetDefaultAssociation_0(ctx contex } err = runtime.PopulateFieldFromPath(&protoReq, "default.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "default.ids.application_ids.application_id", err) } @@ -815,7 +778,6 @@ func local_request_ApplicationPackageRegistry_SetDefaultAssociation_0(ctx contex } err = runtime.PopulateFieldFromPath(&protoReq, "default.ids.f_port", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "default.ids.f_port", err) } @@ -846,7 +808,6 @@ func request_ApplicationPackageRegistry_DeleteDefaultAssociation_0(ctx context.C } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -857,7 +818,6 @@ func request_ApplicationPackageRegistry_DeleteDefaultAssociation_0(ctx context.C } protoReq.FPort, err = runtime.Uint32(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "f_port", err) } @@ -891,7 +851,6 @@ func local_request_ApplicationPackageRegistry_DeleteDefaultAssociation_0(ctx con } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -902,7 +861,6 @@ func local_request_ApplicationPackageRegistry_DeleteDefaultAssociation_0(ctx con } protoReq.FPort, err = runtime.Uint32(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "f_port", err) } @@ -931,20 +889,22 @@ func RegisterApplicationPackageRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/List", runtime.WithHTTPPathPattern("/as/applications/{application_ids.application_id}/devices/{device_id}/packages")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationPackageRegistry_List_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationPackageRegistry_List_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -954,20 +914,22 @@ func RegisterApplicationPackageRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/GetAssociation", runtime.WithHTTPPathPattern("/as/applications/{ids.end_device_ids.application_ids.application_id}/devices/{ids.end_device_ids.device_id}/packages/associations/{ids.f_port}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationPackageRegistry_GetAssociation_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationPackageRegistry_GetAssociation_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_GetAssociation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_GetAssociation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -977,20 +939,22 @@ func RegisterApplicationPackageRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/ListAssociations", runtime.WithHTTPPathPattern("/as/applications/{ids.application_ids.application_id}/devices/{ids.device_id}/packages/associations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationPackageRegistry_ListAssociations_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationPackageRegistry_ListAssociations_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_ListAssociations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_ListAssociations_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1000,20 +964,22 @@ func RegisterApplicationPackageRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/SetAssociation", runtime.WithHTTPPathPattern("/as/applications/{association.ids.end_device_ids.application_ids.application_id}/devices/{association.ids.end_device_ids.device_id}/packages/associations/{association.ids.f_port}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationPackageRegistry_SetAssociation_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationPackageRegistry_SetAssociation_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_SetAssociation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_SetAssociation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1023,20 +989,22 @@ func RegisterApplicationPackageRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/DeleteAssociation", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/packages/associations/{f_port}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationPackageRegistry_DeleteAssociation_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationPackageRegistry_DeleteAssociation_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_DeleteAssociation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_DeleteAssociation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1046,20 +1014,22 @@ func RegisterApplicationPackageRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/GetDefaultAssociation", runtime.WithHTTPPathPattern("/as/applications/{ids.application_ids.application_id}/packages/associations/{ids.f_port}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationPackageRegistry_GetDefaultAssociation_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationPackageRegistry_GetDefaultAssociation_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_GetDefaultAssociation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_GetDefaultAssociation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1069,20 +1039,22 @@ func RegisterApplicationPackageRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/ListDefaultAssociations", runtime.WithHTTPPathPattern("/as/applications/{ids.application_id}/packages/associations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationPackageRegistry_ListDefaultAssociations_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationPackageRegistry_ListDefaultAssociations_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_ListDefaultAssociations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_ListDefaultAssociations_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1092,20 +1064,22 @@ func RegisterApplicationPackageRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/SetDefaultAssociation", runtime.WithHTTPPathPattern("/as/applications/{default.ids.application_ids.application_id}/packages/associations/{default.ids.f_port}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationPackageRegistry_SetDefaultAssociation_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationPackageRegistry_SetDefaultAssociation_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_SetDefaultAssociation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_SetDefaultAssociation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1115,20 +1089,22 @@ func RegisterApplicationPackageRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/DeleteDefaultAssociation", runtime.WithHTTPPathPattern("/as/applications/{application_ids.application_id}/packages/associations/{f_port}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationPackageRegistry_DeleteDefaultAssociation_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationPackageRegistry_DeleteDefaultAssociation_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_DeleteDefaultAssociation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_DeleteDefaultAssociation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1177,19 +1153,21 @@ func RegisterApplicationPackageRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/List", runtime.WithHTTPPathPattern("/as/applications/{application_ids.application_id}/devices/{device_id}/packages")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationPackageRegistry_List_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationPackageRegistry_List_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1197,19 +1175,21 @@ func RegisterApplicationPackageRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/GetAssociation", runtime.WithHTTPPathPattern("/as/applications/{ids.end_device_ids.application_ids.application_id}/devices/{ids.end_device_ids.device_id}/packages/associations/{ids.f_port}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationPackageRegistry_GetAssociation_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationPackageRegistry_GetAssociation_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_GetAssociation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_GetAssociation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1217,19 +1197,21 @@ func RegisterApplicationPackageRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/ListAssociations", runtime.WithHTTPPathPattern("/as/applications/{ids.application_ids.application_id}/devices/{ids.device_id}/packages/associations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationPackageRegistry_ListAssociations_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationPackageRegistry_ListAssociations_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_ListAssociations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_ListAssociations_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1237,19 +1219,21 @@ func RegisterApplicationPackageRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/SetAssociation", runtime.WithHTTPPathPattern("/as/applications/{association.ids.end_device_ids.application_ids.application_id}/devices/{association.ids.end_device_ids.device_id}/packages/associations/{association.ids.f_port}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationPackageRegistry_SetAssociation_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationPackageRegistry_SetAssociation_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_SetAssociation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_SetAssociation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1257,19 +1241,21 @@ func RegisterApplicationPackageRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/DeleteAssociation", runtime.WithHTTPPathPattern("/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/packages/associations/{f_port}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationPackageRegistry_DeleteAssociation_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationPackageRegistry_DeleteAssociation_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_DeleteAssociation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_DeleteAssociation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1277,19 +1263,21 @@ func RegisterApplicationPackageRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/GetDefaultAssociation", runtime.WithHTTPPathPattern("/as/applications/{ids.application_ids.application_id}/packages/associations/{ids.f_port}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationPackageRegistry_GetDefaultAssociation_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationPackageRegistry_GetDefaultAssociation_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_GetDefaultAssociation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_GetDefaultAssociation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1297,19 +1285,21 @@ func RegisterApplicationPackageRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/ListDefaultAssociations", runtime.WithHTTPPathPattern("/as/applications/{ids.application_id}/packages/associations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationPackageRegistry_ListDefaultAssociations_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationPackageRegistry_ListDefaultAssociations_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_ListDefaultAssociations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_ListDefaultAssociations_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1317,19 +1307,21 @@ func RegisterApplicationPackageRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/SetDefaultAssociation", runtime.WithHTTPPathPattern("/as/applications/{default.ids.application_ids.application_id}/packages/associations/{default.ids.f_port}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationPackageRegistry_SetDefaultAssociation_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationPackageRegistry_SetDefaultAssociation_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_SetDefaultAssociation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_SetDefaultAssociation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1337,19 +1329,21 @@ func RegisterApplicationPackageRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPackageRegistry/DeleteDefaultAssociation", runtime.WithHTTPPathPattern("/as/applications/{application_ids.application_id}/packages/associations/{f_port}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationPackageRegistry_DeleteDefaultAssociation_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationPackageRegistry_DeleteDefaultAssociation_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPackageRegistry_DeleteDefaultAssociation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPackageRegistry_DeleteDefaultAssociation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1357,23 +1351,23 @@ func RegisterApplicationPackageRegistryHandlerClient(ctx context.Context, mux *r } var ( - pattern_ApplicationPackageRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"as", "applications", "application_ids.application_id", "devices", "device_id", "packages"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationPackageRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"as", "applications", "application_ids.application_id", "devices", "device_id", "packages"}, "")) - pattern_ApplicationPackageRegistry_GetAssociation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"as", "applications", "ids.end_device_ids.application_ids.application_id", "devices", "ids.end_device_ids.device_id", "packages", "associations", "ids.f_port"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationPackageRegistry_GetAssociation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"as", "applications", "ids.end_device_ids.application_ids.application_id", "devices", "ids.end_device_ids.device_id", "packages", "associations", "ids.f_port"}, "")) - pattern_ApplicationPackageRegistry_ListAssociations_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"as", "applications", "ids.application_ids.application_id", "devices", "ids.device_id", "packages", "associations"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationPackageRegistry_ListAssociations_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"as", "applications", "ids.application_ids.application_id", "devices", "ids.device_id", "packages", "associations"}, "")) - pattern_ApplicationPackageRegistry_SetAssociation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"as", "applications", "association.ids.end_device_ids.application_ids.application_id", "devices", "association.ids.end_device_ids.device_id", "packages", "associations", "association.ids.f_port"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationPackageRegistry_SetAssociation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"as", "applications", "association.ids.end_device_ids.application_ids.application_id", "devices", "association.ids.end_device_ids.device_id", "packages", "associations", "association.ids.f_port"}, "")) - pattern_ApplicationPackageRegistry_DeleteAssociation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "packages", "associations", "f_port"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationPackageRegistry_DeleteAssociation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"as", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id", "packages", "associations", "f_port"}, "")) - pattern_ApplicationPackageRegistry_GetDefaultAssociation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"as", "applications", "ids.application_ids.application_id", "packages", "associations", "ids.f_port"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationPackageRegistry_GetDefaultAssociation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"as", "applications", "ids.application_ids.application_id", "packages", "associations", "ids.f_port"}, "")) - pattern_ApplicationPackageRegistry_ListDefaultAssociations_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"as", "applications", "ids.application_id", "packages", "associations"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationPackageRegistry_ListDefaultAssociations_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"as", "applications", "ids.application_id", "packages", "associations"}, "")) - pattern_ApplicationPackageRegistry_SetDefaultAssociation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"as", "applications", "default.ids.application_ids.application_id", "packages", "associations", "default.ids.f_port"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationPackageRegistry_SetDefaultAssociation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"as", "applications", "default.ids.application_ids.application_id", "packages", "associations", "default.ids.f_port"}, "")) - pattern_ApplicationPackageRegistry_DeleteDefaultAssociation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"as", "applications", "application_ids.application_id", "packages", "associations", "f_port"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationPackageRegistry_DeleteDefaultAssociation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"as", "applications", "application_ids.application_id", "packages", "associations", "f_port"}, "")) ) var ( diff --git a/pkg/ttnpb/applicationserver_packages.pb.validate.go b/pkg/ttnpb/applicationserver_packages.pb.validate.go index aa78ba43ad..bdb76b7e6a 100644 --- a/pkg/ttnpb/applicationserver_packages.pb.validate.go +++ b/pkg/ttnpb/applicationserver_packages.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _applicationserver_packages_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on ApplicationPackage with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/applicationserver_packages_flags.pb.go b/pkg/ttnpb/applicationserver_packages_flags.pb.go index b5c09b0b46..43bbc0753a 100644 --- a/pkg/ttnpb/applicationserver_packages_flags.pb.go +++ b/pkg/ttnpb/applicationserver_packages_flags.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/applicationserver_packages.proto package ttnpb diff --git a/pkg/ttnpb/applicationserver_packages_grpc.pb.go b/pkg/ttnpb/applicationserver_packages_grpc.pb.go new file mode 100644 index 0000000000..5859e9ff67 --- /dev/null +++ b/pkg/ttnpb/applicationserver_packages_grpc.pb.go @@ -0,0 +1,413 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/applicationserver_packages.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// ApplicationPackageRegistryClient is the client API for ApplicationPackageRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ApplicationPackageRegistryClient interface { + // List returns the available packages for the end device. + List(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*ApplicationPackages, error) + // GetAssociation returns the association registered on the FPort of the end device. + GetAssociation(ctx context.Context, in *GetApplicationPackageAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageAssociation, error) + // ListAssociations returns all of the associations of the end device. + ListAssociations(ctx context.Context, in *ListApplicationPackageAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageAssociations, error) + // SetAssociation updates or creates the association on the FPort of the end device. + SetAssociation(ctx context.Context, in *SetApplicationPackageAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageAssociation, error) + // DeleteAssociation removes the association on the FPort of the end device. + DeleteAssociation(ctx context.Context, in *ApplicationPackageAssociationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) + // GetDefaultAssociation returns the default association registered on the FPort of the application. + GetDefaultAssociation(ctx context.Context, in *GetApplicationPackageDefaultAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageDefaultAssociation, error) + // ListDefaultAssociations returns all of the default associations of the application. + ListDefaultAssociations(ctx context.Context, in *ListApplicationPackageDefaultAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageDefaultAssociations, error) + // SetDefaultAssociation updates or creates the default association on the FPort of the application. + SetDefaultAssociation(ctx context.Context, in *SetApplicationPackageDefaultAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageDefaultAssociation, error) + // DeleteDefaultAssociation removes the default association on the FPort of the application. + DeleteDefaultAssociation(ctx context.Context, in *ApplicationPackageDefaultAssociationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type applicationPackageRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewApplicationPackageRegistryClient(cc grpc.ClientConnInterface) ApplicationPackageRegistryClient { + return &applicationPackageRegistryClient{cc} +} + +func (c *applicationPackageRegistryClient) List(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*ApplicationPackages, error) { + out := new(ApplicationPackages) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/List", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationPackageRegistryClient) GetAssociation(ctx context.Context, in *GetApplicationPackageAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageAssociation, error) { + out := new(ApplicationPackageAssociation) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/GetAssociation", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationPackageRegistryClient) ListAssociations(ctx context.Context, in *ListApplicationPackageAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageAssociations, error) { + out := new(ApplicationPackageAssociations) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/ListAssociations", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationPackageRegistryClient) SetAssociation(ctx context.Context, in *SetApplicationPackageAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageAssociation, error) { + out := new(ApplicationPackageAssociation) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/SetAssociation", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationPackageRegistryClient) DeleteAssociation(ctx context.Context, in *ApplicationPackageAssociationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/DeleteAssociation", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationPackageRegistryClient) GetDefaultAssociation(ctx context.Context, in *GetApplicationPackageDefaultAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageDefaultAssociation, error) { + out := new(ApplicationPackageDefaultAssociation) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/GetDefaultAssociation", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationPackageRegistryClient) ListDefaultAssociations(ctx context.Context, in *ListApplicationPackageDefaultAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageDefaultAssociations, error) { + out := new(ApplicationPackageDefaultAssociations) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/ListDefaultAssociations", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationPackageRegistryClient) SetDefaultAssociation(ctx context.Context, in *SetApplicationPackageDefaultAssociationRequest, opts ...grpc.CallOption) (*ApplicationPackageDefaultAssociation, error) { + out := new(ApplicationPackageDefaultAssociation) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/SetDefaultAssociation", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationPackageRegistryClient) DeleteDefaultAssociation(ctx context.Context, in *ApplicationPackageDefaultAssociationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPackageRegistry/DeleteDefaultAssociation", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ApplicationPackageRegistryServer is the server API for ApplicationPackageRegistry service. +// All implementations must embed UnimplementedApplicationPackageRegistryServer +// for forward compatibility +type ApplicationPackageRegistryServer interface { + // List returns the available packages for the end device. + List(context.Context, *EndDeviceIdentifiers) (*ApplicationPackages, error) + // GetAssociation returns the association registered on the FPort of the end device. + GetAssociation(context.Context, *GetApplicationPackageAssociationRequest) (*ApplicationPackageAssociation, error) + // ListAssociations returns all of the associations of the end device. + ListAssociations(context.Context, *ListApplicationPackageAssociationRequest) (*ApplicationPackageAssociations, error) + // SetAssociation updates or creates the association on the FPort of the end device. + SetAssociation(context.Context, *SetApplicationPackageAssociationRequest) (*ApplicationPackageAssociation, error) + // DeleteAssociation removes the association on the FPort of the end device. + DeleteAssociation(context.Context, *ApplicationPackageAssociationIdentifiers) (*emptypb.Empty, error) + // GetDefaultAssociation returns the default association registered on the FPort of the application. + GetDefaultAssociation(context.Context, *GetApplicationPackageDefaultAssociationRequest) (*ApplicationPackageDefaultAssociation, error) + // ListDefaultAssociations returns all of the default associations of the application. + ListDefaultAssociations(context.Context, *ListApplicationPackageDefaultAssociationRequest) (*ApplicationPackageDefaultAssociations, error) + // SetDefaultAssociation updates or creates the default association on the FPort of the application. + SetDefaultAssociation(context.Context, *SetApplicationPackageDefaultAssociationRequest) (*ApplicationPackageDefaultAssociation, error) + // DeleteDefaultAssociation removes the default association on the FPort of the application. + DeleteDefaultAssociation(context.Context, *ApplicationPackageDefaultAssociationIdentifiers) (*emptypb.Empty, error) + mustEmbedUnimplementedApplicationPackageRegistryServer() +} + +// UnimplementedApplicationPackageRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedApplicationPackageRegistryServer struct { +} + +func (UnimplementedApplicationPackageRegistryServer) List(context.Context, *EndDeviceIdentifiers) (*ApplicationPackages, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedApplicationPackageRegistryServer) GetAssociation(context.Context, *GetApplicationPackageAssociationRequest) (*ApplicationPackageAssociation, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAssociation not implemented") +} +func (UnimplementedApplicationPackageRegistryServer) ListAssociations(context.Context, *ListApplicationPackageAssociationRequest) (*ApplicationPackageAssociations, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListAssociations not implemented") +} +func (UnimplementedApplicationPackageRegistryServer) SetAssociation(context.Context, *SetApplicationPackageAssociationRequest) (*ApplicationPackageAssociation, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetAssociation not implemented") +} +func (UnimplementedApplicationPackageRegistryServer) DeleteAssociation(context.Context, *ApplicationPackageAssociationIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteAssociation not implemented") +} +func (UnimplementedApplicationPackageRegistryServer) GetDefaultAssociation(context.Context, *GetApplicationPackageDefaultAssociationRequest) (*ApplicationPackageDefaultAssociation, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDefaultAssociation not implemented") +} +func (UnimplementedApplicationPackageRegistryServer) ListDefaultAssociations(context.Context, *ListApplicationPackageDefaultAssociationRequest) (*ApplicationPackageDefaultAssociations, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListDefaultAssociations not implemented") +} +func (UnimplementedApplicationPackageRegistryServer) SetDefaultAssociation(context.Context, *SetApplicationPackageDefaultAssociationRequest) (*ApplicationPackageDefaultAssociation, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetDefaultAssociation not implemented") +} +func (UnimplementedApplicationPackageRegistryServer) DeleteDefaultAssociation(context.Context, *ApplicationPackageDefaultAssociationIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteDefaultAssociation not implemented") +} +func (UnimplementedApplicationPackageRegistryServer) mustEmbedUnimplementedApplicationPackageRegistryServer() { +} + +// UnsafeApplicationPackageRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ApplicationPackageRegistryServer will +// result in compilation errors. +type UnsafeApplicationPackageRegistryServer interface { + mustEmbedUnimplementedApplicationPackageRegistryServer() +} + +func RegisterApplicationPackageRegistryServer(s grpc.ServiceRegistrar, srv ApplicationPackageRegistryServer) { + s.RegisterService(&ApplicationPackageRegistry_ServiceDesc, srv) +} + +func _ApplicationPackageRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EndDeviceIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationPackageRegistryServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/List", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationPackageRegistryServer).List(ctx, req.(*EndDeviceIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationPackageRegistry_GetAssociation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetApplicationPackageAssociationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationPackageRegistryServer).GetAssociation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/GetAssociation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationPackageRegistryServer).GetAssociation(ctx, req.(*GetApplicationPackageAssociationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationPackageRegistry_ListAssociations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListApplicationPackageAssociationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationPackageRegistryServer).ListAssociations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/ListAssociations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationPackageRegistryServer).ListAssociations(ctx, req.(*ListApplicationPackageAssociationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationPackageRegistry_SetAssociation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetApplicationPackageAssociationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationPackageRegistryServer).SetAssociation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/SetAssociation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationPackageRegistryServer).SetAssociation(ctx, req.(*SetApplicationPackageAssociationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationPackageRegistry_DeleteAssociation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApplicationPackageAssociationIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationPackageRegistryServer).DeleteAssociation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/DeleteAssociation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationPackageRegistryServer).DeleteAssociation(ctx, req.(*ApplicationPackageAssociationIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationPackageRegistry_GetDefaultAssociation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetApplicationPackageDefaultAssociationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationPackageRegistryServer).GetDefaultAssociation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/GetDefaultAssociation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationPackageRegistryServer).GetDefaultAssociation(ctx, req.(*GetApplicationPackageDefaultAssociationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationPackageRegistry_ListDefaultAssociations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListApplicationPackageDefaultAssociationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationPackageRegistryServer).ListDefaultAssociations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/ListDefaultAssociations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationPackageRegistryServer).ListDefaultAssociations(ctx, req.(*ListApplicationPackageDefaultAssociationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationPackageRegistry_SetDefaultAssociation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetApplicationPackageDefaultAssociationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationPackageRegistryServer).SetDefaultAssociation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/SetDefaultAssociation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationPackageRegistryServer).SetDefaultAssociation(ctx, req.(*SetApplicationPackageDefaultAssociationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationPackageRegistry_DeleteDefaultAssociation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApplicationPackageDefaultAssociationIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationPackageRegistryServer).DeleteDefaultAssociation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationPackageRegistry/DeleteDefaultAssociation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationPackageRegistryServer).DeleteDefaultAssociation(ctx, req.(*ApplicationPackageDefaultAssociationIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// ApplicationPackageRegistry_ServiceDesc is the grpc.ServiceDesc for ApplicationPackageRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ApplicationPackageRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.ApplicationPackageRegistry", + HandlerType: (*ApplicationPackageRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "List", + Handler: _ApplicationPackageRegistry_List_Handler, + }, + { + MethodName: "GetAssociation", + Handler: _ApplicationPackageRegistry_GetAssociation_Handler, + }, + { + MethodName: "ListAssociations", + Handler: _ApplicationPackageRegistry_ListAssociations_Handler, + }, + { + MethodName: "SetAssociation", + Handler: _ApplicationPackageRegistry_SetAssociation_Handler, + }, + { + MethodName: "DeleteAssociation", + Handler: _ApplicationPackageRegistry_DeleteAssociation_Handler, + }, + { + MethodName: "GetDefaultAssociation", + Handler: _ApplicationPackageRegistry_GetDefaultAssociation_Handler, + }, + { + MethodName: "ListDefaultAssociations", + Handler: _ApplicationPackageRegistry_ListDefaultAssociations_Handler, + }, + { + MethodName: "SetDefaultAssociation", + Handler: _ApplicationPackageRegistry_SetDefaultAssociation_Handler, + }, + { + MethodName: "DeleteDefaultAssociation", + Handler: _ApplicationPackageRegistry_DeleteDefaultAssociation_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/applicationserver_packages.proto", +} diff --git a/pkg/ttnpb/applicationserver_packages_json.pb.go b/pkg/ttnpb/applicationserver_packages_json.pb.go index 5539114751..39e52d43e0 100644 --- a/pkg/ttnpb/applicationserver_packages_json.pb.go +++ b/pkg/ttnpb/applicationserver_packages_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/applicationserver_packages.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" ) @@ -84,7 +84,7 @@ func (x *ApplicationPackageAssociation) MarshalProtoJSON(s *jsonplugin.MarshalSt if x.CreatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.CreatedAt) + golang.MarshalTimestamp(s, x.CreatedAt) } } if x.UpdatedAt != nil || s.HasField("updated_at") { @@ -93,7 +93,7 @@ func (x *ApplicationPackageAssociation) MarshalProtoJSON(s *jsonplugin.MarshalSt if x.UpdatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.UpdatedAt) + golang.MarshalTimestamp(s, x.UpdatedAt) } } if x.PackageName != "" || s.HasField("package_name") { @@ -107,7 +107,7 @@ func (x *ApplicationPackageAssociation) MarshalProtoJSON(s *jsonplugin.MarshalSt if x.Data == nil { s.WriteNil() } else { - gogo.MarshalStruct(s, x.Data) + golang.MarshalStruct(s, x.Data) } } s.WriteObjectEnd() @@ -140,7 +140,7 @@ func (x *ApplicationPackageAssociation) UnmarshalProtoJSON(s *jsonplugin.Unmarsh x.CreatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -151,7 +151,7 @@ func (x *ApplicationPackageAssociation) UnmarshalProtoJSON(s *jsonplugin.Unmarsh x.UpdatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -165,7 +165,7 @@ func (x *ApplicationPackageAssociation) UnmarshalProtoJSON(s *jsonplugin.Unmarsh x.Data = nil return } - v := gogo.UnmarshalStruct(s) + v := golang.UnmarshalStruct(s) if s.Err() != nil { return } @@ -261,7 +261,7 @@ func (x *GetApplicationPackageAssociationRequest) MarshalProtoJSON(s *jsonplugin if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -294,7 +294,7 @@ func (x *GetApplicationPackageAssociationRequest) UnmarshalProtoJSON(s *jsonplug x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -337,7 +337,7 @@ func (x *ListApplicationPackageAssociationRequest) MarshalProtoJSON(s *jsonplugi if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -376,7 +376,7 @@ func (x *ListApplicationPackageAssociationRequest) UnmarshalProtoJSON(s *jsonplu x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -409,7 +409,7 @@ func (x *SetApplicationPackageAssociationRequest) MarshalProtoJSON(s *jsonplugin if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -442,7 +442,7 @@ func (x *SetApplicationPackageAssociationRequest) UnmarshalProtoJSON(s *jsonplug x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -455,3 +455,229 @@ func (x *SetApplicationPackageAssociationRequest) UnmarshalProtoJSON(s *jsonplug func (x *SetApplicationPackageAssociationRequest) UnmarshalJSON(b []byte) error { return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) } + +// MarshalProtoJSON marshals the GetApplicationPackageDefaultAssociationRequest message to JSON. +func (x *GetApplicationPackageDefaultAssociationRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Ids != nil || s.HasField("ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("ids") + // NOTE: ApplicationPackageDefaultAssociationIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.Ids) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the GetApplicationPackageDefaultAssociationRequest to JSON. +func (x *GetApplicationPackageDefaultAssociationRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the GetApplicationPackageDefaultAssociationRequest message from JSON. +func (x *GetApplicationPackageDefaultAssociationRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "ids": + s.AddField("ids") + if s.ReadNil() { + x.Ids = nil + return + } + // NOTE: ApplicationPackageDefaultAssociationIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationPackageDefaultAssociationIdentifiers + golang.UnmarshalMessage(s, &v) + x.Ids = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the GetApplicationPackageDefaultAssociationRequest from JSON. +func (x *GetApplicationPackageDefaultAssociationRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the ListApplicationPackageDefaultAssociationRequest message to JSON. +func (x *ListApplicationPackageDefaultAssociationRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Ids != nil || s.HasField("ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("ids") + // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.Ids) + } + if x.Limit != 0 || s.HasField("limit") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("limit") + s.WriteUint32(x.Limit) + } + if x.Page != 0 || s.HasField("page") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("page") + s.WriteUint32(x.Page) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the ListApplicationPackageDefaultAssociationRequest to JSON. +func (x *ListApplicationPackageDefaultAssociationRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the ListApplicationPackageDefaultAssociationRequest message from JSON. +func (x *ListApplicationPackageDefaultAssociationRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "ids": + s.AddField("ids") + if s.ReadNil() { + x.Ids = nil + return + } + // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationIdentifiers + golang.UnmarshalMessage(s, &v) + x.Ids = &v + case "limit": + s.AddField("limit") + x.Limit = s.ReadUint32() + case "page": + s.AddField("page") + x.Page = s.ReadUint32() + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the ListApplicationPackageDefaultAssociationRequest from JSON. +func (x *ListApplicationPackageDefaultAssociationRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the SetApplicationPackageDefaultAssociationRequest message to JSON. +func (x *SetApplicationPackageDefaultAssociationRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Default != nil || s.HasField("default") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("default") + // NOTE: ApplicationPackageDefaultAssociation does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.Default) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the SetApplicationPackageDefaultAssociationRequest to JSON. +func (x *SetApplicationPackageDefaultAssociationRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the SetApplicationPackageDefaultAssociationRequest message from JSON. +func (x *SetApplicationPackageDefaultAssociationRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "default": + s.AddField("default") + if s.ReadNil() { + x.Default = nil + return + } + // NOTE: ApplicationPackageDefaultAssociation does not seem to implement UnmarshalProtoJSON. + var v ApplicationPackageDefaultAssociation + golang.UnmarshalMessage(s, &v) + x.Default = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the SetApplicationPackageDefaultAssociationRequest from JSON. +func (x *SetApplicationPackageDefaultAssociationRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} diff --git a/pkg/ttnpb/applicationserver_pubsub.pb.go b/pkg/ttnpb/applicationserver_pubsub.pb.go index e6418da20f..ca6235c0f9 100644 --- a/pkg/ttnpb/applicationserver_pubsub.pb.go +++ b/pkg/ttnpb/applicationserver_pubsub.pb.go @@ -1,36 +1,47 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/applicationserver_pubsub.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + emptypb "google.golang.org/protobuf/types/known/emptypb" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type ApplicationPubSub_MQTTProvider_QoS int32 @@ -40,82 +51,116 @@ const ( ApplicationPubSub_MQTTProvider_EXACTLY_ONCE ApplicationPubSub_MQTTProvider_QoS = 2 ) -var ApplicationPubSub_MQTTProvider_QoS_name = map[int32]string{ - 0: "AT_MOST_ONCE", - 1: "AT_LEAST_ONCE", - 2: "EXACTLY_ONCE", -} +// Enum value maps for ApplicationPubSub_MQTTProvider_QoS. +var ( + ApplicationPubSub_MQTTProvider_QoS_name = map[int32]string{ + 0: "AT_MOST_ONCE", + 1: "AT_LEAST_ONCE", + 2: "EXACTLY_ONCE", + } + ApplicationPubSub_MQTTProvider_QoS_value = map[string]int32{ + "AT_MOST_ONCE": 0, + "AT_LEAST_ONCE": 1, + "EXACTLY_ONCE": 2, + } +) -var ApplicationPubSub_MQTTProvider_QoS_value = map[string]int32{ - "AT_MOST_ONCE": 0, - "AT_LEAST_ONCE": 1, - "EXACTLY_ONCE": 2, +func (x ApplicationPubSub_MQTTProvider_QoS) Enum() *ApplicationPubSub_MQTTProvider_QoS { + p := new(ApplicationPubSub_MQTTProvider_QoS) + *p = x + return p } func (x ApplicationPubSub_MQTTProvider_QoS) String() string { - return proto.EnumName(ApplicationPubSub_MQTTProvider_QoS_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ApplicationPubSub_MQTTProvider_QoS) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_1dce56ec18597200, []int{1, 1, 0} +func (ApplicationPubSub_MQTTProvider_QoS) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_applicationserver_pubsub_proto_enumTypes[0].Descriptor() } -type ApplicationPubSubIdentifiers struct { - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` - PubSubId string `protobuf:"bytes,2,opt,name=pub_sub_id,json=pubSubId,proto3" json:"pub_sub_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (ApplicationPubSub_MQTTProvider_QoS) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_applicationserver_pubsub_proto_enumTypes[0] } -func (m *ApplicationPubSubIdentifiers) Reset() { *m = ApplicationPubSubIdentifiers{} } -func (m *ApplicationPubSubIdentifiers) String() string { return proto.CompactTextString(m) } -func (*ApplicationPubSubIdentifiers) ProtoMessage() {} -func (*ApplicationPubSubIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_1dce56ec18597200, []int{0} +func (x ApplicationPubSub_MQTTProvider_QoS) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (m *ApplicationPubSubIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPubSubIdentifiers.Unmarshal(m, b) + +// Deprecated: Use ApplicationPubSub_MQTTProvider_QoS.Descriptor instead. +func (ApplicationPubSub_MQTTProvider_QoS) EnumDescriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescGZIP(), []int{1, 1, 0} } -func (m *ApplicationPubSubIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPubSubIdentifiers.Marshal(b, m, deterministic) + +type ApplicationPubSubIdentifiers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + PubSubId string `protobuf:"bytes,2,opt,name=pub_sub_id,json=pubSubId,proto3" json:"pub_sub_id,omitempty"` } -func (m *ApplicationPubSubIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPubSubIdentifiers.Merge(m, src) + +func (x *ApplicationPubSubIdentifiers) Reset() { + *x = ApplicationPubSubIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationPubSubIdentifiers) XXX_Size() int { - return xxx_messageInfo_ApplicationPubSubIdentifiers.Size(m) + +func (x *ApplicationPubSubIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationPubSubIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPubSubIdentifiers.DiscardUnknown(m) + +func (*ApplicationPubSubIdentifiers) ProtoMessage() {} + +func (x *ApplicationPubSubIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationPubSubIdentifiers proto.InternalMessageInfo +// Deprecated: Use ApplicationPubSubIdentifiers.ProtoReflect.Descriptor instead. +func (*ApplicationPubSubIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescGZIP(), []int{0} +} -func (m *ApplicationPubSubIdentifiers) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *ApplicationPubSubIdentifiers) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *ApplicationPubSubIdentifiers) GetPubSubId() string { - if m != nil { - return m.PubSubId +func (x *ApplicationPubSubIdentifiers) GetPubSubId() string { + if x != nil { + return x.PubSubId } return "" } type ApplicationPubSub struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Ids *ApplicationPubSubIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` - CreatedAt *types.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *types.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // The format to use for the body. // Supported values depend on the Application Server configuration. Format string `protobuf:"bytes,4,opt,name=format,proto3" json:"format,omitempty"` // The provider for the PubSub. // - // Types that are valid to be assigned to Provider: + // Types that are assignable to Provider: // *ApplicationPubSub_Nats // *ApplicationPubSub_Mqtt // *ApplicationPubSub_AwsIot @@ -137,1300 +182,1698 @@ type ApplicationPubSub struct { DownlinkQueueInvalidated *ApplicationPubSub_Message `protobuf:"bytes,19,opt,name=downlink_queue_invalidated,json=downlinkQueueInvalidated,proto3" json:"downlink_queue_invalidated,omitempty"` LocationSolved *ApplicationPubSub_Message `protobuf:"bytes,16,opt,name=location_solved,json=locationSolved,proto3" json:"location_solved,omitempty"` ServiceData *ApplicationPubSub_Message `protobuf:"bytes,18,opt,name=service_data,json=serviceData,proto3" json:"service_data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *ApplicationPubSub) Reset() { *m = ApplicationPubSub{} } -func (m *ApplicationPubSub) String() string { return proto.CompactTextString(m) } -func (*ApplicationPubSub) ProtoMessage() {} -func (*ApplicationPubSub) Descriptor() ([]byte, []int) { - return fileDescriptor_1dce56ec18597200, []int{1} -} -func (m *ApplicationPubSub) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPubSub.Unmarshal(m, b) -} -func (m *ApplicationPubSub) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPubSub.Marshal(b, m, deterministic) -} -func (m *ApplicationPubSub) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPubSub.Merge(m, src) -} -func (m *ApplicationPubSub) XXX_Size() int { - return xxx_messageInfo_ApplicationPubSub.Size(m) +func (x *ApplicationPubSub) Reset() { + *x = ApplicationPubSub{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationPubSub) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPubSub.DiscardUnknown(m) + +func (x *ApplicationPubSub) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ApplicationPubSub proto.InternalMessageInfo +func (*ApplicationPubSub) ProtoMessage() {} -type isApplicationPubSub_Provider interface { - isApplicationPubSub_Provider() +func (x *ApplicationPubSub) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type ApplicationPubSub_Nats struct { - Nats *ApplicationPubSub_NATSProvider `protobuf:"bytes,17,opt,name=nats,proto3,oneof" json:"nats,omitempty"` -} -type ApplicationPubSub_Mqtt struct { - Mqtt *ApplicationPubSub_MQTTProvider `protobuf:"bytes,25,opt,name=mqtt,proto3,oneof" json:"mqtt,omitempty"` -} -type ApplicationPubSub_AwsIot struct { - AwsIot *ApplicationPubSub_AWSIoTProvider `protobuf:"bytes,101,opt,name=aws_iot,json=awsIot,proto3,oneof" json:"aws_iot,omitempty"` +// Deprecated: Use ApplicationPubSub.ProtoReflect.Descriptor instead. +func (*ApplicationPubSub) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescGZIP(), []int{1} } -func (*ApplicationPubSub_Nats) isApplicationPubSub_Provider() {} -func (*ApplicationPubSub_Mqtt) isApplicationPubSub_Provider() {} -func (*ApplicationPubSub_AwsIot) isApplicationPubSub_Provider() {} - -func (m *ApplicationPubSub) GetProvider() isApplicationPubSub_Provider { - if m != nil { - return m.Provider +func (x *ApplicationPubSub) GetIds() *ApplicationPubSubIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *ApplicationPubSub) GetIds() *ApplicationPubSubIdentifiers { - if m != nil { - return m.Ids +func (x *ApplicationPubSub) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *ApplicationPubSub) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *ApplicationPubSub) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *ApplicationPubSub) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *ApplicationPubSub) GetFormat() string { + if x != nil { + return x.Format } - return nil + return "" } -func (m *ApplicationPubSub) GetFormat() string { +func (m *ApplicationPubSub) GetProvider() isApplicationPubSub_Provider { if m != nil { - return m.Format + return m.Provider } - return "" + return nil } -func (m *ApplicationPubSub) GetNats() *ApplicationPubSub_NATSProvider { - if x, ok := m.GetProvider().(*ApplicationPubSub_Nats); ok { +func (x *ApplicationPubSub) GetNats() *ApplicationPubSub_NATSProvider { + if x, ok := x.GetProvider().(*ApplicationPubSub_Nats); ok { return x.Nats } return nil } -func (m *ApplicationPubSub) GetMqtt() *ApplicationPubSub_MQTTProvider { - if x, ok := m.GetProvider().(*ApplicationPubSub_Mqtt); ok { +func (x *ApplicationPubSub) GetMqtt() *ApplicationPubSub_MQTTProvider { + if x, ok := x.GetProvider().(*ApplicationPubSub_Mqtt); ok { return x.Mqtt } return nil } -func (m *ApplicationPubSub) GetAwsIot() *ApplicationPubSub_AWSIoTProvider { - if x, ok := m.GetProvider().(*ApplicationPubSub_AwsIot); ok { +func (x *ApplicationPubSub) GetAwsIot() *ApplicationPubSub_AWSIoTProvider { + if x, ok := x.GetProvider().(*ApplicationPubSub_AwsIot); ok { return x.AwsIot } return nil } -func (m *ApplicationPubSub) GetBaseTopic() string { - if m != nil { - return m.BaseTopic +func (x *ApplicationPubSub) GetBaseTopic() string { + if x != nil { + return x.BaseTopic } return "" } -func (m *ApplicationPubSub) GetDownlinkPush() *ApplicationPubSub_Message { - if m != nil { - return m.DownlinkPush +func (x *ApplicationPubSub) GetDownlinkPush() *ApplicationPubSub_Message { + if x != nil { + return x.DownlinkPush } return nil } -func (m *ApplicationPubSub) GetDownlinkReplace() *ApplicationPubSub_Message { - if m != nil { - return m.DownlinkReplace +func (x *ApplicationPubSub) GetDownlinkReplace() *ApplicationPubSub_Message { + if x != nil { + return x.DownlinkReplace } return nil } -func (m *ApplicationPubSub) GetUplinkMessage() *ApplicationPubSub_Message { - if m != nil { - return m.UplinkMessage +func (x *ApplicationPubSub) GetUplinkMessage() *ApplicationPubSub_Message { + if x != nil { + return x.UplinkMessage } return nil } -func (m *ApplicationPubSub) GetUplinkNormalized() *ApplicationPubSub_Message { - if m != nil { - return m.UplinkNormalized +func (x *ApplicationPubSub) GetUplinkNormalized() *ApplicationPubSub_Message { + if x != nil { + return x.UplinkNormalized } return nil } -func (m *ApplicationPubSub) GetJoinAccept() *ApplicationPubSub_Message { - if m != nil { - return m.JoinAccept +func (x *ApplicationPubSub) GetJoinAccept() *ApplicationPubSub_Message { + if x != nil { + return x.JoinAccept } return nil } -func (m *ApplicationPubSub) GetDownlinkAck() *ApplicationPubSub_Message { - if m != nil { - return m.DownlinkAck +func (x *ApplicationPubSub) GetDownlinkAck() *ApplicationPubSub_Message { + if x != nil { + return x.DownlinkAck } return nil } -func (m *ApplicationPubSub) GetDownlinkNack() *ApplicationPubSub_Message { - if m != nil { - return m.DownlinkNack +func (x *ApplicationPubSub) GetDownlinkNack() *ApplicationPubSub_Message { + if x != nil { + return x.DownlinkNack } return nil } -func (m *ApplicationPubSub) GetDownlinkSent() *ApplicationPubSub_Message { - if m != nil { - return m.DownlinkSent +func (x *ApplicationPubSub) GetDownlinkSent() *ApplicationPubSub_Message { + if x != nil { + return x.DownlinkSent } return nil } -func (m *ApplicationPubSub) GetDownlinkFailed() *ApplicationPubSub_Message { - if m != nil { - return m.DownlinkFailed +func (x *ApplicationPubSub) GetDownlinkFailed() *ApplicationPubSub_Message { + if x != nil { + return x.DownlinkFailed } return nil } -func (m *ApplicationPubSub) GetDownlinkQueued() *ApplicationPubSub_Message { - if m != nil { - return m.DownlinkQueued +func (x *ApplicationPubSub) GetDownlinkQueued() *ApplicationPubSub_Message { + if x != nil { + return x.DownlinkQueued } return nil } -func (m *ApplicationPubSub) GetDownlinkQueueInvalidated() *ApplicationPubSub_Message { - if m != nil { - return m.DownlinkQueueInvalidated +func (x *ApplicationPubSub) GetDownlinkQueueInvalidated() *ApplicationPubSub_Message { + if x != nil { + return x.DownlinkQueueInvalidated } return nil } -func (m *ApplicationPubSub) GetLocationSolved() *ApplicationPubSub_Message { - if m != nil { - return m.LocationSolved +func (x *ApplicationPubSub) GetLocationSolved() *ApplicationPubSub_Message { + if x != nil { + return x.LocationSolved } return nil } -func (m *ApplicationPubSub) GetServiceData() *ApplicationPubSub_Message { - if m != nil { - return m.ServiceData +func (x *ApplicationPubSub) GetServiceData() *ApplicationPubSub_Message { + if x != nil { + return x.ServiceData } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*ApplicationPubSub) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*ApplicationPubSub_Nats)(nil), - (*ApplicationPubSub_Mqtt)(nil), - (*ApplicationPubSub_AwsIot)(nil), - } +type isApplicationPubSub_Provider interface { + isApplicationPubSub_Provider() } -// The NATS provider settings. -type ApplicationPubSub_NATSProvider struct { - // The server connection URL. - ServerUrl string `protobuf:"bytes,1,opt,name=server_url,json=serverUrl,proto3" json:"server_url,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type ApplicationPubSub_Nats struct { + Nats *ApplicationPubSub_NATSProvider `protobuf:"bytes,17,opt,name=nats,proto3,oneof"` } -func (m *ApplicationPubSub_NATSProvider) Reset() { *m = ApplicationPubSub_NATSProvider{} } -func (m *ApplicationPubSub_NATSProvider) String() string { return proto.CompactTextString(m) } -func (*ApplicationPubSub_NATSProvider) ProtoMessage() {} -func (*ApplicationPubSub_NATSProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_1dce56ec18597200, []int{1, 0} -} -func (m *ApplicationPubSub_NATSProvider) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPubSub_NATSProvider.Unmarshal(m, b) +type ApplicationPubSub_Mqtt struct { + Mqtt *ApplicationPubSub_MQTTProvider `protobuf:"bytes,25,opt,name=mqtt,proto3,oneof"` } -func (m *ApplicationPubSub_NATSProvider) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPubSub_NATSProvider.Marshal(b, m, deterministic) + +type ApplicationPubSub_AwsIot struct { + AwsIot *ApplicationPubSub_AWSIoTProvider `protobuf:"bytes,101,opt,name=aws_iot,json=awsIot,proto3,oneof"` } -func (m *ApplicationPubSub_NATSProvider) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPubSub_NATSProvider.Merge(m, src) + +func (*ApplicationPubSub_Nats) isApplicationPubSub_Provider() {} + +func (*ApplicationPubSub_Mqtt) isApplicationPubSub_Provider() {} + +func (*ApplicationPubSub_AwsIot) isApplicationPubSub_Provider() {} + +type ApplicationPubSubs struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pubsubs []*ApplicationPubSub `protobuf:"bytes,1,rep,name=pubsubs,proto3" json:"pubsubs,omitempty"` } -func (m *ApplicationPubSub_NATSProvider) XXX_Size() int { - return xxx_messageInfo_ApplicationPubSub_NATSProvider.Size(m) + +func (x *ApplicationPubSubs) Reset() { + *x = ApplicationPubSubs{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationPubSub_NATSProvider) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPubSub_NATSProvider.DiscardUnknown(m) + +func (x *ApplicationPubSubs) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ApplicationPubSub_NATSProvider proto.InternalMessageInfo +func (*ApplicationPubSubs) ProtoMessage() {} -func (m *ApplicationPubSub_NATSProvider) GetServerUrl() string { - if m != nil { - return m.ServerUrl +func (x *ApplicationPubSubs) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -// The MQTT provider settings. -type ApplicationPubSub_MQTTProvider struct { - ServerUrl string `protobuf:"bytes,1,opt,name=server_url,json=serverUrl,proto3" json:"server_url,omitempty"` - ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` - Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` - Password string `protobuf:"bytes,4,opt,name=password,proto3" json:"password,omitempty"` - SubscribeQos ApplicationPubSub_MQTTProvider_QoS `protobuf:"varint,5,opt,name=subscribe_qos,json=subscribeQos,proto3,enum=ttn.lorawan.v3.ApplicationPubSub_MQTTProvider_QoS" json:"subscribe_qos,omitempty"` - PublishQos ApplicationPubSub_MQTTProvider_QoS `protobuf:"varint,6,opt,name=publish_qos,json=publishQos,proto3,enum=ttn.lorawan.v3.ApplicationPubSub_MQTTProvider_QoS" json:"publish_qos,omitempty"` - UseTls bool `protobuf:"varint,7,opt,name=use_tls,json=useTls,proto3" json:"use_tls,omitempty"` - // The server Root CA certificate. PEM formatted. - TlsCa []byte `protobuf:"bytes,8,opt,name=tls_ca,json=tlsCa,proto3" json:"tls_ca,omitempty"` - // The client certificate. PEM formatted. - TlsClientCert []byte `protobuf:"bytes,9,opt,name=tls_client_cert,json=tlsClientCert,proto3" json:"tls_client_cert,omitempty"` - // The client private key. PEM formatted. - TlsClientKey []byte `protobuf:"bytes,10,opt,name=tls_client_key,json=tlsClientKey,proto3" json:"tls_client_key,omitempty"` - // HTTP headers to use on MQTT-over-Websocket connections. - Headers map[string]string `protobuf:"bytes,11,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use ApplicationPubSubs.ProtoReflect.Descriptor instead. +func (*ApplicationPubSubs) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescGZIP(), []int{2} } -func (m *ApplicationPubSub_MQTTProvider) Reset() { *m = ApplicationPubSub_MQTTProvider{} } -func (m *ApplicationPubSub_MQTTProvider) String() string { return proto.CompactTextString(m) } -func (*ApplicationPubSub_MQTTProvider) ProtoMessage() {} -func (*ApplicationPubSub_MQTTProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_1dce56ec18597200, []int{1, 1} -} -func (m *ApplicationPubSub_MQTTProvider) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPubSub_MQTTProvider.Unmarshal(m, b) -} -func (m *ApplicationPubSub_MQTTProvider) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPubSub_MQTTProvider.Marshal(b, m, deterministic) +func (x *ApplicationPubSubs) GetPubsubs() []*ApplicationPubSub { + if x != nil { + return x.Pubsubs + } + return nil } -func (m *ApplicationPubSub_MQTTProvider) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPubSub_MQTTProvider.Merge(m, src) + +type ApplicationPubSubFormats struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Format and description. + Formats map[string]string `protobuf:"bytes,1,rep,name=formats,proto3" json:"formats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *ApplicationPubSub_MQTTProvider) XXX_Size() int { - return xxx_messageInfo_ApplicationPubSub_MQTTProvider.Size(m) + +func (x *ApplicationPubSubFormats) Reset() { + *x = ApplicationPubSubFormats{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationPubSub_MQTTProvider) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPubSub_MQTTProvider.DiscardUnknown(m) + +func (x *ApplicationPubSubFormats) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ApplicationPubSub_MQTTProvider proto.InternalMessageInfo +func (*ApplicationPubSubFormats) ProtoMessage() {} -func (m *ApplicationPubSub_MQTTProvider) GetServerUrl() string { - if m != nil { - return m.ServerUrl +func (x *ApplicationPubSubFormats) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (m *ApplicationPubSub_MQTTProvider) GetClientId() string { - if m != nil { - return m.ClientId - } - return "" +// Deprecated: Use ApplicationPubSubFormats.ProtoReflect.Descriptor instead. +func (*ApplicationPubSubFormats) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescGZIP(), []int{3} } -func (m *ApplicationPubSub_MQTTProvider) GetUsername() string { - if m != nil { - return m.Username +func (x *ApplicationPubSubFormats) GetFormats() map[string]string { + if x != nil { + return x.Formats } - return "" + return nil } -func (m *ApplicationPubSub_MQTTProvider) GetPassword() string { - if m != nil { - return m.Password - } - return "" -} +type GetApplicationPubSubRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationPubSub_MQTTProvider) GetSubscribeQos() ApplicationPubSub_MQTTProvider_QoS { - if m != nil { - return m.SubscribeQos - } - return ApplicationPubSub_MQTTProvider_AT_MOST_ONCE + Ids *ApplicationPubSubIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *ApplicationPubSub_MQTTProvider) GetPublishQos() ApplicationPubSub_MQTTProvider_QoS { - if m != nil { - return m.PublishQos +func (x *GetApplicationPubSubRequest) Reset() { + *x = GetApplicationPubSubRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return ApplicationPubSub_MQTTProvider_AT_MOST_ONCE } -func (m *ApplicationPubSub_MQTTProvider) GetUseTls() bool { - if m != nil { - return m.UseTls - } - return false +func (x *GetApplicationPubSubRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationPubSub_MQTTProvider) GetTlsCa() []byte { - if m != nil { - return m.TlsCa +func (*GetApplicationPubSubRequest) ProtoMessage() {} + +func (x *GetApplicationPubSubRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *ApplicationPubSub_MQTTProvider) GetTlsClientCert() []byte { - if m != nil { - return m.TlsClientCert - } - return nil +// Deprecated: Use GetApplicationPubSubRequest.ProtoReflect.Descriptor instead. +func (*GetApplicationPubSubRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescGZIP(), []int{4} } -func (m *ApplicationPubSub_MQTTProvider) GetTlsClientKey() []byte { - if m != nil { - return m.TlsClientKey +func (x *GetApplicationPubSubRequest) GetIds() *ApplicationPubSubIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *ApplicationPubSub_MQTTProvider) GetHeaders() map[string]string { - if m != nil { - return m.Headers +func (x *GetApplicationPubSubRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -type ApplicationPubSub_AWSIoTProvider struct { - // The AWS region. - Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"` - // If set, the integration will use an AWS access key. - AccessKey *ApplicationPubSub_AWSIoTProvider_AccessKey `protobuf:"bytes,2,opt,name=access_key,json=accessKey,proto3" json:"access_key,omitempty"` - // If set, the integration will assume the given role during operation. - AssumeRole *ApplicationPubSub_AWSIoTProvider_AssumeRole `protobuf:"bytes,3,opt,name=assume_role,json=assumeRole,proto3" json:"assume_role,omitempty"` - // The endpoint address to connect to. If the endpoint address is left empty, - // the integration will try to discover it. - EndpointAddress string `protobuf:"bytes,4,opt,name=endpoint_address,json=endpointAddress,proto3" json:"endpoint_address,omitempty"` - // Types that are valid to be assigned to Deployment: - // *ApplicationPubSub_AWSIoTProvider_Default - Deployment isApplicationPubSub_AWSIoTProvider_Deployment `protobuf_oneof:"deployment"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type ListApplicationPubSubsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationPubSub_AWSIoTProvider) Reset() { *m = ApplicationPubSub_AWSIoTProvider{} } -func (m *ApplicationPubSub_AWSIoTProvider) String() string { return proto.CompactTextString(m) } -func (*ApplicationPubSub_AWSIoTProvider) ProtoMessage() {} -func (*ApplicationPubSub_AWSIoTProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_1dce56ec18597200, []int{1, 2} -} -func (m *ApplicationPubSub_AWSIoTProvider) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPubSub_AWSIoTProvider.Unmarshal(m, b) -} -func (m *ApplicationPubSub_AWSIoTProvider) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPubSub_AWSIoTProvider.Marshal(b, m, deterministic) + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *ApplicationPubSub_AWSIoTProvider) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPubSub_AWSIoTProvider.Merge(m, src) -} -func (m *ApplicationPubSub_AWSIoTProvider) XXX_Size() int { - return xxx_messageInfo_ApplicationPubSub_AWSIoTProvider.Size(m) -} -func (m *ApplicationPubSub_AWSIoTProvider) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPubSub_AWSIoTProvider.DiscardUnknown(m) -} - -var xxx_messageInfo_ApplicationPubSub_AWSIoTProvider proto.InternalMessageInfo -type isApplicationPubSub_AWSIoTProvider_Deployment interface { - isApplicationPubSub_AWSIoTProvider_Deployment() +func (x *ListApplicationPubSubsRequest) Reset() { + *x = ListApplicationPubSubsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -type ApplicationPubSub_AWSIoTProvider_Default struct { - Default *ApplicationPubSub_AWSIoTProvider_DefaultIntegration `protobuf:"bytes,5,opt,name=default,proto3,oneof" json:"default,omitempty"` +func (x *ListApplicationPubSubsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (*ApplicationPubSub_AWSIoTProvider_Default) isApplicationPubSub_AWSIoTProvider_Deployment() {} +func (*ListApplicationPubSubsRequest) ProtoMessage() {} -func (m *ApplicationPubSub_AWSIoTProvider) GetDeployment() isApplicationPubSub_AWSIoTProvider_Deployment { - if m != nil { - return m.Deployment +func (x *ListApplicationPubSubsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *ApplicationPubSub_AWSIoTProvider) GetRegion() string { - if m != nil { - return m.Region - } - return "" +// Deprecated: Use ListApplicationPubSubsRequest.ProtoReflect.Descriptor instead. +func (*ListApplicationPubSubsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescGZIP(), []int{5} } -func (m *ApplicationPubSub_AWSIoTProvider) GetAccessKey() *ApplicationPubSub_AWSIoTProvider_AccessKey { - if m != nil { - return m.AccessKey +func (x *ListApplicationPubSubsRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *ApplicationPubSub_AWSIoTProvider) GetAssumeRole() *ApplicationPubSub_AWSIoTProvider_AssumeRole { - if m != nil { - return m.AssumeRole +func (x *ListApplicationPubSubsRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *ApplicationPubSub_AWSIoTProvider) GetEndpointAddress() string { - if m != nil { - return m.EndpointAddress - } - return "" -} +type SetApplicationPubSubRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationPubSub_AWSIoTProvider) GetDefault() *ApplicationPubSub_AWSIoTProvider_DefaultIntegration { - if x, ok := m.GetDeployment().(*ApplicationPubSub_AWSIoTProvider_Default); ok { - return x.Default - } - return nil + Pubsub *ApplicationPubSub `protobuf:"bytes,1,opt,name=pubsub,proto3" json:"pubsub,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*ApplicationPubSub_AWSIoTProvider) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*ApplicationPubSub_AWSIoTProvider_Default)(nil), +func (x *SetApplicationPubSubRequest) Reset() { + *x = SetApplicationPubSubRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } } -type ApplicationPubSub_AWSIoTProvider_AccessKey struct { - AccessKeyId string `protobuf:"bytes,1,opt,name=access_key_id,json=accessKeyId,proto3" json:"access_key_id,omitempty"` - SecretAccessKey string `protobuf:"bytes,2,opt,name=secret_access_key,json=secretAccessKey,proto3" json:"secret_access_key,omitempty"` - SessionToken string `protobuf:"bytes,3,opt,name=session_token,json=sessionToken,proto3" json:"session_token,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *SetApplicationPubSubRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationPubSub_AWSIoTProvider_AccessKey) Reset() { - *m = ApplicationPubSub_AWSIoTProvider_AccessKey{} -} -func (m *ApplicationPubSub_AWSIoTProvider_AccessKey) String() string { - return proto.CompactTextString(m) +func (*SetApplicationPubSubRequest) ProtoMessage() {} + +func (x *SetApplicationPubSubRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (*ApplicationPubSub_AWSIoTProvider_AccessKey) ProtoMessage() {} -func (*ApplicationPubSub_AWSIoTProvider_AccessKey) Descriptor() ([]byte, []int) { - return fileDescriptor_1dce56ec18597200, []int{1, 2, 0} + +// Deprecated: Use SetApplicationPubSubRequest.ProtoReflect.Descriptor instead. +func (*SetApplicationPubSubRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescGZIP(), []int{6} } -func (m *ApplicationPubSub_AWSIoTProvider_AccessKey) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_AccessKey.Unmarshal(m, b) + +func (x *SetApplicationPubSubRequest) GetPubsub() *ApplicationPubSub { + if x != nil { + return x.Pubsub + } + return nil } -func (m *ApplicationPubSub_AWSIoTProvider_AccessKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_AccessKey.Marshal(b, m, deterministic) + +func (x *SetApplicationPubSubRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask + } + return nil } -func (m *ApplicationPubSub_AWSIoTProvider_AccessKey) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_AccessKey.Merge(m, src) + +// The NATS provider settings. +type ApplicationPubSub_NATSProvider struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The server connection URL. + ServerUrl string `protobuf:"bytes,1,opt,name=server_url,json=serverUrl,proto3" json:"server_url,omitempty"` } -func (m *ApplicationPubSub_AWSIoTProvider_AccessKey) XXX_Size() int { - return xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_AccessKey.Size(m) + +func (x *ApplicationPubSub_NATSProvider) Reset() { + *x = ApplicationPubSub_NATSProvider{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationPubSub_AWSIoTProvider_AccessKey) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_AccessKey.DiscardUnknown(m) + +func (x *ApplicationPubSub_NATSProvider) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_AccessKey proto.InternalMessageInfo +func (*ApplicationPubSub_NATSProvider) ProtoMessage() {} -func (m *ApplicationPubSub_AWSIoTProvider_AccessKey) GetAccessKeyId() string { - if m != nil { - return m.AccessKeyId +func (x *ApplicationPubSub_NATSProvider) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (m *ApplicationPubSub_AWSIoTProvider_AccessKey) GetSecretAccessKey() string { - if m != nil { - return m.SecretAccessKey - } - return "" +// Deprecated: Use ApplicationPubSub_NATSProvider.ProtoReflect.Descriptor instead. +func (*ApplicationPubSub_NATSProvider) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescGZIP(), []int{1, 0} } -func (m *ApplicationPubSub_AWSIoTProvider_AccessKey) GetSessionToken() string { - if m != nil { - return m.SessionToken +func (x *ApplicationPubSub_NATSProvider) GetServerUrl() string { + if x != nil { + return x.ServerUrl } return "" } -type ApplicationPubSub_AWSIoTProvider_AssumeRole struct { - Arn string `protobuf:"bytes,1,opt,name=arn,proto3" json:"arn,omitempty"` - ExternalId string `protobuf:"bytes,2,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` - SessionDuration *types.Duration `protobuf:"bytes,3,opt,name=session_duration,json=sessionDuration,proto3" json:"session_duration,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +// The MQTT provider settings. +type ApplicationPubSub_MQTTProvider struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationPubSub_AWSIoTProvider_AssumeRole) Reset() { - *m = ApplicationPubSub_AWSIoTProvider_AssumeRole{} -} -func (m *ApplicationPubSub_AWSIoTProvider_AssumeRole) String() string { - return proto.CompactTextString(m) -} -func (*ApplicationPubSub_AWSIoTProvider_AssumeRole) ProtoMessage() {} -func (*ApplicationPubSub_AWSIoTProvider_AssumeRole) Descriptor() ([]byte, []int) { - return fileDescriptor_1dce56ec18597200, []int{1, 2, 1} -} -func (m *ApplicationPubSub_AWSIoTProvider_AssumeRole) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_AssumeRole.Unmarshal(m, b) -} -func (m *ApplicationPubSub_AWSIoTProvider_AssumeRole) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_AssumeRole.Marshal(b, m, deterministic) + ServerUrl string `protobuf:"bytes,1,opt,name=server_url,json=serverUrl,proto3" json:"server_url,omitempty"` + ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` + Password string `protobuf:"bytes,4,opt,name=password,proto3" json:"password,omitempty"` + SubscribeQos ApplicationPubSub_MQTTProvider_QoS `protobuf:"varint,5,opt,name=subscribe_qos,json=subscribeQos,proto3,enum=ttn.lorawan.v3.ApplicationPubSub_MQTTProvider_QoS" json:"subscribe_qos,omitempty"` + PublishQos ApplicationPubSub_MQTTProvider_QoS `protobuf:"varint,6,opt,name=publish_qos,json=publishQos,proto3,enum=ttn.lorawan.v3.ApplicationPubSub_MQTTProvider_QoS" json:"publish_qos,omitempty"` + UseTls bool `protobuf:"varint,7,opt,name=use_tls,json=useTls,proto3" json:"use_tls,omitempty"` + // The server Root CA certificate. PEM formatted. + TlsCa []byte `protobuf:"bytes,8,opt,name=tls_ca,json=tlsCa,proto3" json:"tls_ca,omitempty"` + // The client certificate. PEM formatted. + TlsClientCert []byte `protobuf:"bytes,9,opt,name=tls_client_cert,json=tlsClientCert,proto3" json:"tls_client_cert,omitempty"` + // The client private key. PEM formatted. + TlsClientKey []byte `protobuf:"bytes,10,opt,name=tls_client_key,json=tlsClientKey,proto3" json:"tls_client_key,omitempty"` + // HTTP headers to use on MQTT-over-Websocket connections. + Headers map[string]string `protobuf:"bytes,11,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *ApplicationPubSub_AWSIoTProvider_AssumeRole) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_AssumeRole.Merge(m, src) + +func (x *ApplicationPubSub_MQTTProvider) Reset() { + *x = ApplicationPubSub_MQTTProvider{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationPubSub_AWSIoTProvider_AssumeRole) XXX_Size() int { - return xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_AssumeRole.Size(m) + +func (x *ApplicationPubSub_MQTTProvider) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationPubSub_AWSIoTProvider_AssumeRole) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_AssumeRole.DiscardUnknown(m) + +func (*ApplicationPubSub_MQTTProvider) ProtoMessage() {} + +func (x *ApplicationPubSub_MQTTProvider) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_AssumeRole proto.InternalMessageInfo +// Deprecated: Use ApplicationPubSub_MQTTProvider.ProtoReflect.Descriptor instead. +func (*ApplicationPubSub_MQTTProvider) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescGZIP(), []int{1, 1} +} -func (m *ApplicationPubSub_AWSIoTProvider_AssumeRole) GetArn() string { - if m != nil { - return m.Arn +func (x *ApplicationPubSub_MQTTProvider) GetServerUrl() string { + if x != nil { + return x.ServerUrl } return "" } -func (m *ApplicationPubSub_AWSIoTProvider_AssumeRole) GetExternalId() string { - if m != nil { - return m.ExternalId +func (x *ApplicationPubSub_MQTTProvider) GetClientId() string { + if x != nil { + return x.ClientId } return "" } -func (m *ApplicationPubSub_AWSIoTProvider_AssumeRole) GetSessionDuration() *types.Duration { - if m != nil { - return m.SessionDuration +func (x *ApplicationPubSub_MQTTProvider) GetUsername() string { + if x != nil { + return x.Username } - return nil + return "" } -type ApplicationPubSub_AWSIoTProvider_DefaultIntegration struct { - // The stack name that is associated with the CloudFormation deployment of The Things Stack Enterprise integration. - StackName string `protobuf:"bytes,1,opt,name=stack_name,json=stackName,proto3" json:"stack_name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *ApplicationPubSub_MQTTProvider) GetPassword() string { + if x != nil { + return x.Password + } + return "" } -func (m *ApplicationPubSub_AWSIoTProvider_DefaultIntegration) Reset() { - *m = ApplicationPubSub_AWSIoTProvider_DefaultIntegration{} -} -func (m *ApplicationPubSub_AWSIoTProvider_DefaultIntegration) String() string { - return proto.CompactTextString(m) -} -func (*ApplicationPubSub_AWSIoTProvider_DefaultIntegration) ProtoMessage() {} -func (*ApplicationPubSub_AWSIoTProvider_DefaultIntegration) Descriptor() ([]byte, []int) { - return fileDescriptor_1dce56ec18597200, []int{1, 2, 2} -} -func (m *ApplicationPubSub_AWSIoTProvider_DefaultIntegration) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_DefaultIntegration.Unmarshal(m, b) -} -func (m *ApplicationPubSub_AWSIoTProvider_DefaultIntegration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_DefaultIntegration.Marshal(b, m, deterministic) -} -func (m *ApplicationPubSub_AWSIoTProvider_DefaultIntegration) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_DefaultIntegration.Merge(m, src) -} -func (m *ApplicationPubSub_AWSIoTProvider_DefaultIntegration) XXX_Size() int { - return xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_DefaultIntegration.Size(m) -} -func (m *ApplicationPubSub_AWSIoTProvider_DefaultIntegration) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_DefaultIntegration.DiscardUnknown(m) +func (x *ApplicationPubSub_MQTTProvider) GetSubscribeQos() ApplicationPubSub_MQTTProvider_QoS { + if x != nil { + return x.SubscribeQos + } + return ApplicationPubSub_MQTTProvider_AT_MOST_ONCE } -var xxx_messageInfo_ApplicationPubSub_AWSIoTProvider_DefaultIntegration proto.InternalMessageInfo - -func (m *ApplicationPubSub_AWSIoTProvider_DefaultIntegration) GetStackName() string { - if m != nil { - return m.StackName +func (x *ApplicationPubSub_MQTTProvider) GetPublishQos() ApplicationPubSub_MQTTProvider_QoS { + if x != nil { + return x.PublishQos } - return "" + return ApplicationPubSub_MQTTProvider_AT_MOST_ONCE } -type ApplicationPubSub_Message struct { - // The topic on which the Application Server publishes or receives the messages. - Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *ApplicationPubSub_MQTTProvider) GetUseTls() bool { + if x != nil { + return x.UseTls + } + return false } -func (m *ApplicationPubSub_Message) Reset() { *m = ApplicationPubSub_Message{} } -func (m *ApplicationPubSub_Message) String() string { return proto.CompactTextString(m) } -func (*ApplicationPubSub_Message) ProtoMessage() {} -func (*ApplicationPubSub_Message) Descriptor() ([]byte, []int) { - return fileDescriptor_1dce56ec18597200, []int{1, 3} -} -func (m *ApplicationPubSub_Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPubSub_Message.Unmarshal(m, b) -} -func (m *ApplicationPubSub_Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPubSub_Message.Marshal(b, m, deterministic) -} -func (m *ApplicationPubSub_Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPubSub_Message.Merge(m, src) -} -func (m *ApplicationPubSub_Message) XXX_Size() int { - return xxx_messageInfo_ApplicationPubSub_Message.Size(m) -} -func (m *ApplicationPubSub_Message) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPubSub_Message.DiscardUnknown(m) +func (x *ApplicationPubSub_MQTTProvider) GetTlsCa() []byte { + if x != nil { + return x.TlsCa + } + return nil } -var xxx_messageInfo_ApplicationPubSub_Message proto.InternalMessageInfo - -func (m *ApplicationPubSub_Message) GetTopic() string { - if m != nil { - return m.Topic +func (x *ApplicationPubSub_MQTTProvider) GetTlsClientCert() []byte { + if x != nil { + return x.TlsClientCert } - return "" + return nil } -type ApplicationPubSubs struct { - Pubsubs []*ApplicationPubSub `protobuf:"bytes,1,rep,name=pubsubs,proto3" json:"pubsubs,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *ApplicationPubSub_MQTTProvider) GetTlsClientKey() []byte { + if x != nil { + return x.TlsClientKey + } + return nil } -func (m *ApplicationPubSubs) Reset() { *m = ApplicationPubSubs{} } -func (m *ApplicationPubSubs) String() string { return proto.CompactTextString(m) } -func (*ApplicationPubSubs) ProtoMessage() {} -func (*ApplicationPubSubs) Descriptor() ([]byte, []int) { - return fileDescriptor_1dce56ec18597200, []int{2} -} -func (m *ApplicationPubSubs) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPubSubs.Unmarshal(m, b) -} -func (m *ApplicationPubSubs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPubSubs.Marshal(b, m, deterministic) +func (x *ApplicationPubSub_MQTTProvider) GetHeaders() map[string]string { + if x != nil { + return x.Headers + } + return nil } -func (m *ApplicationPubSubs) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPubSubs.Merge(m, src) + +type ApplicationPubSub_AWSIoTProvider struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The AWS region. + Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"` + // If set, the integration will use an AWS access key. + AccessKey *ApplicationPubSub_AWSIoTProvider_AccessKey `protobuf:"bytes,2,opt,name=access_key,json=accessKey,proto3" json:"access_key,omitempty"` + // If set, the integration will assume the given role during operation. + AssumeRole *ApplicationPubSub_AWSIoTProvider_AssumeRole `protobuf:"bytes,3,opt,name=assume_role,json=assumeRole,proto3" json:"assume_role,omitempty"` + // The endpoint address to connect to. If the endpoint address is left empty, + // the integration will try to discover it. + EndpointAddress string `protobuf:"bytes,4,opt,name=endpoint_address,json=endpointAddress,proto3" json:"endpoint_address,omitempty"` + // Types that are assignable to Deployment: + // *ApplicationPubSub_AWSIoTProvider_Default + Deployment isApplicationPubSub_AWSIoTProvider_Deployment `protobuf_oneof:"deployment"` } -func (m *ApplicationPubSubs) XXX_Size() int { - return xxx_messageInfo_ApplicationPubSubs.Size(m) + +func (x *ApplicationPubSub_AWSIoTProvider) Reset() { + *x = ApplicationPubSub_AWSIoTProvider{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationPubSubs) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPubSubs.DiscardUnknown(m) + +func (x *ApplicationPubSub_AWSIoTProvider) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ApplicationPubSubs proto.InternalMessageInfo +func (*ApplicationPubSub_AWSIoTProvider) ProtoMessage() {} -func (m *ApplicationPubSubs) GetPubsubs() []*ApplicationPubSub { - if m != nil { - return m.Pubsubs +func (x *ApplicationPubSub_AWSIoTProvider) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type ApplicationPubSubFormats struct { - // Format and description. - Formats map[string]string `protobuf:"bytes,1,rep,name=formats,proto3" json:"formats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use ApplicationPubSub_AWSIoTProvider.ProtoReflect.Descriptor instead. +func (*ApplicationPubSub_AWSIoTProvider) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescGZIP(), []int{1, 2} } -func (m *ApplicationPubSubFormats) Reset() { *m = ApplicationPubSubFormats{} } -func (m *ApplicationPubSubFormats) String() string { return proto.CompactTextString(m) } -func (*ApplicationPubSubFormats) ProtoMessage() {} -func (*ApplicationPubSubFormats) Descriptor() ([]byte, []int) { - return fileDescriptor_1dce56ec18597200, []int{3} -} -func (m *ApplicationPubSubFormats) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationPubSubFormats.Unmarshal(m, b) -} -func (m *ApplicationPubSubFormats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationPubSubFormats.Marshal(b, m, deterministic) -} -func (m *ApplicationPubSubFormats) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationPubSubFormats.Merge(m, src) -} -func (m *ApplicationPubSubFormats) XXX_Size() int { - return xxx_messageInfo_ApplicationPubSubFormats.Size(m) -} -func (m *ApplicationPubSubFormats) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationPubSubFormats.DiscardUnknown(m) +func (x *ApplicationPubSub_AWSIoTProvider) GetRegion() string { + if x != nil { + return x.Region + } + return "" } -var xxx_messageInfo_ApplicationPubSubFormats proto.InternalMessageInfo - -func (m *ApplicationPubSubFormats) GetFormats() map[string]string { - if m != nil { - return m.Formats +func (x *ApplicationPubSub_AWSIoTProvider) GetAccessKey() *ApplicationPubSub_AWSIoTProvider_AccessKey { + if x != nil { + return x.AccessKey } return nil } -type GetApplicationPubSubRequest struct { - Ids *ApplicationPubSubIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *ApplicationPubSub_AWSIoTProvider) GetAssumeRole() *ApplicationPubSub_AWSIoTProvider_AssumeRole { + if x != nil { + return x.AssumeRole + } + return nil } -func (m *GetApplicationPubSubRequest) Reset() { *m = GetApplicationPubSubRequest{} } -func (m *GetApplicationPubSubRequest) String() string { return proto.CompactTextString(m) } -func (*GetApplicationPubSubRequest) ProtoMessage() {} -func (*GetApplicationPubSubRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1dce56ec18597200, []int{4} -} -func (m *GetApplicationPubSubRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetApplicationPubSubRequest.Unmarshal(m, b) -} -func (m *GetApplicationPubSubRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetApplicationPubSubRequest.Marshal(b, m, deterministic) -} -func (m *GetApplicationPubSubRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetApplicationPubSubRequest.Merge(m, src) -} -func (m *GetApplicationPubSubRequest) XXX_Size() int { - return xxx_messageInfo_GetApplicationPubSubRequest.Size(m) -} -func (m *GetApplicationPubSubRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetApplicationPubSubRequest.DiscardUnknown(m) +func (x *ApplicationPubSub_AWSIoTProvider) GetEndpointAddress() string { + if x != nil { + return x.EndpointAddress + } + return "" } -var xxx_messageInfo_GetApplicationPubSubRequest proto.InternalMessageInfo - -func (m *GetApplicationPubSubRequest) GetIds() *ApplicationPubSubIdentifiers { +func (m *ApplicationPubSub_AWSIoTProvider) GetDeployment() isApplicationPubSub_AWSIoTProvider_Deployment { if m != nil { - return m.Ids + return m.Deployment } return nil } -func (m *GetApplicationPubSubRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *ApplicationPubSub_AWSIoTProvider) GetDefault() *ApplicationPubSub_AWSIoTProvider_DefaultIntegration { + if x, ok := x.GetDeployment().(*ApplicationPubSub_AWSIoTProvider_Default); ok { + return x.Default } return nil } -type ListApplicationPubSubsRequest struct { - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type isApplicationPubSub_AWSIoTProvider_Deployment interface { + isApplicationPubSub_AWSIoTProvider_Deployment() } -func (m *ListApplicationPubSubsRequest) Reset() { *m = ListApplicationPubSubsRequest{} } -func (m *ListApplicationPubSubsRequest) String() string { return proto.CompactTextString(m) } -func (*ListApplicationPubSubsRequest) ProtoMessage() {} -func (*ListApplicationPubSubsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1dce56ec18597200, []int{5} -} -func (m *ListApplicationPubSubsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListApplicationPubSubsRequest.Unmarshal(m, b) -} -func (m *ListApplicationPubSubsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListApplicationPubSubsRequest.Marshal(b, m, deterministic) -} -func (m *ListApplicationPubSubsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListApplicationPubSubsRequest.Merge(m, src) -} -func (m *ListApplicationPubSubsRequest) XXX_Size() int { - return xxx_messageInfo_ListApplicationPubSubsRequest.Size(m) -} -func (m *ListApplicationPubSubsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListApplicationPubSubsRequest.DiscardUnknown(m) +type ApplicationPubSub_AWSIoTProvider_Default struct { + // Enable the default integration. This overrides custom base topic and message topics of the pub/sub integration. + Default *ApplicationPubSub_AWSIoTProvider_DefaultIntegration `protobuf:"bytes,5,opt,name=default,proto3,oneof"` } -var xxx_messageInfo_ListApplicationPubSubsRequest proto.InternalMessageInfo +func (*ApplicationPubSub_AWSIoTProvider_Default) isApplicationPubSub_AWSIoTProvider_Deployment() {} -func (m *ListApplicationPubSubsRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds - } - return nil +type ApplicationPubSub_Message struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The topic on which the Application Server publishes or receives the messages. + Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"` } -func (m *ListApplicationPubSubsRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *ApplicationPubSub_Message) Reset() { + *x = ApplicationPubSub_Message{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -type SetApplicationPubSubRequest struct { - Pubsub *ApplicationPubSub `protobuf:"bytes,1,opt,name=pubsub,proto3" json:"pubsub,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *ApplicationPubSub_Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SetApplicationPubSubRequest) Reset() { *m = SetApplicationPubSubRequest{} } -func (m *SetApplicationPubSubRequest) String() string { return proto.CompactTextString(m) } -func (*SetApplicationPubSubRequest) ProtoMessage() {} -func (*SetApplicationPubSubRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1dce56ec18597200, []int{6} -} -func (m *SetApplicationPubSubRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetApplicationPubSubRequest.Unmarshal(m, b) -} -func (m *SetApplicationPubSubRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetApplicationPubSubRequest.Marshal(b, m, deterministic) -} -func (m *SetApplicationPubSubRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetApplicationPubSubRequest.Merge(m, src) +func (*ApplicationPubSub_Message) ProtoMessage() {} + +func (x *ApplicationPubSub_Message) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *SetApplicationPubSubRequest) XXX_Size() int { - return xxx_messageInfo_SetApplicationPubSubRequest.Size(m) + +// Deprecated: Use ApplicationPubSub_Message.ProtoReflect.Descriptor instead. +func (*ApplicationPubSub_Message) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescGZIP(), []int{1, 3} } -func (m *SetApplicationPubSubRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetApplicationPubSubRequest.DiscardUnknown(m) + +func (x *ApplicationPubSub_Message) GetTopic() string { + if x != nil { + return x.Topic + } + return "" } -var xxx_messageInfo_SetApplicationPubSubRequest proto.InternalMessageInfo +type ApplicationPubSub_AWSIoTProvider_AccessKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SetApplicationPubSubRequest) GetPubsub() *ApplicationPubSub { - if m != nil { - return m.Pubsub - } - return nil + AccessKeyId string `protobuf:"bytes,1,opt,name=access_key_id,json=accessKeyId,proto3" json:"access_key_id,omitempty"` + SecretAccessKey string `protobuf:"bytes,2,opt,name=secret_access_key,json=secretAccessKey,proto3" json:"secret_access_key,omitempty"` + SessionToken string `protobuf:"bytes,3,opt,name=session_token,json=sessionToken,proto3" json:"session_token,omitempty"` } -func (m *SetApplicationPubSubRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *ApplicationPubSub_AWSIoTProvider_AccessKey) Reset() { + *x = ApplicationPubSub_AWSIoTProvider_AccessKey{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func init() { - proto.RegisterEnum("ttn.lorawan.v3.ApplicationPubSub_MQTTProvider_QoS", ApplicationPubSub_MQTTProvider_QoS_name, ApplicationPubSub_MQTTProvider_QoS_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.ApplicationPubSub_MQTTProvider_QoS", ApplicationPubSub_MQTTProvider_QoS_name, ApplicationPubSub_MQTTProvider_QoS_value) - proto.RegisterType((*ApplicationPubSubIdentifiers)(nil), "ttn.lorawan.v3.ApplicationPubSubIdentifiers") - golang_proto.RegisterType((*ApplicationPubSubIdentifiers)(nil), "ttn.lorawan.v3.ApplicationPubSubIdentifiers") - proto.RegisterType((*ApplicationPubSub)(nil), "ttn.lorawan.v3.ApplicationPubSub") - golang_proto.RegisterType((*ApplicationPubSub)(nil), "ttn.lorawan.v3.ApplicationPubSub") - proto.RegisterType((*ApplicationPubSub_NATSProvider)(nil), "ttn.lorawan.v3.ApplicationPubSub.NATSProvider") - golang_proto.RegisterType((*ApplicationPubSub_NATSProvider)(nil), "ttn.lorawan.v3.ApplicationPubSub.NATSProvider") - proto.RegisterType((*ApplicationPubSub_MQTTProvider)(nil), "ttn.lorawan.v3.ApplicationPubSub.MQTTProvider") - golang_proto.RegisterType((*ApplicationPubSub_MQTTProvider)(nil), "ttn.lorawan.v3.ApplicationPubSub.MQTTProvider") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.ApplicationPubSub.MQTTProvider.HeadersEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.ApplicationPubSub.MQTTProvider.HeadersEntry") - proto.RegisterType((*ApplicationPubSub_AWSIoTProvider)(nil), "ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider") - golang_proto.RegisterType((*ApplicationPubSub_AWSIoTProvider)(nil), "ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider") - proto.RegisterType((*ApplicationPubSub_AWSIoTProvider_AccessKey)(nil), "ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider.AccessKey") - golang_proto.RegisterType((*ApplicationPubSub_AWSIoTProvider_AccessKey)(nil), "ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider.AccessKey") - proto.RegisterType((*ApplicationPubSub_AWSIoTProvider_AssumeRole)(nil), "ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider.AssumeRole") - golang_proto.RegisterType((*ApplicationPubSub_AWSIoTProvider_AssumeRole)(nil), "ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider.AssumeRole") - proto.RegisterType((*ApplicationPubSub_AWSIoTProvider_DefaultIntegration)(nil), "ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider.DefaultIntegration") - golang_proto.RegisterType((*ApplicationPubSub_AWSIoTProvider_DefaultIntegration)(nil), "ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider.DefaultIntegration") - proto.RegisterType((*ApplicationPubSub_Message)(nil), "ttn.lorawan.v3.ApplicationPubSub.Message") - golang_proto.RegisterType((*ApplicationPubSub_Message)(nil), "ttn.lorawan.v3.ApplicationPubSub.Message") - proto.RegisterType((*ApplicationPubSubs)(nil), "ttn.lorawan.v3.ApplicationPubSubs") - golang_proto.RegisterType((*ApplicationPubSubs)(nil), "ttn.lorawan.v3.ApplicationPubSubs") - proto.RegisterType((*ApplicationPubSubFormats)(nil), "ttn.lorawan.v3.ApplicationPubSubFormats") - golang_proto.RegisterType((*ApplicationPubSubFormats)(nil), "ttn.lorawan.v3.ApplicationPubSubFormats") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.ApplicationPubSubFormats.FormatsEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.ApplicationPubSubFormats.FormatsEntry") - proto.RegisterType((*GetApplicationPubSubRequest)(nil), "ttn.lorawan.v3.GetApplicationPubSubRequest") - golang_proto.RegisterType((*GetApplicationPubSubRequest)(nil), "ttn.lorawan.v3.GetApplicationPubSubRequest") - proto.RegisterType((*ListApplicationPubSubsRequest)(nil), "ttn.lorawan.v3.ListApplicationPubSubsRequest") - golang_proto.RegisterType((*ListApplicationPubSubsRequest)(nil), "ttn.lorawan.v3.ListApplicationPubSubsRequest") - proto.RegisterType((*SetApplicationPubSubRequest)(nil), "ttn.lorawan.v3.SetApplicationPubSubRequest") - golang_proto.RegisterType((*SetApplicationPubSubRequest)(nil), "ttn.lorawan.v3.SetApplicationPubSubRequest") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/applicationserver_pubsub.proto", fileDescriptor_1dce56ec18597200) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/applicationserver_pubsub.proto", fileDescriptor_1dce56ec18597200) -} - -var fileDescriptor_1dce56ec18597200 = []byte{ - // 2217 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcf, 0x6f, 0xdb, 0xc8, - 0x15, 0xce, 0x58, 0xb1, 0x6c, 0x3d, 0xc9, 0xb6, 0x32, 0x9b, 0x76, 0x69, 0x65, 0x93, 0xcd, 0x6a, - 0x8d, 0x5d, 0xd9, 0x09, 0xa5, 0x44, 0xee, 0x6e, 0x37, 0x0a, 0x8a, 0x44, 0xb4, 0x9d, 0xd8, 0x4d, - 0xe2, 0xc4, 0x94, 0xb6, 0xdb, 0x24, 0x4e, 0x88, 0x91, 0x38, 0x96, 0x19, 0x53, 0x24, 0xc3, 0x19, - 0xda, 0x71, 0x7e, 0x00, 0xc1, 0x5e, 0x5a, 0xf4, 0x50, 0x2c, 0xd0, 0x43, 0x51, 0x14, 0x45, 0x81, - 0x16, 0x68, 0x81, 0x1c, 0x8b, 0x9e, 0xbb, 0xed, 0xad, 0x28, 0x50, 0xf4, 0xd0, 0x3f, 0xa1, 0x45, - 0x0f, 0xbd, 0x14, 0xd8, 0x53, 0xe1, 0x02, 0x45, 0xc1, 0x21, 0x29, 0xd2, 0x56, 0x36, 0xb6, 0x1c, - 0xf4, 0xb0, 0x97, 0xe4, 0x0d, 0xdf, 0x7b, 0xdf, 0x7c, 0xef, 0xcd, 0xf3, 0xbc, 0x99, 0x11, 0x9c, - 0x33, 0x6d, 0x97, 0x6c, 0x11, 0x4b, 0x66, 0x9c, 0xb4, 0x37, 0x2a, 0xc4, 0x31, 0x2a, 0xc4, 0x71, - 0x4c, 0xa3, 0x4d, 0xb8, 0x61, 0x5b, 0x8c, 0xba, 0x9b, 0xd4, 0xd5, 0x1c, 0xaf, 0xc5, 0xbc, 0x56, - 0xd9, 0x71, 0x6d, 0x6e, 0xe3, 0x71, 0xce, 0xad, 0x72, 0xe8, 0x55, 0xde, 0x9c, 0x2d, 0xcc, 0x77, - 0x0c, 0xbe, 0xee, 0xb5, 0xca, 0x6d, 0xbb, 0x5b, 0x69, 0xae, 0xd3, 0xe6, 0xba, 0x61, 0x75, 0xd8, - 0x92, 0xa5, 0x7b, 0x8c, 0xbb, 0x06, 0x65, 0x15, 0xe1, 0xd5, 0x96, 0x3b, 0xd4, 0x92, 0x3b, 0xb6, - 0xbc, 0x66, 0x92, 0x0e, 0xab, 0x10, 0xcb, 0xb2, 0x79, 0x30, 0x43, 0x80, 0x5a, 0xa8, 0x27, 0x50, - 0xa8, 0xb5, 0x69, 0x6f, 0x3b, 0xae, 0xfd, 0x68, 0x3b, 0xe9, 0xbc, 0x49, 0x4c, 0x43, 0x27, 0x9c, - 0x56, 0xfa, 0x84, 0x10, 0x42, 0x4e, 0x40, 0x74, 0xec, 0x8e, 0x1d, 0x38, 0xb7, 0xbc, 0x35, 0x31, - 0x12, 0x03, 0x21, 0x85, 0xe6, 0x73, 0x03, 0xf1, 0x7e, 0xc0, 0x6c, 0xeb, 0x25, 0xb4, 0xdf, 0xea, - 0xd8, 0x76, 0xc7, 0xa4, 0x41, 0xde, 0xfa, 0xb4, 0xa7, 0x42, 0x6d, 0x8f, 0x88, 0xee, 0xb9, 0xc2, - 0x20, 0xd4, 0x9f, 0xd8, 0xab, 0xa7, 0x5d, 0x87, 0x6f, 0x87, 0xca, 0xd3, 0x7b, 0x95, 0x6b, 0x06, - 0x35, 0x75, 0xad, 0x4b, 0xd8, 0x46, 0x68, 0xf1, 0xf6, 0x5e, 0x0b, 0x6e, 0x74, 0x29, 0xe3, 0xa4, - 0xeb, 0x84, 0x06, 0xef, 0xf6, 0x2f, 0xae, 0xa1, 0x53, 0x8b, 0x1b, 0x6b, 0x06, 0x75, 0x43, 0x92, - 0xc5, 0x3f, 0x21, 0x78, 0xab, 0x1e, 0x2f, 0xf9, 0x2d, 0xaf, 0xd5, 0xf0, 0x5a, 0x4b, 0xb1, 0x19, - 0xbe, 0x0d, 0x13, 0x89, 0x92, 0xd0, 0x0c, 0x9d, 0x49, 0xe8, 0x34, 0x2a, 0x65, 0xab, 0xef, 0x95, - 0x77, 0x97, 0x42, 0x39, 0x01, 0x93, 0x00, 0x50, 0x46, 0x77, 0x94, 0xe1, 0x1f, 0xa0, 0xa1, 0x3c, - 0x52, 0xc7, 0x49, 0xd2, 0x82, 0xe1, 0x05, 0x00, 0xc7, 0x6b, 0x69, 0xcc, 0x6b, 0x69, 0x86, 0x2e, - 0x0d, 0x9d, 0x46, 0xa5, 0x8c, 0xf2, 0xfe, 0x8e, 0x32, 0xe5, 0x16, 0xa5, 0xa9, 0xea, 0xa9, 0xfb, - 0x77, 0x89, 0xfc, 0xf8, 0x9c, 0x7c, 0xe1, 0x5e, 0xe9, 0x52, 0xed, 0xae, 0x7c, 0xef, 0x52, 0x34, - 0x9c, 0x7e, 0x52, 0x3d, 0xfb, 0x6c, 0x4a, 0x1d, 0x75, 0x42, 0xaa, 0xb5, 0xd1, 0x2f, 0x5e, 0x4c, - 0x1e, 0x1d, 0x3d, 0x92, 0x47, 0xc5, 0x3f, 0xbc, 0x03, 0xc7, 0xfa, 0x82, 0xc1, 0xb7, 0x20, 0x15, - 0xb3, 0x3e, 0xfb, 0x0a, 0xd6, 0x7d, 0xc1, 0x2b, 0xf9, 0x88, 0x7b, 0x30, 0x45, 0x09, 0xa9, 0x3e, - 0x14, 0x9e, 0x03, 0x68, 0xbb, 0x94, 0x70, 0xaa, 0x6b, 0x84, 0x0b, 0xe2, 0xd9, 0x6a, 0xa1, 0x1c, - 0xac, 0x47, 0x39, 0x5a, 0x8f, 0x72, 0x33, 0x5a, 0x0f, 0x25, 0x62, 0x78, 0x44, 0xcd, 0x84, 0x7e, - 0x75, 0xee, 0x83, 0x78, 0x8e, 0x1e, 0x81, 0xa4, 0x06, 0x01, 0x09, 0xfd, 0xea, 0x1c, 0x5f, 0x82, - 0xf4, 0x9a, 0xed, 0x76, 0x09, 0x97, 0x8e, 0x26, 0xd3, 0x77, 0x7c, 0xdf, 0xf4, 0x85, 0x6e, 0x78, - 0x1e, 0x8e, 0x5a, 0x84, 0x33, 0xe9, 0x98, 0x98, 0xbf, 0xbc, 0x6f, 0x76, 0xca, 0xcb, 0xf5, 0x66, - 0xe3, 0x96, 0x6b, 0x6f, 0x1a, 0x3a, 0x75, 0x17, 0x8f, 0xa8, 0xc2, 0xdb, 0x47, 0xe9, 0x3e, 0xe4, - 0x5c, 0x9a, 0x3c, 0x28, 0xca, 0x8d, 0x95, 0x66, 0x33, 0x89, 0xe2, 0x7b, 0xe3, 0x6b, 0x30, 0x42, - 0xb6, 0x98, 0x66, 0xd8, 0x5c, 0xa2, 0x02, 0xe8, 0xdc, 0xfe, 0x40, 0xf5, 0x4f, 0x1a, 0x4b, 0x76, - 0x12, 0x2a, 0x4d, 0xb6, 0xd8, 0x92, 0xcd, 0xf1, 0x7b, 0x00, 0x2d, 0xc2, 0xa8, 0xc6, 0x6d, 0xc7, - 0x68, 0x4b, 0x69, 0x91, 0x9d, 0x91, 0x1d, 0xe5, 0xa8, 0x3b, 0x24, 0xe9, 0x6a, 0xc6, 0x57, 0x35, - 0x7d, 0x0d, 0x5e, 0x86, 0x31, 0xdd, 0xde, 0xb2, 0x4c, 0xc3, 0xda, 0xd0, 0x1c, 0x8f, 0xad, 0x4b, - 0x23, 0x62, 0xea, 0xe9, 0x03, 0xc4, 0x40, 0x19, 0x23, 0x1d, 0xaa, 0xe6, 0x22, 0xff, 0x5b, 0x1e, - 0x5b, 0xc7, 0x4d, 0xc8, 0xf7, 0xf0, 0x5c, 0xea, 0x98, 0xa4, 0x4d, 0xa5, 0xd1, 0x41, 0x21, 0x27, - 0x22, 0x08, 0x35, 0x40, 0xc0, 0xb7, 0x60, 0xdc, 0x73, 0x04, 0x66, 0x37, 0x30, 0x91, 0x32, 0x83, - 0x62, 0x8e, 0x05, 0x00, 0xe1, 0x10, 0x7f, 0x07, 0x8e, 0x85, 0x88, 0x96, 0x5f, 0x09, 0xa6, 0xf1, - 0x98, 0xea, 0xd2, 0xf1, 0x41, 0x41, 0xf3, 0x01, 0xc6, 0x72, 0x0f, 0x02, 0x7f, 0x1b, 0xb2, 0x0f, - 0x6c, 0xc3, 0xd2, 0x48, 0xbb, 0x4d, 0x1d, 0x2e, 0xc1, 0xa0, 0x88, 0xe0, 0x7b, 0xd7, 0x85, 0x33, - 0xbe, 0x0e, 0xbd, 0xdc, 0x6a, 0xa4, 0xbd, 0x21, 0x65, 0x07, 0x05, 0xcb, 0x46, 0xee, 0xf5, 0xf6, - 0xc6, 0xae, 0x95, 0xb6, 0x7c, 0xb8, 0xdc, 0xa1, 0x57, 0x7a, 0x99, 0xec, 0xc1, 0x63, 0xd4, 0xe2, - 0xd2, 0xd8, 0xa1, 0xf1, 0x1a, 0xd4, 0xe2, 0x58, 0x85, 0xde, 0xb2, 0x6b, 0x6b, 0xc4, 0x30, 0xa9, - 0x2e, 0x8d, 0x0f, 0x8a, 0x38, 0x1e, 0x21, 0x5c, 0x11, 0x00, 0xbb, 0x30, 0x1f, 0x7a, 0xd4, 0xa3, - 0xba, 0x34, 0x71, 0x68, 0xcc, 0x15, 0x01, 0x80, 0x3b, 0x50, 0xd8, 0x8d, 0xa9, 0x19, 0x56, 0xd4, - 0x8c, 0x75, 0xe9, 0x8d, 0x41, 0xe1, 0xa5, 0x5d, 0xf0, 0x4b, 0x31, 0x94, 0x4f, 0xde, 0xb4, 0xc3, - 0xbe, 0xc3, 0x6c, 0x73, 0x93, 0xea, 0x52, 0x7e, 0x60, 0xf2, 0x11, 0x42, 0x43, 0x00, 0xf8, 0x25, - 0xe5, 0x1f, 0x6b, 0x8c, 0x36, 0xd5, 0x74, 0xc2, 0x89, 0x84, 0x07, 0x2e, 0xa9, 0xd0, 0x7d, 0x9e, - 0x70, 0x52, 0xa8, 0x43, 0x2e, 0xb9, 0x1f, 0xe2, 0xf7, 0x01, 0xc2, 0x43, 0x93, 0xe7, 0x9a, 0xa2, - 0xe3, 0x64, 0x44, 0xff, 0x73, 0x53, 0xdf, 0x47, 0x48, 0xcd, 0x04, 0xba, 0x8f, 0x5d, 0x33, 0xec, - 0x59, 0x28, 0x8f, 0x0a, 0xbf, 0xcd, 0x40, 0x2e, 0xb9, 0x1b, 0x1e, 0x18, 0x03, 0x4f, 0x41, 0xa6, - 0x6d, 0x1a, 0xd4, 0xe2, 0x71, 0xf7, 0x0c, 0x37, 0xb8, 0x37, 0xd5, 0xd1, 0x40, 0xb3, 0xa4, 0xe3, - 0x77, 0x61, 0xd4, 0x63, 0xd4, 0xb5, 0x48, 0x97, 0x8a, 0x26, 0x93, 0xd8, 0x05, 0x7b, 0x0a, 0xdf, - 0xc8, 0x21, 0x8c, 0x6d, 0xd9, 0xae, 0x1e, 0x36, 0x92, 0xd8, 0x28, 0x52, 0xe0, 0x4f, 0x60, 0x8c, - 0x79, 0x2d, 0xd6, 0x76, 0x8d, 0x16, 0xd5, 0x1e, 0xda, 0x4c, 0x1a, 0x3e, 0x8d, 0x4a, 0xe3, 0xd5, - 0xea, 0x60, 0xbb, 0x7d, 0x79, 0xc5, 0x6e, 0xa8, 0xb9, 0x1e, 0xd0, 0x8a, 0xcd, 0x70, 0x03, 0xb2, - 0x8e, 0xd7, 0x32, 0x0d, 0xb6, 0x2e, 0x60, 0xd3, 0x87, 0x86, 0x85, 0x10, 0xc6, 0x07, 0x7d, 0x13, - 0x46, 0x3c, 0x7f, 0xfb, 0x37, 0x99, 0xd8, 0xd1, 0x47, 0xd5, 0xb4, 0xc7, 0x68, 0xd3, 0x64, 0xf8, - 0x77, 0x08, 0xd2, 0xdc, 0x64, 0x5a, 0x9b, 0x88, 0x7d, 0x39, 0xa7, 0xfc, 0x0a, 0xed, 0x28, 0xc3, - 0x8f, 0x53, 0xd2, 0xf3, 0xcb, 0x5f, 0xbc, 0x98, 0xfc, 0x09, 0x2a, 0x2c, 0x1f, 0xe2, 0x48, 0x2b, - 0xfe, 0x75, 0x4c, 0xaf, 0x63, 0x58, 0xe5, 0x65, 0xba, 0xb5, 0x48, 0x1f, 0x29, 0xdb, 0x9c, 0xb2, - 0x2b, 0x26, 0xe9, 0x14, 0xaf, 0xbe, 0x26, 0xde, 0x55, 0xca, 0x05, 0x98, 0x3a, 0xcc, 0x4d, 0x36, - 0x47, 0xf0, 0x5f, 0x10, 0x4c, 0x88, 0x00, 0x82, 0xc5, 0x6f, 0x53, 0x97, 0x8b, 0x6e, 0xf0, 0x15, - 0x8a, 0x64, 0xcc, 0x8f, 0x44, 0xd0, 0x9f, 0xa3, 0x2e, 0xc7, 0x7f, 0x46, 0x30, 0x9e, 0x88, 0x68, - 0x83, 0x6e, 0x8b, 0xbe, 0xf1, 0x15, 0x0a, 0x28, 0xd7, 0x0b, 0xe8, 0x1a, 0xdd, 0xc6, 0x1f, 0xc3, - 0xc8, 0x3a, 0x25, 0x3a, 0x75, 0x99, 0x94, 0x3d, 0x9d, 0x2a, 0x65, 0xab, 0x17, 0x07, 0x2c, 0xe6, - 0xc5, 0xc0, 0x7b, 0xc1, 0xe2, 0xee, 0xb6, 0x1a, 0x61, 0x15, 0x6a, 0x90, 0x4b, 0x2a, 0x70, 0x1e, - 0x52, 0x7e, 0xaa, 0xc4, 0x16, 0xa1, 0xfa, 0x22, 0x3e, 0x0e, 0xc3, 0x9b, 0xc4, 0xf4, 0x68, 0xb0, - 0x1d, 0xa8, 0xc1, 0xa0, 0x36, 0xf4, 0x11, 0x2a, 0xce, 0x43, 0x6a, 0xc5, 0x6e, 0xe0, 0x3c, 0xe4, - 0xea, 0x4d, 0xed, 0xc6, 0xcd, 0x46, 0x53, 0xbb, 0xb9, 0x3c, 0xb7, 0x90, 0x3f, 0x82, 0x8f, 0xc1, - 0x58, 0xbd, 0xa9, 0x5d, 0x5f, 0xa8, 0x47, 0x9f, 0x90, 0x6f, 0xb4, 0xf0, 0xdd, 0xfa, 0x5c, 0xf3, - 0xfa, 0xed, 0xe0, 0xcb, 0x50, 0x21, 0xfd, 0xcf, 0x17, 0x93, 0x43, 0x12, 0x4a, 0x6c, 0x5b, 0xdf, - 0x03, 0x18, 0xdf, 0x7d, 0xf6, 0xc2, 0x3f, 0x1d, 0x82, 0xb4, 0x4b, 0x3b, 0x86, 0x6d, 0x85, 0xbb, - 0xd6, 0xa7, 0x43, 0x3b, 0xca, 0x7f, 0x91, 0xfb, 0x1f, 0xa4, 0x02, 0x59, 0x93, 0x99, 0xed, 0xf1, - 0x75, 0xf9, 0xbc, 0x9a, 0x21, 0x8e, 0x4c, 0x09, 0xe3, 0xf2, 0x79, 0xff, 0x42, 0x20, 0x5b, 0xb6, - 0xcb, 0xd7, 0x5f, 0x3a, 0xae, 0xaa, 0x40, 0x9c, 0x9e, 0xdb, 0x78, 0x24, 0x27, 0x6c, 0xe3, 0x71, - 0x55, 0xcd, 0xb5, 0x89, 0xdc, 0xa6, 0x16, 0x77, 0x89, 0x29, 0x9f, 0x57, 0x73, 0xd4, 0x4b, 0x8c, - 0x80, 0x7a, 0x01, 0x6e, 0x28, 0xf7, 0xa8, 0x50, 0x4f, 0xde, 0xa2, 0x02, 0xae, 0x27, 0x56, 0x63, - 0x71, 0x56, 0x85, 0x2e, 0x8d, 0x8d, 0x19, 0x89, 0x78, 0x67, 0x3c, 0xd6, 0x27, 0x56, 0x85, 0x18, - 0xa1, 0x45, 0x62, 0x55, 0x0d, 0x53, 0x82, 0x6f, 0x03, 0xf8, 0x47, 0x22, 0xc6, 0x44, 0x79, 0x07, - 0x77, 0x86, 0xda, 0xa0, 0xe7, 0xdb, 0x72, 0x5d, 0x40, 0x5c, 0xa3, 0xdb, 0x6a, 0x86, 0x44, 0x22, - 0x5e, 0x85, 0x2c, 0x61, 0xcc, 0xeb, 0x52, 0xcd, 0xb5, 0x4d, 0x1a, 0x5e, 0x25, 0x2e, 0x0e, 0x8e, - 0x2d, 0x30, 0x54, 0xdb, 0xa4, 0x2a, 0x90, 0x9e, 0x8c, 0x7f, 0x89, 0x20, 0x4f, 0x2d, 0xdd, 0xb1, - 0x0d, 0x8b, 0x6b, 0x44, 0xd7, 0x5d, 0xca, 0x58, 0xd8, 0x24, 0x1e, 0xed, 0x28, 0x9e, 0xcb, 0xa4, - 0xe7, 0xa8, 0x6a, 0xdd, 0x2f, 0x95, 0x4a, 0xfe, 0x15, 0xa3, 0x2e, 0xdf, 0xf1, 0x6f, 0x19, 0x4f, - 0x13, 0x72, 0x2c, 0xae, 0xca, 0xf7, 0x66, 0x12, 0x8a, 0xe9, 0xd5, 0xf2, 0xf4, 0x4c, 0xe9, 0x6e, - 0x5d, 0xbe, 0x13, 0xde, 0x4d, 0x9e, 0x26, 0xe4, 0x58, 0x14, 0x5e, 0xb1, 0x62, 0xfa, 0xe9, 0xf4, - 0x94, 0x3a, 0x11, 0x31, 0xaa, 0x07, 0x84, 0xb0, 0x06, 0x23, 0x3a, 0x5d, 0x23, 0x9e, 0xc9, 0x45, - 0x5b, 0xca, 0x56, 0xe7, 0x06, 0x8e, 0x7f, 0x3e, 0xf0, 0x5f, 0xb2, 0x38, 0xed, 0x04, 0x17, 0xf5, - 0xc5, 0x23, 0x6a, 0x84, 0x5a, 0xf8, 0x0d, 0x82, 0x4c, 0x2f, 0xfb, 0xf8, 0x9b, 0x30, 0x16, 0xaf, - 0xa6, 0xdf, 0x7f, 0x83, 0x8a, 0x7f, 0x63, 0x47, 0xc9, 0xbb, 0xe3, 0xf9, 0xbc, 0x9f, 0x92, 0x91, - 0xfb, 0x77, 0x57, 0xb7, 0xee, 0xcd, 0x4c, 0xa9, 0xd9, 0xde, 0x4a, 0x2d, 0xe9, 0x78, 0x16, 0x8e, - 0x31, 0xda, 0x76, 0x29, 0xd7, 0xf6, 0x54, 0x43, 0xaf, 0xe5, 0x96, 0xd4, 0x89, 0xc0, 0x22, 0x9e, - 0x4d, 0x86, 0x31, 0x46, 0x19, 0xf3, 0xcf, 0x41, 0xdc, 0xde, 0xa0, 0x56, 0xd8, 0xc8, 0x83, 0x53, - 0x81, 0xf4, 0x7c, 0x48, 0xcd, 0x85, 0xea, 0xa6, 0xaf, 0x4d, 0xfc, 0x95, 0xfe, 0x03, 0x01, 0xc4, - 0xcb, 0x8a, 0xaf, 0x41, 0x8a, 0xb8, 0xd1, 0x5f, 0xe7, 0x85, 0x1d, 0xe5, 0x43, 0xf7, 0x1b, 0xd5, - 0xea, 0x7d, 0xe2, 0x5a, 0x35, 0xb2, 0xc5, 0x6a, 0x06, 0xe9, 0xd6, 0x6a, 0x77, 0xfd, 0x14, 0x3f, - 0x39, 0x5f, 0x7d, 0x56, 0xf3, 0x6b, 0x69, 0xb5, 0x12, 0x27, 0x5e, 0x3b, 0xf3, 0xad, 0xb3, 0xe5, - 0xcb, 0xf2, 0xbd, 0x33, 0x53, 0xaa, 0x8f, 0x82, 0x2f, 0x42, 0x96, 0x3e, 0xe2, 0xfe, 0x01, 0xc2, - 0x8c, 0x0f, 0x20, 0x85, 0x1d, 0xe5, 0x4d, 0xf7, 0x6b, 0xd2, 0x1f, 0x33, 0xd5, 0xbc, 0x1f, 0xbe, - 0x70, 0xa9, 0xad, 0x56, 0x64, 0x3f, 0x0f, 0x10, 0x99, 0x2f, 0xe9, 0x78, 0x1e, 0xf2, 0x51, 0x44, - 0xd1, 0xab, 0x48, 0x58, 0xb7, 0x93, 0x7d, 0x57, 0xe0, 0xf9, 0xd0, 0xc0, 0xcf, 0x8b, 0x70, 0x89, - 0x3e, 0x24, 0x02, 0x25, 0x80, 0xfb, 0x97, 0x0f, 0xd7, 0x01, 0xc4, 0xdb, 0x87, 0x26, 0x4e, 0x3f, - 0x41, 0xd8, 0xc5, 0x1d, 0xe5, 0x6d, 0xf7, 0xa4, 0xbf, 0x40, 0xd2, 0xfd, 0x30, 0xb8, 0x3d, 0xb5, - 0x36, 0xa5, 0x66, 0x84, 0xd7, 0x32, 0xe9, 0xd2, 0x78, 0x8a, 0x58, 0x52, 0x72, 0x00, 0x3a, 0x75, - 0x4c, 0x7b, 0xbb, 0x4b, 0x2d, 0x5e, 0xa8, 0xc2, 0x48, 0x74, 0xa7, 0x3a, 0x09, 0xc3, 0xc1, 0x75, - 0x13, 0xed, 0x3e, 0x43, 0x05, 0x5f, 0x5f, 0x8a, 0x35, 0x01, 0xa3, 0x4e, 0xb4, 0x81, 0xa6, 0xfe, - 0xad, 0xa0, 0xe2, 0x0a, 0xe0, 0xbe, 0x4a, 0x65, 0xf8, 0x22, 0x8c, 0x04, 0xcf, 0x70, 0x4c, 0x42, - 0xa2, 0xa3, 0xbc, 0xb3, 0x6f, 0x79, 0xab, 0x91, 0x47, 0xf1, 0xd7, 0x08, 0xa4, 0x3e, 0xf5, 0x15, - 0x71, 0xff, 0x67, 0xf8, 0x26, 0x8c, 0x04, 0x4f, 0x01, 0x11, 0xf2, 0x07, 0xfb, 0x22, 0x87, 0xae, - 0xe5, 0xf0, 0xff, 0xb0, 0x4b, 0x85, 0x28, 0x7e, 0x97, 0x4a, 0x2a, 0x06, 0xea, 0x52, 0xbf, 0x40, - 0x70, 0xe2, 0x2a, 0xe5, 0xfd, 0xb1, 0xd0, 0x87, 0x1e, 0x65, 0x1c, 0x2f, 0x1e, 0xfe, 0x29, 0x27, - 0x7e, 0x86, 0x12, 0x4f, 0x38, 0x17, 0x00, 0xe2, 0x17, 0xb5, 0x2f, 0x7d, 0xc2, 0xb9, 0xe2, 0x9b, - 0xdc, 0x20, 0x6c, 0x43, 0xcd, 0xac, 0x45, 0x62, 0xf1, 0x73, 0x04, 0x27, 0xaf, 0x1b, 0xac, 0x9f, - 0x25, 0x8b, 0x68, 0xfe, 0x1f, 0xdf, 0xcc, 0x0e, 0xcf, 0x3b, 0xf1, 0x4e, 0xf6, 0x33, 0x04, 0x27, - 0x1a, 0xaf, 0x48, 0xf3, 0x1c, 0xa4, 0x83, 0xda, 0x09, 0x69, 0xef, 0x5f, 0x6c, 0x09, 0xc6, 0xa1, - 0xeb, 0x6b, 0x30, 0xad, 0x7e, 0x9e, 0x86, 0xc9, 0x97, 0x90, 0xeb, 0x18, 0xcc, 0x2f, 0xa8, 0x07, - 0x00, 0x57, 0x29, 0x8f, 0xea, 0xf7, 0xeb, 0x7d, 0x90, 0x0b, 0x5d, 0x87, 0x6f, 0x17, 0x4a, 0x07, - 0x2d, 0xe3, 0x62, 0xe1, 0xd3, 0xbf, 0xfe, 0xfd, 0x47, 0x43, 0xc7, 0x31, 0xae, 0x10, 0x56, 0x09, - 0xc8, 0xcb, 0x61, 0x31, 0xe3, 0x9f, 0x23, 0x48, 0x5d, 0xa5, 0x1c, 0x9f, 0xd9, 0x8b, 0xf6, 0x8a, - 0x2a, 0x2d, 0xec, 0x9f, 0xae, 0xe2, 0xa2, 0x98, 0x53, 0xc1, 0x97, 0xe3, 0x39, 0x2b, 0x4f, 0x0c, - 0x9d, 0x95, 0xf7, 0xd4, 0xcd, 0x9e, 0xf1, 0xb3, 0xc0, 0x28, 0x7e, 0x35, 0x7d, 0x86, 0x7f, 0x88, - 0xe0, 0xa8, 0x5f, 0x8d, 0x58, 0xde, 0x3b, 0xeb, 0x2b, 0x6b, 0xb4, 0x50, 0xdc, 0x97, 0x24, 0x2b, - 0xce, 0x0a, 0x96, 0x32, 0x3e, 0x93, 0x64, 0xb9, 0x0f, 0x43, 0xfc, 0x2f, 0x04, 0xa9, 0xc6, 0xcb, - 0x52, 0xd6, 0x78, 0xbd, 0x94, 0xfd, 0x18, 0x09, 0x36, 0x9f, 0xa1, 0xc2, 0x72, 0x92, 0x4e, 0xf8, - 0xeb, 0xc4, 0x81, 0x72, 0x97, 0xb0, 0x4d, 0xa4, 0xb0, 0x86, 0x66, 0xee, 0x5c, 0x2c, 0x7e, 0x78, - 0x38, 0xd0, 0x1a, 0x9a, 0xc1, 0x9f, 0x21, 0x48, 0xcf, 0x53, 0x93, 0x72, 0x8a, 0x07, 0xda, 0x93, - 0x0a, 0x5f, 0x52, 0xbb, 0xc5, 0xcb, 0x22, 0xd2, 0xda, 0xcc, 0x47, 0x03, 0xe4, 0x5d, 0x90, 0x8e, - 0x42, 0x52, 0x3e, 0xf8, 0xfd, 0xdf, 0x4e, 0xa1, 0x3b, 0x95, 0x8e, 0x5d, 0xe6, 0xeb, 0x94, 0x8b, - 0x6b, 0x4d, 0xd9, 0xa2, 0x7c, 0xcb, 0x76, 0x37, 0x2a, 0xbb, 0x7f, 0x16, 0xd8, 0x9c, 0xad, 0x38, - 0x1b, 0x9d, 0x0a, 0xe7, 0x96, 0xd3, 0x6a, 0xa5, 0x05, 0x91, 0xd9, 0xff, 0x05, 0x00, 0x00, 0xff, - 0xff, 0x08, 0xc8, 0x2f, 0x15, 0x18, 0x1a, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// ApplicationPubSubRegistryClient is the client API for ApplicationPubSubRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ApplicationPubSubRegistryClient interface { - GetFormats(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*ApplicationPubSubFormats, error) - Get(ctx context.Context, in *GetApplicationPubSubRequest, opts ...grpc.CallOption) (*ApplicationPubSub, error) - List(ctx context.Context, in *ListApplicationPubSubsRequest, opts ...grpc.CallOption) (*ApplicationPubSubs, error) - Set(ctx context.Context, in *SetApplicationPubSubRequest, opts ...grpc.CallOption) (*ApplicationPubSub, error) - Delete(ctx context.Context, in *ApplicationPubSubIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) +func (x *ApplicationPubSub_AWSIoTProvider_AccessKey) String() string { + return protoimpl.X.MessageStringOf(x) } -type applicationPubSubRegistryClient struct { - cc *grpc.ClientConn +func (*ApplicationPubSub_AWSIoTProvider_AccessKey) ProtoMessage() {} + +func (x *ApplicationPubSub_AWSIoTProvider_AccessKey) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func NewApplicationPubSubRegistryClient(cc *grpc.ClientConn) ApplicationPubSubRegistryClient { - return &applicationPubSubRegistryClient{cc} +// Deprecated: Use ApplicationPubSub_AWSIoTProvider_AccessKey.ProtoReflect.Descriptor instead. +func (*ApplicationPubSub_AWSIoTProvider_AccessKey) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescGZIP(), []int{1, 2, 0} } -func (c *applicationPubSubRegistryClient) GetFormats(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*ApplicationPubSubFormats, error) { - out := new(ApplicationPubSubFormats) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPubSubRegistry/GetFormats", in, out, opts...) - if err != nil { - return nil, err +func (x *ApplicationPubSub_AWSIoTProvider_AccessKey) GetAccessKeyId() string { + if x != nil { + return x.AccessKeyId } - return out, nil + return "" } -func (c *applicationPubSubRegistryClient) Get(ctx context.Context, in *GetApplicationPubSubRequest, opts ...grpc.CallOption) (*ApplicationPubSub, error) { - out := new(ApplicationPubSub) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPubSubRegistry/Get", in, out, opts...) - if err != nil { - return nil, err +func (x *ApplicationPubSub_AWSIoTProvider_AccessKey) GetSecretAccessKey() string { + if x != nil { + return x.SecretAccessKey } - return out, nil + return "" } -func (c *applicationPubSubRegistryClient) List(ctx context.Context, in *ListApplicationPubSubsRequest, opts ...grpc.CallOption) (*ApplicationPubSubs, error) { - out := new(ApplicationPubSubs) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPubSubRegistry/List", in, out, opts...) - if err != nil { - return nil, err +func (x *ApplicationPubSub_AWSIoTProvider_AccessKey) GetSessionToken() string { + if x != nil { + return x.SessionToken } - return out, nil + return "" } -func (c *applicationPubSubRegistryClient) Set(ctx context.Context, in *SetApplicationPubSubRequest, opts ...grpc.CallOption) (*ApplicationPubSub, error) { - out := new(ApplicationPubSub) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPubSubRegistry/Set", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +type ApplicationPubSub_AWSIoTProvider_AssumeRole struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Arn string `protobuf:"bytes,1,opt,name=arn,proto3" json:"arn,omitempty"` + ExternalId string `protobuf:"bytes,2,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` + SessionDuration *durationpb.Duration `protobuf:"bytes,3,opt,name=session_duration,json=sessionDuration,proto3" json:"session_duration,omitempty"` } -func (c *applicationPubSubRegistryClient) Delete(ctx context.Context, in *ApplicationPubSubIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPubSubRegistry/Delete", in, out, opts...) - if err != nil { - return nil, err +func (x *ApplicationPubSub_AWSIoTProvider_AssumeRole) Reset() { + *x = ApplicationPubSub_AWSIoTProvider_AssumeRole{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return out, nil } -// ApplicationPubSubRegistryServer is the server API for ApplicationPubSubRegistry service. -type ApplicationPubSubRegistryServer interface { - GetFormats(context.Context, *types.Empty) (*ApplicationPubSubFormats, error) - Get(context.Context, *GetApplicationPubSubRequest) (*ApplicationPubSub, error) - List(context.Context, *ListApplicationPubSubsRequest) (*ApplicationPubSubs, error) - Set(context.Context, *SetApplicationPubSubRequest) (*ApplicationPubSub, error) - Delete(context.Context, *ApplicationPubSubIdentifiers) (*types.Empty, error) +func (x *ApplicationPubSub_AWSIoTProvider_AssumeRole) String() string { + return protoimpl.X.MessageStringOf(x) } -// UnimplementedApplicationPubSubRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedApplicationPubSubRegistryServer struct { -} +func (*ApplicationPubSub_AWSIoTProvider_AssumeRole) ProtoMessage() {} -func (*UnimplementedApplicationPubSubRegistryServer) GetFormats(ctx context.Context, req *types.Empty) (*ApplicationPubSubFormats, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetFormats not implemented") +func (x *ApplicationPubSub_AWSIoTProvider_AssumeRole) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (*UnimplementedApplicationPubSubRegistryServer) Get(ctx context.Context, req *GetApplicationPubSubRequest) (*ApplicationPubSub, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") + +// Deprecated: Use ApplicationPubSub_AWSIoTProvider_AssumeRole.ProtoReflect.Descriptor instead. +func (*ApplicationPubSub_AWSIoTProvider_AssumeRole) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescGZIP(), []int{1, 2, 1} } -func (*UnimplementedApplicationPubSubRegistryServer) List(ctx context.Context, req *ListApplicationPubSubsRequest) (*ApplicationPubSubs, error) { - return nil, status.Errorf(codes.Unimplemented, "method List not implemented") + +func (x *ApplicationPubSub_AWSIoTProvider_AssumeRole) GetArn() string { + if x != nil { + return x.Arn + } + return "" } -func (*UnimplementedApplicationPubSubRegistryServer) Set(ctx context.Context, req *SetApplicationPubSubRequest) (*ApplicationPubSub, error) { - return nil, status.Errorf(codes.Unimplemented, "method Set not implemented") + +func (x *ApplicationPubSub_AWSIoTProvider_AssumeRole) GetExternalId() string { + if x != nil { + return x.ExternalId + } + return "" } -func (*UnimplementedApplicationPubSubRegistryServer) Delete(ctx context.Context, req *ApplicationPubSubIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") + +func (x *ApplicationPubSub_AWSIoTProvider_AssumeRole) GetSessionDuration() *durationpb.Duration { + if x != nil { + return x.SessionDuration + } + return nil } -func RegisterApplicationPubSubRegistryServer(s *grpc.Server, srv ApplicationPubSubRegistryServer) { - s.RegisterService(&_ApplicationPubSubRegistry_serviceDesc, srv) +type ApplicationPubSub_AWSIoTProvider_DefaultIntegration struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The stack name that is associated with the CloudFormation deployment of The Things Stack Enterprise integration. + StackName string `protobuf:"bytes,1,opt,name=stack_name,json=stackName,proto3" json:"stack_name,omitempty"` } -func _ApplicationPubSubRegistry_GetFormats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationPubSubRegistryServer).GetFormats(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationPubSubRegistry/GetFormats", +func (x *ApplicationPubSub_AWSIoTProvider_DefaultIntegration) Reset() { + *x = ApplicationPubSub_AWSIoTProvider_DefaultIntegration{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationPubSubRegistryServer).GetFormats(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) } -func _ApplicationPubSubRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetApplicationPubSubRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationPubSubRegistryServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationPubSubRegistry/Get", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationPubSubRegistryServer).Get(ctx, req.(*GetApplicationPubSubRequest)) - } - return interceptor(ctx, in, info, handler) +func (x *ApplicationPubSub_AWSIoTProvider_DefaultIntegration) String() string { + return protoimpl.X.MessageStringOf(x) } -func _ApplicationPubSubRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListApplicationPubSubsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationPubSubRegistryServer).List(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationPubSubRegistry/List", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationPubSubRegistryServer).List(ctx, req.(*ListApplicationPubSubsRequest)) +func (*ApplicationPubSub_AWSIoTProvider_DefaultIntegration) ProtoMessage() {} + +func (x *ApplicationPubSub_AWSIoTProvider_DefaultIntegration) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return interceptor(ctx, in, info, handler) + return mi.MessageOf(x) } -func _ApplicationPubSubRegistry_Set_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetApplicationPubSubRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationPubSubRegistryServer).Set(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationPubSubRegistry/Set", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationPubSubRegistryServer).Set(ctx, req.(*SetApplicationPubSubRequest)) - } - return interceptor(ctx, in, info, handler) +// Deprecated: Use ApplicationPubSub_AWSIoTProvider_DefaultIntegration.ProtoReflect.Descriptor instead. +func (*ApplicationPubSub_AWSIoTProvider_DefaultIntegration) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescGZIP(), []int{1, 2, 2} } -func _ApplicationPubSubRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationPubSubIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationPubSubRegistryServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationPubSubRegistry/Delete", +func (x *ApplicationPubSub_AWSIoTProvider_DefaultIntegration) GetStackName() string { + if x != nil { + return x.StackName } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationPubSubRegistryServer).Delete(ctx, req.(*ApplicationPubSubIdentifiers)) - } - return interceptor(ctx, in, info, handler) + return "" } -var _ApplicationPubSubRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.ApplicationPubSubRegistry", - HandlerType: (*ApplicationPubSubRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetFormats", - Handler: _ApplicationPubSubRegistry_GetFormats_Handler, - }, - { - MethodName: "Get", - Handler: _ApplicationPubSubRegistry_Get_Handler, - }, - { - MethodName: "List", - Handler: _ApplicationPubSubRegistry_List_Handler, - }, - { - MethodName: "Set", - Handler: _ApplicationPubSubRegistry_Set_Handler, - }, - { - MethodName: "Delete", - Handler: _ApplicationPubSubRegistry_Delete_Handler, +var File_lorawan_stack_api_applicationserver_pubsub_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_applicationserver_pubsub_proto_rawDesc = []byte{ + 0x0a, 0x30, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, + 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, + 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xca, 0x01, 0x0a, 0x1c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x45, + 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x5f, 0x73, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x08, 0x70, 0x75, 0x62, + 0x53, 0x75, 0x62, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, + 0xc1, 0x21, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x75, 0x62, 0x53, 0x75, 0x62, 0x12, 0x50, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, + 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, + 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x14, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x74, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, + 0x53, 0x75, 0x62, 0x2e, 0x4e, 0x41, 0x54, 0x53, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x04, 0x6d, 0x71, 0x74, 0x74, + 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x51, 0x54, 0x54, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x71, 0x74, 0x74, 0x12, 0x4b, + 0x0a, 0x07, 0x61, 0x77, 0x73, 0x5f, 0x69, 0x6f, 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x30, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, + 0x75, 0x62, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6f, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x48, 0x00, 0x52, 0x06, 0x61, 0x77, 0x73, 0x49, 0x6f, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x62, + 0x61, 0x73, 0x65, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x09, 0x62, 0x61, 0x73, 0x65, 0x54, 0x6f, + 0x70, 0x69, 0x63, 0x12, 0x4e, 0x0a, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, + 0x70, 0x75, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, + 0x75, 0x73, 0x68, 0x12, 0x54, 0x0a, 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, + 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, + 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x0e, 0x75, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, + 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x75, 0x70, + 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x56, 0x0a, 0x11, 0x75, + 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, + 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x52, 0x10, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, + 0x7a, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, + 0x4c, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x6b, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x6b, 0x12, 0x4e, 0x0a, + 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x63, 0x6b, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, + 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x61, 0x63, 0x6b, 0x12, 0x4e, 0x0a, + 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, + 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, + 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x12, 0x52, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, + 0x65, 0x75, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x64, 0x12, 0x67, 0x0a, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, + 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x52, + 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, 0x76, 0x65, + 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x6c, 0x76, + 0x65, 0x64, 0x12, 0x4c, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x1a, 0x41, 0x0a, 0x0c, 0x4e, 0x41, 0x54, 0x53, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x12, 0x27, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x09, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x01, 0x10, 0x01, 0x1a, 0xb4, 0x09, 0x0a, 0x0c, 0x4d, 0x51, 0x54, 0x54, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, + 0x01, 0x01, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x24, 0x0a, + 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x17, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x18, 0x64, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x57, 0x0a, + 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x5f, 0x71, 0x6f, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x51, 0x54, 0x54, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x2e, 0x51, 0x6f, 0x53, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x51, 0x6f, 0x73, 0x12, 0x53, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x5f, 0x71, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, + 0x51, 0x54, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x51, 0x6f, 0x53, 0x52, + 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x51, 0x6f, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x75, + 0x73, 0x65, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x73, + 0x65, 0x54, 0x6c, 0x73, 0x12, 0xbe, 0x01, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa6, 0x01, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x40, + 0xf2, 0xaa, 0x19, 0x99, 0x01, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, + 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4e, 0x65, 0x77, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, + 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x05, + 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0xcf, 0x01, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0xa6, 0x01, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x40, 0xf2, 0xaa, 0x19, 0x99, 0x01, 0x1a, + 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, + 0x4e, 0x65, 0x77, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, + 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, + 0x47, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x12, 0xcd, 0x01, 0x0a, 0x0e, 0x74, 0x6c, 0x73, 0x5f, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0xa6, 0x01, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x40, 0xf2, 0xaa, 0x19, 0x99, 0x01, + 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, + 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x2e, 0x4e, 0x65, 0x77, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, + 0x22, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, + 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x2e, 0x47, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x0c, 0x74, 0x6c, 0x73, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x55, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x51, 0x54, 0x54, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x3a, + 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x44, 0x0a, 0x03, 0x51, 0x6f, + 0x53, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x54, 0x5f, 0x4d, 0x4f, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x43, + 0x45, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x54, 0x5f, 0x4c, 0x45, 0x41, 0x53, 0x54, 0x5f, + 0x4f, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x58, 0x41, 0x43, 0x54, 0x4c, + 0x59, 0x5f, 0x4f, 0x4e, 0x43, 0x45, 0x10, 0x02, 0x1a, 0x06, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, + 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x1a, 0x87, 0x0a, 0x0a, 0x0e, 0x41, + 0x57, 0x53, 0x49, 0x6f, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x9b, 0x02, + 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x82, + 0x02, 0xfa, 0x42, 0xfe, 0x01, 0x72, 0xfb, 0x01, 0x52, 0x0a, 0x61, 0x66, 0x2d, 0x73, 0x6f, 0x75, + 0x74, 0x68, 0x2d, 0x31, 0x52, 0x09, 0x61, 0x70, 0x2d, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x31, 0x52, + 0x0e, 0x61, 0x70, 0x2d, 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x31, 0x52, + 0x0e, 0x61, 0x70, 0x2d, 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x32, 0x52, + 0x0a, 0x61, 0x70, 0x2d, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x2d, 0x31, 0x52, 0x0e, 0x61, 0x70, 0x2d, + 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x31, 0x52, 0x0e, 0x61, 0x70, 0x2d, + 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x32, 0x52, 0x0c, 0x63, 0x61, 0x2d, + 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x2d, 0x31, 0x52, 0x0c, 0x65, 0x75, 0x2d, 0x63, 0x65, + 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x2d, 0x31, 0x52, 0x0a, 0x65, 0x75, 0x2d, 0x6e, 0x6f, 0x72, 0x74, + 0x68, 0x2d, 0x31, 0x52, 0x0a, 0x65, 0x75, 0x2d, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x2d, 0x31, 0x52, + 0x09, 0x65, 0x75, 0x2d, 0x77, 0x65, 0x73, 0x74, 0x2d, 0x31, 0x52, 0x09, 0x65, 0x75, 0x2d, 0x77, + 0x65, 0x73, 0x74, 0x2d, 0x32, 0x52, 0x09, 0x65, 0x75, 0x2d, 0x77, 0x65, 0x73, 0x74, 0x2d, 0x33, + 0x52, 0x0a, 0x6d, 0x65, 0x2d, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x2d, 0x31, 0x52, 0x09, 0x73, 0x61, + 0x2d, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x31, 0x52, 0x09, 0x75, 0x73, 0x2d, 0x65, 0x61, 0x73, 0x74, + 0x2d, 0x31, 0x52, 0x09, 0x75, 0x73, 0x2d, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x32, 0x52, 0x09, 0x75, + 0x73, 0x2d, 0x77, 0x65, 0x73, 0x74, 0x2d, 0x31, 0x52, 0x09, 0x75, 0x73, 0x2d, 0x77, 0x65, 0x73, + 0x74, 0x2d, 0x32, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x0a, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, + 0x75, 0x62, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6f, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x5c, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, + 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x41, + 0x57, 0x53, 0x49, 0x6f, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x73, + 0x73, 0x75, 0x6d, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x0a, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, + 0x52, 0x6f, 0x6c, 0x65, 0x12, 0xa3, 0x01, 0x0a, 0x10, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x78, 0xfa, 0x42, 0x75, 0x72, 0x73, 0x18, 0x80, 0x01, 0x32, 0x6e, 0x5e, 0x28, 0x28, 0x28, 0x5b, + 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, + 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, + 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, + 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7c, 0x29, 0x24, 0x52, 0x0f, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x5f, 0x0a, 0x07, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x41, + 0x57, 0x53, 0x49, 0x6f, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x1a, 0xb2, 0x01, 0x0a, 0x09, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x0d, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x13, 0xfa, 0x42, 0x10, 0x72, 0x0e, 0x10, 0x10, 0x18, 0x80, 0x01, 0x32, 0x07, 0x5e, 0x5b, + 0x5c, 0x77, 0x5d, 0x2a, 0x24, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, + 0x49, 0x64, 0x12, 0x33, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x18, 0x28, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, + 0x1a, 0xe6, 0x01, 0x0a, 0x0a, 0x41, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, + 0x4b, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xfa, 0x42, + 0x36, 0x72, 0x34, 0x32, 0x32, 0x5e, 0x61, 0x72, 0x6e, 0x3a, 0x61, 0x77, 0x73, 0x3a, 0x69, 0x61, + 0x6d, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x32, 0x7d, 0x3a, 0x72, 0x6f, 0x6c, + 0x65, 0x5c, 0x2f, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2b, 0x3d, + 0x2c, 0x2e, 0x40, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x18, 0xc8, 0x09, 0x32, 0x10, 0x5e, 0x5b, 0x5c, + 0x77, 0x2b, 0x3d, 0x2c, 0x2e, 0x40, 0x3a, 0x5c, 0x2f, 0x2d, 0x5d, 0x2a, 0x24, 0x52, 0x0a, 0x65, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x10, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x1a, 0x61, 0x0a, 0x12, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x41, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x22, 0xfa, 0x42, 0x1f, 0x72, 0x1d, 0x18, 0x80, 0x01, 0x32, 0x18, 0x5e, + 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x24, 0x52, 0x09, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x4e, 0x61, + 0x6d, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x3a, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x32, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x1d, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x3a, 0x08, + 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, + 0x10, 0x01, 0x42, 0x0f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x03, + 0xf8, 0x42, 0x01, 0x22, 0x51, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x70, 0x75, 0x62, + 0x73, 0x75, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x52, 0x07, 0x70, + 0x75, 0x62, 0x73, 0x75, 0x62, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x18, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x46, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x2e, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0xa2, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x48, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xbf, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x3a, 0x08, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0x9d, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x73, 0x75, + 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x12, 0x39, 0x0a, 0x0a, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x32, 0xbf, 0x06, 0x0a, 0x19, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x6a, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x28, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x73, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, + 0x61, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2d, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x73, 0x12, 0x9f, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x42, 0x12, 0x40, 0x2f, 0x61, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2f, 0x7b, 0x69, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x70, 0x75, 0x62, 0x5f, 0x73, 0x75, 0x62, 0x5f, + 0x69, 0x64, 0x7d, 0x12, 0x8e, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, + 0x53, 0x75, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x73, 0x22, + 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x61, 0x73, 0x2f, 0x70, 0x75, 0x62, + 0x73, 0x75, 0x62, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xef, 0x01, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x2b, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, + 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, + 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x22, 0x97, 0x01, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x90, 0x01, 0x1a, 0x4e, 0x2f, 0x61, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x73, + 0x75, 0x62, 0x2f, 0x7b, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, + 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x70, 0x75, 0x62, 0x5f, 0x73, + 0x75, 0x62, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x3b, 0x22, 0x36, 0x2f, 0x61, 0x73, + 0x2f, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2f, 0x7b, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2e, + 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x90, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x12, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, + 0x62, 0x53, 0x75, 0x62, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x2a, + 0x38, 0x2f, 0x61, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2f, 0x7b, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x70, 0x75, + 0x62, 0x5f, 0x73, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x7d, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescOnce sync.Once + file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescData = file_lorawan_stack_api_applicationserver_pubsub_proto_rawDesc +) + +func file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescData) + }) + return file_lorawan_stack_api_applicationserver_pubsub_proto_rawDescData +} + +var file_lorawan_stack_api_applicationserver_pubsub_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_lorawan_stack_api_applicationserver_pubsub_proto_goTypes = []interface{}{ + (ApplicationPubSub_MQTTProvider_QoS)(0), // 0: ttn.lorawan.v3.ApplicationPubSub.MQTTProvider.QoS + (*ApplicationPubSubIdentifiers)(nil), // 1: ttn.lorawan.v3.ApplicationPubSubIdentifiers + (*ApplicationPubSub)(nil), // 2: ttn.lorawan.v3.ApplicationPubSub + (*ApplicationPubSubs)(nil), // 3: ttn.lorawan.v3.ApplicationPubSubs + (*ApplicationPubSubFormats)(nil), // 4: ttn.lorawan.v3.ApplicationPubSubFormats + (*GetApplicationPubSubRequest)(nil), // 5: ttn.lorawan.v3.GetApplicationPubSubRequest + (*ListApplicationPubSubsRequest)(nil), // 6: ttn.lorawan.v3.ListApplicationPubSubsRequest + (*SetApplicationPubSubRequest)(nil), // 7: ttn.lorawan.v3.SetApplicationPubSubRequest + (*ApplicationPubSub_NATSProvider)(nil), // 8: ttn.lorawan.v3.ApplicationPubSub.NATSProvider + (*ApplicationPubSub_MQTTProvider)(nil), // 9: ttn.lorawan.v3.ApplicationPubSub.MQTTProvider + (*ApplicationPubSub_AWSIoTProvider)(nil), // 10: ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider + (*ApplicationPubSub_Message)(nil), // 11: ttn.lorawan.v3.ApplicationPubSub.Message + nil, // 12: ttn.lorawan.v3.ApplicationPubSub.MQTTProvider.HeadersEntry + (*ApplicationPubSub_AWSIoTProvider_AccessKey)(nil), // 13: ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider.AccessKey + (*ApplicationPubSub_AWSIoTProvider_AssumeRole)(nil), // 14: ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider.AssumeRole + (*ApplicationPubSub_AWSIoTProvider_DefaultIntegration)(nil), // 15: ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider.DefaultIntegration + nil, // 16: ttn.lorawan.v3.ApplicationPubSubFormats.FormatsEntry + (*ApplicationIdentifiers)(nil), // 17: ttn.lorawan.v3.ApplicationIdentifiers + (*timestamppb.Timestamp)(nil), // 18: google.protobuf.Timestamp + (*fieldmaskpb.FieldMask)(nil), // 19: google.protobuf.FieldMask + (*durationpb.Duration)(nil), // 20: google.protobuf.Duration + (*emptypb.Empty)(nil), // 21: google.protobuf.Empty +} +var file_lorawan_stack_api_applicationserver_pubsub_proto_depIdxs = []int32{ + 17, // 0: ttn.lorawan.v3.ApplicationPubSubIdentifiers.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 1, // 1: ttn.lorawan.v3.ApplicationPubSub.ids:type_name -> ttn.lorawan.v3.ApplicationPubSubIdentifiers + 18, // 2: ttn.lorawan.v3.ApplicationPubSub.created_at:type_name -> google.protobuf.Timestamp + 18, // 3: ttn.lorawan.v3.ApplicationPubSub.updated_at:type_name -> google.protobuf.Timestamp + 8, // 4: ttn.lorawan.v3.ApplicationPubSub.nats:type_name -> ttn.lorawan.v3.ApplicationPubSub.NATSProvider + 9, // 5: ttn.lorawan.v3.ApplicationPubSub.mqtt:type_name -> ttn.lorawan.v3.ApplicationPubSub.MQTTProvider + 10, // 6: ttn.lorawan.v3.ApplicationPubSub.aws_iot:type_name -> ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider + 11, // 7: ttn.lorawan.v3.ApplicationPubSub.downlink_push:type_name -> ttn.lorawan.v3.ApplicationPubSub.Message + 11, // 8: ttn.lorawan.v3.ApplicationPubSub.downlink_replace:type_name -> ttn.lorawan.v3.ApplicationPubSub.Message + 11, // 9: ttn.lorawan.v3.ApplicationPubSub.uplink_message:type_name -> ttn.lorawan.v3.ApplicationPubSub.Message + 11, // 10: ttn.lorawan.v3.ApplicationPubSub.uplink_normalized:type_name -> ttn.lorawan.v3.ApplicationPubSub.Message + 11, // 11: ttn.lorawan.v3.ApplicationPubSub.join_accept:type_name -> ttn.lorawan.v3.ApplicationPubSub.Message + 11, // 12: ttn.lorawan.v3.ApplicationPubSub.downlink_ack:type_name -> ttn.lorawan.v3.ApplicationPubSub.Message + 11, // 13: ttn.lorawan.v3.ApplicationPubSub.downlink_nack:type_name -> ttn.lorawan.v3.ApplicationPubSub.Message + 11, // 14: ttn.lorawan.v3.ApplicationPubSub.downlink_sent:type_name -> ttn.lorawan.v3.ApplicationPubSub.Message + 11, // 15: ttn.lorawan.v3.ApplicationPubSub.downlink_failed:type_name -> ttn.lorawan.v3.ApplicationPubSub.Message + 11, // 16: ttn.lorawan.v3.ApplicationPubSub.downlink_queued:type_name -> ttn.lorawan.v3.ApplicationPubSub.Message + 11, // 17: ttn.lorawan.v3.ApplicationPubSub.downlink_queue_invalidated:type_name -> ttn.lorawan.v3.ApplicationPubSub.Message + 11, // 18: ttn.lorawan.v3.ApplicationPubSub.location_solved:type_name -> ttn.lorawan.v3.ApplicationPubSub.Message + 11, // 19: ttn.lorawan.v3.ApplicationPubSub.service_data:type_name -> ttn.lorawan.v3.ApplicationPubSub.Message + 2, // 20: ttn.lorawan.v3.ApplicationPubSubs.pubsubs:type_name -> ttn.lorawan.v3.ApplicationPubSub + 16, // 21: ttn.lorawan.v3.ApplicationPubSubFormats.formats:type_name -> ttn.lorawan.v3.ApplicationPubSubFormats.FormatsEntry + 1, // 22: ttn.lorawan.v3.GetApplicationPubSubRequest.ids:type_name -> ttn.lorawan.v3.ApplicationPubSubIdentifiers + 19, // 23: ttn.lorawan.v3.GetApplicationPubSubRequest.field_mask:type_name -> google.protobuf.FieldMask + 17, // 24: ttn.lorawan.v3.ListApplicationPubSubsRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 19, // 25: ttn.lorawan.v3.ListApplicationPubSubsRequest.field_mask:type_name -> google.protobuf.FieldMask + 2, // 26: ttn.lorawan.v3.SetApplicationPubSubRequest.pubsub:type_name -> ttn.lorawan.v3.ApplicationPubSub + 19, // 27: ttn.lorawan.v3.SetApplicationPubSubRequest.field_mask:type_name -> google.protobuf.FieldMask + 0, // 28: ttn.lorawan.v3.ApplicationPubSub.MQTTProvider.subscribe_qos:type_name -> ttn.lorawan.v3.ApplicationPubSub.MQTTProvider.QoS + 0, // 29: ttn.lorawan.v3.ApplicationPubSub.MQTTProvider.publish_qos:type_name -> ttn.lorawan.v3.ApplicationPubSub.MQTTProvider.QoS + 12, // 30: ttn.lorawan.v3.ApplicationPubSub.MQTTProvider.headers:type_name -> ttn.lorawan.v3.ApplicationPubSub.MQTTProvider.HeadersEntry + 13, // 31: ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider.access_key:type_name -> ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider.AccessKey + 14, // 32: ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider.assume_role:type_name -> ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider.AssumeRole + 15, // 33: ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider.default:type_name -> ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider.DefaultIntegration + 20, // 34: ttn.lorawan.v3.ApplicationPubSub.AWSIoTProvider.AssumeRole.session_duration:type_name -> google.protobuf.Duration + 21, // 35: ttn.lorawan.v3.ApplicationPubSubRegistry.GetFormats:input_type -> google.protobuf.Empty + 5, // 36: ttn.lorawan.v3.ApplicationPubSubRegistry.Get:input_type -> ttn.lorawan.v3.GetApplicationPubSubRequest + 6, // 37: ttn.lorawan.v3.ApplicationPubSubRegistry.List:input_type -> ttn.lorawan.v3.ListApplicationPubSubsRequest + 7, // 38: ttn.lorawan.v3.ApplicationPubSubRegistry.Set:input_type -> ttn.lorawan.v3.SetApplicationPubSubRequest + 1, // 39: ttn.lorawan.v3.ApplicationPubSubRegistry.Delete:input_type -> ttn.lorawan.v3.ApplicationPubSubIdentifiers + 4, // 40: ttn.lorawan.v3.ApplicationPubSubRegistry.GetFormats:output_type -> ttn.lorawan.v3.ApplicationPubSubFormats + 2, // 41: ttn.lorawan.v3.ApplicationPubSubRegistry.Get:output_type -> ttn.lorawan.v3.ApplicationPubSub + 3, // 42: ttn.lorawan.v3.ApplicationPubSubRegistry.List:output_type -> ttn.lorawan.v3.ApplicationPubSubs + 2, // 43: ttn.lorawan.v3.ApplicationPubSubRegistry.Set:output_type -> ttn.lorawan.v3.ApplicationPubSub + 21, // 44: ttn.lorawan.v3.ApplicationPubSubRegistry.Delete:output_type -> google.protobuf.Empty + 40, // [40:45] is the sub-list for method output_type + 35, // [35:40] is the sub-list for method input_type + 35, // [35:35] is the sub-list for extension type_name + 35, // [35:35] is the sub-list for extension extendee + 0, // [0:35] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_applicationserver_pubsub_proto_init() } +func file_lorawan_stack_api_applicationserver_pubsub_proto_init() { + if File_lorawan_stack_api_applicationserver_pubsub_proto != nil { + return + } + file_lorawan_stack_api_identifiers_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPubSubIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPubSub); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPubSubs); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPubSubFormats); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetApplicationPubSubRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListApplicationPubSubsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetApplicationPubSubRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPubSub_NATSProvider); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPubSub_MQTTProvider); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPubSub_AWSIoTProvider); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPubSub_Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPubSub_AWSIoTProvider_AccessKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPubSub_AWSIoTProvider_AssumeRole); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationPubSub_AWSIoTProvider_DefaultIntegration); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[1].OneofWrappers = []interface{}{ + (*ApplicationPubSub_Nats)(nil), + (*ApplicationPubSub_Mqtt)(nil), + (*ApplicationPubSub_AwsIot)(nil), + } + file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes[9].OneofWrappers = []interface{}{ + (*ApplicationPubSub_AWSIoTProvider_Default)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_applicationserver_pubsub_proto_rawDesc, + NumEnums: 1, + NumMessages: 16, + NumExtensions: 0, + NumServices: 1, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/applicationserver_pubsub.proto", + GoTypes: file_lorawan_stack_api_applicationserver_pubsub_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_applicationserver_pubsub_proto_depIdxs, + EnumInfos: file_lorawan_stack_api_applicationserver_pubsub_proto_enumTypes, + MessageInfos: file_lorawan_stack_api_applicationserver_pubsub_proto_msgTypes, + }.Build() + File_lorawan_stack_api_applicationserver_pubsub_proto = out.File + file_lorawan_stack_api_applicationserver_pubsub_proto_rawDesc = nil + file_lorawan_stack_api_applicationserver_pubsub_proto_goTypes = nil + file_lorawan_stack_api_applicationserver_pubsub_proto_depIdxs = nil } diff --git a/pkg/ttnpb/applicationserver_pubsub.pb.gw.go b/pkg/ttnpb/applicationserver_pubsub.pb.gw.go index 437ef45b96..70cd1fe247 100644 --- a/pkg/ttnpb/applicationserver_pubsub.pb.gw.go +++ b/pkg/ttnpb/applicationserver_pubsub.pb.gw.go @@ -13,16 +13,15 @@ import ( "io" "net/http" - "github.com/gogo/protobuf/types" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/emptypb" ) // Suppress "imported and not used" errors @@ -31,11 +30,10 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join func request_ApplicationPubSubRegistry_GetFormats_0(ctx context.Context, marshaler runtime.Marshaler, client ApplicationPubSubRegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := client.GetFormats(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -44,7 +42,7 @@ func request_ApplicationPubSubRegistry_GetFormats_0(ctx context.Context, marshal } func local_request_ApplicationPubSubRegistry_GetFormats_0(ctx context.Context, marshaler runtime.Marshaler, server ApplicationPubSubRegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := server.GetFormats(ctx, &protoReq) @@ -73,7 +71,6 @@ func request_ApplicationPubSubRegistry_Get_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.application_ids.application_id", err) } @@ -84,7 +81,6 @@ func request_ApplicationPubSubRegistry_Get_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "ids.pub_sub_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.pub_sub_id", err) } @@ -118,7 +114,6 @@ func local_request_ApplicationPubSubRegistry_Get_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.application_ids.application_id", err) } @@ -129,7 +124,6 @@ func local_request_ApplicationPubSubRegistry_Get_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "ids.pub_sub_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.pub_sub_id", err) } @@ -167,7 +161,6 @@ func request_ApplicationPubSubRegistry_List_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -201,7 +194,6 @@ func local_request_ApplicationPubSubRegistry_List_0(ctx context.Context, marshal } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -243,7 +235,6 @@ func request_ApplicationPubSubRegistry_Set_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "pubsub.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pubsub.ids.application_ids.application_id", err) } @@ -254,7 +245,6 @@ func request_ApplicationPubSubRegistry_Set_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "pubsub.ids.pub_sub_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pubsub.ids.pub_sub_id", err) } @@ -289,7 +279,6 @@ func local_request_ApplicationPubSubRegistry_Set_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "pubsub.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pubsub.ids.application_ids.application_id", err) } @@ -300,7 +289,6 @@ func local_request_ApplicationPubSubRegistry_Set_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "pubsub.ids.pub_sub_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pubsub.ids.pub_sub_id", err) } @@ -335,7 +323,6 @@ func request_ApplicationPubSubRegistry_Set_1(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "pubsub.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pubsub.ids.application_ids.application_id", err) } @@ -370,7 +357,6 @@ func local_request_ApplicationPubSubRegistry_Set_1(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "pubsub.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pubsub.ids.application_ids.application_id", err) } @@ -401,7 +387,6 @@ func request_ApplicationPubSubRegistry_Delete_0(ctx context.Context, marshaler r } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -412,7 +397,6 @@ func request_ApplicationPubSubRegistry_Delete_0(ctx context.Context, marshaler r } protoReq.PubSubId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pub_sub_id", err) } @@ -446,7 +430,6 @@ func local_request_ApplicationPubSubRegistry_Delete_0(ctx context.Context, marsh } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -457,7 +440,6 @@ func local_request_ApplicationPubSubRegistry_Delete_0(ctx context.Context, marsh } protoReq.PubSubId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pub_sub_id", err) } @@ -486,20 +468,22 @@ func RegisterApplicationPubSubRegistryHandlerServer(ctx context.Context, mux *ru var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPubSubRegistry/GetFormats", runtime.WithHTTPPathPattern("/as/pubsub-formats")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationPubSubRegistry_GetFormats_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationPubSubRegistry_GetFormats_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPubSubRegistry_GetFormats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPubSubRegistry_GetFormats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -509,20 +493,22 @@ func RegisterApplicationPubSubRegistryHandlerServer(ctx context.Context, mux *ru var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPubSubRegistry/Get", runtime.WithHTTPPathPattern("/as/pubsub/{ids.application_ids.application_id}/{ids.pub_sub_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationPubSubRegistry_Get_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationPubSubRegistry_Get_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPubSubRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPubSubRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -532,20 +518,22 @@ func RegisterApplicationPubSubRegistryHandlerServer(ctx context.Context, mux *ru var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPubSubRegistry/List", runtime.WithHTTPPathPattern("/as/pubsub/{application_ids.application_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationPubSubRegistry_List_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationPubSubRegistry_List_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPubSubRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPubSubRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -555,20 +543,22 @@ func RegisterApplicationPubSubRegistryHandlerServer(ctx context.Context, mux *ru var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPubSubRegistry/Set", runtime.WithHTTPPathPattern("/as/pubsub/{pubsub.ids.application_ids.application_id}/{pubsub.ids.pub_sub_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationPubSubRegistry_Set_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationPubSubRegistry_Set_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPubSubRegistry_Set_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPubSubRegistry_Set_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -578,20 +568,22 @@ func RegisterApplicationPubSubRegistryHandlerServer(ctx context.Context, mux *ru var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPubSubRegistry/Set", runtime.WithHTTPPathPattern("/as/pubsub/{pubsub.ids.application_ids.application_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationPubSubRegistry_Set_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationPubSubRegistry_Set_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPubSubRegistry_Set_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPubSubRegistry_Set_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -601,20 +593,22 @@ func RegisterApplicationPubSubRegistryHandlerServer(ctx context.Context, mux *ru var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPubSubRegistry/Delete", runtime.WithHTTPPathPattern("/as/pubsub/{application_ids.application_id}/{pub_sub_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationPubSubRegistry_Delete_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationPubSubRegistry_Delete_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPubSubRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPubSubRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -663,19 +657,21 @@ func RegisterApplicationPubSubRegistryHandlerClient(ctx context.Context, mux *ru ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPubSubRegistry/GetFormats", runtime.WithHTTPPathPattern("/as/pubsub-formats")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationPubSubRegistry_GetFormats_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationPubSubRegistry_GetFormats_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPubSubRegistry_GetFormats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPubSubRegistry_GetFormats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -683,19 +679,21 @@ func RegisterApplicationPubSubRegistryHandlerClient(ctx context.Context, mux *ru ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPubSubRegistry/Get", runtime.WithHTTPPathPattern("/as/pubsub/{ids.application_ids.application_id}/{ids.pub_sub_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationPubSubRegistry_Get_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationPubSubRegistry_Get_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPubSubRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPubSubRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -703,19 +701,21 @@ func RegisterApplicationPubSubRegistryHandlerClient(ctx context.Context, mux *ru ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPubSubRegistry/List", runtime.WithHTTPPathPattern("/as/pubsub/{application_ids.application_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationPubSubRegistry_List_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationPubSubRegistry_List_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPubSubRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPubSubRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -723,19 +723,21 @@ func RegisterApplicationPubSubRegistryHandlerClient(ctx context.Context, mux *ru ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPubSubRegistry/Set", runtime.WithHTTPPathPattern("/as/pubsub/{pubsub.ids.application_ids.application_id}/{pubsub.ids.pub_sub_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationPubSubRegistry_Set_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationPubSubRegistry_Set_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPubSubRegistry_Set_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPubSubRegistry_Set_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -743,19 +745,21 @@ func RegisterApplicationPubSubRegistryHandlerClient(ctx context.Context, mux *ru ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPubSubRegistry/Set", runtime.WithHTTPPathPattern("/as/pubsub/{pubsub.ids.application_ids.application_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationPubSubRegistry_Set_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationPubSubRegistry_Set_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPubSubRegistry_Set_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPubSubRegistry_Set_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -763,19 +767,21 @@ func RegisterApplicationPubSubRegistryHandlerClient(ctx context.Context, mux *ru ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationPubSubRegistry/Delete", runtime.WithHTTPPathPattern("/as/pubsub/{application_ids.application_id}/{pub_sub_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationPubSubRegistry_Delete_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationPubSubRegistry_Delete_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationPubSubRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationPubSubRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -783,17 +789,17 @@ func RegisterApplicationPubSubRegistryHandlerClient(ctx context.Context, mux *ru } var ( - pattern_ApplicationPubSubRegistry_GetFormats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"as", "pubsub-formats"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationPubSubRegistry_GetFormats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"as", "pubsub-formats"}, "")) - pattern_ApplicationPubSubRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"as", "pubsub", "ids.application_ids.application_id", "ids.pub_sub_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationPubSubRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"as", "pubsub", "ids.application_ids.application_id", "ids.pub_sub_id"}, "")) - pattern_ApplicationPubSubRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"as", "pubsub", "application_ids.application_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationPubSubRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"as", "pubsub", "application_ids.application_id"}, "")) - pattern_ApplicationPubSubRegistry_Set_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"as", "pubsub", "pubsub.ids.application_ids.application_id", "pubsub.ids.pub_sub_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationPubSubRegistry_Set_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"as", "pubsub", "pubsub.ids.application_ids.application_id", "pubsub.ids.pub_sub_id"}, "")) - pattern_ApplicationPubSubRegistry_Set_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"as", "pubsub", "pubsub.ids.application_ids.application_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationPubSubRegistry_Set_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"as", "pubsub", "pubsub.ids.application_ids.application_id"}, "")) - pattern_ApplicationPubSubRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"as", "pubsub", "application_ids.application_id", "pub_sub_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationPubSubRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"as", "pubsub", "application_ids.application_id", "pub_sub_id"}, "")) ) var ( diff --git a/pkg/ttnpb/applicationserver_pubsub.pb.setters.fm.go b/pkg/ttnpb/applicationserver_pubsub.pb.setters.fm.go index 167a55f091..f52f82118d 100644 --- a/pkg/ttnpb/applicationserver_pubsub.pb.setters.fm.go +++ b/pkg/ttnpb/applicationserver_pubsub.pb.setters.fm.go @@ -824,8 +824,7 @@ func (dst *ApplicationPubSub_MQTTProvider) SetFields(src *ApplicationPubSub_MQTT if src != nil { dst.SubscribeQos = src.SubscribeQos } else { - var zero ApplicationPubSub_MQTTProvider_QoS - dst.SubscribeQos = zero + dst.SubscribeQos = 0 } case "publish_qos": if len(subs) > 0 { @@ -834,8 +833,7 @@ func (dst *ApplicationPubSub_MQTTProvider) SetFields(src *ApplicationPubSub_MQTT if src != nil { dst.PublishQos = src.PublishQos } else { - var zero ApplicationPubSub_MQTTProvider_QoS - dst.PublishQos = zero + dst.PublishQos = 0 } case "use_tls": if len(subs) > 0 { diff --git a/pkg/ttnpb/applicationserver_pubsub.pb.validate.go b/pkg/ttnpb/applicationserver_pubsub.pb.validate.go index edcc2ab7ff..d12b495261 100644 --- a/pkg/ttnpb/applicationserver_pubsub.pb.validate.go +++ b/pkg/ttnpb/applicationserver_pubsub.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _applicationserver_pubsub_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on ApplicationPubSubIdentifiers with // the rules defined in the proto definition for this message. If any rules // are violated, an error is returned. diff --git a/pkg/ttnpb/applicationserver_pubsub_flags.pb.go b/pkg/ttnpb/applicationserver_pubsub_flags.pb.go index 8ccf42da05..6f0d962897 100644 --- a/pkg/ttnpb/applicationserver_pubsub_flags.pb.go +++ b/pkg/ttnpb/applicationserver_pubsub_flags.pb.go @@ -1,14 +1,14 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/applicationserver_pubsub.proto package ttnpb import ( flagsplugin "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - gogo "github.com/TheThingsIndustries/protoc-gen-go-flags/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-flags/golang" pflag "github.com/spf13/pflag" ) @@ -347,7 +347,7 @@ func (m *ApplicationPubSub_AWSIoTProvider_AssumeRole) SetFromFlags(flags *pflag. if val, changed, err := flagsplugin.GetDuration(flags, flagsplugin.Prefix("session_duration", prefix)); err != nil { return nil, err } else if changed { - m.SessionDuration = gogo.SetDuration(val) + m.SessionDuration = golang.SetDuration(val) paths = append(paths, flagsplugin.Prefix("session_duration", prefix)) } return paths, nil @@ -980,7 +980,7 @@ func (m *ListApplicationPubSubsRequest) SetFromFlags(flags *pflag.FlagSet, prefi if val, changed, err := flagsplugin.GetStringSlice(flags, flagsplugin.Prefix("field_mask", prefix)); err != nil { return nil, err } else if changed { - m.FieldMask = gogo.SetFieldMask(val) + m.FieldMask = golang.SetFieldMask(val) paths = append(paths, flagsplugin.Prefix("field_mask", prefix)) } return paths, nil diff --git a/pkg/ttnpb/applicationserver_pubsub_grpc.pb.go b/pkg/ttnpb/applicationserver_pubsub_grpc.pb.go new file mode 100644 index 0000000000..5a432c09d5 --- /dev/null +++ b/pkg/ttnpb/applicationserver_pubsub_grpc.pb.go @@ -0,0 +1,251 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/applicationserver_pubsub.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// ApplicationPubSubRegistryClient is the client API for ApplicationPubSubRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ApplicationPubSubRegistryClient interface { + GetFormats(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ApplicationPubSubFormats, error) + Get(ctx context.Context, in *GetApplicationPubSubRequest, opts ...grpc.CallOption) (*ApplicationPubSub, error) + List(ctx context.Context, in *ListApplicationPubSubsRequest, opts ...grpc.CallOption) (*ApplicationPubSubs, error) + Set(ctx context.Context, in *SetApplicationPubSubRequest, opts ...grpc.CallOption) (*ApplicationPubSub, error) + Delete(ctx context.Context, in *ApplicationPubSubIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type applicationPubSubRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewApplicationPubSubRegistryClient(cc grpc.ClientConnInterface) ApplicationPubSubRegistryClient { + return &applicationPubSubRegistryClient{cc} +} + +func (c *applicationPubSubRegistryClient) GetFormats(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ApplicationPubSubFormats, error) { + out := new(ApplicationPubSubFormats) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPubSubRegistry/GetFormats", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationPubSubRegistryClient) Get(ctx context.Context, in *GetApplicationPubSubRequest, opts ...grpc.CallOption) (*ApplicationPubSub, error) { + out := new(ApplicationPubSub) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPubSubRegistry/Get", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationPubSubRegistryClient) List(ctx context.Context, in *ListApplicationPubSubsRequest, opts ...grpc.CallOption) (*ApplicationPubSubs, error) { + out := new(ApplicationPubSubs) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPubSubRegistry/List", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationPubSubRegistryClient) Set(ctx context.Context, in *SetApplicationPubSubRequest, opts ...grpc.CallOption) (*ApplicationPubSub, error) { + out := new(ApplicationPubSub) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPubSubRegistry/Set", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationPubSubRegistryClient) Delete(ctx context.Context, in *ApplicationPubSubIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationPubSubRegistry/Delete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ApplicationPubSubRegistryServer is the server API for ApplicationPubSubRegistry service. +// All implementations must embed UnimplementedApplicationPubSubRegistryServer +// for forward compatibility +type ApplicationPubSubRegistryServer interface { + GetFormats(context.Context, *emptypb.Empty) (*ApplicationPubSubFormats, error) + Get(context.Context, *GetApplicationPubSubRequest) (*ApplicationPubSub, error) + List(context.Context, *ListApplicationPubSubsRequest) (*ApplicationPubSubs, error) + Set(context.Context, *SetApplicationPubSubRequest) (*ApplicationPubSub, error) + Delete(context.Context, *ApplicationPubSubIdentifiers) (*emptypb.Empty, error) + mustEmbedUnimplementedApplicationPubSubRegistryServer() +} + +// UnimplementedApplicationPubSubRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedApplicationPubSubRegistryServer struct { +} + +func (UnimplementedApplicationPubSubRegistryServer) GetFormats(context.Context, *emptypb.Empty) (*ApplicationPubSubFormats, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetFormats not implemented") +} +func (UnimplementedApplicationPubSubRegistryServer) Get(context.Context, *GetApplicationPubSubRequest) (*ApplicationPubSub, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (UnimplementedApplicationPubSubRegistryServer) List(context.Context, *ListApplicationPubSubsRequest) (*ApplicationPubSubs, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedApplicationPubSubRegistryServer) Set(context.Context, *SetApplicationPubSubRequest) (*ApplicationPubSub, error) { + return nil, status.Errorf(codes.Unimplemented, "method Set not implemented") +} +func (UnimplementedApplicationPubSubRegistryServer) Delete(context.Context, *ApplicationPubSubIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedApplicationPubSubRegistryServer) mustEmbedUnimplementedApplicationPubSubRegistryServer() { +} + +// UnsafeApplicationPubSubRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ApplicationPubSubRegistryServer will +// result in compilation errors. +type UnsafeApplicationPubSubRegistryServer interface { + mustEmbedUnimplementedApplicationPubSubRegistryServer() +} + +func RegisterApplicationPubSubRegistryServer(s grpc.ServiceRegistrar, srv ApplicationPubSubRegistryServer) { + s.RegisterService(&ApplicationPubSubRegistry_ServiceDesc, srv) +} + +func _ApplicationPubSubRegistry_GetFormats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationPubSubRegistryServer).GetFormats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationPubSubRegistry/GetFormats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationPubSubRegistryServer).GetFormats(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationPubSubRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetApplicationPubSubRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationPubSubRegistryServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationPubSubRegistry/Get", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationPubSubRegistryServer).Get(ctx, req.(*GetApplicationPubSubRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationPubSubRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListApplicationPubSubsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationPubSubRegistryServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationPubSubRegistry/List", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationPubSubRegistryServer).List(ctx, req.(*ListApplicationPubSubsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationPubSubRegistry_Set_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetApplicationPubSubRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationPubSubRegistryServer).Set(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationPubSubRegistry/Set", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationPubSubRegistryServer).Set(ctx, req.(*SetApplicationPubSubRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationPubSubRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApplicationPubSubIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationPubSubRegistryServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationPubSubRegistry/Delete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationPubSubRegistryServer).Delete(ctx, req.(*ApplicationPubSubIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// ApplicationPubSubRegistry_ServiceDesc is the grpc.ServiceDesc for ApplicationPubSubRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ApplicationPubSubRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.ApplicationPubSubRegistry", + HandlerType: (*ApplicationPubSubRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetFormats", + Handler: _ApplicationPubSubRegistry_GetFormats_Handler, + }, + { + MethodName: "Get", + Handler: _ApplicationPubSubRegistry_Get_Handler, + }, + { + MethodName: "List", + Handler: _ApplicationPubSubRegistry_List_Handler, + }, + { + MethodName: "Set", + Handler: _ApplicationPubSubRegistry_Set_Handler, + }, + { + MethodName: "Delete", + Handler: _ApplicationPubSubRegistry_Delete_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/applicationserver_pubsub.proto", +} diff --git a/pkg/ttnpb/applicationserver_pubsub_json.pb.go b/pkg/ttnpb/applicationserver_pubsub_json.pb.go index 01147b77d7..7c19b4fbf2 100644 --- a/pkg/ttnpb/applicationserver_pubsub_json.pb.go +++ b/pkg/ttnpb/applicationserver_pubsub_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/applicationserver_pubsub.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" ) @@ -199,7 +199,7 @@ func (x *ApplicationPubSub) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("ids") // NOTE: ApplicationPubSubIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Ids) + golang.MarshalMessage(s, x.Ids) } if x.CreatedAt != nil || s.HasField("created_at") { s.WriteMoreIf(&wroteField) @@ -207,7 +207,7 @@ func (x *ApplicationPubSub) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.CreatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.CreatedAt) + golang.MarshalTimestamp(s, x.CreatedAt) } } if x.UpdatedAt != nil || s.HasField("updated_at") { @@ -216,7 +216,7 @@ func (x *ApplicationPubSub) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.UpdatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.UpdatedAt) + golang.MarshalTimestamp(s, x.UpdatedAt) } } if x.Format != "" || s.HasField("format") { @@ -230,7 +230,7 @@ func (x *ApplicationPubSub) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("nats") // NOTE: ApplicationPubSub_NATSProvider does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.Nats) + golang.MarshalMessage(s, ov.Nats) case *ApplicationPubSub_Mqtt: s.WriteMoreIf(&wroteField) s.WriteObjectField("mqtt") @@ -239,7 +239,7 @@ func (x *ApplicationPubSub) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("aws_iot") // NOTE: ApplicationPubSub_AWSIoTProvider does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.AwsIot) + golang.MarshalMessage(s, ov.AwsIot) } } if x.BaseTopic != "" || s.HasField("base_topic") { @@ -251,79 +251,79 @@ func (x *ApplicationPubSub) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("downlink_push") // NOTE: ApplicationPubSub_Message does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.DownlinkPush) + golang.MarshalMessage(s, x.DownlinkPush) } if x.DownlinkReplace != nil || s.HasField("downlink_replace") { s.WriteMoreIf(&wroteField) s.WriteObjectField("downlink_replace") // NOTE: ApplicationPubSub_Message does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.DownlinkReplace) + golang.MarshalMessage(s, x.DownlinkReplace) } if x.UplinkMessage != nil || s.HasField("uplink_message") { s.WriteMoreIf(&wroteField) s.WriteObjectField("uplink_message") // NOTE: ApplicationPubSub_Message does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.UplinkMessage) + golang.MarshalMessage(s, x.UplinkMessage) } if x.UplinkNormalized != nil || s.HasField("uplink_normalized") { s.WriteMoreIf(&wroteField) s.WriteObjectField("uplink_normalized") // NOTE: ApplicationPubSub_Message does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.UplinkNormalized) + golang.MarshalMessage(s, x.UplinkNormalized) } if x.JoinAccept != nil || s.HasField("join_accept") { s.WriteMoreIf(&wroteField) s.WriteObjectField("join_accept") // NOTE: ApplicationPubSub_Message does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.JoinAccept) + golang.MarshalMessage(s, x.JoinAccept) } if x.DownlinkAck != nil || s.HasField("downlink_ack") { s.WriteMoreIf(&wroteField) s.WriteObjectField("downlink_ack") // NOTE: ApplicationPubSub_Message does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.DownlinkAck) + golang.MarshalMessage(s, x.DownlinkAck) } if x.DownlinkNack != nil || s.HasField("downlink_nack") { s.WriteMoreIf(&wroteField) s.WriteObjectField("downlink_nack") // NOTE: ApplicationPubSub_Message does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.DownlinkNack) + golang.MarshalMessage(s, x.DownlinkNack) } if x.DownlinkSent != nil || s.HasField("downlink_sent") { s.WriteMoreIf(&wroteField) s.WriteObjectField("downlink_sent") // NOTE: ApplicationPubSub_Message does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.DownlinkSent) + golang.MarshalMessage(s, x.DownlinkSent) } if x.DownlinkFailed != nil || s.HasField("downlink_failed") { s.WriteMoreIf(&wroteField) s.WriteObjectField("downlink_failed") // NOTE: ApplicationPubSub_Message does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.DownlinkFailed) + golang.MarshalMessage(s, x.DownlinkFailed) } if x.DownlinkQueued != nil || s.HasField("downlink_queued") { s.WriteMoreIf(&wroteField) s.WriteObjectField("downlink_queued") // NOTE: ApplicationPubSub_Message does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.DownlinkQueued) + golang.MarshalMessage(s, x.DownlinkQueued) } if x.DownlinkQueueInvalidated != nil || s.HasField("downlink_queue_invalidated") { s.WriteMoreIf(&wroteField) s.WriteObjectField("downlink_queue_invalidated") // NOTE: ApplicationPubSub_Message does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.DownlinkQueueInvalidated) + golang.MarshalMessage(s, x.DownlinkQueueInvalidated) } if x.LocationSolved != nil || s.HasField("location_solved") { s.WriteMoreIf(&wroteField) s.WriteObjectField("location_solved") // NOTE: ApplicationPubSub_Message does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.LocationSolved) + golang.MarshalMessage(s, x.LocationSolved) } if x.ServiceData != nil || s.HasField("service_data") { s.WriteMoreIf(&wroteField) s.WriteObjectField("service_data") // NOTE: ApplicationPubSub_Message does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ServiceData) + golang.MarshalMessage(s, x.ServiceData) } s.WriteObjectEnd() } @@ -350,7 +350,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationPubSubIdentifiers does not seem to implement UnmarshalProtoJSON. var v ApplicationPubSubIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Ids = &v case "created_at", "createdAt": s.AddField("created_at") @@ -358,7 +358,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.CreatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -369,7 +369,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.UpdatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -387,7 +387,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationPubSub_NATSProvider does not seem to implement UnmarshalProtoJSON. var v ApplicationPubSub_NATSProvider - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.Nats = &v case "mqtt": ov := &ApplicationPubSub_Mqtt{} @@ -408,7 +408,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationPubSub_AWSIoTProvider does not seem to implement UnmarshalProtoJSON. var v ApplicationPubSub_AWSIoTProvider - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.AwsIot = &v case "base_topic", "baseTopic": s.AddField("base_topic") @@ -421,7 +421,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationPubSub_Message does not seem to implement UnmarshalProtoJSON. var v ApplicationPubSub_Message - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.DownlinkPush = &v case "downlink_replace", "downlinkReplace": s.AddField("downlink_replace") @@ -431,7 +431,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationPubSub_Message does not seem to implement UnmarshalProtoJSON. var v ApplicationPubSub_Message - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.DownlinkReplace = &v case "uplink_message", "uplinkMessage": s.AddField("uplink_message") @@ -441,7 +441,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationPubSub_Message does not seem to implement UnmarshalProtoJSON. var v ApplicationPubSub_Message - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.UplinkMessage = &v case "uplink_normalized", "uplinkNormalized": s.AddField("uplink_normalized") @@ -451,7 +451,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationPubSub_Message does not seem to implement UnmarshalProtoJSON. var v ApplicationPubSub_Message - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.UplinkNormalized = &v case "join_accept", "joinAccept": s.AddField("join_accept") @@ -461,7 +461,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationPubSub_Message does not seem to implement UnmarshalProtoJSON. var v ApplicationPubSub_Message - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.JoinAccept = &v case "downlink_ack", "downlinkAck": s.AddField("downlink_ack") @@ -471,7 +471,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationPubSub_Message does not seem to implement UnmarshalProtoJSON. var v ApplicationPubSub_Message - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.DownlinkAck = &v case "downlink_nack", "downlinkNack": s.AddField("downlink_nack") @@ -481,7 +481,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationPubSub_Message does not seem to implement UnmarshalProtoJSON. var v ApplicationPubSub_Message - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.DownlinkNack = &v case "downlink_sent", "downlinkSent": s.AddField("downlink_sent") @@ -491,7 +491,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationPubSub_Message does not seem to implement UnmarshalProtoJSON. var v ApplicationPubSub_Message - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.DownlinkSent = &v case "downlink_failed", "downlinkFailed": s.AddField("downlink_failed") @@ -501,7 +501,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationPubSub_Message does not seem to implement UnmarshalProtoJSON. var v ApplicationPubSub_Message - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.DownlinkFailed = &v case "downlink_queued", "downlinkQueued": s.AddField("downlink_queued") @@ -511,7 +511,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationPubSub_Message does not seem to implement UnmarshalProtoJSON. var v ApplicationPubSub_Message - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.DownlinkQueued = &v case "downlink_queue_invalidated", "downlinkQueueInvalidated": s.AddField("downlink_queue_invalidated") @@ -521,7 +521,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationPubSub_Message does not seem to implement UnmarshalProtoJSON. var v ApplicationPubSub_Message - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.DownlinkQueueInvalidated = &v case "location_solved", "locationSolved": s.AddField("location_solved") @@ -531,7 +531,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationPubSub_Message does not seem to implement UnmarshalProtoJSON. var v ApplicationPubSub_Message - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.LocationSolved = &v case "service_data", "serviceData": s.AddField("service_data") @@ -541,7 +541,7 @@ func (x *ApplicationPubSub) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationPubSub_Message does not seem to implement UnmarshalProtoJSON. var v ApplicationPubSub_Message - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ServiceData = &v } }) @@ -615,6 +615,146 @@ func (x *ApplicationPubSubs) UnmarshalJSON(b []byte) error { return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) } +// MarshalProtoJSON marshals the GetApplicationPubSubRequest message to JSON. +func (x *GetApplicationPubSubRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Ids != nil || s.HasField("ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("ids") + // NOTE: ApplicationPubSubIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.Ids) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the GetApplicationPubSubRequest to JSON. +func (x *GetApplicationPubSubRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the GetApplicationPubSubRequest message from JSON. +func (x *GetApplicationPubSubRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "ids": + s.AddField("ids") + if s.ReadNil() { + x.Ids = nil + return + } + // NOTE: ApplicationPubSubIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationPubSubIdentifiers + golang.UnmarshalMessage(s, &v) + x.Ids = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the GetApplicationPubSubRequest from JSON. +func (x *GetApplicationPubSubRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the ListApplicationPubSubsRequest message to JSON. +func (x *ListApplicationPubSubsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.ApplicationIds != nil || s.HasField("application_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("application_ids") + // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.ApplicationIds) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the ListApplicationPubSubsRequest to JSON. +func (x *ListApplicationPubSubsRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the ListApplicationPubSubsRequest message from JSON. +func (x *ListApplicationPubSubsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "application_ids", "applicationIds": + s.AddField("application_ids") + if s.ReadNil() { + x.ApplicationIds = nil + return + } + // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationIdentifiers + golang.UnmarshalMessage(s, &v) + x.ApplicationIds = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the ListApplicationPubSubsRequest from JSON. +func (x *ListApplicationPubSubsRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + // MarshalProtoJSON marshals the SetApplicationPubSubRequest message to JSON. func (x *SetApplicationPubSubRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x == nil { @@ -634,7 +774,7 @@ func (x *SetApplicationPubSubRequest) MarshalProtoJSON(s *jsonplugin.MarshalStat if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -667,7 +807,7 @@ func (x *SetApplicationPubSubRequest) UnmarshalProtoJSON(s *jsonplugin.Unmarshal x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } diff --git a/pkg/ttnpb/applicationserver_web.pb.go b/pkg/ttnpb/applicationserver_web.pb.go index 4cae2f9f49..0612e02dc8 100644 --- a/pkg/ttnpb/applicationserver_web.pb.go +++ b/pkg/ttnpb/applicationserver_web.pb.go @@ -1,116 +1,144 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/applicationserver_web.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type ApplicationWebhookIdentifiers struct { - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` - WebhookId string `protobuf:"bytes,2,opt,name=webhook_id,json=webhookId,proto3" json:"webhook_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationWebhookIdentifiers) Reset() { *m = ApplicationWebhookIdentifiers{} } -func (m *ApplicationWebhookIdentifiers) String() string { return proto.CompactTextString(m) } -func (*ApplicationWebhookIdentifiers) ProtoMessage() {} -func (*ApplicationWebhookIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{0} + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + WebhookId string `protobuf:"bytes,2,opt,name=webhook_id,json=webhookId,proto3" json:"webhook_id,omitempty"` } -func (m *ApplicationWebhookIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationWebhookIdentifiers.Unmarshal(m, b) -} -func (m *ApplicationWebhookIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationWebhookIdentifiers.Marshal(b, m, deterministic) -} -func (m *ApplicationWebhookIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationWebhookIdentifiers.Merge(m, src) + +func (x *ApplicationWebhookIdentifiers) Reset() { + *x = ApplicationWebhookIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationWebhookIdentifiers) XXX_Size() int { - return xxx_messageInfo_ApplicationWebhookIdentifiers.Size(m) + +func (x *ApplicationWebhookIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationWebhookIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationWebhookIdentifiers.DiscardUnknown(m) + +func (*ApplicationWebhookIdentifiers) ProtoMessage() {} + +func (x *ApplicationWebhookIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationWebhookIdentifiers proto.InternalMessageInfo +// Deprecated: Use ApplicationWebhookIdentifiers.ProtoReflect.Descriptor instead. +func (*ApplicationWebhookIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{0} +} -func (m *ApplicationWebhookIdentifiers) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *ApplicationWebhookIdentifiers) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *ApplicationWebhookIdentifiers) GetWebhookId() string { - if m != nil { - return m.WebhookId +func (x *ApplicationWebhookIdentifiers) GetWebhookId() string { + if x != nil { + return x.WebhookId } return "" } type ApplicationWebhookTemplateIdentifiers struct { - TemplateId string `protobuf:"bytes,1,opt,name=template_id,json=templateId,proto3" json:"template_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationWebhookTemplateIdentifiers) Reset() { *m = ApplicationWebhookTemplateIdentifiers{} } -func (m *ApplicationWebhookTemplateIdentifiers) String() string { return proto.CompactTextString(m) } -func (*ApplicationWebhookTemplateIdentifiers) ProtoMessage() {} -func (*ApplicationWebhookTemplateIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{1} -} -func (m *ApplicationWebhookTemplateIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationWebhookTemplateIdentifiers.Unmarshal(m, b) + TemplateId string `protobuf:"bytes,1,opt,name=template_id,json=templateId,proto3" json:"template_id,omitempty"` } -func (m *ApplicationWebhookTemplateIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationWebhookTemplateIdentifiers.Marshal(b, m, deterministic) -} -func (m *ApplicationWebhookTemplateIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationWebhookTemplateIdentifiers.Merge(m, src) + +func (x *ApplicationWebhookTemplateIdentifiers) Reset() { + *x = ApplicationWebhookTemplateIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationWebhookTemplateIdentifiers) XXX_Size() int { - return xxx_messageInfo_ApplicationWebhookTemplateIdentifiers.Size(m) + +func (x *ApplicationWebhookTemplateIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationWebhookTemplateIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationWebhookTemplateIdentifiers.DiscardUnknown(m) + +func (*ApplicationWebhookTemplateIdentifiers) ProtoMessage() {} + +func (x *ApplicationWebhookTemplateIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationWebhookTemplateIdentifiers proto.InternalMessageInfo +// Deprecated: Use ApplicationWebhookTemplateIdentifiers.ProtoReflect.Descriptor instead. +func (*ApplicationWebhookTemplateIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{1} +} -func (m *ApplicationWebhookTemplateIdentifiers) GetTemplateId() string { - if m != nil { - return m.TemplateId +func (x *ApplicationWebhookTemplateIdentifiers) GetTemplateId() string { + if x != nil { + return x.TemplateId } return "" } @@ -119,85 +147,98 @@ func (m *ApplicationWebhookTemplateIdentifiers) GetTemplateId() string { // A field can be an API key, an username or password, or any custom platform specific field (such as region). // The fields are meant to be replaced inside the URLs and headers when the webhook is created. type ApplicationWebhookTemplateField struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // Secret decides if the field should be shown in plain-text or should stay hidden. - Secret bool `protobuf:"varint,4,opt,name=secret,proto3" json:"secret,omitempty"` - DefaultValue string `protobuf:"bytes,5,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` - Optional bool `protobuf:"varint,6,opt,name=optional,proto3" json:"optional,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Secret bool `protobuf:"varint,4,opt,name=secret,proto3" json:"secret,omitempty"` + DefaultValue string `protobuf:"bytes,5,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + Optional bool `protobuf:"varint,6,opt,name=optional,proto3" json:"optional,omitempty"` } -func (m *ApplicationWebhookTemplateField) Reset() { *m = ApplicationWebhookTemplateField{} } -func (m *ApplicationWebhookTemplateField) String() string { return proto.CompactTextString(m) } -func (*ApplicationWebhookTemplateField) ProtoMessage() {} -func (*ApplicationWebhookTemplateField) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{2} -} -func (m *ApplicationWebhookTemplateField) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationWebhookTemplateField.Unmarshal(m, b) -} -func (m *ApplicationWebhookTemplateField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationWebhookTemplateField.Marshal(b, m, deterministic) -} -func (m *ApplicationWebhookTemplateField) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationWebhookTemplateField.Merge(m, src) +func (x *ApplicationWebhookTemplateField) Reset() { + *x = ApplicationWebhookTemplateField{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationWebhookTemplateField) XXX_Size() int { - return xxx_messageInfo_ApplicationWebhookTemplateField.Size(m) + +func (x *ApplicationWebhookTemplateField) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationWebhookTemplateField) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationWebhookTemplateField.DiscardUnknown(m) + +func (*ApplicationWebhookTemplateField) ProtoMessage() {} + +func (x *ApplicationWebhookTemplateField) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationWebhookTemplateField proto.InternalMessageInfo +// Deprecated: Use ApplicationWebhookTemplateField.ProtoReflect.Descriptor instead. +func (*ApplicationWebhookTemplateField) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{2} +} -func (m *ApplicationWebhookTemplateField) GetId() string { - if m != nil { - return m.Id +func (x *ApplicationWebhookTemplateField) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *ApplicationWebhookTemplateField) GetName() string { - if m != nil { - return m.Name +func (x *ApplicationWebhookTemplateField) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *ApplicationWebhookTemplateField) GetDescription() string { - if m != nil { - return m.Description +func (x *ApplicationWebhookTemplateField) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *ApplicationWebhookTemplateField) GetSecret() bool { - if m != nil { - return m.Secret +func (x *ApplicationWebhookTemplateField) GetSecret() bool { + if x != nil { + return x.Secret } return false } -func (m *ApplicationWebhookTemplateField) GetDefaultValue() string { - if m != nil { - return m.DefaultValue +func (x *ApplicationWebhookTemplateField) GetDefaultValue() string { + if x != nil { + return x.DefaultValue } return "" } -func (m *ApplicationWebhookTemplateField) GetOptional() bool { - if m != nil { - return m.Optional +func (x *ApplicationWebhookTemplateField) GetOptional() bool { + if x != nil { + return x.Optional } return false } type ApplicationWebhookTemplate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Ids *ApplicationWebhookTemplateIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` @@ -223,322 +264,292 @@ type ApplicationWebhookTemplate struct { DownlinkQueueInvalidated *ApplicationWebhookTemplate_Message `protobuf:"bytes,21,opt,name=downlink_queue_invalidated,json=downlinkQueueInvalidated,proto3" json:"downlink_queue_invalidated,omitempty"` LocationSolved *ApplicationWebhookTemplate_Message `protobuf:"bytes,18,opt,name=location_solved,json=locationSolved,proto3" json:"location_solved,omitempty"` ServiceData *ApplicationWebhookTemplate_Message `protobuf:"bytes,20,opt,name=service_data,json=serviceData,proto3" json:"service_data,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,22,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,22,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *ApplicationWebhookTemplate) Reset() { *m = ApplicationWebhookTemplate{} } -func (m *ApplicationWebhookTemplate) String() string { return proto.CompactTextString(m) } -func (*ApplicationWebhookTemplate) ProtoMessage() {} -func (*ApplicationWebhookTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{3} -} -func (m *ApplicationWebhookTemplate) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationWebhookTemplate.Unmarshal(m, b) -} -func (m *ApplicationWebhookTemplate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationWebhookTemplate.Marshal(b, m, deterministic) -} -func (m *ApplicationWebhookTemplate) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationWebhookTemplate.Merge(m, src) +func (x *ApplicationWebhookTemplate) Reset() { + *x = ApplicationWebhookTemplate{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationWebhookTemplate) XXX_Size() int { - return xxx_messageInfo_ApplicationWebhookTemplate.Size(m) + +func (x *ApplicationWebhookTemplate) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationWebhookTemplate) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationWebhookTemplate.DiscardUnknown(m) + +func (*ApplicationWebhookTemplate) ProtoMessage() {} + +func (x *ApplicationWebhookTemplate) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationWebhookTemplate proto.InternalMessageInfo +// Deprecated: Use ApplicationWebhookTemplate.ProtoReflect.Descriptor instead. +func (*ApplicationWebhookTemplate) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{3} +} -func (m *ApplicationWebhookTemplate) GetIds() *ApplicationWebhookTemplateIdentifiers { - if m != nil { - return m.Ids +func (x *ApplicationWebhookTemplate) GetIds() *ApplicationWebhookTemplateIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *ApplicationWebhookTemplate) GetName() string { - if m != nil { - return m.Name +func (x *ApplicationWebhookTemplate) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *ApplicationWebhookTemplate) GetDescription() string { - if m != nil { - return m.Description +func (x *ApplicationWebhookTemplate) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *ApplicationWebhookTemplate) GetLogoUrl() string { - if m != nil { - return m.LogoUrl +func (x *ApplicationWebhookTemplate) GetLogoUrl() string { + if x != nil { + return x.LogoUrl } return "" } -func (m *ApplicationWebhookTemplate) GetInfoUrl() string { - if m != nil { - return m.InfoUrl +func (x *ApplicationWebhookTemplate) GetInfoUrl() string { + if x != nil { + return x.InfoUrl } return "" } -func (m *ApplicationWebhookTemplate) GetDocumentationUrl() string { - if m != nil { - return m.DocumentationUrl +func (x *ApplicationWebhookTemplate) GetDocumentationUrl() string { + if x != nil { + return x.DocumentationUrl } return "" } -func (m *ApplicationWebhookTemplate) GetBaseUrl() string { - if m != nil { - return m.BaseUrl +func (x *ApplicationWebhookTemplate) GetBaseUrl() string { + if x != nil { + return x.BaseUrl } return "" } -func (m *ApplicationWebhookTemplate) GetHeaders() map[string]string { - if m != nil { - return m.Headers +func (x *ApplicationWebhookTemplate) GetHeaders() map[string]string { + if x != nil { + return x.Headers } return nil } -func (m *ApplicationWebhookTemplate) GetFormat() string { - if m != nil { - return m.Format +func (x *ApplicationWebhookTemplate) GetFormat() string { + if x != nil { + return x.Format } return "" } -func (m *ApplicationWebhookTemplate) GetFields() []*ApplicationWebhookTemplateField { - if m != nil { - return m.Fields +func (x *ApplicationWebhookTemplate) GetFields() []*ApplicationWebhookTemplateField { + if x != nil { + return x.Fields } return nil } -func (m *ApplicationWebhookTemplate) GetCreateDownlinkApiKey() bool { - if m != nil { - return m.CreateDownlinkApiKey +func (x *ApplicationWebhookTemplate) GetCreateDownlinkApiKey() bool { + if x != nil { + return x.CreateDownlinkApiKey } return false } -func (m *ApplicationWebhookTemplate) GetUplinkMessage() *ApplicationWebhookTemplate_Message { - if m != nil { - return m.UplinkMessage +func (x *ApplicationWebhookTemplate) GetUplinkMessage() *ApplicationWebhookTemplate_Message { + if x != nil { + return x.UplinkMessage } return nil } -func (m *ApplicationWebhookTemplate) GetUplinkNormalized() *ApplicationWebhookTemplate_Message { - if m != nil { - return m.UplinkNormalized +func (x *ApplicationWebhookTemplate) GetUplinkNormalized() *ApplicationWebhookTemplate_Message { + if x != nil { + return x.UplinkNormalized } return nil } -func (m *ApplicationWebhookTemplate) GetJoinAccept() *ApplicationWebhookTemplate_Message { - if m != nil { - return m.JoinAccept +func (x *ApplicationWebhookTemplate) GetJoinAccept() *ApplicationWebhookTemplate_Message { + if x != nil { + return x.JoinAccept } return nil } -func (m *ApplicationWebhookTemplate) GetDownlinkAck() *ApplicationWebhookTemplate_Message { - if m != nil { - return m.DownlinkAck +func (x *ApplicationWebhookTemplate) GetDownlinkAck() *ApplicationWebhookTemplate_Message { + if x != nil { + return x.DownlinkAck } return nil } -func (m *ApplicationWebhookTemplate) GetDownlinkNack() *ApplicationWebhookTemplate_Message { - if m != nil { - return m.DownlinkNack +func (x *ApplicationWebhookTemplate) GetDownlinkNack() *ApplicationWebhookTemplate_Message { + if x != nil { + return x.DownlinkNack } return nil } -func (m *ApplicationWebhookTemplate) GetDownlinkSent() *ApplicationWebhookTemplate_Message { - if m != nil { - return m.DownlinkSent +func (x *ApplicationWebhookTemplate) GetDownlinkSent() *ApplicationWebhookTemplate_Message { + if x != nil { + return x.DownlinkSent } return nil } -func (m *ApplicationWebhookTemplate) GetDownlinkFailed() *ApplicationWebhookTemplate_Message { - if m != nil { - return m.DownlinkFailed +func (x *ApplicationWebhookTemplate) GetDownlinkFailed() *ApplicationWebhookTemplate_Message { + if x != nil { + return x.DownlinkFailed } return nil } -func (m *ApplicationWebhookTemplate) GetDownlinkQueued() *ApplicationWebhookTemplate_Message { - if m != nil { - return m.DownlinkQueued +func (x *ApplicationWebhookTemplate) GetDownlinkQueued() *ApplicationWebhookTemplate_Message { + if x != nil { + return x.DownlinkQueued } return nil } -func (m *ApplicationWebhookTemplate) GetDownlinkQueueInvalidated() *ApplicationWebhookTemplate_Message { - if m != nil { - return m.DownlinkQueueInvalidated +func (x *ApplicationWebhookTemplate) GetDownlinkQueueInvalidated() *ApplicationWebhookTemplate_Message { + if x != nil { + return x.DownlinkQueueInvalidated } return nil } -func (m *ApplicationWebhookTemplate) GetLocationSolved() *ApplicationWebhookTemplate_Message { - if m != nil { - return m.LocationSolved +func (x *ApplicationWebhookTemplate) GetLocationSolved() *ApplicationWebhookTemplate_Message { + if x != nil { + return x.LocationSolved } return nil } -func (m *ApplicationWebhookTemplate) GetServiceData() *ApplicationWebhookTemplate_Message { - if m != nil { - return m.ServiceData +func (x *ApplicationWebhookTemplate) GetServiceData() *ApplicationWebhookTemplate_Message { + if x != nil { + return x.ServiceData } return nil } -func (m *ApplicationWebhookTemplate) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *ApplicationWebhookTemplate) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -type ApplicationWebhookTemplate_Message struct { - // Path to append to the base URL. Can contain template fields, in RFC 6570 format. - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type ApplicationWebhookTemplates struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationWebhookTemplate_Message) Reset() { *m = ApplicationWebhookTemplate_Message{} } -func (m *ApplicationWebhookTemplate_Message) String() string { return proto.CompactTextString(m) } -func (*ApplicationWebhookTemplate_Message) ProtoMessage() {} -func (*ApplicationWebhookTemplate_Message) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{3, 1} -} -func (m *ApplicationWebhookTemplate_Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationWebhookTemplate_Message.Unmarshal(m, b) + Templates []*ApplicationWebhookTemplate `protobuf:"bytes,1,rep,name=templates,proto3" json:"templates,omitempty"` } -func (m *ApplicationWebhookTemplate_Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationWebhookTemplate_Message.Marshal(b, m, deterministic) -} -func (m *ApplicationWebhookTemplate_Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationWebhookTemplate_Message.Merge(m, src) -} -func (m *ApplicationWebhookTemplate_Message) XXX_Size() int { - return xxx_messageInfo_ApplicationWebhookTemplate_Message.Size(m) + +func (x *ApplicationWebhookTemplates) Reset() { + *x = ApplicationWebhookTemplates{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationWebhookTemplate_Message) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationWebhookTemplate_Message.DiscardUnknown(m) + +func (x *ApplicationWebhookTemplates) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ApplicationWebhookTemplate_Message proto.InternalMessageInfo +func (*ApplicationWebhookTemplates) ProtoMessage() {} -func (m *ApplicationWebhookTemplate_Message) GetPath() string { - if m != nil { - return m.Path +func (x *ApplicationWebhookTemplates) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" -} - -type ApplicationWebhookTemplates struct { - Templates []*ApplicationWebhookTemplate `protobuf:"bytes,1,rep,name=templates,proto3" json:"templates,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + return mi.MessageOf(x) } -func (m *ApplicationWebhookTemplates) Reset() { *m = ApplicationWebhookTemplates{} } -func (m *ApplicationWebhookTemplates) String() string { return proto.CompactTextString(m) } -func (*ApplicationWebhookTemplates) ProtoMessage() {} +// Deprecated: Use ApplicationWebhookTemplates.ProtoReflect.Descriptor instead. func (*ApplicationWebhookTemplates) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{4} -} -func (m *ApplicationWebhookTemplates) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationWebhookTemplates.Unmarshal(m, b) -} -func (m *ApplicationWebhookTemplates) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationWebhookTemplates.Marshal(b, m, deterministic) -} -func (m *ApplicationWebhookTemplates) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationWebhookTemplates.Merge(m, src) + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{4} } -func (m *ApplicationWebhookTemplates) XXX_Size() int { - return xxx_messageInfo_ApplicationWebhookTemplates.Size(m) -} -func (m *ApplicationWebhookTemplates) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationWebhookTemplates.DiscardUnknown(m) -} - -var xxx_messageInfo_ApplicationWebhookTemplates proto.InternalMessageInfo -func (m *ApplicationWebhookTemplates) GetTemplates() []*ApplicationWebhookTemplate { - if m != nil { - return m.Templates +func (x *ApplicationWebhookTemplates) GetTemplates() []*ApplicationWebhookTemplate { + if x != nil { + return x.Templates } return nil } type ApplicationWebhookHealth struct { - // Types that are valid to be assigned to Status: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Status: // *ApplicationWebhookHealth_Healthy // *ApplicationWebhookHealth_Unhealthy - Status isApplicationWebhookHealth_Status `protobuf_oneof:"status"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Status isApplicationWebhookHealth_Status `protobuf_oneof:"status"` } -func (m *ApplicationWebhookHealth) Reset() { *m = ApplicationWebhookHealth{} } -func (m *ApplicationWebhookHealth) String() string { return proto.CompactTextString(m) } -func (*ApplicationWebhookHealth) ProtoMessage() {} -func (*ApplicationWebhookHealth) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{5} -} -func (m *ApplicationWebhookHealth) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationWebhookHealth.Unmarshal(m, b) -} -func (m *ApplicationWebhookHealth) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationWebhookHealth.Marshal(b, m, deterministic) -} -func (m *ApplicationWebhookHealth) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationWebhookHealth.Merge(m, src) -} -func (m *ApplicationWebhookHealth) XXX_Size() int { - return xxx_messageInfo_ApplicationWebhookHealth.Size(m) +func (x *ApplicationWebhookHealth) Reset() { + *x = ApplicationWebhookHealth{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationWebhookHealth) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationWebhookHealth.DiscardUnknown(m) + +func (x *ApplicationWebhookHealth) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ApplicationWebhookHealth proto.InternalMessageInfo +func (*ApplicationWebhookHealth) ProtoMessage() {} -type isApplicationWebhookHealth_Status interface { - isApplicationWebhookHealth_Status() +func (x *ApplicationWebhookHealth) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type ApplicationWebhookHealth_Healthy struct { - Healthy *ApplicationWebhookHealth_WebhookHealthStatusHealthy `protobuf:"bytes,1,opt,name=healthy,proto3,oneof" json:"healthy,omitempty"` -} -type ApplicationWebhookHealth_Unhealthy struct { - Unhealthy *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy `protobuf:"bytes,2,opt,name=unhealthy,proto3,oneof" json:"unhealthy,omitempty"` +// Deprecated: Use ApplicationWebhookHealth.ProtoReflect.Descriptor instead. +func (*ApplicationWebhookHealth) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{5} } -func (*ApplicationWebhookHealth_Healthy) isApplicationWebhookHealth_Status() {} -func (*ApplicationWebhookHealth_Unhealthy) isApplicationWebhookHealth_Status() {} - func (m *ApplicationWebhookHealth) GetStatus() isApplicationWebhookHealth_Status { if m != nil { return m.Status @@ -546,124 +557,44 @@ func (m *ApplicationWebhookHealth) GetStatus() isApplicationWebhookHealth_Status return nil } -func (m *ApplicationWebhookHealth) GetHealthy() *ApplicationWebhookHealth_WebhookHealthStatusHealthy { - if x, ok := m.GetStatus().(*ApplicationWebhookHealth_Healthy); ok { +func (x *ApplicationWebhookHealth) GetHealthy() *ApplicationWebhookHealth_WebhookHealthStatusHealthy { + if x, ok := x.GetStatus().(*ApplicationWebhookHealth_Healthy); ok { return x.Healthy } return nil } -func (m *ApplicationWebhookHealth) GetUnhealthy() *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy { - if x, ok := m.GetStatus().(*ApplicationWebhookHealth_Unhealthy); ok { +func (x *ApplicationWebhookHealth) GetUnhealthy() *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy { + if x, ok := x.GetStatus().(*ApplicationWebhookHealth_Unhealthy); ok { return x.Unhealthy } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*ApplicationWebhookHealth) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*ApplicationWebhookHealth_Healthy)(nil), - (*ApplicationWebhookHealth_Unhealthy)(nil), - } -} - -type ApplicationWebhookHealth_WebhookHealthStatusHealthy struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ApplicationWebhookHealth_WebhookHealthStatusHealthy) Reset() { - *m = ApplicationWebhookHealth_WebhookHealthStatusHealthy{} -} -func (m *ApplicationWebhookHealth_WebhookHealthStatusHealthy) String() string { - return proto.CompactTextString(m) -} -func (*ApplicationWebhookHealth_WebhookHealthStatusHealthy) ProtoMessage() {} -func (*ApplicationWebhookHealth_WebhookHealthStatusHealthy) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{5, 0} -} -func (m *ApplicationWebhookHealth_WebhookHealthStatusHealthy) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationWebhookHealth_WebhookHealthStatusHealthy.Unmarshal(m, b) -} -func (m *ApplicationWebhookHealth_WebhookHealthStatusHealthy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationWebhookHealth_WebhookHealthStatusHealthy.Marshal(b, m, deterministic) -} -func (m *ApplicationWebhookHealth_WebhookHealthStatusHealthy) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationWebhookHealth_WebhookHealthStatusHealthy.Merge(m, src) -} -func (m *ApplicationWebhookHealth_WebhookHealthStatusHealthy) XXX_Size() int { - return xxx_messageInfo_ApplicationWebhookHealth_WebhookHealthStatusHealthy.Size(m) -} -func (m *ApplicationWebhookHealth_WebhookHealthStatusHealthy) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationWebhookHealth_WebhookHealthStatusHealthy.DiscardUnknown(m) -} - -var xxx_messageInfo_ApplicationWebhookHealth_WebhookHealthStatusHealthy proto.InternalMessageInfo - -type ApplicationWebhookHealth_WebhookHealthStatusUnhealthy struct { - FailedAttempts uint64 `protobuf:"varint,1,opt,name=failed_attempts,json=failedAttempts,proto3" json:"failed_attempts,omitempty"` - LastFailedAttemptAt *types.Timestamp `protobuf:"bytes,2,opt,name=last_failed_attempt_at,json=lastFailedAttemptAt,proto3" json:"last_failed_attempt_at,omitempty"` - LastFailedAttemptDetails *ErrorDetails `protobuf:"bytes,3,opt,name=last_failed_attempt_details,json=lastFailedAttemptDetails,proto3" json:"last_failed_attempt_details,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type isApplicationWebhookHealth_Status interface { + isApplicationWebhookHealth_Status() } -func (m *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) Reset() { - *m = ApplicationWebhookHealth_WebhookHealthStatusUnhealthy{} -} -func (m *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) String() string { - return proto.CompactTextString(m) -} -func (*ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) ProtoMessage() {} -func (*ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{5, 1} -} -func (m *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationWebhookHealth_WebhookHealthStatusUnhealthy.Unmarshal(m, b) -} -func (m *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationWebhookHealth_WebhookHealthStatusUnhealthy.Marshal(b, m, deterministic) -} -func (m *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationWebhookHealth_WebhookHealthStatusUnhealthy.Merge(m, src) -} -func (m *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) XXX_Size() int { - return xxx_messageInfo_ApplicationWebhookHealth_WebhookHealthStatusUnhealthy.Size(m) -} -func (m *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationWebhookHealth_WebhookHealthStatusUnhealthy.DiscardUnknown(m) +type ApplicationWebhookHealth_Healthy struct { + Healthy *ApplicationWebhookHealth_WebhookHealthStatusHealthy `protobuf:"bytes,1,opt,name=healthy,proto3,oneof"` } -var xxx_messageInfo_ApplicationWebhookHealth_WebhookHealthStatusUnhealthy proto.InternalMessageInfo - -func (m *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) GetFailedAttempts() uint64 { - if m != nil { - return m.FailedAttempts - } - return 0 +type ApplicationWebhookHealth_Unhealthy struct { + Unhealthy *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy `protobuf:"bytes,2,opt,name=unhealthy,proto3,oneof"` } -func (m *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) GetLastFailedAttemptAt() *types.Timestamp { - if m != nil { - return m.LastFailedAttemptAt - } - return nil -} +func (*ApplicationWebhookHealth_Healthy) isApplicationWebhookHealth_Status() {} -func (m *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) GetLastFailedAttemptDetails() *ErrorDetails { - if m != nil { - return m.LastFailedAttemptDetails - } - return nil -} +func (*ApplicationWebhookHealth_Unhealthy) isApplicationWebhookHealth_Status() {} type ApplicationWebhook struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Ids *ApplicationWebhookIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` - CreatedAt *types.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *types.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // Base URL to which the message's path is appended. BaseUrl string `protobuf:"bytes,4,opt,name=base_url,json=baseUrl,proto3" json:"base_url,omitempty"` // HTTP headers to use. @@ -690,1005 +621,1604 @@ type ApplicationWebhook struct { LocationSolved *ApplicationWebhook_Message `protobuf:"bytes,14,opt,name=location_solved,json=locationSolved,proto3" json:"location_solved,omitempty"` ServiceData *ApplicationWebhook_Message `protobuf:"bytes,18,opt,name=service_data,json=serviceData,proto3" json:"service_data,omitempty"` HealthStatus *ApplicationWebhookHealth `protobuf:"bytes,20,opt,name=health_status,json=healthStatus,proto3" json:"health_status,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,21,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,21,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *ApplicationWebhook) Reset() { *m = ApplicationWebhook{} } -func (m *ApplicationWebhook) String() string { return proto.CompactTextString(m) } -func (*ApplicationWebhook) ProtoMessage() {} -func (*ApplicationWebhook) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{6} -} -func (m *ApplicationWebhook) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationWebhook.Unmarshal(m, b) -} -func (m *ApplicationWebhook) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationWebhook.Marshal(b, m, deterministic) -} -func (m *ApplicationWebhook) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationWebhook.Merge(m, src) +func (x *ApplicationWebhook) Reset() { + *x = ApplicationWebhook{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationWebhook) XXX_Size() int { - return xxx_messageInfo_ApplicationWebhook.Size(m) + +func (x *ApplicationWebhook) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationWebhook) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationWebhook.DiscardUnknown(m) + +func (*ApplicationWebhook) ProtoMessage() {} + +func (x *ApplicationWebhook) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationWebhook proto.InternalMessageInfo +// Deprecated: Use ApplicationWebhook.ProtoReflect.Descriptor instead. +func (*ApplicationWebhook) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{6} +} -func (m *ApplicationWebhook) GetIds() *ApplicationWebhookIdentifiers { - if m != nil { - return m.Ids +func (x *ApplicationWebhook) GetIds() *ApplicationWebhookIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *ApplicationWebhook) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *ApplicationWebhook) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *ApplicationWebhook) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *ApplicationWebhook) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *ApplicationWebhook) GetBaseUrl() string { - if m != nil { - return m.BaseUrl +func (x *ApplicationWebhook) GetBaseUrl() string { + if x != nil { + return x.BaseUrl } return "" } -func (m *ApplicationWebhook) GetHeaders() map[string]string { - if m != nil { - return m.Headers +func (x *ApplicationWebhook) GetHeaders() map[string]string { + if x != nil { + return x.Headers } return nil } -func (m *ApplicationWebhook) GetFormat() string { - if m != nil { - return m.Format +func (x *ApplicationWebhook) GetFormat() string { + if x != nil { + return x.Format } return "" } -func (m *ApplicationWebhook) GetTemplateIds() *ApplicationWebhookTemplateIdentifiers { - if m != nil { - return m.TemplateIds +func (x *ApplicationWebhook) GetTemplateIds() *ApplicationWebhookTemplateIdentifiers { + if x != nil { + return x.TemplateIds } return nil } -func (m *ApplicationWebhook) GetTemplateFields() map[string]string { - if m != nil { - return m.TemplateFields +func (x *ApplicationWebhook) GetTemplateFields() map[string]string { + if x != nil { + return x.TemplateFields } return nil } -func (m *ApplicationWebhook) GetDownlinkApiKey() string { - if m != nil { - return m.DownlinkApiKey +func (x *ApplicationWebhook) GetDownlinkApiKey() string { + if x != nil { + return x.DownlinkApiKey } return "" } -func (m *ApplicationWebhook) GetUplinkMessage() *ApplicationWebhook_Message { - if m != nil { - return m.UplinkMessage +func (x *ApplicationWebhook) GetUplinkMessage() *ApplicationWebhook_Message { + if x != nil { + return x.UplinkMessage } return nil } -func (m *ApplicationWebhook) GetUplinkNormalized() *ApplicationWebhook_Message { - if m != nil { - return m.UplinkNormalized +func (x *ApplicationWebhook) GetUplinkNormalized() *ApplicationWebhook_Message { + if x != nil { + return x.UplinkNormalized } return nil } -func (m *ApplicationWebhook) GetJoinAccept() *ApplicationWebhook_Message { - if m != nil { - return m.JoinAccept +func (x *ApplicationWebhook) GetJoinAccept() *ApplicationWebhook_Message { + if x != nil { + return x.JoinAccept } return nil } -func (m *ApplicationWebhook) GetDownlinkAck() *ApplicationWebhook_Message { - if m != nil { - return m.DownlinkAck +func (x *ApplicationWebhook) GetDownlinkAck() *ApplicationWebhook_Message { + if x != nil { + return x.DownlinkAck } return nil } -func (m *ApplicationWebhook) GetDownlinkNack() *ApplicationWebhook_Message { - if m != nil { - return m.DownlinkNack +func (x *ApplicationWebhook) GetDownlinkNack() *ApplicationWebhook_Message { + if x != nil { + return x.DownlinkNack } return nil } -func (m *ApplicationWebhook) GetDownlinkSent() *ApplicationWebhook_Message { - if m != nil { - return m.DownlinkSent +func (x *ApplicationWebhook) GetDownlinkSent() *ApplicationWebhook_Message { + if x != nil { + return x.DownlinkSent } return nil } -func (m *ApplicationWebhook) GetDownlinkFailed() *ApplicationWebhook_Message { - if m != nil { - return m.DownlinkFailed +func (x *ApplicationWebhook) GetDownlinkFailed() *ApplicationWebhook_Message { + if x != nil { + return x.DownlinkFailed } return nil } -func (m *ApplicationWebhook) GetDownlinkQueued() *ApplicationWebhook_Message { - if m != nil { - return m.DownlinkQueued +func (x *ApplicationWebhook) GetDownlinkQueued() *ApplicationWebhook_Message { + if x != nil { + return x.DownlinkQueued } return nil } -func (m *ApplicationWebhook) GetDownlinkQueueInvalidated() *ApplicationWebhook_Message { - if m != nil { - return m.DownlinkQueueInvalidated +func (x *ApplicationWebhook) GetDownlinkQueueInvalidated() *ApplicationWebhook_Message { + if x != nil { + return x.DownlinkQueueInvalidated } return nil } -func (m *ApplicationWebhook) GetLocationSolved() *ApplicationWebhook_Message { - if m != nil { - return m.LocationSolved +func (x *ApplicationWebhook) GetLocationSolved() *ApplicationWebhook_Message { + if x != nil { + return x.LocationSolved } return nil } -func (m *ApplicationWebhook) GetServiceData() *ApplicationWebhook_Message { - if m != nil { - return m.ServiceData +func (x *ApplicationWebhook) GetServiceData() *ApplicationWebhook_Message { + if x != nil { + return x.ServiceData } return nil } -func (m *ApplicationWebhook) GetHealthStatus() *ApplicationWebhookHealth { - if m != nil { - return m.HealthStatus +func (x *ApplicationWebhook) GetHealthStatus() *ApplicationWebhookHealth { + if x != nil { + return x.HealthStatus } return nil } -func (m *ApplicationWebhook) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *ApplicationWebhook) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -type ApplicationWebhook_Message struct { - // Path to append to the base URL. - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type ApplicationWebhooks struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationWebhook_Message) Reset() { *m = ApplicationWebhook_Message{} } -func (m *ApplicationWebhook_Message) String() string { return proto.CompactTextString(m) } -func (*ApplicationWebhook_Message) ProtoMessage() {} -func (*ApplicationWebhook_Message) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{6, 2} -} -func (m *ApplicationWebhook_Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationWebhook_Message.Unmarshal(m, b) -} -func (m *ApplicationWebhook_Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationWebhook_Message.Marshal(b, m, deterministic) + Webhooks []*ApplicationWebhook `protobuf:"bytes,1,rep,name=webhooks,proto3" json:"webhooks,omitempty"` } -func (m *ApplicationWebhook_Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationWebhook_Message.Merge(m, src) -} -func (m *ApplicationWebhook_Message) XXX_Size() int { - return xxx_messageInfo_ApplicationWebhook_Message.Size(m) + +func (x *ApplicationWebhooks) Reset() { + *x = ApplicationWebhooks{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationWebhook_Message) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationWebhook_Message.DiscardUnknown(m) + +func (x *ApplicationWebhooks) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ApplicationWebhook_Message proto.InternalMessageInfo +func (*ApplicationWebhooks) ProtoMessage() {} -func (m *ApplicationWebhook_Message) GetPath() string { - if m != nil { - return m.Path +func (x *ApplicationWebhooks) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -type ApplicationWebhooks struct { - Webhooks []*ApplicationWebhook `protobuf:"bytes,1,rep,name=webhooks,proto3" json:"webhooks,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ApplicationWebhooks) Reset() { *m = ApplicationWebhooks{} } -func (m *ApplicationWebhooks) String() string { return proto.CompactTextString(m) } -func (*ApplicationWebhooks) ProtoMessage() {} +// Deprecated: Use ApplicationWebhooks.ProtoReflect.Descriptor instead. func (*ApplicationWebhooks) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{7} -} -func (m *ApplicationWebhooks) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationWebhooks.Unmarshal(m, b) -} -func (m *ApplicationWebhooks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationWebhooks.Marshal(b, m, deterministic) -} -func (m *ApplicationWebhooks) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationWebhooks.Merge(m, src) + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{7} } -func (m *ApplicationWebhooks) XXX_Size() int { - return xxx_messageInfo_ApplicationWebhooks.Size(m) -} -func (m *ApplicationWebhooks) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationWebhooks.DiscardUnknown(m) -} - -var xxx_messageInfo_ApplicationWebhooks proto.InternalMessageInfo -func (m *ApplicationWebhooks) GetWebhooks() []*ApplicationWebhook { - if m != nil { - return m.Webhooks +func (x *ApplicationWebhooks) GetWebhooks() []*ApplicationWebhook { + if x != nil { + return x.Webhooks } return nil } type ApplicationWebhookFormats struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Format and description. - Formats map[string]string `protobuf:"bytes,1,rep,name=formats,proto3" json:"formats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Formats map[string]string `protobuf:"bytes,1,rep,name=formats,proto3" json:"formats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *ApplicationWebhookFormats) Reset() { *m = ApplicationWebhookFormats{} } -func (m *ApplicationWebhookFormats) String() string { return proto.CompactTextString(m) } -func (*ApplicationWebhookFormats) ProtoMessage() {} -func (*ApplicationWebhookFormats) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{8} -} -func (m *ApplicationWebhookFormats) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationWebhookFormats.Unmarshal(m, b) -} -func (m *ApplicationWebhookFormats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationWebhookFormats.Marshal(b, m, deterministic) -} -func (m *ApplicationWebhookFormats) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationWebhookFormats.Merge(m, src) +func (x *ApplicationWebhookFormats) Reset() { + *x = ApplicationWebhookFormats{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationWebhookFormats) XXX_Size() int { - return xxx_messageInfo_ApplicationWebhookFormats.Size(m) + +func (x *ApplicationWebhookFormats) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationWebhookFormats) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationWebhookFormats.DiscardUnknown(m) + +func (*ApplicationWebhookFormats) ProtoMessage() {} + +func (x *ApplicationWebhookFormats) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationWebhookFormats proto.InternalMessageInfo +// Deprecated: Use ApplicationWebhookFormats.ProtoReflect.Descriptor instead. +func (*ApplicationWebhookFormats) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{8} +} -func (m *ApplicationWebhookFormats) GetFormats() map[string]string { - if m != nil { - return m.Formats +func (x *ApplicationWebhookFormats) GetFormats() map[string]string { + if x != nil { + return x.Formats } return nil } type GetApplicationWebhookRequest struct { - Ids *ApplicationWebhookIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GetApplicationWebhookRequest) Reset() { *m = GetApplicationWebhookRequest{} } -func (m *GetApplicationWebhookRequest) String() string { return proto.CompactTextString(m) } -func (*GetApplicationWebhookRequest) ProtoMessage() {} -func (*GetApplicationWebhookRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{9} -} -func (m *GetApplicationWebhookRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetApplicationWebhookRequest.Unmarshal(m, b) -} -func (m *GetApplicationWebhookRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetApplicationWebhookRequest.Marshal(b, m, deterministic) + Ids *ApplicationWebhookIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *GetApplicationWebhookRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetApplicationWebhookRequest.Merge(m, src) + +func (x *GetApplicationWebhookRequest) Reset() { + *x = GetApplicationWebhookRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetApplicationWebhookRequest) XXX_Size() int { - return xxx_messageInfo_GetApplicationWebhookRequest.Size(m) + +func (x *GetApplicationWebhookRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetApplicationWebhookRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetApplicationWebhookRequest.DiscardUnknown(m) + +func (*GetApplicationWebhookRequest) ProtoMessage() {} + +func (x *GetApplicationWebhookRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetApplicationWebhookRequest proto.InternalMessageInfo +// Deprecated: Use GetApplicationWebhookRequest.ProtoReflect.Descriptor instead. +func (*GetApplicationWebhookRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{9} +} -func (m *GetApplicationWebhookRequest) GetIds() *ApplicationWebhookIdentifiers { - if m != nil { - return m.Ids +func (x *GetApplicationWebhookRequest) GetIds() *ApplicationWebhookIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *GetApplicationWebhookRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *GetApplicationWebhookRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type ListApplicationWebhooksRequest struct { - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ListApplicationWebhooksRequest) Reset() { *m = ListApplicationWebhooksRequest{} } -func (m *ListApplicationWebhooksRequest) String() string { return proto.CompactTextString(m) } -func (*ListApplicationWebhooksRequest) ProtoMessage() {} -func (*ListApplicationWebhooksRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{10} -} -func (m *ListApplicationWebhooksRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListApplicationWebhooksRequest.Unmarshal(m, b) -} -func (m *ListApplicationWebhooksRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListApplicationWebhooksRequest.Marshal(b, m, deterministic) + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *ListApplicationWebhooksRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListApplicationWebhooksRequest.Merge(m, src) + +func (x *ListApplicationWebhooksRequest) Reset() { + *x = ListApplicationWebhooksRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListApplicationWebhooksRequest) XXX_Size() int { - return xxx_messageInfo_ListApplicationWebhooksRequest.Size(m) + +func (x *ListApplicationWebhooksRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListApplicationWebhooksRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListApplicationWebhooksRequest.DiscardUnknown(m) + +func (*ListApplicationWebhooksRequest) ProtoMessage() {} + +func (x *ListApplicationWebhooksRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListApplicationWebhooksRequest proto.InternalMessageInfo +// Deprecated: Use ListApplicationWebhooksRequest.ProtoReflect.Descriptor instead. +func (*ListApplicationWebhooksRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{10} +} -func (m *ListApplicationWebhooksRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *ListApplicationWebhooksRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *ListApplicationWebhooksRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *ListApplicationWebhooksRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type SetApplicationWebhookRequest struct { - Webhook *ApplicationWebhook `protobuf:"bytes,1,opt,name=webhook,proto3" json:"webhook,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SetApplicationWebhookRequest) Reset() { *m = SetApplicationWebhookRequest{} } -func (m *SetApplicationWebhookRequest) String() string { return proto.CompactTextString(m) } -func (*SetApplicationWebhookRequest) ProtoMessage() {} -func (*SetApplicationWebhookRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{11} + Webhook *ApplicationWebhook `protobuf:"bytes,1,opt,name=webhook,proto3" json:"webhook,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *SetApplicationWebhookRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetApplicationWebhookRequest.Unmarshal(m, b) -} -func (m *SetApplicationWebhookRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetApplicationWebhookRequest.Marshal(b, m, deterministic) -} -func (m *SetApplicationWebhookRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetApplicationWebhookRequest.Merge(m, src) + +func (x *SetApplicationWebhookRequest) Reset() { + *x = SetApplicationWebhookRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SetApplicationWebhookRequest) XXX_Size() int { - return xxx_messageInfo_SetApplicationWebhookRequest.Size(m) + +func (x *SetApplicationWebhookRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SetApplicationWebhookRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetApplicationWebhookRequest.DiscardUnknown(m) + +func (*SetApplicationWebhookRequest) ProtoMessage() {} + +func (x *SetApplicationWebhookRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SetApplicationWebhookRequest proto.InternalMessageInfo +// Deprecated: Use SetApplicationWebhookRequest.ProtoReflect.Descriptor instead. +func (*SetApplicationWebhookRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{11} +} -func (m *SetApplicationWebhookRequest) GetWebhook() *ApplicationWebhook { - if m != nil { - return m.Webhook +func (x *SetApplicationWebhookRequest) GetWebhook() *ApplicationWebhook { + if x != nil { + return x.Webhook } return nil } -func (m *SetApplicationWebhookRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *SetApplicationWebhookRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type GetApplicationWebhookTemplateRequest struct { - Ids *ApplicationWebhookTemplateIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GetApplicationWebhookTemplateRequest) Reset() { *m = GetApplicationWebhookTemplateRequest{} } -func (m *GetApplicationWebhookTemplateRequest) String() string { return proto.CompactTextString(m) } -func (*GetApplicationWebhookTemplateRequest) ProtoMessage() {} -func (*GetApplicationWebhookTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{12} -} -func (m *GetApplicationWebhookTemplateRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetApplicationWebhookTemplateRequest.Unmarshal(m, b) + Ids *ApplicationWebhookTemplateIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *GetApplicationWebhookTemplateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetApplicationWebhookTemplateRequest.Marshal(b, m, deterministic) -} -func (m *GetApplicationWebhookTemplateRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetApplicationWebhookTemplateRequest.Merge(m, src) + +func (x *GetApplicationWebhookTemplateRequest) Reset() { + *x = GetApplicationWebhookTemplateRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetApplicationWebhookTemplateRequest) XXX_Size() int { - return xxx_messageInfo_GetApplicationWebhookTemplateRequest.Size(m) + +func (x *GetApplicationWebhookTemplateRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetApplicationWebhookTemplateRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetApplicationWebhookTemplateRequest.DiscardUnknown(m) + +func (*GetApplicationWebhookTemplateRequest) ProtoMessage() {} + +func (x *GetApplicationWebhookTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetApplicationWebhookTemplateRequest proto.InternalMessageInfo +// Deprecated: Use GetApplicationWebhookTemplateRequest.ProtoReflect.Descriptor instead. +func (*GetApplicationWebhookTemplateRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{12} +} -func (m *GetApplicationWebhookTemplateRequest) GetIds() *ApplicationWebhookTemplateIdentifiers { - if m != nil { - return m.Ids +func (x *GetApplicationWebhookTemplateRequest) GetIds() *ApplicationWebhookTemplateIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *GetApplicationWebhookTemplateRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *GetApplicationWebhookTemplateRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type ListApplicationWebhookTemplatesRequest struct { - FieldMask *types.FieldMask `protobuf:"bytes,1,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ListApplicationWebhookTemplatesRequest) Reset() { - *m = ListApplicationWebhookTemplatesRequest{} -} -func (m *ListApplicationWebhookTemplatesRequest) String() string { return proto.CompactTextString(m) } -func (*ListApplicationWebhookTemplatesRequest) ProtoMessage() {} -func (*ListApplicationWebhookTemplatesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_2652f2d8eaceda0e, []int{13} -} -func (m *ListApplicationWebhookTemplatesRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListApplicationWebhookTemplatesRequest.Unmarshal(m, b) + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,1,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *ListApplicationWebhookTemplatesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListApplicationWebhookTemplatesRequest.Marshal(b, m, deterministic) -} -func (m *ListApplicationWebhookTemplatesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListApplicationWebhookTemplatesRequest.Merge(m, src) -} -func (m *ListApplicationWebhookTemplatesRequest) XXX_Size() int { - return xxx_messageInfo_ListApplicationWebhookTemplatesRequest.Size(m) + +func (x *ListApplicationWebhookTemplatesRequest) Reset() { + *x = ListApplicationWebhookTemplatesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListApplicationWebhookTemplatesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListApplicationWebhookTemplatesRequest.DiscardUnknown(m) + +func (x *ListApplicationWebhookTemplatesRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ListApplicationWebhookTemplatesRequest proto.InternalMessageInfo +func (*ListApplicationWebhookTemplatesRequest) ProtoMessage() {} -func (m *ListApplicationWebhookTemplatesRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *ListApplicationWebhookTemplatesRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func init() { - proto.RegisterType((*ApplicationWebhookIdentifiers)(nil), "ttn.lorawan.v3.ApplicationWebhookIdentifiers") - golang_proto.RegisterType((*ApplicationWebhookIdentifiers)(nil), "ttn.lorawan.v3.ApplicationWebhookIdentifiers") - proto.RegisterType((*ApplicationWebhookTemplateIdentifiers)(nil), "ttn.lorawan.v3.ApplicationWebhookTemplateIdentifiers") - golang_proto.RegisterType((*ApplicationWebhookTemplateIdentifiers)(nil), "ttn.lorawan.v3.ApplicationWebhookTemplateIdentifiers") - proto.RegisterType((*ApplicationWebhookTemplateField)(nil), "ttn.lorawan.v3.ApplicationWebhookTemplateField") - golang_proto.RegisterType((*ApplicationWebhookTemplateField)(nil), "ttn.lorawan.v3.ApplicationWebhookTemplateField") - proto.RegisterType((*ApplicationWebhookTemplate)(nil), "ttn.lorawan.v3.ApplicationWebhookTemplate") - golang_proto.RegisterType((*ApplicationWebhookTemplate)(nil), "ttn.lorawan.v3.ApplicationWebhookTemplate") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.ApplicationWebhookTemplate.HeadersEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.ApplicationWebhookTemplate.HeadersEntry") - proto.RegisterType((*ApplicationWebhookTemplate_Message)(nil), "ttn.lorawan.v3.ApplicationWebhookTemplate.Message") - golang_proto.RegisterType((*ApplicationWebhookTemplate_Message)(nil), "ttn.lorawan.v3.ApplicationWebhookTemplate.Message") - proto.RegisterType((*ApplicationWebhookTemplates)(nil), "ttn.lorawan.v3.ApplicationWebhookTemplates") - golang_proto.RegisterType((*ApplicationWebhookTemplates)(nil), "ttn.lorawan.v3.ApplicationWebhookTemplates") - proto.RegisterType((*ApplicationWebhookHealth)(nil), "ttn.lorawan.v3.ApplicationWebhookHealth") - golang_proto.RegisterType((*ApplicationWebhookHealth)(nil), "ttn.lorawan.v3.ApplicationWebhookHealth") - proto.RegisterType((*ApplicationWebhookHealth_WebhookHealthStatusHealthy)(nil), "ttn.lorawan.v3.ApplicationWebhookHealth.WebhookHealthStatusHealthy") - golang_proto.RegisterType((*ApplicationWebhookHealth_WebhookHealthStatusHealthy)(nil), "ttn.lorawan.v3.ApplicationWebhookHealth.WebhookHealthStatusHealthy") - proto.RegisterType((*ApplicationWebhookHealth_WebhookHealthStatusUnhealthy)(nil), "ttn.lorawan.v3.ApplicationWebhookHealth.WebhookHealthStatusUnhealthy") - golang_proto.RegisterType((*ApplicationWebhookHealth_WebhookHealthStatusUnhealthy)(nil), "ttn.lorawan.v3.ApplicationWebhookHealth.WebhookHealthStatusUnhealthy") - proto.RegisterType((*ApplicationWebhook)(nil), "ttn.lorawan.v3.ApplicationWebhook") - golang_proto.RegisterType((*ApplicationWebhook)(nil), "ttn.lorawan.v3.ApplicationWebhook") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.ApplicationWebhook.HeadersEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.ApplicationWebhook.HeadersEntry") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.ApplicationWebhook.TemplateFieldsEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.ApplicationWebhook.TemplateFieldsEntry") - proto.RegisterType((*ApplicationWebhook_Message)(nil), "ttn.lorawan.v3.ApplicationWebhook.Message") - golang_proto.RegisterType((*ApplicationWebhook_Message)(nil), "ttn.lorawan.v3.ApplicationWebhook.Message") - proto.RegisterType((*ApplicationWebhooks)(nil), "ttn.lorawan.v3.ApplicationWebhooks") - golang_proto.RegisterType((*ApplicationWebhooks)(nil), "ttn.lorawan.v3.ApplicationWebhooks") - proto.RegisterType((*ApplicationWebhookFormats)(nil), "ttn.lorawan.v3.ApplicationWebhookFormats") - golang_proto.RegisterType((*ApplicationWebhookFormats)(nil), "ttn.lorawan.v3.ApplicationWebhookFormats") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.ApplicationWebhookFormats.FormatsEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.ApplicationWebhookFormats.FormatsEntry") - proto.RegisterType((*GetApplicationWebhookRequest)(nil), "ttn.lorawan.v3.GetApplicationWebhookRequest") - golang_proto.RegisterType((*GetApplicationWebhookRequest)(nil), "ttn.lorawan.v3.GetApplicationWebhookRequest") - proto.RegisterType((*ListApplicationWebhooksRequest)(nil), "ttn.lorawan.v3.ListApplicationWebhooksRequest") - golang_proto.RegisterType((*ListApplicationWebhooksRequest)(nil), "ttn.lorawan.v3.ListApplicationWebhooksRequest") - proto.RegisterType((*SetApplicationWebhookRequest)(nil), "ttn.lorawan.v3.SetApplicationWebhookRequest") - golang_proto.RegisterType((*SetApplicationWebhookRequest)(nil), "ttn.lorawan.v3.SetApplicationWebhookRequest") - proto.RegisterType((*GetApplicationWebhookTemplateRequest)(nil), "ttn.lorawan.v3.GetApplicationWebhookTemplateRequest") - golang_proto.RegisterType((*GetApplicationWebhookTemplateRequest)(nil), "ttn.lorawan.v3.GetApplicationWebhookTemplateRequest") - proto.RegisterType((*ListApplicationWebhookTemplatesRequest)(nil), "ttn.lorawan.v3.ListApplicationWebhookTemplatesRequest") - golang_proto.RegisterType((*ListApplicationWebhookTemplatesRequest)(nil), "ttn.lorawan.v3.ListApplicationWebhookTemplatesRequest") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/applicationserver_web.proto", fileDescriptor_2652f2d8eaceda0e) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/applicationserver_web.proto", fileDescriptor_2652f2d8eaceda0e) -} - -var fileDescriptor_2652f2d8eaceda0e = []byte{ - // 1990 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x99, 0x4d, 0x73, 0xdb, 0xc6, - 0x19, 0xc7, 0x05, 0xea, 0x8d, 0x7c, 0xa8, 0x17, 0x7a, 0xf5, 0x62, 0x84, 0x92, 0x1d, 0x0d, 0xec, - 0xda, 0xb2, 0x6a, 0x92, 0x19, 0xb9, 0x6a, 0x6a, 0x4d, 0x27, 0x0e, 0x19, 0x59, 0x92, 0x9b, 0x2a, - 0xa9, 0x41, 0xbb, 0xae, 0xe3, 0x49, 0xd9, 0x15, 0xb1, 0x22, 0x51, 0x82, 0x00, 0x82, 0x5d, 0x4a, - 0x55, 0x3c, 0x9e, 0xc9, 0x74, 0x7a, 0x68, 0x7b, 0xc9, 0x4c, 0x73, 0xe8, 0x4c, 0x0f, 0x9d, 0x66, - 0xda, 0x4b, 0x73, 0xec, 0x74, 0x7a, 0xee, 0x07, 0xe8, 0xad, 0x1f, 0xa1, 0xfd, 0x04, 0x3d, 0x75, - 0x7c, 0xea, 0x60, 0xb1, 0x20, 0xf1, 0x42, 0x59, 0x00, 0x55, 0xe7, 0x44, 0x2c, 0xf6, 0xd9, 0xdf, - 0xf3, 0xec, 0xb3, 0x8b, 0x7d, 0xfe, 0x00, 0xa1, 0x64, 0x58, 0x0e, 0x3e, 0xc1, 0x66, 0x89, 0x32, - 0xdc, 0xec, 0x54, 0xb0, 0xad, 0x57, 0xb0, 0x6d, 0x1b, 0x7a, 0x13, 0x33, 0xdd, 0x32, 0x29, 0x71, - 0x8e, 0x89, 0xd3, 0x38, 0x21, 0x87, 0x65, 0xdb, 0xb1, 0x98, 0x85, 0xe6, 0x18, 0x33, 0xcb, 0x62, - 0x48, 0xf9, 0xf8, 0x4e, 0x71, 0xa7, 0xa5, 0xb3, 0x76, 0xef, 0xb0, 0xdc, 0xb4, 0xba, 0x95, 0x47, - 0x6d, 0xf2, 0xa8, 0xad, 0x9b, 0x2d, 0xfa, 0xc0, 0xd4, 0x7a, 0x94, 0x39, 0x3a, 0xa1, 0x15, 0x3e, - 0xaa, 0x59, 0x6a, 0x11, 0xb3, 0xd4, 0xb2, 0x4a, 0x47, 0x06, 0x6e, 0xd1, 0x0a, 0x36, 0x4d, 0x8b, - 0x79, 0x78, 0x8f, 0x5a, 0xac, 0x06, 0x28, 0xc4, 0x3c, 0xb6, 0x4e, 0x6d, 0xc7, 0xfa, 0xd9, 0x69, - 0x70, 0xf0, 0x31, 0x36, 0x74, 0x0d, 0x33, 0x52, 0x89, 0x5d, 0x08, 0x44, 0x29, 0x80, 0x68, 0x59, - 0x2d, 0xcb, 0x1b, 0x7c, 0xd8, 0x3b, 0xe2, 0x2d, 0xde, 0xe0, 0x57, 0xc2, 0x7c, 0xb5, 0x65, 0x59, - 0x2d, 0x83, 0x78, 0xf3, 0x8d, 0xc5, 0xb3, 0x22, 0x7a, 0xfb, 0x0c, 0xd2, 0xb5, 0xd9, 0xa9, 0xe8, - 0x5c, 0x8b, 0x76, 0x1e, 0xe9, 0xc4, 0xd0, 0x1a, 0x5d, 0x4c, 0x3b, 0xc2, 0xe2, 0xcd, 0xa8, 0x05, - 0xd3, 0xbb, 0x84, 0x32, 0xdc, 0xb5, 0x85, 0xc1, 0x95, 0x78, 0xd2, 0x89, 0xe3, 0x58, 0x8e, 0xe8, - 0xbe, 0x16, 0xef, 0xd6, 0x35, 0x62, 0x32, 0xfd, 0x48, 0x27, 0x8e, 0x88, 0x51, 0xf9, 0x87, 0x04, - 0x57, 0xaa, 0x83, 0x95, 0x7a, 0x42, 0x0e, 0xdb, 0x96, 0xd5, 0x79, 0x30, 0xb0, 0x43, 0x4f, 0x61, - 0x3e, 0xb0, 0x94, 0x0d, 0x5d, 0xa3, 0xb2, 0xb4, 0x26, 0xad, 0xe7, 0x37, 0x6f, 0x94, 0xc3, 0xab, - 0x58, 0x0e, 0x70, 0x02, 0x80, 0x5a, 0xf6, 0x65, 0x6d, 0xf2, 0xd7, 0x52, 0xa6, 0x20, 0xa9, 0x73, - 0x38, 0x68, 0x41, 0xd1, 0x2e, 0xc0, 0x89, 0xe7, 0xb0, 0xa1, 0x6b, 0x72, 0x66, 0x4d, 0x5a, 0xcf, - 0xd5, 0x6e, 0xbe, 0xac, 0x5d, 0x77, 0x14, 0xf9, 0xfa, 0xe6, 0xd5, 0x1f, 0x3f, 0xc3, 0xa5, 0x4f, - 0xdf, 0x2a, 0xdd, 0xfd, 0x78, 0xfd, 0xde, 0xf6, 0xb3, 0xd2, 0xc7, 0xf7, 0xfc, 0xe6, 0xad, 0xe7, - 0x9b, 0xb7, 0x5f, 0x5c, 0x57, 0x73, 0x27, 0x7e, 0xac, 0xdb, 0xd9, 0xff, 0x7c, 0xf5, 0xc6, 0x44, - 0x56, 0x2a, 0x48, 0xca, 0x73, 0xf8, 0x46, 0x7c, 0x36, 0x8f, 0x48, 0xd7, 0x36, 0x30, 0x23, 0xc1, - 0x59, 0xed, 0x43, 0x9e, 0x89, 0xdb, 0xae, 0x6f, 0x29, 0x9d, 0x6f, 0x60, 0x7d, 0x64, 0xc0, 0xf9, - 0x2f, 0x32, 0xf0, 0xe6, 0xd9, 0xde, 0x77, 0xdd, 0xf5, 0x45, 0x6f, 0x43, 0x26, 0xbd, 0xbb, 0x8c, - 0xae, 0xa1, 0x15, 0x98, 0x30, 0x71, 0x97, 0x88, 0x2c, 0x4d, 0xbf, 0xac, 0x4d, 0x38, 0x19, 0x79, - 0x51, 0xe5, 0x37, 0xd1, 0x2d, 0xc8, 0x6b, 0x84, 0x36, 0x1d, 0xdd, 0x76, 0x1d, 0xcb, 0xe3, 0x41, - 0x1b, 0x4d, 0x0d, 0xf6, 0xa1, 0x65, 0x98, 0xa2, 0xa4, 0xe9, 0x10, 0x26, 0x4f, 0xac, 0x49, 0xeb, - 0x59, 0x55, 0xb4, 0xd0, 0x6d, 0x98, 0xd5, 0xc8, 0x11, 0xee, 0x19, 0xac, 0x71, 0x8c, 0x8d, 0x1e, - 0x91, 0x27, 0xc3, 0x90, 0x19, 0xd1, 0xfb, 0x43, 0xb7, 0x13, 0x15, 0x21, 0x6b, 0x71, 0x1e, 0x36, - 0xe4, 0x29, 0xce, 0xe9, 0xb7, 0x95, 0x2f, 0xe7, 0xa0, 0x78, 0x76, 0x1a, 0xd0, 0x43, 0x18, 0x1f, - 0xec, 0xa1, 0xad, 0x57, 0xec, 0xa1, 0xb3, 0x57, 0x2f, 0xb0, 0xa5, 0x5c, 0xd6, 0xff, 0x2d, 0x37, - 0xd7, 0x20, 0x6b, 0x58, 0x2d, 0xab, 0xd1, 0x73, 0x0c, 0x9e, 0x9d, 0x1c, 0x77, 0xe4, 0x8c, 0xff, - 0x52, 0x92, 0xd4, 0x69, 0xb7, 0xe7, 0xb1, 0x63, 0xb8, 0x46, 0xba, 0x79, 0xe4, 0x19, 0x4d, 0x46, - 0x8d, 0xdc, 0x1e, 0xd7, 0x68, 0x0b, 0x2e, 0x69, 0x56, 0xb3, 0xd7, 0x25, 0xa6, 0x77, 0x24, 0x70, - 0xeb, 0xa9, 0x88, 0x75, 0x21, 0x64, 0x22, 0xd8, 0x87, 0x98, 0x12, 0x6e, 0x3d, 0x1d, 0x65, 0xbb, - 0x3d, 0xae, 0x51, 0x1b, 0xa6, 0xdb, 0x04, 0x6b, 0xc4, 0xa1, 0x72, 0x76, 0x6d, 0x7c, 0x3d, 0xbf, - 0xf9, 0x76, 0xf2, 0x24, 0x96, 0xf7, 0xbd, 0x91, 0xf7, 0x4d, 0xe6, 0x9c, 0xd6, 0x96, 0x5e, 0xd6, - 0xd0, 0xef, 0xa4, 0xf9, 0xc2, 0xa6, 0xe2, 0x26, 0xe3, 0xdd, 0x8d, 0x49, 0x67, 0x5c, 0xfe, 0x2c, - 0xa3, 0xfa, 0x78, 0x74, 0x0f, 0xa6, 0x8e, 0x2c, 0xa7, 0x8b, 0x99, 0x9c, 0x0b, 0x6e, 0xd8, 0xc5, - 0x73, 0x37, 0xac, 0x18, 0x86, 0xf6, 0x60, 0x8a, 0x1f, 0x6b, 0x54, 0x06, 0x1e, 0x69, 0x25, 0x79, - 0xa4, 0xfc, 0x71, 0x51, 0xc5, 0x70, 0xb4, 0x05, 0x97, 0x9b, 0x0e, 0x71, 0x1f, 0x56, 0xcd, 0x3a, - 0x31, 0x0d, 0xdd, 0xec, 0x34, 0xb0, 0xad, 0x37, 0x3a, 0xe4, 0x54, 0x5e, 0xe0, 0xdb, 0x6f, 0xd1, - 0xeb, 0xde, 0x11, 0xbd, 0x55, 0x5b, 0x7f, 0x9f, 0x9c, 0xa2, 0xa7, 0x30, 0xd7, 0xb3, 0xb9, 0x75, - 0x97, 0x50, 0x8a, 0x5b, 0x44, 0xce, 0xf3, 0x6d, 0xb7, 0x99, 0x22, 0x63, 0x07, 0xde, 0x48, 0x75, - 0xd6, 0x23, 0x89, 0x26, 0x6a, 0xc0, 0x25, 0x81, 0x36, 0xdd, 0xb9, 0x1a, 0xfa, 0xa7, 0x44, 0x93, - 0x2f, 0x8f, 0x4c, 0x2f, 0x78, 0xb0, 0x0f, 0xfa, 0x2c, 0x54, 0x87, 0xfc, 0x4f, 0x2d, 0xdd, 0x6c, - 0xe0, 0x66, 0x93, 0xd8, 0x4c, 0x9e, 0x19, 0x19, 0x0d, 0x2e, 0xa6, 0xca, 0x29, 0xe8, 0x31, 0xcc, - 0x0c, 0x12, 0xd8, 0xec, 0xc8, 0xb3, 0x23, 0x53, 0xf3, 0x3e, 0xa7, 0xda, 0xec, 0xa0, 0x27, 0x30, - 0xdb, 0xc7, 0x9a, 0x2e, 0x77, 0x6e, 0x64, 0x6e, 0x3f, 0xbe, 0x0f, 0x70, 0x04, 0x4c, 0x89, 0xc9, - 0xe4, 0xf9, 0x8b, 0x83, 0xeb, 0xc4, 0x64, 0xe8, 0x19, 0xcc, 0xf7, 0xc1, 0x47, 0x58, 0x37, 0x88, - 0x26, 0x17, 0x46, 0x46, 0xcf, 0xf9, 0xa8, 0x5d, 0x4e, 0x0a, 0xc1, 0x3f, 0xe9, 0x91, 0x1e, 0xd1, - 0xe4, 0x4b, 0x17, 0x87, 0x3f, 0xe4, 0x24, 0x64, 0x43, 0x31, 0x0c, 0x6f, 0xe8, 0xa6, 0xaf, 0x62, - 0x34, 0x79, 0x69, 0x64, 0x3f, 0x72, 0xc8, 0xcf, 0x83, 0x01, 0xd3, 0x9d, 0x8e, 0x61, 0x89, 0xf2, - 0x4f, 0x2d, 0xe3, 0x98, 0x68, 0x32, 0x1a, 0x7d, 0x3a, 0x3e, 0xaa, 0xce, 0x49, 0xee, 0x8e, 0x74, - 0xe5, 0xa1, 0xde, 0x24, 0x0d, 0x0d, 0x33, 0x2c, 0x2f, 0x8e, 0xbe, 0x23, 0x05, 0x67, 0x07, 0x33, - 0x8c, 0xee, 0x02, 0x0c, 0x04, 0x95, 0xbc, 0xcc, 0xa1, 0xc5, 0xb2, 0xa7, 0xa8, 0xca, 0xbe, 0xa2, - 0x2a, 0xf3, 0x43, 0xe6, 0x00, 0xd3, 0x8e, 0x9a, 0x3b, 0xf2, 0x2f, 0x8b, 0xdb, 0x30, 0x13, 0x3c, - 0x25, 0x51, 0x01, 0xc6, 0xdd, 0x73, 0x86, 0xd7, 0x6c, 0xd5, 0xbd, 0x44, 0x8b, 0x30, 0xe9, 0xd5, - 0x48, 0x5e, 0x70, 0x54, 0xaf, 0xb1, 0x9d, 0xf9, 0x8e, 0x54, 0xbc, 0x01, 0xd3, 0xfe, 0x01, 0xb1, - 0x02, 0x13, 0x36, 0x66, 0x6d, 0x51, 0xeb, 0x45, 0xc1, 0x79, 0x57, 0xe5, 0x37, 0x95, 0x16, 0xac, - 0x9c, 0x3d, 0x23, 0x57, 0x9d, 0xe4, 0x7c, 0x85, 0xe1, 0x56, 0x4a, 0xf7, 0xe8, 0xdc, 0x48, 0x9e, - 0x11, 0x75, 0x30, 0x58, 0xf9, 0x6a, 0x02, 0xe4, 0xb8, 0xe5, 0x3e, 0xc1, 0x06, 0x6b, 0xa3, 0x06, - 0xaf, 0x24, 0x06, 0x6b, 0x9f, 0x8a, 0x72, 0xfc, 0xde, 0xf9, 0x4e, 0xbc, 0xa1, 0xe5, 0x50, 0xab, - 0xce, 0x30, 0xeb, 0x51, 0xef, 0xfa, 0x74, 0x7f, 0x4c, 0xf5, 0xa9, 0x88, 0x40, 0xae, 0x67, 0xfa, - 0x2e, 0x32, 0xdc, 0xc5, 0xfd, 0x8b, 0xb8, 0x78, 0xec, 0xc3, 0xf6, 0xc7, 0xd4, 0x01, 0xb9, 0x78, - 0x03, 0x8a, 0x67, 0xc7, 0xd3, 0x17, 0x68, 0x63, 0xc5, 0x5f, 0x65, 0x60, 0xf5, 0x55, 0x54, 0x74, - 0x13, 0xe6, 0xbd, 0xc3, 0xa0, 0x81, 0x99, 0x9b, 0x43, 0xe6, 0xe9, 0x94, 0x09, 0x75, 0xce, 0xbb, - 0x5d, 0x15, 0x77, 0xd1, 0x53, 0x58, 0x36, 0x30, 0x65, 0x8d, 0xb0, 0x75, 0x03, 0x33, 0x31, 0xcb, - 0xf8, 0x56, 0x7b, 0xe4, 0x8b, 0x77, 0x5e, 0xd2, 0xff, 0x22, 0x65, 0xb2, 0x92, 0xba, 0xe0, 0x32, - 0x76, 0x83, 0xe4, 0xaa, 0x7b, 0x32, 0xad, 0x0c, 0x43, 0x6b, 0x84, 0x61, 0xdd, 0xa0, 0x5c, 0xbf, - 0xe4, 0x37, 0x57, 0xa3, 0x59, 0xbc, 0xef, 0x0a, 0xff, 0x1d, 0xcf, 0x46, 0x95, 0x63, 0x5c, 0xd1, - 0x33, 0xc8, 0xc5, 0xe0, 0xaa, 0x96, 0x85, 0x29, 0xca, 0xf3, 0xa0, 0x7c, 0x3e, 0x0f, 0x28, 0xbe, - 0x1c, 0x61, 0xc5, 0x56, 0x3a, 0x7f, 0xfd, 0x82, 0x4a, 0xad, 0xe0, 0x2b, 0x35, 0xee, 0x6e, 0x6c, - 0x5d, 0x28, 0xb6, 0xf7, 0x00, 0xbc, 0x82, 0xad, 0x25, 0xcc, 0x99, 0x37, 0xbc, 0x30, 0xa6, 0xe6, - 0xc4, 0xb8, 0x2a, 0x73, 0x21, 0x3d, 0x5b, 0xf3, 0x21, 0xe3, 0x69, 0x20, 0x62, 0x5c, 0x95, 0x85, - 0x24, 0xd7, 0xc4, 0x59, 0x92, 0xeb, 0x27, 0x03, 0xc9, 0x35, 0x99, 0x54, 0xc8, 0x24, 0x90, 0x5a, - 0x6b, 0xc3, 0xa4, 0xd6, 0xd4, 0x68, 0x52, 0xeb, 0x47, 0x30, 0x13, 0x78, 0xa1, 0xa1, 0xa2, 0x50, - 0x8e, 0xa6, 0xaf, 0xd5, 0xfc, 0xe0, 0xfd, 0x86, 0xa2, 0x06, 0xcc, 0xf7, 0xc9, 0x42, 0xcd, 0x15, - 0x78, 0x12, 0xbe, 0x9d, 0x20, 0x09, 0x21, 0x39, 0xe7, 0xe5, 0x42, 0x9d, 0x63, 0xa1, 0x9b, 0x68, - 0x13, 0x0a, 0x31, 0x55, 0x77, 0x29, 0xb0, 0x14, 0xf2, 0x67, 0xd2, 0xa0, 0x0a, 0x0a, 0x65, 0xf7, - 0x30, 0xa6, 0xec, 0xa6, 0xf9, 0x84, 0x13, 0x1c, 0x93, 0x67, 0x29, 0xba, 0x27, 0xc3, 0x14, 0xdd, - 0x72, 0x6a, 0x6a, 0x5c, 0xc9, 0xbd, 0x1f, 0x56, 0x72, 0xd9, 0xd4, 0xc8, 0xa0, 0x82, 0x3b, 0x88, - 0x28, 0xb8, 0x5c, 0x6a, 0x5a, 0x48, 0xb9, 0x7d, 0x18, 0x55, 0x6e, 0x90, 0x9a, 0x17, 0x56, 0x6c, - 0x1f, 0x46, 0x15, 0x5b, 0x7e, 0x74, 0x20, 0x57, 0x6a, 0xf5, 0xb8, 0x52, 0x9b, 0x49, 0x8d, 0x8c, - 0x2a, 0xb4, 0x7a, 0x5c, 0xa1, 0xcd, 0x8e, 0x0e, 0x15, 0xca, 0xac, 0xfd, 0x4a, 0x65, 0xb6, 0x90, - 0x9a, 0x7f, 0xb6, 0x22, 0xab, 0xc7, 0x15, 0xd9, 0x5c, 0xfa, 0xf0, 0x23, 0x4a, 0xec, 0x20, 0xa2, - 0xc4, 0x50, 0xfa, 0x9d, 0x15, 0x54, 0x60, 0x07, 0x30, 0xeb, 0x95, 0xd5, 0x86, 0x57, 0x5d, 0x84, - 0xb2, 0x5b, 0x4f, 0x5a, 0xff, 0xd5, 0x99, 0x76, 0xa0, 0x46, 0x47, 0x04, 0xdd, 0xd2, 0xd7, 0x25, - 0xe8, 0xaa, 0xb0, 0x30, 0xe4, 0x08, 0x4b, 0x85, 0x78, 0x2b, 0x99, 0x26, 0x1c, 0x7c, 0x48, 0x0a, - 0x7c, 0x52, 0x7a, 0x0c, 0x0b, 0xf1, 0xfc, 0x50, 0xf4, 0x0e, 0x64, 0xc5, 0xd7, 0x2f, 0x5f, 0x1e, - 0x2a, 0xe7, 0xa7, 0x55, 0xed, 0x8f, 0x51, 0xfe, 0x2c, 0xc1, 0x1b, 0x71, 0x83, 0x5d, 0x5e, 0x49, - 0x28, 0xfa, 0x01, 0x4c, 0x7b, 0x45, 0xc5, 0x87, 0x27, 0x38, 0xe8, 0xc5, 0xd8, 0xb2, 0xf8, 0xf5, - 0x0e, 0x7a, 0x1f, 0xe3, 0xae, 0x40, 0xb0, 0x23, 0x4d, 0xfa, 0x94, 0x3f, 0x49, 0xb0, 0xba, 0x47, - 0xd8, 0x90, 0xf9, 0x90, 0x4f, 0x7a, 0x84, 0x32, 0xf4, 0xe0, 0x02, 0xf2, 0x24, 0xf2, 0x21, 0x29, - 0xbc, 0xc9, 0x32, 0x29, 0x36, 0x99, 0xf2, 0x37, 0x09, 0xae, 0x7e, 0x5f, 0xa7, 0x43, 0xe2, 0xa4, - 0x7e, 0xa0, 0xaf, 0xf1, 0x4b, 0xea, 0x05, 0x02, 0xff, 0x52, 0x82, 0xd5, 0xfa, 0xab, 0xf2, 0xbb, - 0x0b, 0xd3, 0x62, 0xe3, 0x88, 0x70, 0x13, 0xec, 0xb5, 0x40, 0xa8, 0xfe, 0xe0, 0x8b, 0xc4, 0xf8, - 0x57, 0x09, 0xae, 0x0f, 0xdd, 0x03, 0xfd, 0x57, 0x1e, 0x11, 0xeb, 0x6b, 0xf8, 0xb8, 0x78, 0x81, - 0xb0, 0x9b, 0x70, 0x63, 0xf8, 0x96, 0xe8, 0xbf, 0xe9, 0xf9, 0x71, 0x87, 0x9d, 0x48, 0x29, 0x9c, - 0x6c, 0x7e, 0x9e, 0x1b, 0xf6, 0xb9, 0x55, 0x25, 0x2d, 0x9d, 0xba, 0x8f, 0x9a, 0x01, 0xb0, 0x47, - 0x98, 0xff, 0x68, 0x2f, 0xc7, 0x98, 0xf7, 0xbb, 0x36, 0x3b, 0x2d, 0xde, 0x4a, 0xfc, 0x84, 0x2b, - 0x2b, 0x3f, 0xff, 0xe7, 0xbf, 0xbf, 0xc8, 0x2c, 0xa1, 0x85, 0x0a, 0xa6, 0x15, 0xb1, 0xb6, 0x25, - 0xf1, 0xa0, 0xa3, 0x3f, 0x48, 0x90, 0xdf, 0x23, 0xac, 0xff, 0xb1, 0xf7, 0x5b, 0x51, 0x6e, 0x92, - 0x55, 0x2c, 0xa6, 0x78, 0xd7, 0x55, 0x2a, 0x3c, 0x9c, 0x5b, 0xe8, 0x66, 0x30, 0x9c, 0xfe, 0xfb, - 0x6f, 0xe5, 0xb9, 0xae, 0xd1, 0x72, 0x40, 0x18, 0xbf, 0x40, 0x5f, 0x48, 0x30, 0xeb, 0xae, 0xca, - 0xe0, 0x6d, 0x3b, 0x76, 0xbc, 0x25, 0x5b, 0xb4, 0xe2, 0x37, 0x93, 0x87, 0x49, 0x95, 0x2b, 0x3c, - 0xce, 0xcb, 0x68, 0x69, 0x68, 0x9c, 0xe8, 0x8f, 0x12, 0x8c, 0xef, 0x11, 0x86, 0x6e, 0x27, 0x4a, - 0x98, 0x1f, 0x41, 0x82, 0x27, 0x51, 0xf9, 0x1e, 0x77, 0xbc, 0x83, 0x6a, 0x01, 0xc7, 0x22, 0x2f, - 0x91, 0xd3, 0x28, 0xd2, 0x7e, 0xe1, 0x19, 0x0d, 0xfe, 0xa1, 0x79, 0x81, 0x7e, 0x23, 0xc1, 0x84, - 0x9b, 0x1c, 0x54, 0x4e, 0x96, 0xb2, 0x7e, 0xaa, 0xae, 0x9d, 0x1f, 0x28, 0x55, 0xb6, 0x78, 0xa4, - 0x15, 0x54, 0x0a, 0x47, 0x7a, 0x4e, 0x94, 0xe8, 0xbf, 0x12, 0x8c, 0xd7, 0x87, 0xa5, 0xae, 0x7e, - 0xd1, 0xd4, 0xfd, 0x5e, 0xe2, 0x11, 0xfd, 0x56, 0x2a, 0xaa, 0xe1, 0x90, 0xc4, 0x55, 0x39, 0x51, - 0x12, 0x83, 0xc6, 0x81, 0x64, 0x6e, 0x4b, 0x1b, 0x1f, 0xbd, 0xa3, 0xdc, 0x1d, 0x19, 0xbc, 0x2d, - 0x6d, 0xb8, 0x7b, 0x79, 0x6a, 0x87, 0x18, 0x84, 0x11, 0x94, 0xae, 0xf0, 0x15, 0xcf, 0x38, 0x08, - 0x94, 0x1a, 0x9f, 0xf1, 0x77, 0x37, 0xb6, 0x53, 0xad, 0x41, 0x3f, 0x70, 0xb7, 0x51, 0xdb, 0xfa, - 0xfb, 0xbf, 0xae, 0x4a, 0x1f, 0x55, 0x5a, 0x56, 0x99, 0xb5, 0x09, 0xe3, 0xff, 0xe5, 0x96, 0x4d, - 0xc2, 0x4e, 0x2c, 0xa7, 0x53, 0x09, 0xff, 0x27, 0x79, 0x7c, 0xa7, 0x62, 0x77, 0x5a, 0x15, 0xc6, - 0x4c, 0xfb, 0xf0, 0x70, 0x8a, 0x87, 0x72, 0xe7, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x13, - 0xd7, 0xe3, 0x4c, 0x1e, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// ApplicationWebhookRegistryClient is the client API for ApplicationWebhookRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ApplicationWebhookRegistryClient interface { - GetFormats(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*ApplicationWebhookFormats, error) - GetTemplate(ctx context.Context, in *GetApplicationWebhookTemplateRequest, opts ...grpc.CallOption) (*ApplicationWebhookTemplate, error) - ListTemplates(ctx context.Context, in *ListApplicationWebhookTemplatesRequest, opts ...grpc.CallOption) (*ApplicationWebhookTemplates, error) - Get(ctx context.Context, in *GetApplicationWebhookRequest, opts ...grpc.CallOption) (*ApplicationWebhook, error) - List(ctx context.Context, in *ListApplicationWebhooksRequest, opts ...grpc.CallOption) (*ApplicationWebhooks, error) - Set(ctx context.Context, in *SetApplicationWebhookRequest, opts ...grpc.CallOption) (*ApplicationWebhook, error) - Delete(ctx context.Context, in *ApplicationWebhookIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) +// Deprecated: Use ListApplicationWebhookTemplatesRequest.ProtoReflect.Descriptor instead. +func (*ListApplicationWebhookTemplatesRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{13} } -type applicationWebhookRegistryClient struct { - cc *grpc.ClientConn +func (x *ListApplicationWebhookTemplatesRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask + } + return nil } -func NewApplicationWebhookRegistryClient(cc *grpc.ClientConn) ApplicationWebhookRegistryClient { - return &applicationWebhookRegistryClient{cc} +type ApplicationWebhookTemplate_Message struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Path to append to the base URL. Can contain template fields, in RFC 6570 format. + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` } -func (c *applicationWebhookRegistryClient) GetFormats(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*ApplicationWebhookFormats, error) { - out := new(ApplicationWebhookFormats) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationWebhookRegistry/GetFormats", in, out, opts...) - if err != nil { - return nil, err +func (x *ApplicationWebhookTemplate_Message) Reset() { + *x = ApplicationWebhookTemplate_Message{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return out, nil } -func (c *applicationWebhookRegistryClient) GetTemplate(ctx context.Context, in *GetApplicationWebhookTemplateRequest, opts ...grpc.CallOption) (*ApplicationWebhookTemplate, error) { - out := new(ApplicationWebhookTemplate) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationWebhookRegistry/GetTemplate", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +func (x *ApplicationWebhookTemplate_Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (c *applicationWebhookRegistryClient) ListTemplates(ctx context.Context, in *ListApplicationWebhookTemplatesRequest, opts ...grpc.CallOption) (*ApplicationWebhookTemplates, error) { - out := new(ApplicationWebhookTemplates) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationWebhookRegistry/ListTemplates", in, out, opts...) - if err != nil { - return nil, err +func (*ApplicationWebhookTemplate_Message) ProtoMessage() {} + +func (x *ApplicationWebhookTemplate_Message) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return out, nil + return mi.MessageOf(x) } -func (c *applicationWebhookRegistryClient) Get(ctx context.Context, in *GetApplicationWebhookRequest, opts ...grpc.CallOption) (*ApplicationWebhook, error) { - out := new(ApplicationWebhook) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationWebhookRegistry/Get", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// Deprecated: Use ApplicationWebhookTemplate_Message.ProtoReflect.Descriptor instead. +func (*ApplicationWebhookTemplate_Message) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{3, 1} } -func (c *applicationWebhookRegistryClient) List(ctx context.Context, in *ListApplicationWebhooksRequest, opts ...grpc.CallOption) (*ApplicationWebhooks, error) { - out := new(ApplicationWebhooks) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationWebhookRegistry/List", in, out, opts...) - if err != nil { - return nil, err +func (x *ApplicationWebhookTemplate_Message) GetPath() string { + if x != nil { + return x.Path } - return out, nil + return "" } -func (c *applicationWebhookRegistryClient) Set(ctx context.Context, in *SetApplicationWebhookRequest, opts ...grpc.CallOption) (*ApplicationWebhook, error) { - out := new(ApplicationWebhook) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationWebhookRegistry/Set", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +type ApplicationWebhookHealth_WebhookHealthStatusHealthy struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (c *applicationWebhookRegistryClient) Delete(ctx context.Context, in *ApplicationWebhookIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationWebhookRegistry/Delete", in, out, opts...) - if err != nil { - return nil, err +func (x *ApplicationWebhookHealth_WebhookHealthStatusHealthy) Reset() { + *x = ApplicationWebhookHealth_WebhookHealthStatusHealthy{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return out, nil } -// ApplicationWebhookRegistryServer is the server API for ApplicationWebhookRegistry service. -type ApplicationWebhookRegistryServer interface { - GetFormats(context.Context, *types.Empty) (*ApplicationWebhookFormats, error) - GetTemplate(context.Context, *GetApplicationWebhookTemplateRequest) (*ApplicationWebhookTemplate, error) - ListTemplates(context.Context, *ListApplicationWebhookTemplatesRequest) (*ApplicationWebhookTemplates, error) - Get(context.Context, *GetApplicationWebhookRequest) (*ApplicationWebhook, error) - List(context.Context, *ListApplicationWebhooksRequest) (*ApplicationWebhooks, error) - Set(context.Context, *SetApplicationWebhookRequest) (*ApplicationWebhook, error) - Delete(context.Context, *ApplicationWebhookIdentifiers) (*types.Empty, error) +func (x *ApplicationWebhookHealth_WebhookHealthStatusHealthy) String() string { + return protoimpl.X.MessageStringOf(x) } -// UnimplementedApplicationWebhookRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedApplicationWebhookRegistryServer struct { -} +func (*ApplicationWebhookHealth_WebhookHealthStatusHealthy) ProtoMessage() {} -func (*UnimplementedApplicationWebhookRegistryServer) GetFormats(ctx context.Context, req *types.Empty) (*ApplicationWebhookFormats, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetFormats not implemented") -} -func (*UnimplementedApplicationWebhookRegistryServer) GetTemplate(ctx context.Context, req *GetApplicationWebhookTemplateRequest) (*ApplicationWebhookTemplate, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetTemplate not implemented") +func (x *ApplicationWebhookHealth_WebhookHealthStatusHealthy) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (*UnimplementedApplicationWebhookRegistryServer) ListTemplates(ctx context.Context, req *ListApplicationWebhookTemplatesRequest) (*ApplicationWebhookTemplates, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListTemplates not implemented") + +// Deprecated: Use ApplicationWebhookHealth_WebhookHealthStatusHealthy.ProtoReflect.Descriptor instead. +func (*ApplicationWebhookHealth_WebhookHealthStatusHealthy) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{5, 0} } -func (*UnimplementedApplicationWebhookRegistryServer) Get(ctx context.Context, req *GetApplicationWebhookRequest) (*ApplicationWebhook, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") + +type ApplicationWebhookHealth_WebhookHealthStatusUnhealthy struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FailedAttempts uint64 `protobuf:"varint,1,opt,name=failed_attempts,json=failedAttempts,proto3" json:"failed_attempts,omitempty"` + LastFailedAttemptAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=last_failed_attempt_at,json=lastFailedAttemptAt,proto3" json:"last_failed_attempt_at,omitempty"` + LastFailedAttemptDetails *ErrorDetails `protobuf:"bytes,3,opt,name=last_failed_attempt_details,json=lastFailedAttemptDetails,proto3" json:"last_failed_attempt_details,omitempty"` } -func (*UnimplementedApplicationWebhookRegistryServer) List(ctx context.Context, req *ListApplicationWebhooksRequest) (*ApplicationWebhooks, error) { - return nil, status.Errorf(codes.Unimplemented, "method List not implemented") + +func (x *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) Reset() { + *x = ApplicationWebhookHealth_WebhookHealthStatusUnhealthy{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (*UnimplementedApplicationWebhookRegistryServer) Set(ctx context.Context, req *SetApplicationWebhookRequest) (*ApplicationWebhook, error) { - return nil, status.Errorf(codes.Unimplemented, "method Set not implemented") + +func (x *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) String() string { + return protoimpl.X.MessageStringOf(x) } -func (*UnimplementedApplicationWebhookRegistryServer) Delete(ctx context.Context, req *ApplicationWebhookIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") + +func (*ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) ProtoMessage() {} + +func (x *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func RegisterApplicationWebhookRegistryServer(s *grpc.Server, srv ApplicationWebhookRegistryServer) { - s.RegisterService(&_ApplicationWebhookRegistry_serviceDesc, srv) +// Deprecated: Use ApplicationWebhookHealth_WebhookHealthStatusUnhealthy.ProtoReflect.Descriptor instead. +func (*ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{5, 1} } -func _ApplicationWebhookRegistry_GetFormats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationWebhookRegistryServer).GetFormats(ctx, in) +func (x *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) GetFailedAttempts() uint64 { + if x != nil { + return x.FailedAttempts } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationWebhookRegistry/GetFormats", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationWebhookRegistryServer).GetFormats(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) + return 0 } -func _ApplicationWebhookRegistry_GetTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetApplicationWebhookTemplateRequest) - if err := dec(in); err != nil { - return nil, err +func (x *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) GetLastFailedAttemptAt() *timestamppb.Timestamp { + if x != nil { + return x.LastFailedAttemptAt } - if interceptor == nil { - return srv.(ApplicationWebhookRegistryServer).GetTemplate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationWebhookRegistry/GetTemplate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationWebhookRegistryServer).GetTemplate(ctx, req.(*GetApplicationWebhookTemplateRequest)) - } - return interceptor(ctx, in, info, handler) + return nil } -func _ApplicationWebhookRegistry_ListTemplates_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListApplicationWebhookTemplatesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationWebhookRegistryServer).ListTemplates(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationWebhookRegistry/ListTemplates", +func (x *ApplicationWebhookHealth_WebhookHealthStatusUnhealthy) GetLastFailedAttemptDetails() *ErrorDetails { + if x != nil { + return x.LastFailedAttemptDetails } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationWebhookRegistryServer).ListTemplates(ctx, req.(*ListApplicationWebhookTemplatesRequest)) - } - return interceptor(ctx, in, info, handler) + return nil } -func _ApplicationWebhookRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetApplicationWebhookRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationWebhookRegistryServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationWebhookRegistry/Get", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationWebhookRegistryServer).Get(ctx, req.(*GetApplicationWebhookRequest)) - } - return interceptor(ctx, in, info, handler) +type ApplicationWebhook_Message struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Path to append to the base URL. + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` } -func _ApplicationWebhookRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListApplicationWebhooksRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationWebhookRegistryServer).List(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationWebhookRegistry/List", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationWebhookRegistryServer).List(ctx, req.(*ListApplicationWebhooksRequest)) +func (x *ApplicationWebhook_Message) Reset() { + *x = ApplicationWebhook_Message{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return interceptor(ctx, in, info, handler) } -func _ApplicationWebhookRegistry_Set_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetApplicationWebhookRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationWebhookRegistryServer).Set(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationWebhookRegistry/Set", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationWebhookRegistryServer).Set(ctx, req.(*SetApplicationWebhookRequest)) - } - return interceptor(ctx, in, info, handler) +func (x *ApplicationWebhook_Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func _ApplicationWebhookRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationWebhookIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationWebhookRegistryServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationWebhookRegistry/Delete", +func (*ApplicationWebhook_Message) ProtoMessage() {} + +func (x *ApplicationWebhook_Message) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_applicationserver_web_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationWebhookRegistryServer).Delete(ctx, req.(*ApplicationWebhookIdentifiers)) + return mi.MessageOf(x) +} + +// Deprecated: Use ApplicationWebhook_Message.ProtoReflect.Descriptor instead. +func (*ApplicationWebhook_Message) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP(), []int{6, 2} +} + +func (x *ApplicationWebhook_Message) GetPath() string { + if x != nil { + return x.Path } - return interceptor(ctx, in, info, handler) + return "" } -var _ApplicationWebhookRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.ApplicationWebhookRegistry", - HandlerType: (*ApplicationWebhookRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetFormats", - Handler: _ApplicationWebhookRegistry_GetFormats_Handler, - }, - { - MethodName: "GetTemplate", - Handler: _ApplicationWebhookRegistry_GetTemplate_Handler, - }, - { - MethodName: "ListTemplates", - Handler: _ApplicationWebhookRegistry_ListTemplates_Handler, - }, - { - MethodName: "Get", - Handler: _ApplicationWebhookRegistry_Get_Handler, - }, - { - MethodName: "List", - Handler: _ApplicationWebhookRegistry_List_Handler, - }, - { - MethodName: "Set", - Handler: _ApplicationWebhookRegistry_Set_Handler, - }, - { - MethodName: "Delete", - Handler: _ApplicationWebhookRegistry_Delete_Handler, +var File_lorawan_stack_api_applicationserver_web_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_applicationserver_web_proto_rawDesc = []byte{ + 0x0a, 0x2d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x77, 0x65, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, + 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, + 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcc, 0x01, 0x0a, 0x1d, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x59, 0x0a, 0x0f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, + 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, + 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, + 0x2c, 0x7d, 0x24, 0x52, 0x09, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x3a, 0x08, + 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x7b, 0x0a, 0x25, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x12, 0x48, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, + 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, + 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, + 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x84, 0x02, 0x0a, 0x1f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x37, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, + 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, + 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x14, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x29, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x18, 0x64, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0xa1, 0x0e, 0x0a, + 0x1a, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x51, 0x0a, 0x03, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x1b, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x18, 0x14, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, + 0x01, 0x01, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x08, 0x69, + 0x6e, 0x66, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x07, 0x69, 0x6e, 0x66, 0x6f, 0x55, 0x72, 0x6c, + 0x12, 0x35, 0x0a, 0x11, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x10, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, + 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, + 0x88, 0x01, 0x01, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x68, 0x0a, 0x07, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x15, 0xfa, 0x42, 0x12, 0x9a, 0x01, 0x0f, 0x10, 0x32, + 0x22, 0x04, 0x72, 0x02, 0x18, 0x40, 0x2a, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x07, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3f, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x14, 0x32, + 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, + 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x47, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x12, 0x35, 0x0a, 0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x14, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, + 0x6b, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x59, 0x0a, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, + 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x0d, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x5f, 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x6f, 0x72, + 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x52, 0x10, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, + 0x7a, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x6a, 0x6f, + 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x55, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x6b, 0x12, + 0x57, 0x0a, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x63, 0x6b, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x61, 0x63, 0x6b, 0x12, 0x57, 0x0a, 0x0d, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x6e, + 0x74, 0x12, 0x5b, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x5b, + 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, + 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x12, 0x70, 0x0a, 0x1a, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, + 0x75, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x5b, 0x0a, + 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, + 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x12, 0x55, 0x0a, 0x0c, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x1a, 0x3a, 0x0a, 0x0c, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x26, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x22, 0x67, 0x0a, 0x1b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, + 0x48, 0x0a, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x09, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0xaa, 0x04, 0x0a, 0x18, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x5f, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x48, 0x00, 0x52, 0x07, + 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x65, 0x0a, 0x09, 0x75, 0x6e, 0x68, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x79, 0x48, 0x00, 0x52, 0x09, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x1a, 0x26, + 0x0a, 0x1a, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x3a, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x1a, 0x89, 0x02, 0x0a, 0x1c, 0x57, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x6e, + 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, + 0x12, 0x59, 0x0a, 0x16, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, + 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x41, 0x74, 0x12, 0x5b, 0x0a, 0x1b, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, + 0x70, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x18, + 0x6c, 0x61, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, + 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, + 0x10, 0x00, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x42, 0x08, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x8f, 0x0f, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x51, 0x0a, + 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, + 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, + 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x62, 0x61, + 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x12, + 0x60, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x15, 0xfa, 0x42, 0x12, 0x9a, 0x01, 0x0f, 0x10, 0x32, 0x22, 0x04, 0x72, 0x02, 0x18, + 0x40, 0x2a, 0x05, 0x72, 0x03, 0x18, 0x80, 0x20, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x12, 0x3f, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x14, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x12, 0x58, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, + 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x12, 0x5f, 0x0a, 0x0f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, + 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x32, 0x0a, + 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, + 0x01, 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x70, 0x69, 0x4b, 0x65, + 0x79, 0x12, 0x51, 0x0a, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x57, 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, + 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x75, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x4b, 0x0a, + 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, + 0x6a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x4d, 0x0a, 0x0c, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x6b, 0x12, 0x4f, 0x0a, 0x0d, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x61, 0x63, 0x6b, 0x12, 0x4f, 0x0a, 0x0d, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x12, 0x53, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, + 0x75, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x64, 0x12, 0x68, 0x0a, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, + 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x53, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, + 0x6c, 0x76, 0x65, 0x64, 0x12, 0x4d, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x1a, 0x3a, 0x0a, + 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x30, 0x0a, 0x07, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x3a, 0x08, + 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x55, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, + 0x3e, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x08, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x22, + 0xa9, 0x01, 0x0a, 0x19, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x50, 0x0a, + 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x1a, + 0x3a, 0x0a, 0x0c, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa4, 0x01, 0x0a, 0x1c, + 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x03, + 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x22, 0xb6, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, + 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xa1, 0x01, 0x0a, 0x1c, + 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x07, + 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x77, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, + 0xb4, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x63, 0x0a, 0x26, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x32, 0x8f, 0x09, 0x0a, 0x1a, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x6c, 0x0a, 0x0a, 0x47, 0x65, + 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x22, 0x1b, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x2d, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x29, 0x12, 0x27, 0x2f, 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2d, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x93, 0x01, 0x0a, 0x0d, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x36, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x61, 0x73, 0x2f, + 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x4a, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x44, 0x12, 0x42, 0x2f, 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x77, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x92, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, + 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xf8, 0x01, 0x0a, + 0x03, 0x53, 0x65, 0x74, 0x12, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x9e, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x97, 0x01, + 0x1a, 0x52, 0x2f, 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, + 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x77, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x3e, 0x22, 0x39, 0x2f, 0x61, 0x73, 0x2f, 0x77, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x93, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x3c, 0x2a, 0x3a, 0x2f, 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, + 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x7b, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x42, 0x35, 0x5a, + 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, + 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_applicationserver_web_proto_rawDescOnce sync.Once + file_lorawan_stack_api_applicationserver_web_proto_rawDescData = file_lorawan_stack_api_applicationserver_web_proto_rawDesc +) + +func file_lorawan_stack_api_applicationserver_web_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_applicationserver_web_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_applicationserver_web_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_applicationserver_web_proto_rawDescData) + }) + return file_lorawan_stack_api_applicationserver_web_proto_rawDescData +} + +var file_lorawan_stack_api_applicationserver_web_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_lorawan_stack_api_applicationserver_web_proto_goTypes = []interface{}{ + (*ApplicationWebhookIdentifiers)(nil), // 0: ttn.lorawan.v3.ApplicationWebhookIdentifiers + (*ApplicationWebhookTemplateIdentifiers)(nil), // 1: ttn.lorawan.v3.ApplicationWebhookTemplateIdentifiers + (*ApplicationWebhookTemplateField)(nil), // 2: ttn.lorawan.v3.ApplicationWebhookTemplateField + (*ApplicationWebhookTemplate)(nil), // 3: ttn.lorawan.v3.ApplicationWebhookTemplate + (*ApplicationWebhookTemplates)(nil), // 4: ttn.lorawan.v3.ApplicationWebhookTemplates + (*ApplicationWebhookHealth)(nil), // 5: ttn.lorawan.v3.ApplicationWebhookHealth + (*ApplicationWebhook)(nil), // 6: ttn.lorawan.v3.ApplicationWebhook + (*ApplicationWebhooks)(nil), // 7: ttn.lorawan.v3.ApplicationWebhooks + (*ApplicationWebhookFormats)(nil), // 8: ttn.lorawan.v3.ApplicationWebhookFormats + (*GetApplicationWebhookRequest)(nil), // 9: ttn.lorawan.v3.GetApplicationWebhookRequest + (*ListApplicationWebhooksRequest)(nil), // 10: ttn.lorawan.v3.ListApplicationWebhooksRequest + (*SetApplicationWebhookRequest)(nil), // 11: ttn.lorawan.v3.SetApplicationWebhookRequest + (*GetApplicationWebhookTemplateRequest)(nil), // 12: ttn.lorawan.v3.GetApplicationWebhookTemplateRequest + (*ListApplicationWebhookTemplatesRequest)(nil), // 13: ttn.lorawan.v3.ListApplicationWebhookTemplatesRequest + nil, // 14: ttn.lorawan.v3.ApplicationWebhookTemplate.HeadersEntry + (*ApplicationWebhookTemplate_Message)(nil), // 15: ttn.lorawan.v3.ApplicationWebhookTemplate.Message + (*ApplicationWebhookHealth_WebhookHealthStatusHealthy)(nil), // 16: ttn.lorawan.v3.ApplicationWebhookHealth.WebhookHealthStatusHealthy + (*ApplicationWebhookHealth_WebhookHealthStatusUnhealthy)(nil), // 17: ttn.lorawan.v3.ApplicationWebhookHealth.WebhookHealthStatusUnhealthy + nil, // 18: ttn.lorawan.v3.ApplicationWebhook.HeadersEntry + nil, // 19: ttn.lorawan.v3.ApplicationWebhook.TemplateFieldsEntry + (*ApplicationWebhook_Message)(nil), // 20: ttn.lorawan.v3.ApplicationWebhook.Message + nil, // 21: ttn.lorawan.v3.ApplicationWebhookFormats.FormatsEntry + (*ApplicationIdentifiers)(nil), // 22: ttn.lorawan.v3.ApplicationIdentifiers + (*fieldmaskpb.FieldMask)(nil), // 23: google.protobuf.FieldMask + (*timestamppb.Timestamp)(nil), // 24: google.protobuf.Timestamp + (*ErrorDetails)(nil), // 25: ttn.lorawan.v3.ErrorDetails + (*emptypb.Empty)(nil), // 26: google.protobuf.Empty +} +var file_lorawan_stack_api_applicationserver_web_proto_depIdxs = []int32{ + 22, // 0: ttn.lorawan.v3.ApplicationWebhookIdentifiers.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 1, // 1: ttn.lorawan.v3.ApplicationWebhookTemplate.ids:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplateIdentifiers + 14, // 2: ttn.lorawan.v3.ApplicationWebhookTemplate.headers:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplate.HeadersEntry + 2, // 3: ttn.lorawan.v3.ApplicationWebhookTemplate.fields:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplateField + 15, // 4: ttn.lorawan.v3.ApplicationWebhookTemplate.uplink_message:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplate.Message + 15, // 5: ttn.lorawan.v3.ApplicationWebhookTemplate.uplink_normalized:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplate.Message + 15, // 6: ttn.lorawan.v3.ApplicationWebhookTemplate.join_accept:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplate.Message + 15, // 7: ttn.lorawan.v3.ApplicationWebhookTemplate.downlink_ack:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplate.Message + 15, // 8: ttn.lorawan.v3.ApplicationWebhookTemplate.downlink_nack:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplate.Message + 15, // 9: ttn.lorawan.v3.ApplicationWebhookTemplate.downlink_sent:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplate.Message + 15, // 10: ttn.lorawan.v3.ApplicationWebhookTemplate.downlink_failed:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplate.Message + 15, // 11: ttn.lorawan.v3.ApplicationWebhookTemplate.downlink_queued:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplate.Message + 15, // 12: ttn.lorawan.v3.ApplicationWebhookTemplate.downlink_queue_invalidated:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplate.Message + 15, // 13: ttn.lorawan.v3.ApplicationWebhookTemplate.location_solved:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplate.Message + 15, // 14: ttn.lorawan.v3.ApplicationWebhookTemplate.service_data:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplate.Message + 23, // 15: ttn.lorawan.v3.ApplicationWebhookTemplate.field_mask:type_name -> google.protobuf.FieldMask + 3, // 16: ttn.lorawan.v3.ApplicationWebhookTemplates.templates:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplate + 16, // 17: ttn.lorawan.v3.ApplicationWebhookHealth.healthy:type_name -> ttn.lorawan.v3.ApplicationWebhookHealth.WebhookHealthStatusHealthy + 17, // 18: ttn.lorawan.v3.ApplicationWebhookHealth.unhealthy:type_name -> ttn.lorawan.v3.ApplicationWebhookHealth.WebhookHealthStatusUnhealthy + 0, // 19: ttn.lorawan.v3.ApplicationWebhook.ids:type_name -> ttn.lorawan.v3.ApplicationWebhookIdentifiers + 24, // 20: ttn.lorawan.v3.ApplicationWebhook.created_at:type_name -> google.protobuf.Timestamp + 24, // 21: ttn.lorawan.v3.ApplicationWebhook.updated_at:type_name -> google.protobuf.Timestamp + 18, // 22: ttn.lorawan.v3.ApplicationWebhook.headers:type_name -> ttn.lorawan.v3.ApplicationWebhook.HeadersEntry + 1, // 23: ttn.lorawan.v3.ApplicationWebhook.template_ids:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplateIdentifiers + 19, // 24: ttn.lorawan.v3.ApplicationWebhook.template_fields:type_name -> ttn.lorawan.v3.ApplicationWebhook.TemplateFieldsEntry + 20, // 25: ttn.lorawan.v3.ApplicationWebhook.uplink_message:type_name -> ttn.lorawan.v3.ApplicationWebhook.Message + 20, // 26: ttn.lorawan.v3.ApplicationWebhook.uplink_normalized:type_name -> ttn.lorawan.v3.ApplicationWebhook.Message + 20, // 27: ttn.lorawan.v3.ApplicationWebhook.join_accept:type_name -> ttn.lorawan.v3.ApplicationWebhook.Message + 20, // 28: ttn.lorawan.v3.ApplicationWebhook.downlink_ack:type_name -> ttn.lorawan.v3.ApplicationWebhook.Message + 20, // 29: ttn.lorawan.v3.ApplicationWebhook.downlink_nack:type_name -> ttn.lorawan.v3.ApplicationWebhook.Message + 20, // 30: ttn.lorawan.v3.ApplicationWebhook.downlink_sent:type_name -> ttn.lorawan.v3.ApplicationWebhook.Message + 20, // 31: ttn.lorawan.v3.ApplicationWebhook.downlink_failed:type_name -> ttn.lorawan.v3.ApplicationWebhook.Message + 20, // 32: ttn.lorawan.v3.ApplicationWebhook.downlink_queued:type_name -> ttn.lorawan.v3.ApplicationWebhook.Message + 20, // 33: ttn.lorawan.v3.ApplicationWebhook.downlink_queue_invalidated:type_name -> ttn.lorawan.v3.ApplicationWebhook.Message + 20, // 34: ttn.lorawan.v3.ApplicationWebhook.location_solved:type_name -> ttn.lorawan.v3.ApplicationWebhook.Message + 20, // 35: ttn.lorawan.v3.ApplicationWebhook.service_data:type_name -> ttn.lorawan.v3.ApplicationWebhook.Message + 5, // 36: ttn.lorawan.v3.ApplicationWebhook.health_status:type_name -> ttn.lorawan.v3.ApplicationWebhookHealth + 23, // 37: ttn.lorawan.v3.ApplicationWebhook.field_mask:type_name -> google.protobuf.FieldMask + 6, // 38: ttn.lorawan.v3.ApplicationWebhooks.webhooks:type_name -> ttn.lorawan.v3.ApplicationWebhook + 21, // 39: ttn.lorawan.v3.ApplicationWebhookFormats.formats:type_name -> ttn.lorawan.v3.ApplicationWebhookFormats.FormatsEntry + 0, // 40: ttn.lorawan.v3.GetApplicationWebhookRequest.ids:type_name -> ttn.lorawan.v3.ApplicationWebhookIdentifiers + 23, // 41: ttn.lorawan.v3.GetApplicationWebhookRequest.field_mask:type_name -> google.protobuf.FieldMask + 22, // 42: ttn.lorawan.v3.ListApplicationWebhooksRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 23, // 43: ttn.lorawan.v3.ListApplicationWebhooksRequest.field_mask:type_name -> google.protobuf.FieldMask + 6, // 44: ttn.lorawan.v3.SetApplicationWebhookRequest.webhook:type_name -> ttn.lorawan.v3.ApplicationWebhook + 23, // 45: ttn.lorawan.v3.SetApplicationWebhookRequest.field_mask:type_name -> google.protobuf.FieldMask + 1, // 46: ttn.lorawan.v3.GetApplicationWebhookTemplateRequest.ids:type_name -> ttn.lorawan.v3.ApplicationWebhookTemplateIdentifiers + 23, // 47: ttn.lorawan.v3.GetApplicationWebhookTemplateRequest.field_mask:type_name -> google.protobuf.FieldMask + 23, // 48: ttn.lorawan.v3.ListApplicationWebhookTemplatesRequest.field_mask:type_name -> google.protobuf.FieldMask + 24, // 49: ttn.lorawan.v3.ApplicationWebhookHealth.WebhookHealthStatusUnhealthy.last_failed_attempt_at:type_name -> google.protobuf.Timestamp + 25, // 50: ttn.lorawan.v3.ApplicationWebhookHealth.WebhookHealthStatusUnhealthy.last_failed_attempt_details:type_name -> ttn.lorawan.v3.ErrorDetails + 26, // 51: ttn.lorawan.v3.ApplicationWebhookRegistry.GetFormats:input_type -> google.protobuf.Empty + 12, // 52: ttn.lorawan.v3.ApplicationWebhookRegistry.GetTemplate:input_type -> ttn.lorawan.v3.GetApplicationWebhookTemplateRequest + 13, // 53: ttn.lorawan.v3.ApplicationWebhookRegistry.ListTemplates:input_type -> ttn.lorawan.v3.ListApplicationWebhookTemplatesRequest + 9, // 54: ttn.lorawan.v3.ApplicationWebhookRegistry.Get:input_type -> ttn.lorawan.v3.GetApplicationWebhookRequest + 10, // 55: ttn.lorawan.v3.ApplicationWebhookRegistry.List:input_type -> ttn.lorawan.v3.ListApplicationWebhooksRequest + 11, // 56: ttn.lorawan.v3.ApplicationWebhookRegistry.Set:input_type -> ttn.lorawan.v3.SetApplicationWebhookRequest + 0, // 57: ttn.lorawan.v3.ApplicationWebhookRegistry.Delete:input_type -> ttn.lorawan.v3.ApplicationWebhookIdentifiers + 8, // 58: ttn.lorawan.v3.ApplicationWebhookRegistry.GetFormats:output_type -> ttn.lorawan.v3.ApplicationWebhookFormats + 3, // 59: ttn.lorawan.v3.ApplicationWebhookRegistry.GetTemplate:output_type -> ttn.lorawan.v3.ApplicationWebhookTemplate + 4, // 60: ttn.lorawan.v3.ApplicationWebhookRegistry.ListTemplates:output_type -> ttn.lorawan.v3.ApplicationWebhookTemplates + 6, // 61: ttn.lorawan.v3.ApplicationWebhookRegistry.Get:output_type -> ttn.lorawan.v3.ApplicationWebhook + 7, // 62: ttn.lorawan.v3.ApplicationWebhookRegistry.List:output_type -> ttn.lorawan.v3.ApplicationWebhooks + 6, // 63: ttn.lorawan.v3.ApplicationWebhookRegistry.Set:output_type -> ttn.lorawan.v3.ApplicationWebhook + 26, // 64: ttn.lorawan.v3.ApplicationWebhookRegistry.Delete:output_type -> google.protobuf.Empty + 58, // [58:65] is the sub-list for method output_type + 51, // [51:58] is the sub-list for method input_type + 51, // [51:51] is the sub-list for extension type_name + 51, // [51:51] is the sub-list for extension extendee + 0, // [0:51] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_applicationserver_web_proto_init() } +func file_lorawan_stack_api_applicationserver_web_proto_init() { + if File_lorawan_stack_api_applicationserver_web_proto != nil { + return + } + file_lorawan_stack_api_error_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationWebhookIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationWebhookTemplateIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationWebhookTemplateField); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationWebhookTemplate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationWebhookTemplates); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationWebhookHealth); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationWebhook); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationWebhooks); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationWebhookFormats); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetApplicationWebhookRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListApplicationWebhooksRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetApplicationWebhookRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetApplicationWebhookTemplateRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListApplicationWebhookTemplatesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationWebhookTemplate_Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationWebhookHealth_WebhookHealthStatusHealthy); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationWebhookHealth_WebhookHealthStatusUnhealthy); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationWebhook_Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_lorawan_stack_api_applicationserver_web_proto_msgTypes[5].OneofWrappers = []interface{}{ + (*ApplicationWebhookHealth_Healthy)(nil), + (*ApplicationWebhookHealth_Unhealthy)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_applicationserver_web_proto_rawDesc, + NumEnums: 0, + NumMessages: 22, + NumExtensions: 0, + NumServices: 1, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/applicationserver_web.proto", + GoTypes: file_lorawan_stack_api_applicationserver_web_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_applicationserver_web_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_applicationserver_web_proto_msgTypes, + }.Build() + File_lorawan_stack_api_applicationserver_web_proto = out.File + file_lorawan_stack_api_applicationserver_web_proto_rawDesc = nil + file_lorawan_stack_api_applicationserver_web_proto_goTypes = nil + file_lorawan_stack_api_applicationserver_web_proto_depIdxs = nil } diff --git a/pkg/ttnpb/applicationserver_web.pb.gw.go b/pkg/ttnpb/applicationserver_web.pb.gw.go index 3bd2d14518..d229ace19b 100644 --- a/pkg/ttnpb/applicationserver_web.pb.gw.go +++ b/pkg/ttnpb/applicationserver_web.pb.gw.go @@ -13,16 +13,15 @@ import ( "io" "net/http" - "github.com/gogo/protobuf/types" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/emptypb" ) // Suppress "imported and not used" errors @@ -31,11 +30,10 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join func request_ApplicationWebhookRegistry_GetFormats_0(ctx context.Context, marshaler runtime.Marshaler, client ApplicationWebhookRegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := client.GetFormats(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -44,7 +42,7 @@ func request_ApplicationWebhookRegistry_GetFormats_0(ctx context.Context, marsha } func local_request_ApplicationWebhookRegistry_GetFormats_0(ctx context.Context, marshaler runtime.Marshaler, server ApplicationWebhookRegistryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := server.GetFormats(ctx, &protoReq) @@ -73,7 +71,6 @@ func request_ApplicationWebhookRegistry_GetTemplate_0(ctx context.Context, marsh } err = runtime.PopulateFieldFromPath(&protoReq, "ids.template_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.template_id", err) } @@ -107,7 +104,6 @@ func local_request_ApplicationWebhookRegistry_GetTemplate_0(ctx context.Context, } err = runtime.PopulateFieldFromPath(&protoReq, "ids.template_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.template_id", err) } @@ -181,7 +177,6 @@ func request_ApplicationWebhookRegistry_Get_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.application_ids.application_id", err) } @@ -192,7 +187,6 @@ func request_ApplicationWebhookRegistry_Get_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "ids.webhook_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.webhook_id", err) } @@ -226,7 +220,6 @@ func local_request_ApplicationWebhookRegistry_Get_0(ctx context.Context, marshal } err = runtime.PopulateFieldFromPath(&protoReq, "ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.application_ids.application_id", err) } @@ -237,7 +230,6 @@ func local_request_ApplicationWebhookRegistry_Get_0(ctx context.Context, marshal } err = runtime.PopulateFieldFromPath(&protoReq, "ids.webhook_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ids.webhook_id", err) } @@ -275,7 +267,6 @@ func request_ApplicationWebhookRegistry_List_0(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -309,7 +300,6 @@ func local_request_ApplicationWebhookRegistry_List_0(ctx context.Context, marsha } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -351,7 +341,6 @@ func request_ApplicationWebhookRegistry_Set_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "webhook.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "webhook.ids.application_ids.application_id", err) } @@ -362,7 +351,6 @@ func request_ApplicationWebhookRegistry_Set_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "webhook.ids.webhook_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "webhook.ids.webhook_id", err) } @@ -397,7 +385,6 @@ func local_request_ApplicationWebhookRegistry_Set_0(ctx context.Context, marshal } err = runtime.PopulateFieldFromPath(&protoReq, "webhook.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "webhook.ids.application_ids.application_id", err) } @@ -408,7 +395,6 @@ func local_request_ApplicationWebhookRegistry_Set_0(ctx context.Context, marshal } err = runtime.PopulateFieldFromPath(&protoReq, "webhook.ids.webhook_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "webhook.ids.webhook_id", err) } @@ -443,7 +429,6 @@ func request_ApplicationWebhookRegistry_Set_1(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "webhook.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "webhook.ids.application_ids.application_id", err) } @@ -478,7 +463,6 @@ func local_request_ApplicationWebhookRegistry_Set_1(ctx context.Context, marshal } err = runtime.PopulateFieldFromPath(&protoReq, "webhook.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "webhook.ids.application_ids.application_id", err) } @@ -509,7 +493,6 @@ func request_ApplicationWebhookRegistry_Delete_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -520,7 +503,6 @@ func request_ApplicationWebhookRegistry_Delete_0(ctx context.Context, marshaler } protoReq.WebhookId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "webhook_id", err) } @@ -554,7 +536,6 @@ func local_request_ApplicationWebhookRegistry_Delete_0(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -565,7 +546,6 @@ func local_request_ApplicationWebhookRegistry_Delete_0(ctx context.Context, mars } protoReq.WebhookId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "webhook_id", err) } @@ -594,20 +574,22 @@ func RegisterApplicationWebhookRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationWebhookRegistry/GetFormats", runtime.WithHTTPPathPattern("/as/webhook-formats")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationWebhookRegistry_GetFormats_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationWebhookRegistry_GetFormats_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationWebhookRegistry_GetFormats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationWebhookRegistry_GetFormats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -617,20 +599,22 @@ func RegisterApplicationWebhookRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationWebhookRegistry/GetTemplate", runtime.WithHTTPPathPattern("/as/webhook-templates/{ids.template_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationWebhookRegistry_GetTemplate_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationWebhookRegistry_GetTemplate_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationWebhookRegistry_GetTemplate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationWebhookRegistry_GetTemplate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -640,20 +624,22 @@ func RegisterApplicationWebhookRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationWebhookRegistry/ListTemplates", runtime.WithHTTPPathPattern("/as/webhook-templates")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationWebhookRegistry_ListTemplates_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationWebhookRegistry_ListTemplates_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationWebhookRegistry_ListTemplates_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationWebhookRegistry_ListTemplates_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -663,20 +649,22 @@ func RegisterApplicationWebhookRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationWebhookRegistry/Get", runtime.WithHTTPPathPattern("/as/webhooks/{ids.application_ids.application_id}/{ids.webhook_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationWebhookRegistry_Get_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationWebhookRegistry_Get_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationWebhookRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationWebhookRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -686,20 +674,22 @@ func RegisterApplicationWebhookRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationWebhookRegistry/List", runtime.WithHTTPPathPattern("/as/webhooks/{application_ids.application_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationWebhookRegistry_List_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationWebhookRegistry_List_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationWebhookRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationWebhookRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -709,20 +699,22 @@ func RegisterApplicationWebhookRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationWebhookRegistry/Set", runtime.WithHTTPPathPattern("/as/webhooks/{webhook.ids.application_ids.application_id}/{webhook.ids.webhook_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationWebhookRegistry_Set_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationWebhookRegistry_Set_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationWebhookRegistry_Set_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationWebhookRegistry_Set_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -732,20 +724,22 @@ func RegisterApplicationWebhookRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationWebhookRegistry/Set", runtime.WithHTTPPathPattern("/as/webhooks/{webhook.ids.application_ids.application_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationWebhookRegistry_Set_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationWebhookRegistry_Set_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationWebhookRegistry_Set_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationWebhookRegistry_Set_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -755,20 +749,22 @@ func RegisterApplicationWebhookRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationWebhookRegistry/Delete", runtime.WithHTTPPathPattern("/as/webhooks/{application_ids.application_id}/{webhook_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationWebhookRegistry_Delete_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationWebhookRegistry_Delete_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationWebhookRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationWebhookRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -817,19 +813,21 @@ func RegisterApplicationWebhookRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationWebhookRegistry/GetFormats", runtime.WithHTTPPathPattern("/as/webhook-formats")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationWebhookRegistry_GetFormats_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationWebhookRegistry_GetFormats_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationWebhookRegistry_GetFormats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationWebhookRegistry_GetFormats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -837,19 +835,21 @@ func RegisterApplicationWebhookRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationWebhookRegistry/GetTemplate", runtime.WithHTTPPathPattern("/as/webhook-templates/{ids.template_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationWebhookRegistry_GetTemplate_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationWebhookRegistry_GetTemplate_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationWebhookRegistry_GetTemplate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationWebhookRegistry_GetTemplate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -857,19 +857,21 @@ func RegisterApplicationWebhookRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationWebhookRegistry/ListTemplates", runtime.WithHTTPPathPattern("/as/webhook-templates")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationWebhookRegistry_ListTemplates_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationWebhookRegistry_ListTemplates_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationWebhookRegistry_ListTemplates_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationWebhookRegistry_ListTemplates_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -877,19 +879,21 @@ func RegisterApplicationWebhookRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationWebhookRegistry/Get", runtime.WithHTTPPathPattern("/as/webhooks/{ids.application_ids.application_id}/{ids.webhook_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationWebhookRegistry_Get_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationWebhookRegistry_Get_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationWebhookRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationWebhookRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -897,19 +901,21 @@ func RegisterApplicationWebhookRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationWebhookRegistry/List", runtime.WithHTTPPathPattern("/as/webhooks/{application_ids.application_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationWebhookRegistry_List_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationWebhookRegistry_List_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationWebhookRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationWebhookRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -917,19 +923,21 @@ func RegisterApplicationWebhookRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationWebhookRegistry/Set", runtime.WithHTTPPathPattern("/as/webhooks/{webhook.ids.application_ids.application_id}/{webhook.ids.webhook_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationWebhookRegistry_Set_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationWebhookRegistry_Set_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationWebhookRegistry_Set_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationWebhookRegistry_Set_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -937,19 +945,21 @@ func RegisterApplicationWebhookRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationWebhookRegistry/Set", runtime.WithHTTPPathPattern("/as/webhooks/{webhook.ids.application_ids.application_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationWebhookRegistry_Set_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationWebhookRegistry_Set_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationWebhookRegistry_Set_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationWebhookRegistry_Set_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -957,19 +967,21 @@ func RegisterApplicationWebhookRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationWebhookRegistry/Delete", runtime.WithHTTPPathPattern("/as/webhooks/{application_ids.application_id}/{webhook_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationWebhookRegistry_Delete_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationWebhookRegistry_Delete_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationWebhookRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationWebhookRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -977,21 +989,21 @@ func RegisterApplicationWebhookRegistryHandlerClient(ctx context.Context, mux *r } var ( - pattern_ApplicationWebhookRegistry_GetFormats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"as", "webhook-formats"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationWebhookRegistry_GetFormats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"as", "webhook-formats"}, "")) - pattern_ApplicationWebhookRegistry_GetTemplate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"as", "webhook-templates", "ids.template_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationWebhookRegistry_GetTemplate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"as", "webhook-templates", "ids.template_id"}, "")) - pattern_ApplicationWebhookRegistry_ListTemplates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"as", "webhook-templates"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationWebhookRegistry_ListTemplates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"as", "webhook-templates"}, "")) - pattern_ApplicationWebhookRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"as", "webhooks", "ids.application_ids.application_id", "ids.webhook_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationWebhookRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"as", "webhooks", "ids.application_ids.application_id", "ids.webhook_id"}, "")) - pattern_ApplicationWebhookRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"as", "webhooks", "application_ids.application_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationWebhookRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"as", "webhooks", "application_ids.application_id"}, "")) - pattern_ApplicationWebhookRegistry_Set_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"as", "webhooks", "webhook.ids.application_ids.application_id", "webhook.ids.webhook_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationWebhookRegistry_Set_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"as", "webhooks", "webhook.ids.application_ids.application_id", "webhook.ids.webhook_id"}, "")) - pattern_ApplicationWebhookRegistry_Set_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"as", "webhooks", "webhook.ids.application_ids.application_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationWebhookRegistry_Set_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"as", "webhooks", "webhook.ids.application_ids.application_id"}, "")) - pattern_ApplicationWebhookRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"as", "webhooks", "application_ids.application_id", "webhook_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationWebhookRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"as", "webhooks", "application_ids.application_id", "webhook_id"}, "")) ) var ( diff --git a/pkg/ttnpb/applicationserver_web.pb.validate.go b/pkg/ttnpb/applicationserver_web.pb.validate.go index 6d19cb93ce..7de708d799 100644 --- a/pkg/ttnpb/applicationserver_web.pb.validate.go +++ b/pkg/ttnpb/applicationserver_web.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _applicationserver_web_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on ApplicationWebhookIdentifiers with // the rules defined in the proto definition for this message. If any rules // are violated, an error is returned. diff --git a/pkg/ttnpb/applicationserver_web_flags.pb.go b/pkg/ttnpb/applicationserver_web_flags.pb.go index 80336b56e5..8e7dc58de2 100644 --- a/pkg/ttnpb/applicationserver_web_flags.pb.go +++ b/pkg/ttnpb/applicationserver_web_flags.pb.go @@ -1,14 +1,14 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/applicationserver_web.proto package ttnpb import ( flagsplugin "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - gogo "github.com/TheThingsIndustries/protoc-gen-go-flags/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-flags/golang" pflag "github.com/spf13/pflag" ) @@ -590,7 +590,7 @@ func (m *ApplicationWebhook) SetFromFlags(flags *pflag.FlagSet, prefix string) ( if val, changed, err := flagsplugin.GetStringSlice(flags, flagsplugin.Prefix("field_mask", prefix)); err != nil { return nil, err } else if changed { - m.FieldMask = gogo.SetFieldMask(val) + m.FieldMask = golang.SetFieldMask(val) paths = append(paths, flagsplugin.Prefix("field_mask", prefix)) } return paths, nil diff --git a/pkg/ttnpb/applicationserver_web_grpc.pb.go b/pkg/ttnpb/applicationserver_web_grpc.pb.go new file mode 100644 index 0000000000..61fd992738 --- /dev/null +++ b/pkg/ttnpb/applicationserver_web_grpc.pb.go @@ -0,0 +1,323 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/applicationserver_web.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// ApplicationWebhookRegistryClient is the client API for ApplicationWebhookRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ApplicationWebhookRegistryClient interface { + GetFormats(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ApplicationWebhookFormats, error) + GetTemplate(ctx context.Context, in *GetApplicationWebhookTemplateRequest, opts ...grpc.CallOption) (*ApplicationWebhookTemplate, error) + ListTemplates(ctx context.Context, in *ListApplicationWebhookTemplatesRequest, opts ...grpc.CallOption) (*ApplicationWebhookTemplates, error) + Get(ctx context.Context, in *GetApplicationWebhookRequest, opts ...grpc.CallOption) (*ApplicationWebhook, error) + List(ctx context.Context, in *ListApplicationWebhooksRequest, opts ...grpc.CallOption) (*ApplicationWebhooks, error) + Set(ctx context.Context, in *SetApplicationWebhookRequest, opts ...grpc.CallOption) (*ApplicationWebhook, error) + Delete(ctx context.Context, in *ApplicationWebhookIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type applicationWebhookRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewApplicationWebhookRegistryClient(cc grpc.ClientConnInterface) ApplicationWebhookRegistryClient { + return &applicationWebhookRegistryClient{cc} +} + +func (c *applicationWebhookRegistryClient) GetFormats(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ApplicationWebhookFormats, error) { + out := new(ApplicationWebhookFormats) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationWebhookRegistry/GetFormats", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationWebhookRegistryClient) GetTemplate(ctx context.Context, in *GetApplicationWebhookTemplateRequest, opts ...grpc.CallOption) (*ApplicationWebhookTemplate, error) { + out := new(ApplicationWebhookTemplate) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationWebhookRegistry/GetTemplate", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationWebhookRegistryClient) ListTemplates(ctx context.Context, in *ListApplicationWebhookTemplatesRequest, opts ...grpc.CallOption) (*ApplicationWebhookTemplates, error) { + out := new(ApplicationWebhookTemplates) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationWebhookRegistry/ListTemplates", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationWebhookRegistryClient) Get(ctx context.Context, in *GetApplicationWebhookRequest, opts ...grpc.CallOption) (*ApplicationWebhook, error) { + out := new(ApplicationWebhook) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationWebhookRegistry/Get", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationWebhookRegistryClient) List(ctx context.Context, in *ListApplicationWebhooksRequest, opts ...grpc.CallOption) (*ApplicationWebhooks, error) { + out := new(ApplicationWebhooks) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationWebhookRegistry/List", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationWebhookRegistryClient) Set(ctx context.Context, in *SetApplicationWebhookRequest, opts ...grpc.CallOption) (*ApplicationWebhook, error) { + out := new(ApplicationWebhook) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationWebhookRegistry/Set", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationWebhookRegistryClient) Delete(ctx context.Context, in *ApplicationWebhookIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationWebhookRegistry/Delete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ApplicationWebhookRegistryServer is the server API for ApplicationWebhookRegistry service. +// All implementations must embed UnimplementedApplicationWebhookRegistryServer +// for forward compatibility +type ApplicationWebhookRegistryServer interface { + GetFormats(context.Context, *emptypb.Empty) (*ApplicationWebhookFormats, error) + GetTemplate(context.Context, *GetApplicationWebhookTemplateRequest) (*ApplicationWebhookTemplate, error) + ListTemplates(context.Context, *ListApplicationWebhookTemplatesRequest) (*ApplicationWebhookTemplates, error) + Get(context.Context, *GetApplicationWebhookRequest) (*ApplicationWebhook, error) + List(context.Context, *ListApplicationWebhooksRequest) (*ApplicationWebhooks, error) + Set(context.Context, *SetApplicationWebhookRequest) (*ApplicationWebhook, error) + Delete(context.Context, *ApplicationWebhookIdentifiers) (*emptypb.Empty, error) + mustEmbedUnimplementedApplicationWebhookRegistryServer() +} + +// UnimplementedApplicationWebhookRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedApplicationWebhookRegistryServer struct { +} + +func (UnimplementedApplicationWebhookRegistryServer) GetFormats(context.Context, *emptypb.Empty) (*ApplicationWebhookFormats, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetFormats not implemented") +} +func (UnimplementedApplicationWebhookRegistryServer) GetTemplate(context.Context, *GetApplicationWebhookTemplateRequest) (*ApplicationWebhookTemplate, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTemplate not implemented") +} +func (UnimplementedApplicationWebhookRegistryServer) ListTemplates(context.Context, *ListApplicationWebhookTemplatesRequest) (*ApplicationWebhookTemplates, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListTemplates not implemented") +} +func (UnimplementedApplicationWebhookRegistryServer) Get(context.Context, *GetApplicationWebhookRequest) (*ApplicationWebhook, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (UnimplementedApplicationWebhookRegistryServer) List(context.Context, *ListApplicationWebhooksRequest) (*ApplicationWebhooks, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedApplicationWebhookRegistryServer) Set(context.Context, *SetApplicationWebhookRequest) (*ApplicationWebhook, error) { + return nil, status.Errorf(codes.Unimplemented, "method Set not implemented") +} +func (UnimplementedApplicationWebhookRegistryServer) Delete(context.Context, *ApplicationWebhookIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedApplicationWebhookRegistryServer) mustEmbedUnimplementedApplicationWebhookRegistryServer() { +} + +// UnsafeApplicationWebhookRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ApplicationWebhookRegistryServer will +// result in compilation errors. +type UnsafeApplicationWebhookRegistryServer interface { + mustEmbedUnimplementedApplicationWebhookRegistryServer() +} + +func RegisterApplicationWebhookRegistryServer(s grpc.ServiceRegistrar, srv ApplicationWebhookRegistryServer) { + s.RegisterService(&ApplicationWebhookRegistry_ServiceDesc, srv) +} + +func _ApplicationWebhookRegistry_GetFormats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationWebhookRegistryServer).GetFormats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationWebhookRegistry/GetFormats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationWebhookRegistryServer).GetFormats(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationWebhookRegistry_GetTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetApplicationWebhookTemplateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationWebhookRegistryServer).GetTemplate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationWebhookRegistry/GetTemplate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationWebhookRegistryServer).GetTemplate(ctx, req.(*GetApplicationWebhookTemplateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationWebhookRegistry_ListTemplates_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListApplicationWebhookTemplatesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationWebhookRegistryServer).ListTemplates(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationWebhookRegistry/ListTemplates", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationWebhookRegistryServer).ListTemplates(ctx, req.(*ListApplicationWebhookTemplatesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationWebhookRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetApplicationWebhookRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationWebhookRegistryServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationWebhookRegistry/Get", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationWebhookRegistryServer).Get(ctx, req.(*GetApplicationWebhookRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationWebhookRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListApplicationWebhooksRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationWebhookRegistryServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationWebhookRegistry/List", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationWebhookRegistryServer).List(ctx, req.(*ListApplicationWebhooksRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationWebhookRegistry_Set_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetApplicationWebhookRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationWebhookRegistryServer).Set(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationWebhookRegistry/Set", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationWebhookRegistryServer).Set(ctx, req.(*SetApplicationWebhookRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationWebhookRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApplicationWebhookIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationWebhookRegistryServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationWebhookRegistry/Delete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationWebhookRegistryServer).Delete(ctx, req.(*ApplicationWebhookIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// ApplicationWebhookRegistry_ServiceDesc is the grpc.ServiceDesc for ApplicationWebhookRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ApplicationWebhookRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.ApplicationWebhookRegistry", + HandlerType: (*ApplicationWebhookRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetFormats", + Handler: _ApplicationWebhookRegistry_GetFormats_Handler, + }, + { + MethodName: "GetTemplate", + Handler: _ApplicationWebhookRegistry_GetTemplate_Handler, + }, + { + MethodName: "ListTemplates", + Handler: _ApplicationWebhookRegistry_ListTemplates_Handler, + }, + { + MethodName: "Get", + Handler: _ApplicationWebhookRegistry_Get_Handler, + }, + { + MethodName: "List", + Handler: _ApplicationWebhookRegistry_List_Handler, + }, + { + MethodName: "Set", + Handler: _ApplicationWebhookRegistry_Set_Handler, + }, + { + MethodName: "Delete", + Handler: _ApplicationWebhookRegistry_Delete_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/applicationserver_web.proto", +} diff --git a/pkg/ttnpb/applicationserver_web_json.pb.go b/pkg/ttnpb/applicationserver_web_json.pb.go new file mode 100644 index 0000000000..8643533fc9 --- /dev/null +++ b/pkg/ttnpb/applicationserver_web_json.pb.go @@ -0,0 +1,1211 @@ +// Code generated by protoc-gen-go-json. DO NOT EDIT. +// versions: +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 +// source: lorawan-stack/api/applicationserver_web.proto + +package ttnpb + +import ( + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" + jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" +) + +// MarshalProtoJSON marshals the ApplicationWebhookTemplate message to JSON. +func (x *ApplicationWebhookTemplate) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Ids != nil || s.HasField("ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("ids") + // NOTE: ApplicationWebhookTemplateIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.Ids) + } + if x.Name != "" || s.HasField("name") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("name") + s.WriteString(x.Name) + } + if x.Description != "" || s.HasField("description") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("description") + s.WriteString(x.Description) + } + if x.LogoUrl != "" || s.HasField("logo_url") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("logo_url") + s.WriteString(x.LogoUrl) + } + if x.InfoUrl != "" || s.HasField("info_url") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("info_url") + s.WriteString(x.InfoUrl) + } + if x.DocumentationUrl != "" || s.HasField("documentation_url") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("documentation_url") + s.WriteString(x.DocumentationUrl) + } + if x.BaseUrl != "" || s.HasField("base_url") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("base_url") + s.WriteString(x.BaseUrl) + } + if x.Headers != nil || s.HasField("headers") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("headers") + s.WriteObjectStart() + var wroteElement bool + for k, v := range x.Headers { + s.WriteMoreIf(&wroteElement) + s.WriteObjectStringField(k) + s.WriteString(v) + } + s.WriteObjectEnd() + } + if x.Format != "" || s.HasField("format") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("format") + s.WriteString(x.Format) + } + if len(x.Fields) > 0 || s.HasField("fields") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("fields") + s.WriteArrayStart() + var wroteElement bool + for _, element := range x.Fields { + s.WriteMoreIf(&wroteElement) + // NOTE: ApplicationWebhookTemplateField does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, element) + } + s.WriteArrayEnd() + } + if x.CreateDownlinkApiKey || s.HasField("create_downlink_api_key") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("create_downlink_api_key") + s.WriteBool(x.CreateDownlinkApiKey) + } + if x.UplinkMessage != nil || s.HasField("uplink_message") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("uplink_message") + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.UplinkMessage) + } + if x.UplinkNormalized != nil || s.HasField("uplink_normalized") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("uplink_normalized") + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.UplinkNormalized) + } + if x.JoinAccept != nil || s.HasField("join_accept") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("join_accept") + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.JoinAccept) + } + if x.DownlinkAck != nil || s.HasField("downlink_ack") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("downlink_ack") + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.DownlinkAck) + } + if x.DownlinkNack != nil || s.HasField("downlink_nack") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("downlink_nack") + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.DownlinkNack) + } + if x.DownlinkSent != nil || s.HasField("downlink_sent") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("downlink_sent") + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.DownlinkSent) + } + if x.DownlinkFailed != nil || s.HasField("downlink_failed") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("downlink_failed") + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.DownlinkFailed) + } + if x.DownlinkQueued != nil || s.HasField("downlink_queued") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("downlink_queued") + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.DownlinkQueued) + } + if x.DownlinkQueueInvalidated != nil || s.HasField("downlink_queue_invalidated") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("downlink_queue_invalidated") + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.DownlinkQueueInvalidated) + } + if x.LocationSolved != nil || s.HasField("location_solved") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("location_solved") + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.LocationSolved) + } + if x.ServiceData != nil || s.HasField("service_data") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("service_data") + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.ServiceData) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the ApplicationWebhookTemplate to JSON. +func (x *ApplicationWebhookTemplate) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the ApplicationWebhookTemplate message from JSON. +func (x *ApplicationWebhookTemplate) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "ids": + s.AddField("ids") + if s.ReadNil() { + x.Ids = nil + return + } + // NOTE: ApplicationWebhookTemplateIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookTemplateIdentifiers + golang.UnmarshalMessage(s, &v) + x.Ids = &v + case "name": + s.AddField("name") + x.Name = s.ReadString() + case "description": + s.AddField("description") + x.Description = s.ReadString() + case "logo_url", "logoUrl": + s.AddField("logo_url") + x.LogoUrl = s.ReadString() + case "info_url", "infoUrl": + s.AddField("info_url") + x.InfoUrl = s.ReadString() + case "documentation_url", "documentationUrl": + s.AddField("documentation_url") + x.DocumentationUrl = s.ReadString() + case "base_url", "baseUrl": + s.AddField("base_url") + x.BaseUrl = s.ReadString() + case "headers": + s.AddField("headers") + if s.ReadNil() { + x.Headers = nil + return + } + x.Headers = make(map[string]string) + s.ReadStringMap(func(key string) { + x.Headers[key] = s.ReadString() + }) + case "format": + s.AddField("format") + x.Format = s.ReadString() + case "fields": + s.AddField("fields") + if s.ReadNil() { + x.Fields = nil + return + } + s.ReadArray(func() { + // NOTE: ApplicationWebhookTemplateField does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookTemplateField + golang.UnmarshalMessage(s, &v) + x.Fields = append(x.Fields, &v) + }) + case "create_downlink_api_key", "createDownlinkApiKey": + s.AddField("create_downlink_api_key") + x.CreateDownlinkApiKey = s.ReadBool() + case "uplink_message", "uplinkMessage": + s.AddField("uplink_message") + if s.ReadNil() { + x.UplinkMessage = nil + return + } + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookTemplate_Message + golang.UnmarshalMessage(s, &v) + x.UplinkMessage = &v + case "uplink_normalized", "uplinkNormalized": + s.AddField("uplink_normalized") + if s.ReadNil() { + x.UplinkNormalized = nil + return + } + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookTemplate_Message + golang.UnmarshalMessage(s, &v) + x.UplinkNormalized = &v + case "join_accept", "joinAccept": + s.AddField("join_accept") + if s.ReadNil() { + x.JoinAccept = nil + return + } + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookTemplate_Message + golang.UnmarshalMessage(s, &v) + x.JoinAccept = &v + case "downlink_ack", "downlinkAck": + s.AddField("downlink_ack") + if s.ReadNil() { + x.DownlinkAck = nil + return + } + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookTemplate_Message + golang.UnmarshalMessage(s, &v) + x.DownlinkAck = &v + case "downlink_nack", "downlinkNack": + s.AddField("downlink_nack") + if s.ReadNil() { + x.DownlinkNack = nil + return + } + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookTemplate_Message + golang.UnmarshalMessage(s, &v) + x.DownlinkNack = &v + case "downlink_sent", "downlinkSent": + s.AddField("downlink_sent") + if s.ReadNil() { + x.DownlinkSent = nil + return + } + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookTemplate_Message + golang.UnmarshalMessage(s, &v) + x.DownlinkSent = &v + case "downlink_failed", "downlinkFailed": + s.AddField("downlink_failed") + if s.ReadNil() { + x.DownlinkFailed = nil + return + } + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookTemplate_Message + golang.UnmarshalMessage(s, &v) + x.DownlinkFailed = &v + case "downlink_queued", "downlinkQueued": + s.AddField("downlink_queued") + if s.ReadNil() { + x.DownlinkQueued = nil + return + } + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookTemplate_Message + golang.UnmarshalMessage(s, &v) + x.DownlinkQueued = &v + case "downlink_queue_invalidated", "downlinkQueueInvalidated": + s.AddField("downlink_queue_invalidated") + if s.ReadNil() { + x.DownlinkQueueInvalidated = nil + return + } + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookTemplate_Message + golang.UnmarshalMessage(s, &v) + x.DownlinkQueueInvalidated = &v + case "location_solved", "locationSolved": + s.AddField("location_solved") + if s.ReadNil() { + x.LocationSolved = nil + return + } + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookTemplate_Message + golang.UnmarshalMessage(s, &v) + x.LocationSolved = &v + case "service_data", "serviceData": + s.AddField("service_data") + if s.ReadNil() { + x.ServiceData = nil + return + } + // NOTE: ApplicationWebhookTemplate_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookTemplate_Message + golang.UnmarshalMessage(s, &v) + x.ServiceData = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the ApplicationWebhookTemplate from JSON. +func (x *ApplicationWebhookTemplate) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the ApplicationWebhookTemplates message to JSON. +func (x *ApplicationWebhookTemplates) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if len(x.Templates) > 0 || s.HasField("templates") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("templates") + s.WriteArrayStart() + var wroteElement bool + for _, element := range x.Templates { + s.WriteMoreIf(&wroteElement) + element.MarshalProtoJSON(s.WithField("templates")) + } + s.WriteArrayEnd() + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the ApplicationWebhookTemplates to JSON. +func (x *ApplicationWebhookTemplates) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the ApplicationWebhookTemplates message from JSON. +func (x *ApplicationWebhookTemplates) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "templates": + s.AddField("templates") + if s.ReadNil() { + x.Templates = nil + return + } + s.ReadArray(func() { + if s.ReadNil() { + x.Templates = append(x.Templates, nil) + return + } + v := &ApplicationWebhookTemplate{} + v.UnmarshalProtoJSON(s.WithField("templates", false)) + if s.Err() != nil { + return + } + x.Templates = append(x.Templates, v) + }) + } + }) +} + +// UnmarshalJSON unmarshals the ApplicationWebhookTemplates from JSON. +func (x *ApplicationWebhookTemplates) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the ApplicationWebhook message to JSON. +func (x *ApplicationWebhook) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Ids != nil || s.HasField("ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("ids") + // NOTE: ApplicationWebhookIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.Ids) + } + if x.CreatedAt != nil || s.HasField("created_at") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("created_at") + if x.CreatedAt == nil { + s.WriteNil() + } else { + golang.MarshalTimestamp(s, x.CreatedAt) + } + } + if x.UpdatedAt != nil || s.HasField("updated_at") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("updated_at") + if x.UpdatedAt == nil { + s.WriteNil() + } else { + golang.MarshalTimestamp(s, x.UpdatedAt) + } + } + if x.BaseUrl != "" || s.HasField("base_url") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("base_url") + s.WriteString(x.BaseUrl) + } + if x.Headers != nil || s.HasField("headers") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("headers") + s.WriteObjectStart() + var wroteElement bool + for k, v := range x.Headers { + s.WriteMoreIf(&wroteElement) + s.WriteObjectStringField(k) + s.WriteString(v) + } + s.WriteObjectEnd() + } + if x.Format != "" || s.HasField("format") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("format") + s.WriteString(x.Format) + } + if x.TemplateIds != nil || s.HasField("template_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("template_ids") + // NOTE: ApplicationWebhookTemplateIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.TemplateIds) + } + if x.TemplateFields != nil || s.HasField("template_fields") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("template_fields") + s.WriteObjectStart() + var wroteElement bool + for k, v := range x.TemplateFields { + s.WriteMoreIf(&wroteElement) + s.WriteObjectStringField(k) + s.WriteString(v) + } + s.WriteObjectEnd() + } + if x.DownlinkApiKey != "" || s.HasField("downlink_api_key") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("downlink_api_key") + s.WriteString(x.DownlinkApiKey) + } + if x.UplinkMessage != nil || s.HasField("uplink_message") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("uplink_message") + // NOTE: ApplicationWebhook_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.UplinkMessage) + } + if x.UplinkNormalized != nil || s.HasField("uplink_normalized") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("uplink_normalized") + // NOTE: ApplicationWebhook_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.UplinkNormalized) + } + if x.JoinAccept != nil || s.HasField("join_accept") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("join_accept") + // NOTE: ApplicationWebhook_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.JoinAccept) + } + if x.DownlinkAck != nil || s.HasField("downlink_ack") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("downlink_ack") + // NOTE: ApplicationWebhook_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.DownlinkAck) + } + if x.DownlinkNack != nil || s.HasField("downlink_nack") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("downlink_nack") + // NOTE: ApplicationWebhook_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.DownlinkNack) + } + if x.DownlinkSent != nil || s.HasField("downlink_sent") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("downlink_sent") + // NOTE: ApplicationWebhook_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.DownlinkSent) + } + if x.DownlinkFailed != nil || s.HasField("downlink_failed") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("downlink_failed") + // NOTE: ApplicationWebhook_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.DownlinkFailed) + } + if x.DownlinkQueued != nil || s.HasField("downlink_queued") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("downlink_queued") + // NOTE: ApplicationWebhook_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.DownlinkQueued) + } + if x.DownlinkQueueInvalidated != nil || s.HasField("downlink_queue_invalidated") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("downlink_queue_invalidated") + // NOTE: ApplicationWebhook_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.DownlinkQueueInvalidated) + } + if x.LocationSolved != nil || s.HasField("location_solved") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("location_solved") + // NOTE: ApplicationWebhook_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.LocationSolved) + } + if x.ServiceData != nil || s.HasField("service_data") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("service_data") + // NOTE: ApplicationWebhook_Message does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.ServiceData) + } + if x.HealthStatus != nil || s.HasField("health_status") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("health_status") + // NOTE: ApplicationWebhookHealth does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.HealthStatus) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the ApplicationWebhook to JSON. +func (x *ApplicationWebhook) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the ApplicationWebhook message from JSON. +func (x *ApplicationWebhook) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "ids": + s.AddField("ids") + if s.ReadNil() { + x.Ids = nil + return + } + // NOTE: ApplicationWebhookIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookIdentifiers + golang.UnmarshalMessage(s, &v) + x.Ids = &v + case "created_at", "createdAt": + s.AddField("created_at") + if s.ReadNil() { + x.CreatedAt = nil + return + } + v := golang.UnmarshalTimestamp(s) + if s.Err() != nil { + return + } + x.CreatedAt = v + case "updated_at", "updatedAt": + s.AddField("updated_at") + if s.ReadNil() { + x.UpdatedAt = nil + return + } + v := golang.UnmarshalTimestamp(s) + if s.Err() != nil { + return + } + x.UpdatedAt = v + case "base_url", "baseUrl": + s.AddField("base_url") + x.BaseUrl = s.ReadString() + case "headers": + s.AddField("headers") + if s.ReadNil() { + x.Headers = nil + return + } + x.Headers = make(map[string]string) + s.ReadStringMap(func(key string) { + x.Headers[key] = s.ReadString() + }) + case "format": + s.AddField("format") + x.Format = s.ReadString() + case "template_ids", "templateIds": + s.AddField("template_ids") + if s.ReadNil() { + x.TemplateIds = nil + return + } + // NOTE: ApplicationWebhookTemplateIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookTemplateIdentifiers + golang.UnmarshalMessage(s, &v) + x.TemplateIds = &v + case "template_fields", "templateFields": + s.AddField("template_fields") + if s.ReadNil() { + x.TemplateFields = nil + return + } + x.TemplateFields = make(map[string]string) + s.ReadStringMap(func(key string) { + x.TemplateFields[key] = s.ReadString() + }) + case "downlink_api_key", "downlinkApiKey": + s.AddField("downlink_api_key") + x.DownlinkApiKey = s.ReadString() + case "uplink_message", "uplinkMessage": + s.AddField("uplink_message") + if s.ReadNil() { + x.UplinkMessage = nil + return + } + // NOTE: ApplicationWebhook_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhook_Message + golang.UnmarshalMessage(s, &v) + x.UplinkMessage = &v + case "uplink_normalized", "uplinkNormalized": + s.AddField("uplink_normalized") + if s.ReadNil() { + x.UplinkNormalized = nil + return + } + // NOTE: ApplicationWebhook_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhook_Message + golang.UnmarshalMessage(s, &v) + x.UplinkNormalized = &v + case "join_accept", "joinAccept": + s.AddField("join_accept") + if s.ReadNil() { + x.JoinAccept = nil + return + } + // NOTE: ApplicationWebhook_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhook_Message + golang.UnmarshalMessage(s, &v) + x.JoinAccept = &v + case "downlink_ack", "downlinkAck": + s.AddField("downlink_ack") + if s.ReadNil() { + x.DownlinkAck = nil + return + } + // NOTE: ApplicationWebhook_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhook_Message + golang.UnmarshalMessage(s, &v) + x.DownlinkAck = &v + case "downlink_nack", "downlinkNack": + s.AddField("downlink_nack") + if s.ReadNil() { + x.DownlinkNack = nil + return + } + // NOTE: ApplicationWebhook_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhook_Message + golang.UnmarshalMessage(s, &v) + x.DownlinkNack = &v + case "downlink_sent", "downlinkSent": + s.AddField("downlink_sent") + if s.ReadNil() { + x.DownlinkSent = nil + return + } + // NOTE: ApplicationWebhook_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhook_Message + golang.UnmarshalMessage(s, &v) + x.DownlinkSent = &v + case "downlink_failed", "downlinkFailed": + s.AddField("downlink_failed") + if s.ReadNil() { + x.DownlinkFailed = nil + return + } + // NOTE: ApplicationWebhook_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhook_Message + golang.UnmarshalMessage(s, &v) + x.DownlinkFailed = &v + case "downlink_queued", "downlinkQueued": + s.AddField("downlink_queued") + if s.ReadNil() { + x.DownlinkQueued = nil + return + } + // NOTE: ApplicationWebhook_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhook_Message + golang.UnmarshalMessage(s, &v) + x.DownlinkQueued = &v + case "downlink_queue_invalidated", "downlinkQueueInvalidated": + s.AddField("downlink_queue_invalidated") + if s.ReadNil() { + x.DownlinkQueueInvalidated = nil + return + } + // NOTE: ApplicationWebhook_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhook_Message + golang.UnmarshalMessage(s, &v) + x.DownlinkQueueInvalidated = &v + case "location_solved", "locationSolved": + s.AddField("location_solved") + if s.ReadNil() { + x.LocationSolved = nil + return + } + // NOTE: ApplicationWebhook_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhook_Message + golang.UnmarshalMessage(s, &v) + x.LocationSolved = &v + case "service_data", "serviceData": + s.AddField("service_data") + if s.ReadNil() { + x.ServiceData = nil + return + } + // NOTE: ApplicationWebhook_Message does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhook_Message + golang.UnmarshalMessage(s, &v) + x.ServiceData = &v + case "health_status", "healthStatus": + s.AddField("health_status") + if s.ReadNil() { + x.HealthStatus = nil + return + } + // NOTE: ApplicationWebhookHealth does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookHealth + golang.UnmarshalMessage(s, &v) + x.HealthStatus = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the ApplicationWebhook from JSON. +func (x *ApplicationWebhook) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the ApplicationWebhooks message to JSON. +func (x *ApplicationWebhooks) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if len(x.Webhooks) > 0 || s.HasField("webhooks") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("webhooks") + s.WriteArrayStart() + var wroteElement bool + for _, element := range x.Webhooks { + s.WriteMoreIf(&wroteElement) + element.MarshalProtoJSON(s.WithField("webhooks")) + } + s.WriteArrayEnd() + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the ApplicationWebhooks to JSON. +func (x *ApplicationWebhooks) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the ApplicationWebhooks message from JSON. +func (x *ApplicationWebhooks) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "webhooks": + s.AddField("webhooks") + if s.ReadNil() { + x.Webhooks = nil + return + } + s.ReadArray(func() { + if s.ReadNil() { + x.Webhooks = append(x.Webhooks, nil) + return + } + v := &ApplicationWebhook{} + v.UnmarshalProtoJSON(s.WithField("webhooks", false)) + if s.Err() != nil { + return + } + x.Webhooks = append(x.Webhooks, v) + }) + } + }) +} + +// UnmarshalJSON unmarshals the ApplicationWebhooks from JSON. +func (x *ApplicationWebhooks) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the GetApplicationWebhookRequest message to JSON. +func (x *GetApplicationWebhookRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Ids != nil || s.HasField("ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("ids") + // NOTE: ApplicationWebhookIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.Ids) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the GetApplicationWebhookRequest to JSON. +func (x *GetApplicationWebhookRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the GetApplicationWebhookRequest message from JSON. +func (x *GetApplicationWebhookRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "ids": + s.AddField("ids") + if s.ReadNil() { + x.Ids = nil + return + } + // NOTE: ApplicationWebhookIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookIdentifiers + golang.UnmarshalMessage(s, &v) + x.Ids = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the GetApplicationWebhookRequest from JSON. +func (x *GetApplicationWebhookRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the ListApplicationWebhooksRequest message to JSON. +func (x *ListApplicationWebhooksRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.ApplicationIds != nil || s.HasField("application_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("application_ids") + // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.ApplicationIds) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the ListApplicationWebhooksRequest to JSON. +func (x *ListApplicationWebhooksRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the ListApplicationWebhooksRequest message from JSON. +func (x *ListApplicationWebhooksRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "application_ids", "applicationIds": + s.AddField("application_ids") + if s.ReadNil() { + x.ApplicationIds = nil + return + } + // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationIdentifiers + golang.UnmarshalMessage(s, &v) + x.ApplicationIds = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the ListApplicationWebhooksRequest from JSON. +func (x *ListApplicationWebhooksRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the SetApplicationWebhookRequest message to JSON. +func (x *SetApplicationWebhookRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Webhook != nil || s.HasField("webhook") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("webhook") + x.Webhook.MarshalProtoJSON(s.WithField("webhook")) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the SetApplicationWebhookRequest to JSON. +func (x *SetApplicationWebhookRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the SetApplicationWebhookRequest message from JSON. +func (x *SetApplicationWebhookRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "webhook": + s.AddField("webhook") + if s.ReadNil() { + x.Webhook = nil + return + } + x.Webhook = &ApplicationWebhook{} + x.Webhook.UnmarshalProtoJSON(s.WithField("webhook", false)) + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the SetApplicationWebhookRequest from JSON. +func (x *SetApplicationWebhookRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the GetApplicationWebhookTemplateRequest message to JSON. +func (x *GetApplicationWebhookTemplateRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Ids != nil || s.HasField("ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("ids") + // NOTE: ApplicationWebhookTemplateIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.Ids) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the GetApplicationWebhookTemplateRequest to JSON. +func (x *GetApplicationWebhookTemplateRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the GetApplicationWebhookTemplateRequest message from JSON. +func (x *GetApplicationWebhookTemplateRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "ids": + s.AddField("ids") + if s.ReadNil() { + x.Ids = nil + return + } + // NOTE: ApplicationWebhookTemplateIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationWebhookTemplateIdentifiers + golang.UnmarshalMessage(s, &v) + x.Ids = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the GetApplicationWebhookTemplateRequest from JSON. +func (x *GetApplicationWebhookTemplateRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the ListApplicationWebhookTemplatesRequest message to JSON. +func (x *ListApplicationWebhookTemplatesRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the ListApplicationWebhookTemplatesRequest to JSON. +func (x *ListApplicationWebhookTemplatesRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the ListApplicationWebhookTemplatesRequest message from JSON. +func (x *ListApplicationWebhookTemplatesRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the ListApplicationWebhookTemplatesRequest from JSON. +func (x *ListApplicationWebhookTemplatesRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} diff --git a/pkg/ttnpb/client.pb.go b/pkg/ttnpb/client.pb.go index 56b822a9b2..9c9b77a9bd 100644 --- a/pkg/ttnpb/client.pb.go +++ b/pkg/ttnpb/client.pb.go @@ -1,31 +1,44 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/client.proto package ttnpb import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // The OAuth2 flows an OAuth client can use to get an access token. type GrantType int32 @@ -39,36 +52,61 @@ const ( GrantType_GRANT_REFRESH_TOKEN GrantType = 2 ) -var GrantType_name = map[int32]string{ - 0: "GRANT_AUTHORIZATION_CODE", - 1: "GRANT_PASSWORD", - 2: "GRANT_REFRESH_TOKEN", -} +// Enum value maps for GrantType. +var ( + GrantType_name = map[int32]string{ + 0: "GRANT_AUTHORIZATION_CODE", + 1: "GRANT_PASSWORD", + 2: "GRANT_REFRESH_TOKEN", + } + GrantType_value = map[string]int32{ + "GRANT_AUTHORIZATION_CODE": 0, + "GRANT_PASSWORD": 1, + "GRANT_REFRESH_TOKEN": 2, + } +) -var GrantType_value = map[string]int32{ - "GRANT_AUTHORIZATION_CODE": 0, - "GRANT_PASSWORD": 1, - "GRANT_REFRESH_TOKEN": 2, +func (x GrantType) Enum() *GrantType { + p := new(GrantType) + *p = x + return p } func (x GrantType) String() string { - return proto.EnumName(GrantType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GrantType) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_client_proto_enumTypes[0].Descriptor() +} + +func (GrantType) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_client_proto_enumTypes[0] +} + +func (x GrantType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use GrantType.Descriptor instead. func (GrantType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_c5f33a3b812bf10c, []int{0} + return file_lorawan_stack_api_client_proto_rawDescGZIP(), []int{0} } // An OAuth client on the network. type Client struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The identifiers of the OAuth client. These are public and can be seen by any authenticated user in the network. Ids *ClientIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` // When the OAuth client was created. This information is public and can be seen by any authenticated user in the network. - CreatedAt *types.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // When the OAuth client was last updated. This information is public and can be seen by any authenticated user in the network. - UpdatedAt *types.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // When the OAuth client was deleted. This information is public and can be seen by any authenticated user in the network. - DeletedAt *types.Timestamp `protobuf:"bytes,16,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` + DeletedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` // The name of the OAuth client. This information is public and can be seen by any authenticated user in the network. Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` // A description for the OAuth client. This information is public and can be seen by any authenticated user in the network. @@ -78,7 +116,9 @@ type Client struct { // Contact information for this client. Typically used to indicate who to contact with technical/security questions about the application. // This information is public and can be seen by any authenticated user in the network. // This field is deprecated. Use administrative_contact and technical_contact instead. - ContactInfo []*ContactInfo `protobuf:"bytes,7,rep,name=contact_info,json=contactInfo,proto3" json:"contact_info,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Do not use. + ContactInfo []*ContactInfo `protobuf:"bytes,7,rep,name=contact_info,json=contactInfo,proto3" json:"contact_info,omitempty"` AdministrativeContact *OrganizationOrUserIdentifiers `protobuf:"bytes,18,opt,name=administrative_contact,json=administrativeContact,proto3" json:"administrative_contact,omitempty"` TechnicalContact *OrganizationOrUserIdentifiers `protobuf:"bytes,19,opt,name=technical_contact,json=technicalContact,proto3" json:"technical_contact,omitempty"` // The client secret is only visible to collaborators of the client. @@ -118,262 +158,289 @@ type Client struct { // This information is public and can be seen by any authenticated user in the network. // Users that previously authorized this client will have to re-authorize the // client after rights are added to this list. - Rights []Right `protobuf:"varint,14,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Rights []Right `protobuf:"varint,14,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` } -func (m *Client) Reset() { *m = Client{} } -func (m *Client) String() string { return proto.CompactTextString(m) } -func (*Client) ProtoMessage() {} -func (*Client) Descriptor() ([]byte, []int) { - return fileDescriptor_c5f33a3b812bf10c, []int{0} -} -func (m *Client) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Client.Unmarshal(m, b) -} -func (m *Client) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Client.Marshal(b, m, deterministic) -} -func (m *Client) XXX_Merge(src proto.Message) { - xxx_messageInfo_Client.Merge(m, src) +func (x *Client) Reset() { + *x = Client{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_client_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Client) XXX_Size() int { - return xxx_messageInfo_Client.Size(m) + +func (x *Client) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Client) XXX_DiscardUnknown() { - xxx_messageInfo_Client.DiscardUnknown(m) + +func (*Client) ProtoMessage() {} + +func (x *Client) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_client_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Client proto.InternalMessageInfo +// Deprecated: Use Client.ProtoReflect.Descriptor instead. +func (*Client) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_client_proto_rawDescGZIP(), []int{0} +} -func (m *Client) GetIds() *ClientIdentifiers { - if m != nil { - return m.Ids +func (x *Client) GetIds() *ClientIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *Client) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *Client) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *Client) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *Client) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *Client) GetDeletedAt() *types.Timestamp { - if m != nil { - return m.DeletedAt +func (x *Client) GetDeletedAt() *timestamppb.Timestamp { + if x != nil { + return x.DeletedAt } return nil } -func (m *Client) GetName() string { - if m != nil { - return m.Name +func (x *Client) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *Client) GetDescription() string { - if m != nil { - return m.Description +func (x *Client) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Client) GetAttributes() map[string]string { - if m != nil { - return m.Attributes +func (x *Client) GetAttributes() map[string]string { + if x != nil { + return x.Attributes } return nil } // Deprecated: Do not use. -func (m *Client) GetContactInfo() []*ContactInfo { - if m != nil { - return m.ContactInfo +func (x *Client) GetContactInfo() []*ContactInfo { + if x != nil { + return x.ContactInfo } return nil } -func (m *Client) GetAdministrativeContact() *OrganizationOrUserIdentifiers { - if m != nil { - return m.AdministrativeContact +func (x *Client) GetAdministrativeContact() *OrganizationOrUserIdentifiers { + if x != nil { + return x.AdministrativeContact } return nil } -func (m *Client) GetTechnicalContact() *OrganizationOrUserIdentifiers { - if m != nil { - return m.TechnicalContact +func (x *Client) GetTechnicalContact() *OrganizationOrUserIdentifiers { + if x != nil { + return x.TechnicalContact } return nil } -func (m *Client) GetSecret() string { - if m != nil { - return m.Secret +func (x *Client) GetSecret() string { + if x != nil { + return x.Secret } return "" } -func (m *Client) GetRedirectUris() []string { - if m != nil { - return m.RedirectUris +func (x *Client) GetRedirectUris() []string { + if x != nil { + return x.RedirectUris } return nil } -func (m *Client) GetLogoutRedirectUris() []string { - if m != nil { - return m.LogoutRedirectUris +func (x *Client) GetLogoutRedirectUris() []string { + if x != nil { + return x.LogoutRedirectUris } return nil } -func (m *Client) GetState() State { - if m != nil { - return m.State +func (x *Client) GetState() State { + if x != nil { + return x.State } return State_STATE_REQUESTED } -func (m *Client) GetStateDescription() string { - if m != nil { - return m.StateDescription +func (x *Client) GetStateDescription() string { + if x != nil { + return x.StateDescription } return "" } -func (m *Client) GetSkipAuthorization() bool { - if m != nil { - return m.SkipAuthorization +func (x *Client) GetSkipAuthorization() bool { + if x != nil { + return x.SkipAuthorization } return false } -func (m *Client) GetEndorsed() bool { - if m != nil { - return m.Endorsed +func (x *Client) GetEndorsed() bool { + if x != nil { + return x.Endorsed } return false } -func (m *Client) GetGrants() []GrantType { - if m != nil { - return m.Grants +func (x *Client) GetGrants() []GrantType { + if x != nil { + return x.Grants } return nil } -func (m *Client) GetRights() []Right { - if m != nil { - return m.Rights +func (x *Client) GetRights() []Right { + if x != nil { + return x.Rights } return nil } type Clients struct { - Clients []*Client `protobuf:"bytes,1,rep,name=clients,proto3" json:"clients,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Clients) Reset() { *m = Clients{} } -func (m *Clients) String() string { return proto.CompactTextString(m) } -func (*Clients) ProtoMessage() {} -func (*Clients) Descriptor() ([]byte, []int) { - return fileDescriptor_c5f33a3b812bf10c, []int{1} -} -func (m *Clients) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Clients.Unmarshal(m, b) + Clients []*Client `protobuf:"bytes,1,rep,name=clients,proto3" json:"clients,omitempty"` } -func (m *Clients) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Clients.Marshal(b, m, deterministic) -} -func (m *Clients) XXX_Merge(src proto.Message) { - xxx_messageInfo_Clients.Merge(m, src) + +func (x *Clients) Reset() { + *x = Clients{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_client_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Clients) XXX_Size() int { - return xxx_messageInfo_Clients.Size(m) + +func (x *Clients) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Clients) XXX_DiscardUnknown() { - xxx_messageInfo_Clients.DiscardUnknown(m) + +func (*Clients) ProtoMessage() {} + +func (x *Clients) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_client_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Clients proto.InternalMessageInfo +// Deprecated: Use Clients.ProtoReflect.Descriptor instead. +func (*Clients) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_client_proto_rawDescGZIP(), []int{1} +} -func (m *Clients) GetClients() []*Client { - if m != nil { - return m.Clients +func (x *Clients) GetClients() []*Client { + if x != nil { + return x.Clients } return nil } type GetClientRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + ClientIds *ClientIdentifiers `protobuf:"bytes,1,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` // The names of the client fields that should be returned. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *GetClientRequest) Reset() { *m = GetClientRequest{} } -func (m *GetClientRequest) String() string { return proto.CompactTextString(m) } -func (*GetClientRequest) ProtoMessage() {} -func (*GetClientRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c5f33a3b812bf10c, []int{2} -} -func (m *GetClientRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetClientRequest.Unmarshal(m, b) -} -func (m *GetClientRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetClientRequest.Marshal(b, m, deterministic) -} -func (m *GetClientRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetClientRequest.Merge(m, src) +func (x *GetClientRequest) Reset() { + *x = GetClientRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_client_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetClientRequest) XXX_Size() int { - return xxx_messageInfo_GetClientRequest.Size(m) + +func (x *GetClientRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetClientRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetClientRequest.DiscardUnknown(m) + +func (*GetClientRequest) ProtoMessage() {} + +func (x *GetClientRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_client_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetClientRequest proto.InternalMessageInfo +// Deprecated: Use GetClientRequest.ProtoReflect.Descriptor instead. +func (*GetClientRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_client_proto_rawDescGZIP(), []int{2} +} -func (m *GetClientRequest) GetClientIds() *ClientIdentifiers { - if m != nil { - return m.ClientIds +func (x *GetClientRequest) GetClientIds() *ClientIdentifiers { + if x != nil { + return x.ClientIds } return nil } -func (m *GetClientRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *GetClientRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type ListClientsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // By default we list all OAuth clients the caller has rights on. // Set the user or the organization (not both) to instead list the OAuth clients // where the user or organization is collaborator on. Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,1,opt,name=collaborator,proto3" json:"collaborator,omitempty"` // The names of the client fields that should be returned. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. Order string `protobuf:"bytes,3,opt,name=order,proto3" json:"order,omitempty"` @@ -382,173 +449,200 @@ type ListClientsRequest struct { // Page number for pagination. 0 is interpreted as 1. Page uint32 `protobuf:"varint,5,opt,name=page,proto3" json:"page,omitempty"` // Only return recently deleted clients. - Deleted bool `protobuf:"varint,6,opt,name=deleted,proto3" json:"deleted,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Deleted bool `protobuf:"varint,6,opt,name=deleted,proto3" json:"deleted,omitempty"` } -func (m *ListClientsRequest) Reset() { *m = ListClientsRequest{} } -func (m *ListClientsRequest) String() string { return proto.CompactTextString(m) } -func (*ListClientsRequest) ProtoMessage() {} -func (*ListClientsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c5f33a3b812bf10c, []int{3} -} -func (m *ListClientsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListClientsRequest.Unmarshal(m, b) -} -func (m *ListClientsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListClientsRequest.Marshal(b, m, deterministic) -} -func (m *ListClientsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListClientsRequest.Merge(m, src) +func (x *ListClientsRequest) Reset() { + *x = ListClientsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_client_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListClientsRequest) XXX_Size() int { - return xxx_messageInfo_ListClientsRequest.Size(m) + +func (x *ListClientsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListClientsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListClientsRequest.DiscardUnknown(m) + +func (*ListClientsRequest) ProtoMessage() {} + +func (x *ListClientsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_client_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListClientsRequest proto.InternalMessageInfo +// Deprecated: Use ListClientsRequest.ProtoReflect.Descriptor instead. +func (*ListClientsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_client_proto_rawDescGZIP(), []int{3} +} -func (m *ListClientsRequest) GetCollaborator() *OrganizationOrUserIdentifiers { - if m != nil { - return m.Collaborator +func (x *ListClientsRequest) GetCollaborator() *OrganizationOrUserIdentifiers { + if x != nil { + return x.Collaborator } return nil } -func (m *ListClientsRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *ListClientsRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *ListClientsRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListClientsRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *ListClientsRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListClientsRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListClientsRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListClientsRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *ListClientsRequest) GetDeleted() bool { - if m != nil { - return m.Deleted +func (x *ListClientsRequest) GetDeleted() bool { + if x != nil { + return x.Deleted } return false } type CreateClientRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Client *Client `protobuf:"bytes,1,opt,name=client,proto3" json:"client,omitempty"` // Collaborator to grant all rights on the newly created client. - Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` } -func (m *CreateClientRequest) Reset() { *m = CreateClientRequest{} } -func (m *CreateClientRequest) String() string { return proto.CompactTextString(m) } -func (*CreateClientRequest) ProtoMessage() {} -func (*CreateClientRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c5f33a3b812bf10c, []int{4} -} -func (m *CreateClientRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateClientRequest.Unmarshal(m, b) -} -func (m *CreateClientRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateClientRequest.Marshal(b, m, deterministic) -} -func (m *CreateClientRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateClientRequest.Merge(m, src) +func (x *CreateClientRequest) Reset() { + *x = CreateClientRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_client_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateClientRequest) XXX_Size() int { - return xxx_messageInfo_CreateClientRequest.Size(m) + +func (x *CreateClientRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateClientRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateClientRequest.DiscardUnknown(m) + +func (*CreateClientRequest) ProtoMessage() {} + +func (x *CreateClientRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_client_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CreateClientRequest proto.InternalMessageInfo +// Deprecated: Use CreateClientRequest.ProtoReflect.Descriptor instead. +func (*CreateClientRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_client_proto_rawDescGZIP(), []int{4} +} -func (m *CreateClientRequest) GetClient() *Client { - if m != nil { - return m.Client +func (x *CreateClientRequest) GetClient() *Client { + if x != nil { + return x.Client } return nil } -func (m *CreateClientRequest) GetCollaborator() *OrganizationOrUserIdentifiers { - if m != nil { - return m.Collaborator +func (x *CreateClientRequest) GetCollaborator() *OrganizationOrUserIdentifiers { + if x != nil { + return x.Collaborator } return nil } type UpdateClientRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Client *Client `protobuf:"bytes,1,opt,name=client,proto3" json:"client,omitempty"` // The names of the client fields that should be updated. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *UpdateClientRequest) Reset() { *m = UpdateClientRequest{} } -func (m *UpdateClientRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateClientRequest) ProtoMessage() {} -func (*UpdateClientRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c5f33a3b812bf10c, []int{5} -} -func (m *UpdateClientRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateClientRequest.Unmarshal(m, b) -} -func (m *UpdateClientRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateClientRequest.Marshal(b, m, deterministic) -} -func (m *UpdateClientRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateClientRequest.Merge(m, src) +func (x *UpdateClientRequest) Reset() { + *x = UpdateClientRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_client_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UpdateClientRequest) XXX_Size() int { - return xxx_messageInfo_UpdateClientRequest.Size(m) + +func (x *UpdateClientRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UpdateClientRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateClientRequest.DiscardUnknown(m) + +func (*UpdateClientRequest) ProtoMessage() {} + +func (x *UpdateClientRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_client_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UpdateClientRequest proto.InternalMessageInfo +// Deprecated: Use UpdateClientRequest.ProtoReflect.Descriptor instead. +func (*UpdateClientRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_client_proto_rawDescGZIP(), []int{5} +} -func (m *UpdateClientRequest) GetClient() *Client { - if m != nil { - return m.Client +func (x *UpdateClientRequest) GetClient() *Client { + if x != nil { + return x.Client } return nil } -func (m *UpdateClientRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *UpdateClientRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type ListClientCollaboratorsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + ClientIds *ClientIdentifiers `protobuf:"bytes,1,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` // Limit the number of results per page. Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` @@ -556,269 +650,605 @@ type ListClientCollaboratorsRequest struct { Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. - Order string `protobuf:"bytes,4,opt,name=order,proto3" json:"order,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Order string `protobuf:"bytes,4,opt,name=order,proto3" json:"order,omitempty"` } -func (m *ListClientCollaboratorsRequest) Reset() { *m = ListClientCollaboratorsRequest{} } -func (m *ListClientCollaboratorsRequest) String() string { return proto.CompactTextString(m) } -func (*ListClientCollaboratorsRequest) ProtoMessage() {} -func (*ListClientCollaboratorsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c5f33a3b812bf10c, []int{6} -} -func (m *ListClientCollaboratorsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListClientCollaboratorsRequest.Unmarshal(m, b) -} -func (m *ListClientCollaboratorsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListClientCollaboratorsRequest.Marshal(b, m, deterministic) -} -func (m *ListClientCollaboratorsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListClientCollaboratorsRequest.Merge(m, src) +func (x *ListClientCollaboratorsRequest) Reset() { + *x = ListClientCollaboratorsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_client_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListClientCollaboratorsRequest) XXX_Size() int { - return xxx_messageInfo_ListClientCollaboratorsRequest.Size(m) + +func (x *ListClientCollaboratorsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListClientCollaboratorsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListClientCollaboratorsRequest.DiscardUnknown(m) + +func (*ListClientCollaboratorsRequest) ProtoMessage() {} + +func (x *ListClientCollaboratorsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_client_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListClientCollaboratorsRequest proto.InternalMessageInfo +// Deprecated: Use ListClientCollaboratorsRequest.ProtoReflect.Descriptor instead. +func (*ListClientCollaboratorsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_client_proto_rawDescGZIP(), []int{6} +} -func (m *ListClientCollaboratorsRequest) GetClientIds() *ClientIdentifiers { - if m != nil { - return m.ClientIds +func (x *ListClientCollaboratorsRequest) GetClientIds() *ClientIdentifiers { + if x != nil { + return x.ClientIds } return nil } -func (m *ListClientCollaboratorsRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListClientCollaboratorsRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListClientCollaboratorsRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListClientCollaboratorsRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *ListClientCollaboratorsRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListClientCollaboratorsRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } type GetClientCollaboratorRequest struct { - ClientIds *ClientIdentifiers `protobuf:"bytes,1,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` - Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GetClientCollaboratorRequest) Reset() { *m = GetClientCollaboratorRequest{} } -func (m *GetClientCollaboratorRequest) String() string { return proto.CompactTextString(m) } -func (*GetClientCollaboratorRequest) ProtoMessage() {} -func (*GetClientCollaboratorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c5f33a3b812bf10c, []int{7} -} -func (m *GetClientCollaboratorRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetClientCollaboratorRequest.Unmarshal(m, b) + ClientIds *ClientIdentifiers `protobuf:"bytes,1,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` + Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` } -func (m *GetClientCollaboratorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetClientCollaboratorRequest.Marshal(b, m, deterministic) -} -func (m *GetClientCollaboratorRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetClientCollaboratorRequest.Merge(m, src) + +func (x *GetClientCollaboratorRequest) Reset() { + *x = GetClientCollaboratorRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_client_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetClientCollaboratorRequest) XXX_Size() int { - return xxx_messageInfo_GetClientCollaboratorRequest.Size(m) + +func (x *GetClientCollaboratorRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetClientCollaboratorRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetClientCollaboratorRequest.DiscardUnknown(m) + +func (*GetClientCollaboratorRequest) ProtoMessage() {} + +func (x *GetClientCollaboratorRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_client_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetClientCollaboratorRequest proto.InternalMessageInfo +// Deprecated: Use GetClientCollaboratorRequest.ProtoReflect.Descriptor instead. +func (*GetClientCollaboratorRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_client_proto_rawDescGZIP(), []int{7} +} -func (m *GetClientCollaboratorRequest) GetClientIds() *ClientIdentifiers { - if m != nil { - return m.ClientIds +func (x *GetClientCollaboratorRequest) GetClientIds() *ClientIdentifiers { + if x != nil { + return x.ClientIds } return nil } -func (m *GetClientCollaboratorRequest) GetCollaborator() *OrganizationOrUserIdentifiers { - if m != nil { - return m.Collaborator +func (x *GetClientCollaboratorRequest) GetCollaborator() *OrganizationOrUserIdentifiers { + if x != nil { + return x.Collaborator } return nil } type SetClientCollaboratorRequest struct { - ClientIds *ClientIdentifiers `protobuf:"bytes,1,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` - Collaborator *Collaborator `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SetClientCollaboratorRequest) Reset() { *m = SetClientCollaboratorRequest{} } -func (m *SetClientCollaboratorRequest) String() string { return proto.CompactTextString(m) } -func (*SetClientCollaboratorRequest) ProtoMessage() {} -func (*SetClientCollaboratorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c5f33a3b812bf10c, []int{8} -} -func (m *SetClientCollaboratorRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetClientCollaboratorRequest.Unmarshal(m, b) + ClientIds *ClientIdentifiers `protobuf:"bytes,1,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` + Collaborator *Collaborator `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` } -func (m *SetClientCollaboratorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetClientCollaboratorRequest.Marshal(b, m, deterministic) -} -func (m *SetClientCollaboratorRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetClientCollaboratorRequest.Merge(m, src) + +func (x *SetClientCollaboratorRequest) Reset() { + *x = SetClientCollaboratorRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_client_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SetClientCollaboratorRequest) XXX_Size() int { - return xxx_messageInfo_SetClientCollaboratorRequest.Size(m) + +func (x *SetClientCollaboratorRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SetClientCollaboratorRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetClientCollaboratorRequest.DiscardUnknown(m) + +func (*SetClientCollaboratorRequest) ProtoMessage() {} + +func (x *SetClientCollaboratorRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_client_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SetClientCollaboratorRequest proto.InternalMessageInfo +// Deprecated: Use SetClientCollaboratorRequest.ProtoReflect.Descriptor instead. +func (*SetClientCollaboratorRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_client_proto_rawDescGZIP(), []int{8} +} -func (m *SetClientCollaboratorRequest) GetClientIds() *ClientIdentifiers { - if m != nil { - return m.ClientIds +func (x *SetClientCollaboratorRequest) GetClientIds() *ClientIdentifiers { + if x != nil { + return x.ClientIds } return nil } -func (m *SetClientCollaboratorRequest) GetCollaborator() *Collaborator { - if m != nil { - return m.Collaborator +func (x *SetClientCollaboratorRequest) GetCollaborator() *Collaborator { + if x != nil { + return x.Collaborator } return nil } -func init() { - proto.RegisterEnum("ttn.lorawan.v3.GrantType", GrantType_name, GrantType_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.GrantType", GrantType_name, GrantType_value) - proto.RegisterType((*Client)(nil), "ttn.lorawan.v3.Client") - golang_proto.RegisterType((*Client)(nil), "ttn.lorawan.v3.Client") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.Client.AttributesEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.Client.AttributesEntry") - proto.RegisterType((*Clients)(nil), "ttn.lorawan.v3.Clients") - golang_proto.RegisterType((*Clients)(nil), "ttn.lorawan.v3.Clients") - proto.RegisterType((*GetClientRequest)(nil), "ttn.lorawan.v3.GetClientRequest") - golang_proto.RegisterType((*GetClientRequest)(nil), "ttn.lorawan.v3.GetClientRequest") - proto.RegisterType((*ListClientsRequest)(nil), "ttn.lorawan.v3.ListClientsRequest") - golang_proto.RegisterType((*ListClientsRequest)(nil), "ttn.lorawan.v3.ListClientsRequest") - proto.RegisterType((*CreateClientRequest)(nil), "ttn.lorawan.v3.CreateClientRequest") - golang_proto.RegisterType((*CreateClientRequest)(nil), "ttn.lorawan.v3.CreateClientRequest") - proto.RegisterType((*UpdateClientRequest)(nil), "ttn.lorawan.v3.UpdateClientRequest") - golang_proto.RegisterType((*UpdateClientRequest)(nil), "ttn.lorawan.v3.UpdateClientRequest") - proto.RegisterType((*ListClientCollaboratorsRequest)(nil), "ttn.lorawan.v3.ListClientCollaboratorsRequest") - golang_proto.RegisterType((*ListClientCollaboratorsRequest)(nil), "ttn.lorawan.v3.ListClientCollaboratorsRequest") - proto.RegisterType((*GetClientCollaboratorRequest)(nil), "ttn.lorawan.v3.GetClientCollaboratorRequest") - golang_proto.RegisterType((*GetClientCollaboratorRequest)(nil), "ttn.lorawan.v3.GetClientCollaboratorRequest") - proto.RegisterType((*SetClientCollaboratorRequest)(nil), "ttn.lorawan.v3.SetClientCollaboratorRequest") - golang_proto.RegisterType((*SetClientCollaboratorRequest)(nil), "ttn.lorawan.v3.SetClientCollaboratorRequest") -} - -func init() { proto.RegisterFile("lorawan-stack/api/client.proto", fileDescriptor_c5f33a3b812bf10c) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/client.proto", fileDescriptor_c5f33a3b812bf10c) -} - -var fileDescriptor_c5f33a3b812bf10c = []byte{ - // 1323 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcf, 0x6f, 0x1b, 0xc5, - 0x17, 0xcf, 0xd8, 0xb1, 0x1d, 0x4f, 0x7e, 0x6d, 0x26, 0x6d, 0xbf, 0x9b, 0x34, 0xdf, 0xe0, 0x9a, - 0x08, 0x99, 0x88, 0xb5, 0x2b, 0x97, 0x88, 0x36, 0x80, 0x8a, 0x37, 0x49, 0xdb, 0x14, 0xa8, 0xd1, - 0xc4, 0x11, 0x22, 0x55, 0xb1, 0x26, 0xde, 0xf1, 0x7a, 0xb0, 0xbd, 0x6b, 0x66, 0xc6, 0x29, 0x29, - 0xaa, 0x84, 0x38, 0xf6, 0x46, 0x6f, 0xf0, 0x27, 0x54, 0x9c, 0x39, 0x73, 0x83, 0x23, 0x57, 0x2e, - 0x5c, 0xb8, 0x20, 0x8e, 0x3d, 0xfa, 0x84, 0x76, 0x76, 0xd7, 0x5e, 0xff, 0x28, 0x22, 0x2d, 0xe5, - 0xe4, 0x99, 0x79, 0x9f, 0xf7, 0x99, 0xcf, 0xbc, 0x79, 0xef, 0xcd, 0x1a, 0xae, 0xb7, 0x5c, 0x4e, - 0xee, 0x13, 0xc7, 0x10, 0x92, 0xd4, 0x9a, 0x05, 0xd2, 0x61, 0x85, 0x5a, 0x8b, 0x51, 0x47, 0xe6, - 0x3b, 0xdc, 0x95, 0x2e, 0x5a, 0x90, 0xd2, 0xc9, 0x07, 0x98, 0xfc, 0xc9, 0x95, 0xd5, 0x5d, 0x9b, - 0xc9, 0x46, 0xf7, 0x38, 0x5f, 0x73, 0xdb, 0x85, 0x4a, 0x83, 0x56, 0x1a, 0xcc, 0xb1, 0xc5, 0xbe, - 0x63, 0x75, 0x85, 0xe4, 0x8c, 0x8a, 0x82, 0xf2, 0xaa, 0x19, 0x36, 0x75, 0x0c, 0xdb, 0x35, 0xea, - 0x2d, 0x62, 0x8b, 0x02, 0x71, 0x1c, 0x57, 0x12, 0xc9, 0x5c, 0x47, 0xf8, 0xac, 0xab, 0xa5, 0x08, - 0x0b, 0x75, 0x4e, 0xdc, 0xd3, 0x0e, 0x77, 0xbf, 0x38, 0x8d, 0x3a, 0x9f, 0x90, 0x16, 0xb3, 0x88, - 0xa4, 0x85, 0xb1, 0x41, 0x40, 0x61, 0x44, 0x28, 0x6c, 0xd7, 0x76, 0x7d, 0xe7, 0xe3, 0x6e, 0x5d, - 0xcd, 0xd4, 0x44, 0x8d, 0x02, 0xf8, 0xce, 0x99, 0x74, 0x7f, 0x26, 0x5c, 0x67, 0x82, 0xec, 0x8c, - 0xed, 0xba, 0x76, 0x8b, 0x0e, 0xb6, 0xaa, 0x33, 0xda, 0xb2, 0xaa, 0x6d, 0x22, 0x9a, 0x01, 0xe2, - 0x95, 0x51, 0x84, 0x64, 0x6d, 0x2a, 0x24, 0x69, 0x77, 0x02, 0xc0, 0xc6, 0x84, 0x78, 0xbb, 0x8e, - 0x24, 0x35, 0x59, 0x65, 0x4e, 0x3d, 0x54, 0xfb, 0xff, 0x71, 0x14, 0x75, 0xba, 0xed, 0x50, 0xc7, - 0xab, 0xe3, 0x66, 0x66, 0x51, 0x47, 0xb2, 0x3a, 0xa3, 0x3c, 0x04, 0x4d, 0xb8, 0x59, 0xce, 0xec, - 0x86, 0x0c, 0xec, 0xd9, 0x6f, 0x20, 0x4c, 0xee, 0xa8, 0xab, 0x46, 0x7b, 0x30, 0xce, 0x2c, 0xa1, - 0x83, 0x0c, 0xc8, 0xcd, 0x16, 0x2f, 0xe5, 0x87, 0xaf, 0x3c, 0xef, 0x83, 0xf6, 0x07, 0x1b, 0x98, - 0x5a, 0xcf, 0x4c, 0x3c, 0x02, 0x31, 0x0d, 0x3c, 0x7d, 0xb2, 0x32, 0x3d, 0x33, 0x95, 0x03, 0xd8, - 0xf3, 0x47, 0x3b, 0x10, 0xd6, 0x38, 0x25, 0x92, 0x5a, 0x55, 0x22, 0xf5, 0x98, 0x62, 0x5b, 0xcd, - 0xfb, 0x11, 0xc9, 0x87, 0x11, 0xc9, 0x57, 0xc2, 0x88, 0x98, 0x33, 0xbe, 0xbb, 0x36, 0x85, 0xd3, - 0x81, 0x5f, 0x49, 0x7a, 0x24, 0xdd, 0x8e, 0x15, 0x92, 0xc4, 0xcf, 0x42, 0x12, 0xf8, 0xf9, 0x24, - 0x16, 0x6d, 0xd1, 0x80, 0x44, 0xfb, 0x87, 0x24, 0xc0, 0x23, 0x09, 0xfc, 0x4a, 0x12, 0x5d, 0x84, - 0xd3, 0x0e, 0x69, 0x53, 0x7d, 0x3a, 0x03, 0x72, 0x69, 0x33, 0xd5, 0x33, 0xa7, 0x79, 0x4c, 0x2f, - 0x62, 0xb5, 0x88, 0x36, 0xe1, 0xac, 0x45, 0x45, 0x8d, 0xb3, 0x8e, 0x97, 0x20, 0x7a, 0x42, 0x61, - 0x66, 0x7a, 0x66, 0x82, 0xc7, 0xf5, 0x5f, 0x16, 0x71, 0xd4, 0x88, 0x1e, 0x42, 0x48, 0xa4, 0xe4, - 0xec, 0xb8, 0x2b, 0xa9, 0xd0, 0x93, 0x99, 0x78, 0x6e, 0xb6, 0xf8, 0xda, 0xe4, 0x28, 0xe7, 0x4b, - 0x7d, 0xe0, 0x9e, 0x23, 0xf9, 0xa9, 0xb9, 0xd5, 0x33, 0x8b, 0xdf, 0x81, 0x82, 0x06, 0xb3, 0x1b, - 0x3c, 0xab, 0x6f, 0x14, 0xd7, 0x3f, 0xbd, 0x4b, 0x8c, 0x07, 0x97, 0x8d, 0x6b, 0xf7, 0x72, 0xd7, - 0xb7, 0xef, 0x1a, 0xf7, 0xae, 0x87, 0xd3, 0xd7, 0xbf, 0x2c, 0xbe, 0xf1, 0x70, 0x63, 0xd3, 0xdb, - 0xff, 0x67, 0x80, 0x23, 0x1b, 0xa2, 0xdb, 0x70, 0x2e, 0x9a, 0x62, 0x7a, 0x4a, 0x09, 0xb8, 0x38, - 0x26, 0xc0, 0xc7, 0xec, 0x3b, 0x75, 0xd7, 0x84, 0x3d, 0x33, 0xf1, 0x18, 0xc4, 0x34, 0xa8, 0x03, - 0x3c, 0x5b, 0x1b, 0x18, 0x90, 0x05, 0x2f, 0x10, 0xab, 0xcd, 0x1c, 0x26, 0x24, 0x27, 0x92, 0x9d, - 0xd0, 0x6a, 0x60, 0xd5, 0x91, 0x0a, 0xb2, 0x31, 0xca, 0x5a, 0xe6, 0x36, 0x71, 0xd8, 0x03, 0x55, - 0x46, 0x65, 0x7e, 0x28, 0x28, 0x8f, 0x24, 0x12, 0x3e, 0x3f, 0x4c, 0x16, 0x48, 0x40, 0x47, 0x70, - 0x49, 0xd2, 0x5a, 0xc3, 0x61, 0x35, 0xd2, 0xea, 0x6f, 0xb0, 0xfc, 0x3c, 0x1b, 0x68, 0x7d, 0x9e, - 0x90, 0x3b, 0x03, 0x93, 0x82, 0xd6, 0x38, 0x95, 0xfa, 0x4c, 0xf4, 0xce, 0xbe, 0x02, 0x38, 0x58, - 0x47, 0x6f, 0xc2, 0x79, 0x4e, 0x2d, 0xc6, 0x69, 0x4d, 0x56, 0xbb, 0x9c, 0x09, 0x3d, 0x9d, 0x89, - 0xe7, 0xd2, 0xe6, 0x62, 0xcf, 0x9c, 0x7b, 0x0c, 0xd2, 0x1a, 0xcc, 0x06, 0xf8, 0xb9, 0x10, 0x75, - 0xc8, 0x99, 0x40, 0x25, 0x78, 0xae, 0xe5, 0xda, 0x6e, 0x57, 0x56, 0x87, 0x9d, 0x17, 0x27, 0x3b, - 0x23, 0x1f, 0x8c, 0xa3, 0x14, 0x5b, 0x30, 0x21, 0x24, 0x91, 0x54, 0x87, 0x19, 0x90, 0x5b, 0x28, - 0x9e, 0x1f, 0x3d, 0xea, 0x81, 0x67, 0x54, 0x82, 0xbf, 0xf6, 0x8a, 0x0f, 0xfb, 0x68, 0xb4, 0x05, - 0x97, 0xd4, 0xa0, 0x1a, 0x4d, 0xc8, 0xa5, 0x91, 0xc3, 0x69, 0x0a, 0xb2, 0x1b, 0xc9, 0x4a, 0x03, - 0x22, 0xd1, 0x64, 0x9d, 0x2a, 0xe9, 0xca, 0x86, 0xcb, 0x83, 0x08, 0xea, 0xb3, 0x19, 0x90, 0x9b, - 0xc1, 0x4b, 0x9e, 0xa5, 0x14, 0x35, 0xa0, 0x55, 0x38, 0x43, 0x1d, 0xcb, 0xe5, 0x82, 0x5a, 0xfa, - 0x9c, 0x02, 0xf5, 0xe7, 0xe8, 0x3d, 0x98, 0xb4, 0x39, 0x71, 0xa4, 0xd0, 0xe7, 0x33, 0xf1, 0xdc, - 0x42, 0x71, 0x65, 0x54, 0xf9, 0x4d, 0xcf, 0x5a, 0x39, 0xed, 0x50, 0x73, 0xbe, 0x67, 0xc2, 0xc7, - 0x20, 0x95, 0x0d, 0x8e, 0x10, 0xf8, 0xa1, 0x77, 0x60, 0xd2, 0x6f, 0x4e, 0xfa, 0x82, 0x62, 0x18, - 0x3b, 0x3b, 0xf6, 0xac, 0x63, 0xde, 0xbe, 0xcf, 0xea, 0xbb, 0x70, 0x71, 0xa4, 0x6e, 0x90, 0x06, - 0xe3, 0x4d, 0x7a, 0xaa, 0x5a, 0x5a, 0x1a, 0x7b, 0x43, 0x74, 0x0e, 0x26, 0x4e, 0x48, 0xab, 0x4b, - 0x55, 0x63, 0x4a, 0x63, 0x7f, 0xb2, 0x1d, 0xbb, 0x0a, 0xb6, 0xc3, 0xea, 0x07, 0xd9, 0xb7, 0x61, - 0xca, 0xaf, 0x43, 0x81, 0x2e, 0xc3, 0x94, 0xff, 0x10, 0x7a, 0x7d, 0xd1, 0x2b, 0x98, 0x0b, 0x93, - 0x2b, 0x16, 0x87, 0xb0, 0xec, 0xb7, 0x00, 0x6a, 0x37, 0xa9, 0x0c, 0x96, 0xe9, 0xe7, 0x5d, 0x2a, - 0x24, 0xba, 0x0d, 0xa1, 0x6f, 0xaf, 0x9e, 0xa9, 0xc3, 0xce, 0x84, 0x1d, 0x16, 0xa7, 0x6b, 0x81, - 0x51, 0xa0, 0x6b, 0x10, 0x0e, 0x1e, 0x9c, 0x67, 0xf6, 0xd7, 0x1b, 0x1e, 0xe4, 0x43, 0x22, 0x9a, - 0x38, 0x5d, 0x0f, 0x87, 0xd9, 0xdf, 0x62, 0x10, 0x7d, 0xc0, 0x44, 0x20, 0x4e, 0x84, 0xea, 0x3e, - 0xf1, 0x5a, 0x43, 0xab, 0x45, 0x8e, 0x5d, 0x4e, 0xa4, 0xcb, 0x03, 0x7d, 0x67, 0xab, 0x31, 0x33, - 0xf9, 0xf4, 0xc9, 0x4a, 0x2c, 0x07, 0xf0, 0x10, 0xd5, 0x0b, 0x88, 0x45, 0x47, 0x30, 0xe1, 0x72, - 0x8b, 0x72, 0xd5, 0xfd, 0xd3, 0xe6, 0x6e, 0xcf, 0x2c, 0xf1, 0xeb, 0x78, 0x2a, 0x0c, 0x45, 0x95, - 0x59, 0x18, 0x1a, 0x83, 0xb1, 0x6a, 0xc8, 0x38, 0x61, 0xa8, 0x9f, 0xc8, 0x0b, 0x84, 0x67, 0x8d, - 0xc8, 0xc4, 0xa7, 0x44, 0xeb, 0x30, 0xd1, 0x62, 0x6d, 0x26, 0x55, 0x57, 0x9f, 0x57, 0x71, 0xde, - 0x8c, 0xeb, 0x7f, 0xa4, 0xb0, 0xbf, 0x8c, 0x10, 0x9c, 0xee, 0x10, 0x9b, 0xaa, 0x86, 0x3e, 0x8f, - 0xd5, 0x18, 0xe9, 0x30, 0x15, 0xbc, 0x0a, 0x7a, 0x52, 0x65, 0x7e, 0x38, 0xdd, 0x0e, 0x1f, 0x1f, - 0x90, 0xfd, 0x1e, 0xc0, 0xe5, 0x1d, 0xb5, 0xdb, 0xf0, 0xfd, 0x5f, 0x85, 0x49, 0x5f, 0x69, 0x10, - 0xdb, 0x67, 0x64, 0x51, 0xe4, 0xc2, 0x03, 0x3c, 0xba, 0x3b, 0x72, 0x37, 0xb1, 0xe7, 0xb9, 0x9b, - 0x01, 0xed, 0x10, 0x59, 0xf6, 0x11, 0x80, 0xcb, 0x87, 0xea, 0xb9, 0xfc, 0xb7, 0xe4, 0xbe, 0x40, - 0x72, 0xfe, 0x0a, 0xe0, 0xfa, 0x20, 0x39, 0x77, 0x22, 0x3a, 0xc5, 0xcb, 0x28, 0xa3, 0x7e, 0x0a, - 0xc4, 0xfe, 0x3e, 0x05, 0xe2, 0x91, 0x14, 0x78, 0x2b, 0x4c, 0x49, 0xff, 0x63, 0xe0, 0x52, 0xcf, - 0x5c, 0xe7, 0x6b, 0x78, 0x0a, 0xc7, 0x98, 0x85, 0xe3, 0x06, 0xb3, 0x70, 0xca, 0xf0, 0x7b, 0x51, - 0xd8, 0x93, 0x82, 0x7c, 0xcb, 0xfe, 0x04, 0xe0, 0x5a, 0xbf, 0x29, 0x44, 0x8f, 0xf6, 0x32, 0x4e, - 0xf6, 0x52, 0x53, 0xe6, 0x07, 0x00, 0xd7, 0x0e, 0xfe, 0xab, 0x93, 0xdc, 0x9e, 0x78, 0x92, 0xb5, - 0xf1, 0x6f, 0x96, 0x01, 0xe6, 0x59, 0xc2, 0x37, 0x29, 0x4c, 0xf7, 0xdf, 0x1f, 0xb4, 0x06, 0xf5, - 0x9b, 0xb8, 0x74, 0xa7, 0x52, 0x2d, 0x1d, 0x56, 0x6e, 0x95, 0xf1, 0xfe, 0x51, 0xa9, 0xb2, 0x5f, - 0xbe, 0x53, 0xdd, 0x29, 0xef, 0xee, 0x69, 0x53, 0x08, 0xc1, 0x05, 0xdf, 0xfa, 0x51, 0xe9, 0xe0, - 0xe0, 0xe3, 0x32, 0xde, 0xd5, 0x00, 0xfa, 0x1f, 0x5c, 0xf6, 0xd7, 0xf0, 0xde, 0x0d, 0xbc, 0x77, - 0x70, 0xab, 0x5a, 0x29, 0xbf, 0xbf, 0x77, 0x47, 0x8b, 0xad, 0xce, 0xff, 0xf9, 0x64, 0x25, 0xad, - 0x83, 0xcd, 0x84, 0x32, 0x9b, 0x5b, 0x3f, 0xfe, 0xbe, 0x0e, 0x8e, 0x0a, 0xb6, 0x9b, 0x97, 0x0d, - 0x2a, 0xd5, 0xff, 0x8b, 0xbc, 0x43, 0xe5, 0x7d, 0x97, 0x37, 0x0b, 0xc3, 0x9f, 0xe2, 0x27, 0x57, - 0x0a, 0x9d, 0xa6, 0x5d, 0x90, 0xd2, 0xe9, 0x1c, 0x1f, 0x27, 0x55, 0x6d, 0x5c, 0xf9, 0x2b, 0x00, - 0x00, 0xff, 0xff, 0xc8, 0xbe, 0x39, 0x8e, 0x89, 0x0d, 0x00, 0x00, +var File_lorawan_stack_api_client_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_client_proto_rawDesc = []byte{ + 0x0a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, + 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, + 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, + 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, + 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x91, 0x0a, 0x0a, 0x06, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, + 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7d, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, + 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, + 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, + 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, + 0x10, 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x64, 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x15, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x5a, 0x0a, 0x11, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, + 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, + 0x10, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x12, 0x20, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x06, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x12, 0x34, 0x0a, 0x0d, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, + 0x75, 0x72, 0x69, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, + 0x01, 0x09, 0x10, 0x0a, 0x22, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x69, 0x73, 0x12, 0x41, 0x0a, 0x14, 0x6c, 0x6f, 0x67, + 0x6f, 0x75, 0x74, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x69, + 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, 0x01, 0x09, 0x10, + 0x0a, 0x22, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x12, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, + 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x69, 0x73, 0x12, 0x35, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x65, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x6b, + 0x69, 0x70, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x6b, 0x69, 0x70, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, + 0x6f, 0x72, 0x73, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x6e, 0x64, + 0x6f, 0x72, 0x73, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x18, + 0x0d, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x0d, + 0xfa, 0x42, 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x3b, + 0x0a, 0x07, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x07, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x99, 0x01, 0x0a, 0x10, + 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xde, 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, + 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x06, 0xf2, 0xaa, 0x19, 0x02, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x5a, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x44, 0xfa, 0x42, 0x41, 0x72, 0x3f, 0x52, 0x00, 0x52, 0x09, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x52, 0x0a, 0x2d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x3a, 0x08, + 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xac, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x38, 0x0a, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x5b, 0x0a, 0x0c, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x38, 0x0a, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xd9, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xfa, 0x42, 0x1e, 0x72, 0x1c, 0x52, 0x00, 0x52, + 0x02, 0x69, 0x64, 0x52, 0x03, 0x2d, 0x69, 0x64, 0x52, 0x07, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x22, 0xc7, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x5b, 0x0a, + 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xb6, 0x01, 0x0a, 0x1c, 0x53, + 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0a, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x2a, 0x65, 0x0a, 0x09, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1c, 0x0a, 0x18, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, + 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x12, + 0x0a, 0x0e, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, + 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x46, 0x52, + 0x45, 0x53, 0x48, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x02, 0x1a, 0x0d, 0xea, 0xaa, 0x19, + 0x09, 0x18, 0x01, 0x2a, 0x05, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, + 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_client_proto_rawDescOnce sync.Once + file_lorawan_stack_api_client_proto_rawDescData = file_lorawan_stack_api_client_proto_rawDesc +) + +func file_lorawan_stack_api_client_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_client_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_client_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_client_proto_rawDescData) + }) + return file_lorawan_stack_api_client_proto_rawDescData +} + +var file_lorawan_stack_api_client_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_lorawan_stack_api_client_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_lorawan_stack_api_client_proto_goTypes = []interface{}{ + (GrantType)(0), // 0: ttn.lorawan.v3.GrantType + (*Client)(nil), // 1: ttn.lorawan.v3.Client + (*Clients)(nil), // 2: ttn.lorawan.v3.Clients + (*GetClientRequest)(nil), // 3: ttn.lorawan.v3.GetClientRequest + (*ListClientsRequest)(nil), // 4: ttn.lorawan.v3.ListClientsRequest + (*CreateClientRequest)(nil), // 5: ttn.lorawan.v3.CreateClientRequest + (*UpdateClientRequest)(nil), // 6: ttn.lorawan.v3.UpdateClientRequest + (*ListClientCollaboratorsRequest)(nil), // 7: ttn.lorawan.v3.ListClientCollaboratorsRequest + (*GetClientCollaboratorRequest)(nil), // 8: ttn.lorawan.v3.GetClientCollaboratorRequest + (*SetClientCollaboratorRequest)(nil), // 9: ttn.lorawan.v3.SetClientCollaboratorRequest + nil, // 10: ttn.lorawan.v3.Client.AttributesEntry + (*ClientIdentifiers)(nil), // 11: ttn.lorawan.v3.ClientIdentifiers + (*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp + (*ContactInfo)(nil), // 13: ttn.lorawan.v3.ContactInfo + (*OrganizationOrUserIdentifiers)(nil), // 14: ttn.lorawan.v3.OrganizationOrUserIdentifiers + (State)(0), // 15: ttn.lorawan.v3.State + (Right)(0), // 16: ttn.lorawan.v3.Right + (*fieldmaskpb.FieldMask)(nil), // 17: google.protobuf.FieldMask + (*Collaborator)(nil), // 18: ttn.lorawan.v3.Collaborator +} +var file_lorawan_stack_api_client_proto_depIdxs = []int32{ + 11, // 0: ttn.lorawan.v3.Client.ids:type_name -> ttn.lorawan.v3.ClientIdentifiers + 12, // 1: ttn.lorawan.v3.Client.created_at:type_name -> google.protobuf.Timestamp + 12, // 2: ttn.lorawan.v3.Client.updated_at:type_name -> google.protobuf.Timestamp + 12, // 3: ttn.lorawan.v3.Client.deleted_at:type_name -> google.protobuf.Timestamp + 10, // 4: ttn.lorawan.v3.Client.attributes:type_name -> ttn.lorawan.v3.Client.AttributesEntry + 13, // 5: ttn.lorawan.v3.Client.contact_info:type_name -> ttn.lorawan.v3.ContactInfo + 14, // 6: ttn.lorawan.v3.Client.administrative_contact:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 14, // 7: ttn.lorawan.v3.Client.technical_contact:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 15, // 8: ttn.lorawan.v3.Client.state:type_name -> ttn.lorawan.v3.State + 0, // 9: ttn.lorawan.v3.Client.grants:type_name -> ttn.lorawan.v3.GrantType + 16, // 10: ttn.lorawan.v3.Client.rights:type_name -> ttn.lorawan.v3.Right + 1, // 11: ttn.lorawan.v3.Clients.clients:type_name -> ttn.lorawan.v3.Client + 11, // 12: ttn.lorawan.v3.GetClientRequest.client_ids:type_name -> ttn.lorawan.v3.ClientIdentifiers + 17, // 13: ttn.lorawan.v3.GetClientRequest.field_mask:type_name -> google.protobuf.FieldMask + 14, // 14: ttn.lorawan.v3.ListClientsRequest.collaborator:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 17, // 15: ttn.lorawan.v3.ListClientsRequest.field_mask:type_name -> google.protobuf.FieldMask + 1, // 16: ttn.lorawan.v3.CreateClientRequest.client:type_name -> ttn.lorawan.v3.Client + 14, // 17: ttn.lorawan.v3.CreateClientRequest.collaborator:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 1, // 18: ttn.lorawan.v3.UpdateClientRequest.client:type_name -> ttn.lorawan.v3.Client + 17, // 19: ttn.lorawan.v3.UpdateClientRequest.field_mask:type_name -> google.protobuf.FieldMask + 11, // 20: ttn.lorawan.v3.ListClientCollaboratorsRequest.client_ids:type_name -> ttn.lorawan.v3.ClientIdentifiers + 11, // 21: ttn.lorawan.v3.GetClientCollaboratorRequest.client_ids:type_name -> ttn.lorawan.v3.ClientIdentifiers + 14, // 22: ttn.lorawan.v3.GetClientCollaboratorRequest.collaborator:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 11, // 23: ttn.lorawan.v3.SetClientCollaboratorRequest.client_ids:type_name -> ttn.lorawan.v3.ClientIdentifiers + 18, // 24: ttn.lorawan.v3.SetClientCollaboratorRequest.collaborator:type_name -> ttn.lorawan.v3.Collaborator + 25, // [25:25] is the sub-list for method output_type + 25, // [25:25] is the sub-list for method input_type + 25, // [25:25] is the sub-list for extension type_name + 25, // [25:25] is the sub-list for extension extendee + 0, // [0:25] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_client_proto_init() } +func file_lorawan_stack_api_client_proto_init() { + if File_lorawan_stack_api_client_proto != nil { + return + } + file_lorawan_stack_api_contact_info_proto_init() + file_lorawan_stack_api_enums_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_rights_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_client_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Client); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_client_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Clients); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_client_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetClientRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_client_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListClientsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_client_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateClientRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_client_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateClientRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_client_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListClientCollaboratorsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_client_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetClientCollaboratorRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_client_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetClientCollaboratorRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_client_proto_rawDesc, + NumEnums: 1, + NumMessages: 10, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_client_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_client_proto_depIdxs, + EnumInfos: file_lorawan_stack_api_client_proto_enumTypes, + MessageInfos: file_lorawan_stack_api_client_proto_msgTypes, + }.Build() + File_lorawan_stack_api_client_proto = out.File + file_lorawan_stack_api_client_proto_rawDesc = nil + file_lorawan_stack_api_client_proto_goTypes = nil + file_lorawan_stack_api_client_proto_depIdxs = nil } diff --git a/pkg/ttnpb/client.pb.setters.fm.go b/pkg/ttnpb/client.pb.setters.fm.go index 896e7c683e..4daaadb39f 100644 --- a/pkg/ttnpb/client.pb.setters.fm.go +++ b/pkg/ttnpb/client.pb.setters.fm.go @@ -182,8 +182,7 @@ func (dst *Client) SetFields(src *Client, paths ...string) error { if src != nil { dst.State = src.State } else { - var zero State - dst.State = zero + dst.State = 0 } case "state_description": if len(subs) > 0 { diff --git a/pkg/ttnpb/client.pb.validate.go b/pkg/ttnpb/client.pb.validate.go index 4065ba314d..79c970767d 100644 --- a/pkg/ttnpb/client.pb.validate.go +++ b/pkg/ttnpb/client.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _client_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on Client with the rules defined in // the proto definition for this message. If any rules are violated, an error // is returned. diff --git a/pkg/ttnpb/client_flags.pb.go b/pkg/ttnpb/client_flags.pb.go index e1d540876c..9396636689 100644 --- a/pkg/ttnpb/client_flags.pb.go +++ b/pkg/ttnpb/client_flags.pb.go @@ -1,14 +1,14 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/client.proto package ttnpb import ( flagsplugin "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - gogo "github.com/TheThingsIndustries/protoc-gen-go-flags/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-flags/golang" pflag "github.com/spf13/pflag" ) @@ -300,7 +300,7 @@ func (m *ListClientsRequest) SetFromFlags(flags *pflag.FlagSet, prefix string) ( if val, changed, err := flagsplugin.GetStringSlice(flags, flagsplugin.Prefix("field_mask", prefix)); err != nil { return nil, err } else if changed { - m.FieldMask = gogo.SetFieldMask(val) + m.FieldMask = golang.SetFieldMask(val) paths = append(paths, flagsplugin.Prefix("field_mask", prefix)) } if val, changed, err := flagsplugin.GetString(flags, flagsplugin.Prefix("order", prefix)); err != nil { diff --git a/pkg/ttnpb/client_json.pb.go b/pkg/ttnpb/client_json.pb.go index f4e043513a..2d5f63c824 100644 --- a/pkg/ttnpb/client_json.pb.go +++ b/pkg/ttnpb/client_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/client.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" ) @@ -70,7 +70,7 @@ func (x *Client) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("ids") // NOTE: ClientIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Ids) + golang.MarshalMessage(s, x.Ids) } if x.CreatedAt != nil || s.HasField("created_at") { s.WriteMoreIf(&wroteField) @@ -78,7 +78,7 @@ func (x *Client) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.CreatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.CreatedAt) + golang.MarshalTimestamp(s, x.CreatedAt) } } if x.UpdatedAt != nil || s.HasField("updated_at") { @@ -87,7 +87,7 @@ func (x *Client) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.UpdatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.UpdatedAt) + golang.MarshalTimestamp(s, x.UpdatedAt) } } if x.DeletedAt != nil || s.HasField("deleted_at") { @@ -96,7 +96,7 @@ func (x *Client) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.DeletedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.DeletedAt) + golang.MarshalTimestamp(s, x.DeletedAt) } } if x.Name != "" || s.HasField("name") { @@ -136,13 +136,13 @@ func (x *Client) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("administrative_contact") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.AdministrativeContact) + golang.MarshalMessage(s, x.AdministrativeContact) } if x.TechnicalContact != nil || s.HasField("technical_contact") { s.WriteMoreIf(&wroteField) s.WriteObjectField("technical_contact") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.TechnicalContact) + golang.MarshalMessage(s, x.TechnicalContact) } if x.Secret != "" || s.HasField("secret") { s.WriteMoreIf(&wroteField) @@ -226,7 +226,7 @@ func (x *Client) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ClientIdentifiers does not seem to implement UnmarshalProtoJSON. var v ClientIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Ids = &v case "created_at", "createdAt": s.AddField("created_at") @@ -234,7 +234,7 @@ func (x *Client) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.CreatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -245,7 +245,7 @@ func (x *Client) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.UpdatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -256,7 +256,7 @@ func (x *Client) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.DeletedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -303,7 +303,7 @@ func (x *Client) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.AdministrativeContact = &v case "technical_contact", "technicalContact": s.AddField("technical_contact") @@ -313,7 +313,7 @@ func (x *Client) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.TechnicalContact = &v case "secret": s.AddField("secret") @@ -438,6 +438,178 @@ func (x *Clients) UnmarshalJSON(b []byte) error { return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) } +// MarshalProtoJSON marshals the GetClientRequest message to JSON. +func (x *GetClientRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.ClientIds != nil || s.HasField("client_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("client_ids") + // NOTE: ClientIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.ClientIds) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the GetClientRequest to JSON. +func (x *GetClientRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the GetClientRequest message from JSON. +func (x *GetClientRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "client_ids", "clientIds": + s.AddField("client_ids") + if s.ReadNil() { + x.ClientIds = nil + return + } + // NOTE: ClientIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ClientIdentifiers + golang.UnmarshalMessage(s, &v) + x.ClientIds = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the GetClientRequest from JSON. +func (x *GetClientRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the ListClientsRequest message to JSON. +func (x *ListClientsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Collaborator != nil || s.HasField("collaborator") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("collaborator") + // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.Collaborator) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + if x.Order != "" || s.HasField("order") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("order") + s.WriteString(x.Order) + } + if x.Limit != 0 || s.HasField("limit") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("limit") + s.WriteUint32(x.Limit) + } + if x.Page != 0 || s.HasField("page") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("page") + s.WriteUint32(x.Page) + } + if x.Deleted || s.HasField("deleted") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("deleted") + s.WriteBool(x.Deleted) + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the ListClientsRequest to JSON. +func (x *ListClientsRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the ListClientsRequest message from JSON. +func (x *ListClientsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "collaborator": + s.AddField("collaborator") + if s.ReadNil() { + x.Collaborator = nil + return + } + // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. + var v OrganizationOrUserIdentifiers + golang.UnmarshalMessage(s, &v) + x.Collaborator = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + case "order": + s.AddField("order") + x.Order = s.ReadString() + case "limit": + s.AddField("limit") + x.Limit = s.ReadUint32() + case "page": + s.AddField("page") + x.Page = s.ReadUint32() + case "deleted": + s.AddField("deleted") + x.Deleted = s.ReadBool() + } + }) +} + +// UnmarshalJSON unmarshals the ListClientsRequest from JSON. +func (x *ListClientsRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + // MarshalProtoJSON marshals the CreateClientRequest message to JSON. func (x *CreateClientRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x == nil { @@ -455,7 +627,7 @@ func (x *CreateClientRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("collaborator") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Collaborator) + golang.MarshalMessage(s, x.Collaborator) } s.WriteObjectEnd() } @@ -489,7 +661,7 @@ func (x *CreateClientRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Collaborator = &v } }) @@ -519,7 +691,7 @@ func (x *UpdateClientRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -552,7 +724,7 @@ func (x *UpdateClientRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -578,7 +750,7 @@ func (x *SetClientCollaboratorRequest) MarshalProtoJSON(s *jsonplugin.MarshalSta s.WriteMoreIf(&wroteField) s.WriteObjectField("client_ids") // NOTE: ClientIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ClientIds) + golang.MarshalMessage(s, x.ClientIds) } if x.Collaborator != nil || s.HasField("collaborator") { s.WriteMoreIf(&wroteField) @@ -610,7 +782,7 @@ func (x *SetClientCollaboratorRequest) UnmarshalProtoJSON(s *jsonplugin.Unmarsha } // NOTE: ClientIdentifiers does not seem to implement UnmarshalProtoJSON. var v ClientIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ClientIds = &v case "collaborator": if s.ReadNil() { diff --git a/pkg/ttnpb/client_services.pb.go b/pkg/ttnpb/client_services.pb.go index 1316526fcb..5e2f22ece6 100644 --- a/pkg/ttnpb/client_services.pb.go +++ b/pkg/ttnpb/client_services.pb.go @@ -1,607 +1,243 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/client_services.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + reflect "reflect" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -func init() { - proto.RegisterFile("lorawan-stack/api/client_services.proto", fileDescriptor_80815ba053239a77) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/client_services.proto", fileDescriptor_80815ba053239a77) -} - -var fileDescriptor_80815ba053239a77 = []byte{ - // 663 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x41, 0x6b, 0x13, 0x41, - 0x14, 0x66, 0xab, 0x4d, 0x65, 0x90, 0x16, 0x07, 0xa9, 0xb0, 0x4d, 0xab, 0xdd, 0x16, 0x0a, 0xc1, - 0xce, 0x48, 0x4b, 0x41, 0xbc, 0x69, 0xd5, 0x2a, 0x7a, 0xd0, 0x16, 0x2f, 0x7b, 0x29, 0x9b, 0xed, - 0x74, 0x32, 0x66, 0x3b, 0xb3, 0x9d, 0x79, 0x49, 0xa9, 0x25, 0x20, 0x1e, 0xf4, 0xe4, 0x41, 0x3c, - 0xf9, 0x3f, 0xfc, 0x01, 0xe2, 0x4d, 0x10, 0x3c, 0xf4, 0x27, 0xd4, 0x1f, 0x22, 0x3b, 0xbb, 0x5b, - 0x37, 0xc9, 0xc6, 0x24, 0xd4, 0xdb, 0xe4, 0xbd, 0x37, 0xdf, 0xf7, 0xde, 0xb7, 0xef, 0x9b, 0xa0, - 0x95, 0x48, 0xe9, 0xe0, 0x28, 0x90, 0xab, 0x06, 0x82, 0xb0, 0x49, 0x83, 0x58, 0xd0, 0x30, 0x12, - 0x4c, 0xc2, 0xae, 0x61, 0xba, 0x2d, 0x42, 0x66, 0x48, 0xac, 0x15, 0x28, 0x3c, 0x0d, 0x20, 0x49, - 0x56, 0x4c, 0xda, 0xeb, 0xee, 0x2a, 0x17, 0xd0, 0x68, 0xd5, 0x49, 0xa8, 0x0e, 0x28, 0x57, 0x5c, - 0x51, 0x5b, 0x56, 0x6f, 0xed, 0xdb, 0x5f, 0xf6, 0x87, 0x3d, 0xa5, 0xd7, 0xdd, 0x2a, 0x57, 0x8a, - 0x47, 0xcc, 0x12, 0x04, 0x52, 0x2a, 0x08, 0x40, 0x28, 0x99, 0x81, 0xbb, 0x73, 0x59, 0xf6, 0x1c, - 0x83, 0x1d, 0xc4, 0x70, 0x9c, 0x25, 0x17, 0x06, 0xb5, 0x98, 0xe5, 0x97, 0xfa, 0xf3, 0x62, 0x8f, - 0x49, 0x10, 0xfb, 0x82, 0x69, 0x33, 0x18, 0x44, 0x0b, 0xde, 0x80, 0x2c, 0xbf, 0xf6, 0x73, 0x0a, - 0x4d, 0x6f, 0x5a, 0xd4, 0x6d, 0xc6, 0x85, 0x01, 0x7d, 0x8c, 0x7f, 0x39, 0xa8, 0xb2, 0xa9, 0x59, - 0x00, 0x0c, 0x2f, 0x91, 0xee, 0xe9, 0x49, 0x1a, 0xcf, 0x2f, 0x1c, 0xb6, 0x98, 0x01, 0x77, 0xb6, - 0xaf, 0xc8, 0xa6, 0xbd, 0x0f, 0xce, 0xbb, 0xd3, 0xdf, 0x9f, 0x27, 0xde, 0x3a, 0x1e, 0xa1, 0x2d, - 0xc3, 0xb4, 0xa1, 0x27, 0xa1, 0x8a, 0xa2, 0xa0, 0xae, 0x74, 0x00, 0x4a, 0x93, 0x24, 0xb6, 0x2b, - 0xf6, 0x4c, 0x7e, 0xe8, 0x64, 0xe3, 0x99, 0x7b, 0x4e, 0xcd, 0x7f, 0xe6, 0x3d, 0xa6, 0x4a, 0xf3, - 0x40, 0x8a, 0x37, 0xa9, 0x62, 0x3d, 0x97, 0x8b, 0x39, 0x0b, 0xd2, 0x13, 0x28, 0x82, 0xe1, 0x06, - 0xba, 0xb4, 0xc5, 0x00, 0xdf, 0xea, 0x6d, 0x74, 0x8b, 0xc1, 0x68, 0xa3, 0xac, 0xd8, 0x49, 0x16, - 0xf1, 0xcd, 0x1c, 0x95, 0x9e, 0x64, 0xdb, 0x92, 0x50, 0x9f, 0x1f, 0x3b, 0xf8, 0xd4, 0x41, 0x97, - 0x9f, 0x0b, 0x03, 0xd8, 0xeb, 0x45, 0x4a, 0xa2, 0x29, 0x9a, 0xc9, 0xd9, 0x6e, 0x94, 0xb3, 0x19, - 0xef, 0x63, 0xaa, 0xdc, 0x7b, 0x07, 0x5f, 0xc9, 0x09, 0xfd, 0x3b, 0x78, 0x4c, 0x15, 0xfd, 0x27, - 0xf8, 0x3f, 0x49, 0x88, 0x0f, 0x51, 0xe5, 0x55, 0xbc, 0x57, 0xba, 0x10, 0x69, 0x7c, 0x34, 0x15, - 0x6b, 0x76, 0xaa, 0x65, 0xb7, 0x4f, 0x45, 0xd2, 0xad, 0x62, 0xf2, 0xc9, 0x02, 0x54, 0x79, 0xc8, - 0x22, 0x06, 0x0c, 0x2f, 0x96, 0xa3, 0x3d, 0xfd, 0xbb, 0xea, 0xee, 0x2c, 0x49, 0x7d, 0x44, 0x72, - 0x1f, 0x91, 0x47, 0x89, 0x8f, 0xbc, 0xaa, 0x25, 0x9c, 0xad, 0x5d, 0x2f, 0xf9, 0x6c, 0x1d, 0xfc, - 0x1a, 0x4d, 0x6d, 0x33, 0x03, 0x4a, 0x5f, 0x88, 0x63, 0xd9, 0x72, 0x2c, 0x78, 0xd5, 0x32, 0x0e, - 0xaa, 0x33, 0x82, 0x7d, 0x34, 0xf9, 0xa2, 0xa5, 0xf9, 0x85, 0x98, 0x3c, 0xcb, 0x54, 0xad, 0xb9, - 0xa5, 0x4c, 0x71, 0x02, 0xbf, 0x76, 0x36, 0x89, 0xae, 0xa6, 0x88, 0xf7, 0xc3, 0x90, 0x19, 0x83, - 0x23, 0x84, 0x92, 0xcd, 0xdb, 0xb6, 0x9e, 0x1f, 0x8d, 0xbd, 0xa7, 0x24, 0xbd, 0xea, 0x2d, 0x59, - 0xf6, 0x79, 0x3c, 0x57, 0x3e, 0x67, 0x8a, 0xff, 0x75, 0x02, 0xcd, 0x24, 0xa6, 0x2a, 0xac, 0x19, - 0xbe, 0x3d, 0xd0, 0x75, 0xc5, 0xb2, 0x7c, 0x77, 0x56, 0xca, 0xaa, 0xbb, 0xea, 0x4c, 0xac, 0xa4, - 0x61, 0xde, 0x8f, 0xd4, 0x23, 0xdf, 0x1d, 0x7f, 0x07, 0xbf, 0x1c, 0x62, 0x4b, 0x5a, 0xdc, 0x7b, - 0xeb, 0xa2, 0x61, 0x26, 0xf2, 0x9b, 0x58, 0x8c, 0x05, 0x5a, 0xf4, 0xce, 0xb8, 0x3e, 0xc3, 0x9f, - 0x1c, 0x34, 0xb3, 0x33, 0x4c, 0xb6, 0x9d, 0x7f, 0xc9, 0x36, 0x68, 0x67, 0xee, 0x5a, 0x91, 0xd6, - 0xdc, 0xd5, 0x71, 0x86, 0xb1, 0x6f, 0xe6, 0x17, 0x07, 0x5d, 0xb3, 0x6f, 0x56, 0x31, 0x81, 0xc9, - 0xe0, 0x67, 0xad, 0xab, 0x30, 0xef, 0x6b, 0xbe, 0x6f, 0xe1, 0x8a, 0x55, 0xde, 0x86, 0x6d, 0x8f, - 0xe2, 0xf1, 0xda, 0x7b, 0xb0, 0xf1, 0xed, 0x6c, 0xc1, 0xf1, 0x29, 0x57, 0x04, 0x1a, 0x0c, 0x1a, - 0x42, 0x72, 0x43, 0x24, 0x83, 0x23, 0xa5, 0x9b, 0xb4, 0xfb, 0xff, 0xae, 0xbd, 0x4e, 0xe3, 0x26, - 0xa7, 0x00, 0x32, 0xae, 0xd7, 0x2b, 0x56, 0x9c, 0xf5, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x55, - 0x7b, 0x41, 0xb7, 0xfc, 0x07, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// ClientRegistryClient is the client API for ClientRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ClientRegistryClient interface { - // Create a new OAuth client. This also sets the given organization or user as - // first collaborator with all possible rights. - Create(ctx context.Context, in *CreateClientRequest, opts ...grpc.CallOption) (*Client, error) - // Get the OAuth client with the given identifiers, selecting the fields specified - // in the field mask. - // More or less fields may be returned, depending on the rights of the caller. - Get(ctx context.Context, in *GetClientRequest, opts ...grpc.CallOption) (*Client, error) - // List OAuth clients where the given user or organization is a direct collaborator. - // If no user or organization is given, this returns the OAuth clients the caller - // has access to. - // Similar to Get, this selects the fields specified in the field mask. - // More or less fields may be returned, depending on the rights of the caller. - List(ctx context.Context, in *ListClientsRequest, opts ...grpc.CallOption) (*Clients, error) - // Update the OAuth client, changing the fields specified by the field mask to the provided values. - Update(ctx context.Context, in *UpdateClientRequest, opts ...grpc.CallOption) (*Client, error) - // Delete the OAuth client. This may not release the client ID for reuse. - Delete(ctx context.Context, in *ClientIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) - // Restore a recently deleted client. - // - // Deployment configuration may specify if, and for how long after deletion, - // entities can be restored. - Restore(ctx context.Context, in *ClientIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) - // Purge the client. This will release the client ID for reuse. - Purge(ctx context.Context, in *ClientIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) -} - -type clientRegistryClient struct { - cc *grpc.ClientConn -} - -func NewClientRegistryClient(cc *grpc.ClientConn) ClientRegistryClient { - return &clientRegistryClient{cc} -} - -func (c *clientRegistryClient) Create(ctx context.Context, in *CreateClientRequest, opts ...grpc.CallOption) (*Client, error) { - out := new(Client) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientRegistry/Create", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clientRegistryClient) Get(ctx context.Context, in *GetClientRequest, opts ...grpc.CallOption) (*Client, error) { - out := new(Client) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientRegistry/Get", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clientRegistryClient) List(ctx context.Context, in *ListClientsRequest, opts ...grpc.CallOption) (*Clients, error) { - out := new(Clients) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientRegistry/List", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clientRegistryClient) Update(ctx context.Context, in *UpdateClientRequest, opts ...grpc.CallOption) (*Client, error) { - out := new(Client) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientRegistry/Update", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clientRegistryClient) Delete(ctx context.Context, in *ClientIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientRegistry/Delete", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clientRegistryClient) Restore(ctx context.Context, in *ClientIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientRegistry/Restore", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clientRegistryClient) Purge(ctx context.Context, in *ClientIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientRegistry/Purge", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ClientRegistryServer is the server API for ClientRegistry service. -type ClientRegistryServer interface { - // Create a new OAuth client. This also sets the given organization or user as - // first collaborator with all possible rights. - Create(context.Context, *CreateClientRequest) (*Client, error) - // Get the OAuth client with the given identifiers, selecting the fields specified - // in the field mask. - // More or less fields may be returned, depending on the rights of the caller. - Get(context.Context, *GetClientRequest) (*Client, error) - // List OAuth clients where the given user or organization is a direct collaborator. - // If no user or organization is given, this returns the OAuth clients the caller - // has access to. - // Similar to Get, this selects the fields specified in the field mask. - // More or less fields may be returned, depending on the rights of the caller. - List(context.Context, *ListClientsRequest) (*Clients, error) - // Update the OAuth client, changing the fields specified by the field mask to the provided values. - Update(context.Context, *UpdateClientRequest) (*Client, error) - // Delete the OAuth client. This may not release the client ID for reuse. - Delete(context.Context, *ClientIdentifiers) (*types.Empty, error) - // Restore a recently deleted client. - // - // Deployment configuration may specify if, and for how long after deletion, - // entities can be restored. - Restore(context.Context, *ClientIdentifiers) (*types.Empty, error) - // Purge the client. This will release the client ID for reuse. - Purge(context.Context, *ClientIdentifiers) (*types.Empty, error) -} - -// UnimplementedClientRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedClientRegistryServer struct { -} - -func (*UnimplementedClientRegistryServer) Create(ctx context.Context, req *CreateClientRequest) (*Client, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (*UnimplementedClientRegistryServer) Get(ctx context.Context, req *GetClientRequest) (*Client, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") -} -func (*UnimplementedClientRegistryServer) List(ctx context.Context, req *ListClientsRequest) (*Clients, error) { - return nil, status.Errorf(codes.Unimplemented, "method List not implemented") -} -func (*UnimplementedClientRegistryServer) Update(ctx context.Context, req *UpdateClientRequest) (*Client, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") -} -func (*UnimplementedClientRegistryServer) Delete(ctx context.Context, req *ClientIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (*UnimplementedClientRegistryServer) Restore(ctx context.Context, req *ClientIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Restore not implemented") -} -func (*UnimplementedClientRegistryServer) Purge(ctx context.Context, req *ClientIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Purge not implemented") -} - -func RegisterClientRegistryServer(s *grpc.Server, srv ClientRegistryServer) { - s.RegisterService(&_ClientRegistry_serviceDesc, srv) -} - -func _ClientRegistry_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateClientRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClientRegistryServer).Create(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ClientRegistry/Create", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClientRegistryServer).Create(ctx, req.(*CreateClientRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClientRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetClientRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClientRegistryServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ClientRegistry/Get", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClientRegistryServer).Get(ctx, req.(*GetClientRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClientRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListClientsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClientRegistryServer).List(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ClientRegistry/List", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClientRegistryServer).List(ctx, req.(*ListClientsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClientRegistry_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateClientRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClientRegistryServer).Update(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ClientRegistry/Update", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClientRegistryServer).Update(ctx, req.(*UpdateClientRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClientRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ClientIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClientRegistryServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ClientRegistry/Delete", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClientRegistryServer).Delete(ctx, req.(*ClientIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClientRegistry_Restore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ClientIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClientRegistryServer).Restore(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ClientRegistry/Restore", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClientRegistryServer).Restore(ctx, req.(*ClientIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClientRegistry_Purge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ClientIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClientRegistryServer).Purge(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ClientRegistry/Purge", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClientRegistryServer).Purge(ctx, req.(*ClientIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -var _ClientRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.ClientRegistry", - HandlerType: (*ClientRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Create", - Handler: _ClientRegistry_Create_Handler, - }, - { - MethodName: "Get", - Handler: _ClientRegistry_Get_Handler, - }, - { - MethodName: "List", - Handler: _ClientRegistry_List_Handler, - }, - { - MethodName: "Update", - Handler: _ClientRegistry_Update_Handler, - }, - { - MethodName: "Delete", - Handler: _ClientRegistry_Delete_Handler, - }, - { - MethodName: "Restore", - Handler: _ClientRegistry_Restore_Handler, - }, - { - MethodName: "Purge", - Handler: _ClientRegistry_Purge_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/client_services.proto", -} - -// ClientAccessClient is the client API for ClientAccess service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ClientAccessClient interface { - // List the rights the caller has on this application. - ListRights(ctx context.Context, in *ClientIdentifiers, opts ...grpc.CallOption) (*Rights, error) - // Get the rights of a collaborator (member) of the client. - // Pseudo-rights in the response (such as the "_ALL" right) are not expanded. - GetCollaborator(ctx context.Context, in *GetClientCollaboratorRequest, opts ...grpc.CallOption) (*GetCollaboratorResponse, error) - // Set the rights of a collaborator (member) on the OAuth client. - // This method can also be used to delete the collaborator, by giving them no rights. - // The caller is required to have all assigned or/and removed rights. - SetCollaborator(ctx context.Context, in *SetClientCollaboratorRequest, opts ...grpc.CallOption) (*types.Empty, error) - // List the collaborators on this OAuth client. - ListCollaborators(ctx context.Context, in *ListClientCollaboratorsRequest, opts ...grpc.CallOption) (*Collaborators, error) -} - -type clientAccessClient struct { - cc *grpc.ClientConn -} - -func NewClientAccessClient(cc *grpc.ClientConn) ClientAccessClient { - return &clientAccessClient{cc} -} - -func (c *clientAccessClient) ListRights(ctx context.Context, in *ClientIdentifiers, opts ...grpc.CallOption) (*Rights, error) { - out := new(Rights) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientAccess/ListRights", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clientAccessClient) GetCollaborator(ctx context.Context, in *GetClientCollaboratorRequest, opts ...grpc.CallOption) (*GetCollaboratorResponse, error) { - out := new(GetCollaboratorResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientAccess/GetCollaborator", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clientAccessClient) SetCollaborator(ctx context.Context, in *SetClientCollaboratorRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientAccess/SetCollaborator", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clientAccessClient) ListCollaborators(ctx context.Context, in *ListClientCollaboratorsRequest, opts ...grpc.CallOption) (*Collaborators, error) { - out := new(Collaborators) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientAccess/ListCollaborators", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ClientAccessServer is the server API for ClientAccess service. -type ClientAccessServer interface { - // List the rights the caller has on this application. - ListRights(context.Context, *ClientIdentifiers) (*Rights, error) - // Get the rights of a collaborator (member) of the client. - // Pseudo-rights in the response (such as the "_ALL" right) are not expanded. - GetCollaborator(context.Context, *GetClientCollaboratorRequest) (*GetCollaboratorResponse, error) - // Set the rights of a collaborator (member) on the OAuth client. - // This method can also be used to delete the collaborator, by giving them no rights. - // The caller is required to have all assigned or/and removed rights. - SetCollaborator(context.Context, *SetClientCollaboratorRequest) (*types.Empty, error) - // List the collaborators on this OAuth client. - ListCollaborators(context.Context, *ListClientCollaboratorsRequest) (*Collaborators, error) -} - -// UnimplementedClientAccessServer can be embedded to have forward compatible implementations. -type UnimplementedClientAccessServer struct { -} - -func (*UnimplementedClientAccessServer) ListRights(ctx context.Context, req *ClientIdentifiers) (*Rights, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListRights not implemented") -} -func (*UnimplementedClientAccessServer) GetCollaborator(ctx context.Context, req *GetClientCollaboratorRequest) (*GetCollaboratorResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetCollaborator not implemented") -} -func (*UnimplementedClientAccessServer) SetCollaborator(ctx context.Context, req *SetClientCollaboratorRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method SetCollaborator not implemented") -} -func (*UnimplementedClientAccessServer) ListCollaborators(ctx context.Context, req *ListClientCollaboratorsRequest) (*Collaborators, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListCollaborators not implemented") -} - -func RegisterClientAccessServer(s *grpc.Server, srv ClientAccessServer) { - s.RegisterService(&_ClientAccess_serviceDesc, srv) -} - -func _ClientAccess_ListRights_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ClientIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClientAccessServer).ListRights(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ClientAccess/ListRights", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClientAccessServer).ListRights(ctx, req.(*ClientIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClientAccess_GetCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetClientCollaboratorRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClientAccessServer).GetCollaborator(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ClientAccess/GetCollaborator", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClientAccessServer).GetCollaborator(ctx, req.(*GetClientCollaboratorRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClientAccess_SetCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetClientCollaboratorRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClientAccessServer).SetCollaborator(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ClientAccess/SetCollaborator", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClientAccessServer).SetCollaborator(ctx, req.(*SetClientCollaboratorRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClientAccess_ListCollaborators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListClientCollaboratorsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClientAccessServer).ListCollaborators(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ClientAccess/ListCollaborators", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClientAccessServer).ListCollaborators(ctx, req.(*ListClientCollaboratorsRequest)) - } - return interceptor(ctx, in, info, handler) -} +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -var _ClientAccess_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.ClientAccess", - HandlerType: (*ClientAccessServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListRights", - Handler: _ClientAccess_ListRights_Handler, - }, - { - MethodName: "GetCollaborator", - Handler: _ClientAccess_GetCollaborator_Handler, - }, - { - MethodName: "SetCollaborator", - Handler: _ClientAccess_SetCollaborator_Handler, - }, - { - MethodName: "ListCollaborators", - Handler: _ClientAccess_ListCollaborators_Handler, +var File_lorawan_stack_api_client_services_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_client_services_proto_rawDesc = []byte{ + 0x0a, 0x27, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, + 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xcc, 0x07, 0x0a, 0x0e, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xcf, 0x01, 0x0a, 0x06, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x22, 0x87, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x80, 0x01, 0x22, 0x2e, 0x2f, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, + 0x5a, 0x4b, 0x22, 0x46, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x68, 0x0a, + 0x03, 0x47, 0x65, 0x74, 0x12, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x22, 0x27, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, + 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xd3, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x8d, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x86, 0x01, 0x12, 0x08, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x73, 0x5a, 0x30, 0x12, 0x2e, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x73, 0x5a, 0x48, 0x12, 0x46, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x71, 0x0a, + 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x1a, 0x1f, 0x2f, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x69, + 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, + 0x12, 0x61, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x2a, 0x14, 0x2f, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x7d, 0x12, 0x6a, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x21, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1e, 0x22, 0x1c, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, + 0x66, 0x0a, 0x05, 0x50, 0x75, 0x72, 0x67, 0x65, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x32, 0xe3, 0x05, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x6c, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0xb4, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2c, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xc9, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xc2, 0x01, 0x5a, 0x53, 0x12, 0x51, 0x2f, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x75, 0x73, 0x65, 0x72, + 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, + 0x5a, 0x6b, 0x12, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x91, 0x01, + 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x12, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x1a, + 0x2d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x3a, 0x01, + 0x2a, 0x12, 0x99, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, + 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, + 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x35, 0x5a, + 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, + 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var file_lorawan_stack_api_client_services_proto_goTypes = []interface{}{ + (*CreateClientRequest)(nil), // 0: ttn.lorawan.v3.CreateClientRequest + (*GetClientRequest)(nil), // 1: ttn.lorawan.v3.GetClientRequest + (*ListClientsRequest)(nil), // 2: ttn.lorawan.v3.ListClientsRequest + (*UpdateClientRequest)(nil), // 3: ttn.lorawan.v3.UpdateClientRequest + (*ClientIdentifiers)(nil), // 4: ttn.lorawan.v3.ClientIdentifiers + (*GetClientCollaboratorRequest)(nil), // 5: ttn.lorawan.v3.GetClientCollaboratorRequest + (*SetClientCollaboratorRequest)(nil), // 6: ttn.lorawan.v3.SetClientCollaboratorRequest + (*ListClientCollaboratorsRequest)(nil), // 7: ttn.lorawan.v3.ListClientCollaboratorsRequest + (*Client)(nil), // 8: ttn.lorawan.v3.Client + (*Clients)(nil), // 9: ttn.lorawan.v3.Clients + (*emptypb.Empty)(nil), // 10: google.protobuf.Empty + (*Rights)(nil), // 11: ttn.lorawan.v3.Rights + (*GetCollaboratorResponse)(nil), // 12: ttn.lorawan.v3.GetCollaboratorResponse + (*Collaborators)(nil), // 13: ttn.lorawan.v3.Collaborators +} +var file_lorawan_stack_api_client_services_proto_depIdxs = []int32{ + 0, // 0: ttn.lorawan.v3.ClientRegistry.Create:input_type -> ttn.lorawan.v3.CreateClientRequest + 1, // 1: ttn.lorawan.v3.ClientRegistry.Get:input_type -> ttn.lorawan.v3.GetClientRequest + 2, // 2: ttn.lorawan.v3.ClientRegistry.List:input_type -> ttn.lorawan.v3.ListClientsRequest + 3, // 3: ttn.lorawan.v3.ClientRegistry.Update:input_type -> ttn.lorawan.v3.UpdateClientRequest + 4, // 4: ttn.lorawan.v3.ClientRegistry.Delete:input_type -> ttn.lorawan.v3.ClientIdentifiers + 4, // 5: ttn.lorawan.v3.ClientRegistry.Restore:input_type -> ttn.lorawan.v3.ClientIdentifiers + 4, // 6: ttn.lorawan.v3.ClientRegistry.Purge:input_type -> ttn.lorawan.v3.ClientIdentifiers + 4, // 7: ttn.lorawan.v3.ClientAccess.ListRights:input_type -> ttn.lorawan.v3.ClientIdentifiers + 5, // 8: ttn.lorawan.v3.ClientAccess.GetCollaborator:input_type -> ttn.lorawan.v3.GetClientCollaboratorRequest + 6, // 9: ttn.lorawan.v3.ClientAccess.SetCollaborator:input_type -> ttn.lorawan.v3.SetClientCollaboratorRequest + 7, // 10: ttn.lorawan.v3.ClientAccess.ListCollaborators:input_type -> ttn.lorawan.v3.ListClientCollaboratorsRequest + 8, // 11: ttn.lorawan.v3.ClientRegistry.Create:output_type -> ttn.lorawan.v3.Client + 8, // 12: ttn.lorawan.v3.ClientRegistry.Get:output_type -> ttn.lorawan.v3.Client + 9, // 13: ttn.lorawan.v3.ClientRegistry.List:output_type -> ttn.lorawan.v3.Clients + 8, // 14: ttn.lorawan.v3.ClientRegistry.Update:output_type -> ttn.lorawan.v3.Client + 10, // 15: ttn.lorawan.v3.ClientRegistry.Delete:output_type -> google.protobuf.Empty + 10, // 16: ttn.lorawan.v3.ClientRegistry.Restore:output_type -> google.protobuf.Empty + 10, // 17: ttn.lorawan.v3.ClientRegistry.Purge:output_type -> google.protobuf.Empty + 11, // 18: ttn.lorawan.v3.ClientAccess.ListRights:output_type -> ttn.lorawan.v3.Rights + 12, // 19: ttn.lorawan.v3.ClientAccess.GetCollaborator:output_type -> ttn.lorawan.v3.GetCollaboratorResponse + 10, // 20: ttn.lorawan.v3.ClientAccess.SetCollaborator:output_type -> google.protobuf.Empty + 13, // 21: ttn.lorawan.v3.ClientAccess.ListCollaborators:output_type -> ttn.lorawan.v3.Collaborators + 11, // [11:22] is the sub-list for method output_type + 0, // [0:11] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_client_services_proto_init() } +func file_lorawan_stack_api_client_services_proto_init() { + if File_lorawan_stack_api_client_services_proto != nil { + return + } + file_lorawan_stack_api_client_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_rights_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_client_services_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 2, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/client_services.proto", + GoTypes: file_lorawan_stack_api_client_services_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_client_services_proto_depIdxs, + }.Build() + File_lorawan_stack_api_client_services_proto = out.File + file_lorawan_stack_api_client_services_proto_rawDesc = nil + file_lorawan_stack_api_client_services_proto_goTypes = nil + file_lorawan_stack_api_client_services_proto_depIdxs = nil } diff --git a/pkg/ttnpb/client_services.pb.gw.go b/pkg/ttnpb/client_services.pb.gw.go index aa23799f54..153063bd2a 100644 --- a/pkg/ttnpb/client_services.pb.gw.go +++ b/pkg/ttnpb/client_services.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join func request_ClientRegistry_Create_0(ctx context.Context, marshaler runtime.Marshaler, client ClientRegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -58,7 +56,6 @@ func request_ClientRegistry_Create_0(ctx context.Context, marshaler runtime.Mars } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -93,7 +90,6 @@ func local_request_ClientRegistry_Create_0(ctx context.Context, marshaler runtim } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -128,7 +124,6 @@ func request_ClientRegistry_Create_1(ctx context.Context, marshaler runtime.Mars } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -163,7 +158,6 @@ func local_request_ClientRegistry_Create_1(ctx context.Context, marshaler runtim } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -194,7 +188,6 @@ func request_ClientRegistry_Get_0(ctx context.Context, marshaler runtime.Marshal } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -228,7 +221,6 @@ func local_request_ClientRegistry_Get_0(ctx context.Context, marshaler runtime.M } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -302,7 +294,6 @@ func request_ClientRegistry_List_1(ctx context.Context, marshaler runtime.Marsha } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -336,7 +327,6 @@ func local_request_ClientRegistry_List_1(ctx context.Context, marshaler runtime. } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -374,7 +364,6 @@ func request_ClientRegistry_List_2(ctx context.Context, marshaler runtime.Marsha } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -408,7 +397,6 @@ func local_request_ClientRegistry_List_2(ctx context.Context, marshaler runtime. } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -450,7 +438,6 @@ func request_ClientRegistry_Update_0(ctx context.Context, marshaler runtime.Mars } err = runtime.PopulateFieldFromPath(&protoReq, "client.ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client.ids.client_id", err) } @@ -485,7 +472,6 @@ func local_request_ClientRegistry_Update_0(ctx context.Context, marshaler runtim } err = runtime.PopulateFieldFromPath(&protoReq, "client.ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client.ids.client_id", err) } @@ -512,7 +498,6 @@ func request_ClientRegistry_Delete_0(ctx context.Context, marshaler runtime.Mars } protoReq.ClientId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_id", err) } @@ -539,7 +524,6 @@ func local_request_ClientRegistry_Delete_0(ctx context.Context, marshaler runtim } protoReq.ClientId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_id", err) } @@ -566,7 +550,6 @@ func request_ClientRegistry_Restore_0(ctx context.Context, marshaler runtime.Mar } protoReq.ClientId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_id", err) } @@ -593,7 +576,6 @@ func local_request_ClientRegistry_Restore_0(ctx context.Context, marshaler runti } protoReq.ClientId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_id", err) } @@ -620,7 +602,6 @@ func request_ClientRegistry_Purge_0(ctx context.Context, marshaler runtime.Marsh } protoReq.ClientId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_id", err) } @@ -647,7 +628,6 @@ func local_request_ClientRegistry_Purge_0(ctx context.Context, marshaler runtime } protoReq.ClientId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_id", err) } @@ -674,7 +654,6 @@ func request_ClientAccess_ListRights_0(ctx context.Context, marshaler runtime.Ma } protoReq.ClientId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_id", err) } @@ -701,7 +680,6 @@ func local_request_ClientAccess_ListRights_0(ctx context.Context, marshaler runt } protoReq.ClientId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_id", err) } @@ -732,7 +710,6 @@ func request_ClientAccess_GetCollaborator_0(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -743,7 +720,6 @@ func request_ClientAccess_GetCollaborator_0(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -777,7 +753,6 @@ func local_request_ClientAccess_GetCollaborator_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -788,7 +763,6 @@ func local_request_ClientAccess_GetCollaborator_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -826,7 +800,6 @@ func request_ClientAccess_GetCollaborator_1(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -837,7 +810,6 @@ func request_ClientAccess_GetCollaborator_1(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -871,7 +843,6 @@ func local_request_ClientAccess_GetCollaborator_1(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -882,7 +853,6 @@ func local_request_ClientAccess_GetCollaborator_1(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -924,7 +894,6 @@ func request_ClientAccess_SetCollaborator_0(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -959,7 +928,6 @@ func local_request_ClientAccess_SetCollaborator_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -990,7 +958,6 @@ func request_ClientAccess_ListCollaborators_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -1024,7 +991,6 @@ func local_request_ClientAccess_ListCollaborators_0(ctx context.Context, marshal } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -1053,20 +1019,22 @@ func RegisterClientRegistryHandlerServer(ctx context.Context, mux *runtime.Serve var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/Create", runtime.WithHTTPPathPattern("/users/{collaborator.user_ids.user_id}/clients")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ClientRegistry_Create_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ClientRegistry_Create_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_Create_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1076,20 +1044,22 @@ func RegisterClientRegistryHandlerServer(ctx context.Context, mux *runtime.Serve var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/Create", runtime.WithHTTPPathPattern("/organizations/{collaborator.organization_ids.organization_id}/clients")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ClientRegistry_Create_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ClientRegistry_Create_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_Create_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_Create_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1099,20 +1069,22 @@ func RegisterClientRegistryHandlerServer(ctx context.Context, mux *runtime.Serve var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/Get", runtime.WithHTTPPathPattern("/clients/{client_ids.client_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ClientRegistry_Get_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ClientRegistry_Get_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1122,20 +1094,22 @@ func RegisterClientRegistryHandlerServer(ctx context.Context, mux *runtime.Serve var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/List", runtime.WithHTTPPathPattern("/clients")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ClientRegistry_List_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ClientRegistry_List_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1145,20 +1119,22 @@ func RegisterClientRegistryHandlerServer(ctx context.Context, mux *runtime.Serve var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/List", runtime.WithHTTPPathPattern("/users/{collaborator.user_ids.user_id}/clients")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ClientRegistry_List_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ClientRegistry_List_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_List_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_List_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1168,20 +1144,22 @@ func RegisterClientRegistryHandlerServer(ctx context.Context, mux *runtime.Serve var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/List", runtime.WithHTTPPathPattern("/organizations/{collaborator.organization_ids.organization_id}/clients")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ClientRegistry_List_2(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ClientRegistry_List_2(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_List_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_List_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1191,20 +1169,22 @@ func RegisterClientRegistryHandlerServer(ctx context.Context, mux *runtime.Serve var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/Update", runtime.WithHTTPPathPattern("/clients/{client.ids.client_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ClientRegistry_Update_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ClientRegistry_Update_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_Update_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1214,20 +1194,22 @@ func RegisterClientRegistryHandlerServer(ctx context.Context, mux *runtime.Serve var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/Delete", runtime.WithHTTPPathPattern("/clients/{client_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ClientRegistry_Delete_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ClientRegistry_Delete_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1237,20 +1219,22 @@ func RegisterClientRegistryHandlerServer(ctx context.Context, mux *runtime.Serve var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/Restore", runtime.WithHTTPPathPattern("/clients/{client_id}/restore")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ClientRegistry_Restore_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ClientRegistry_Restore_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_Restore_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_Restore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1260,20 +1244,22 @@ func RegisterClientRegistryHandlerServer(ctx context.Context, mux *runtime.Serve var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/Purge", runtime.WithHTTPPathPattern("/clients/{client_id}/purge")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ClientRegistry_Purge_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ClientRegistry_Purge_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_Purge_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_Purge_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1292,20 +1278,22 @@ func RegisterClientAccessHandlerServer(ctx context.Context, mux *runtime.ServeMu var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ClientAccess/ListRights", runtime.WithHTTPPathPattern("/clients/{client_id}/rights")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ClientAccess_ListRights_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ClientAccess_ListRights_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientAccess_ListRights_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientAccess_ListRights_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1315,20 +1303,22 @@ func RegisterClientAccessHandlerServer(ctx context.Context, mux *runtime.ServeMu var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ClientAccess/GetCollaborator", runtime.WithHTTPPathPattern("/clients/{client_ids.client_id}/collaborator/user/{collaborator.user_ids.user_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ClientAccess_GetCollaborator_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ClientAccess_GetCollaborator_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientAccess_GetCollaborator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientAccess_GetCollaborator_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1338,20 +1328,22 @@ func RegisterClientAccessHandlerServer(ctx context.Context, mux *runtime.ServeMu var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ClientAccess/GetCollaborator", runtime.WithHTTPPathPattern("/clients/{client_ids.client_id}/collaborator/organization/{collaborator.organization_ids.organization_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ClientAccess_GetCollaborator_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ClientAccess_GetCollaborator_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientAccess_GetCollaborator_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientAccess_GetCollaborator_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1361,20 +1353,22 @@ func RegisterClientAccessHandlerServer(ctx context.Context, mux *runtime.ServeMu var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ClientAccess/SetCollaborator", runtime.WithHTTPPathPattern("/clients/{client_ids.client_id}/collaborators")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ClientAccess_SetCollaborator_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ClientAccess_SetCollaborator_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientAccess_SetCollaborator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientAccess_SetCollaborator_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1384,20 +1378,22 @@ func RegisterClientAccessHandlerServer(ctx context.Context, mux *runtime.ServeMu var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ClientAccess/ListCollaborators", runtime.WithHTTPPathPattern("/clients/{client_ids.client_id}/collaborators")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ClientAccess_ListCollaborators_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ClientAccess_ListCollaborators_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientAccess_ListCollaborators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientAccess_ListCollaborators_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1446,19 +1442,21 @@ func RegisterClientRegistryHandlerClient(ctx context.Context, mux *runtime.Serve ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/Create", runtime.WithHTTPPathPattern("/users/{collaborator.user_ids.user_id}/clients")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ClientRegistry_Create_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ClientRegistry_Create_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_Create_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1466,19 +1464,21 @@ func RegisterClientRegistryHandlerClient(ctx context.Context, mux *runtime.Serve ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/Create", runtime.WithHTTPPathPattern("/organizations/{collaborator.organization_ids.organization_id}/clients")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ClientRegistry_Create_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ClientRegistry_Create_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_Create_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_Create_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1486,19 +1486,21 @@ func RegisterClientRegistryHandlerClient(ctx context.Context, mux *runtime.Serve ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/Get", runtime.WithHTTPPathPattern("/clients/{client_ids.client_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ClientRegistry_Get_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ClientRegistry_Get_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1506,19 +1508,21 @@ func RegisterClientRegistryHandlerClient(ctx context.Context, mux *runtime.Serve ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/List", runtime.WithHTTPPathPattern("/clients")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ClientRegistry_List_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ClientRegistry_List_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1526,19 +1530,21 @@ func RegisterClientRegistryHandlerClient(ctx context.Context, mux *runtime.Serve ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/List", runtime.WithHTTPPathPattern("/users/{collaborator.user_ids.user_id}/clients")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ClientRegistry_List_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ClientRegistry_List_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_List_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_List_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1546,19 +1552,21 @@ func RegisterClientRegistryHandlerClient(ctx context.Context, mux *runtime.Serve ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/List", runtime.WithHTTPPathPattern("/organizations/{collaborator.organization_ids.organization_id}/clients")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ClientRegistry_List_2(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ClientRegistry_List_2(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_List_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_List_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1566,19 +1574,21 @@ func RegisterClientRegistryHandlerClient(ctx context.Context, mux *runtime.Serve ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/Update", runtime.WithHTTPPathPattern("/clients/{client.ids.client_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ClientRegistry_Update_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ClientRegistry_Update_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_Update_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1586,19 +1596,21 @@ func RegisterClientRegistryHandlerClient(ctx context.Context, mux *runtime.Serve ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/Delete", runtime.WithHTTPPathPattern("/clients/{client_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ClientRegistry_Delete_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ClientRegistry_Delete_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1606,19 +1618,21 @@ func RegisterClientRegistryHandlerClient(ctx context.Context, mux *runtime.Serve ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/Restore", runtime.WithHTTPPathPattern("/clients/{client_id}/restore")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ClientRegistry_Restore_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ClientRegistry_Restore_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_Restore_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_Restore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1626,19 +1640,21 @@ func RegisterClientRegistryHandlerClient(ctx context.Context, mux *runtime.Serve ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ClientRegistry/Purge", runtime.WithHTTPPathPattern("/clients/{client_id}/purge")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ClientRegistry_Purge_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ClientRegistry_Purge_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientRegistry_Purge_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientRegistry_Purge_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1646,25 +1662,25 @@ func RegisterClientRegistryHandlerClient(ctx context.Context, mux *runtime.Serve } var ( - pattern_ClientRegistry_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "collaborator.user_ids.user_id", "clients"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClientRegistry_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "collaborator.user_ids.user_id", "clients"}, "")) - pattern_ClientRegistry_Create_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "collaborator.organization_ids.organization_id", "clients"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClientRegistry_Create_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "collaborator.organization_ids.organization_id", "clients"}, "")) - pattern_ClientRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"clients", "client_ids.client_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClientRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"clients", "client_ids.client_id"}, "")) - pattern_ClientRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"clients"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClientRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"clients"}, "")) - pattern_ClientRegistry_List_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "collaborator.user_ids.user_id", "clients"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClientRegistry_List_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "collaborator.user_ids.user_id", "clients"}, "")) - pattern_ClientRegistry_List_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "collaborator.organization_ids.organization_id", "clients"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClientRegistry_List_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "collaborator.organization_ids.organization_id", "clients"}, "")) - pattern_ClientRegistry_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"clients", "client.ids.client_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClientRegistry_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"clients", "client.ids.client_id"}, "")) - pattern_ClientRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"clients", "client_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClientRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"clients", "client_id"}, "")) - pattern_ClientRegistry_Restore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"clients", "client_id", "restore"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClientRegistry_Restore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"clients", "client_id", "restore"}, "")) - pattern_ClientRegistry_Purge_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"clients", "client_id", "purge"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClientRegistry_Purge_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"clients", "client_id", "purge"}, "")) ) var ( @@ -1731,19 +1747,21 @@ func RegisterClientAccessHandlerClient(ctx context.Context, mux *runtime.ServeMu ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ClientAccess/ListRights", runtime.WithHTTPPathPattern("/clients/{client_id}/rights")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ClientAccess_ListRights_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ClientAccess_ListRights_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientAccess_ListRights_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientAccess_ListRights_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1751,19 +1769,21 @@ func RegisterClientAccessHandlerClient(ctx context.Context, mux *runtime.ServeMu ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ClientAccess/GetCollaborator", runtime.WithHTTPPathPattern("/clients/{client_ids.client_id}/collaborator/user/{collaborator.user_ids.user_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ClientAccess_GetCollaborator_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ClientAccess_GetCollaborator_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientAccess_GetCollaborator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientAccess_GetCollaborator_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1771,19 +1791,21 @@ func RegisterClientAccessHandlerClient(ctx context.Context, mux *runtime.ServeMu ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ClientAccess/GetCollaborator", runtime.WithHTTPPathPattern("/clients/{client_ids.client_id}/collaborator/organization/{collaborator.organization_ids.organization_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ClientAccess_GetCollaborator_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ClientAccess_GetCollaborator_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientAccess_GetCollaborator_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientAccess_GetCollaborator_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1791,19 +1813,21 @@ func RegisterClientAccessHandlerClient(ctx context.Context, mux *runtime.ServeMu ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ClientAccess/SetCollaborator", runtime.WithHTTPPathPattern("/clients/{client_ids.client_id}/collaborators")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ClientAccess_SetCollaborator_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ClientAccess_SetCollaborator_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientAccess_SetCollaborator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientAccess_SetCollaborator_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1811,19 +1835,21 @@ func RegisterClientAccessHandlerClient(ctx context.Context, mux *runtime.ServeMu ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ClientAccess/ListCollaborators", runtime.WithHTTPPathPattern("/clients/{client_ids.client_id}/collaborators")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ClientAccess_ListCollaborators_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ClientAccess_ListCollaborators_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ClientAccess_ListCollaborators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ClientAccess_ListCollaborators_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1831,15 +1857,15 @@ func RegisterClientAccessHandlerClient(ctx context.Context, mux *runtime.ServeMu } var ( - pattern_ClientAccess_ListRights_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"clients", "client_id", "rights"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClientAccess_ListRights_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"clients", "client_id", "rights"}, "")) - pattern_ClientAccess_GetCollaborator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"clients", "client_ids.client_id", "collaborator", "user", "collaborator.user_ids.user_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClientAccess_GetCollaborator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"clients", "client_ids.client_id", "collaborator", "user", "collaborator.user_ids.user_id"}, "")) - pattern_ClientAccess_GetCollaborator_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"clients", "client_ids.client_id", "collaborator", "organization", "collaborator.organization_ids.organization_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClientAccess_GetCollaborator_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"clients", "client_ids.client_id", "collaborator", "organization", "collaborator.organization_ids.organization_id"}, "")) - pattern_ClientAccess_SetCollaborator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"clients", "client_ids.client_id", "collaborators"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClientAccess_SetCollaborator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"clients", "client_ids.client_id", "collaborators"}, "")) - pattern_ClientAccess_ListCollaborators_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"clients", "client_ids.client_id", "collaborators"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClientAccess_ListCollaborators_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"clients", "client_ids.client_id", "collaborators"}, "")) ) var ( diff --git a/pkg/ttnpb/client_services.pb.validate.go b/pkg/ttnpb/client_services.pb.validate.go index 3da7a886ef..90a1820015 100644 --- a/pkg/ttnpb/client_services.pb.validate.go +++ b/pkg/ttnpb/client_services.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,8 +29,5 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) - -// define the regex for a UUID once up-front -var _client_services_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") diff --git a/pkg/ttnpb/client_services_grpc.pb.go b/pkg/ttnpb/client_services_grpc.pb.go new file mode 100644 index 0000000000..8d02e1c027 --- /dev/null +++ b/pkg/ttnpb/client_services_grpc.pb.go @@ -0,0 +1,564 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/client_services.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// ClientRegistryClient is the client API for ClientRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ClientRegistryClient interface { + // Create a new OAuth client. This also sets the given organization or user as + // first collaborator with all possible rights. + Create(ctx context.Context, in *CreateClientRequest, opts ...grpc.CallOption) (*Client, error) + // Get the OAuth client with the given identifiers, selecting the fields specified + // in the field mask. + // More or less fields may be returned, depending on the rights of the caller. + Get(ctx context.Context, in *GetClientRequest, opts ...grpc.CallOption) (*Client, error) + // List OAuth clients where the given user or organization is a direct collaborator. + // If no user or organization is given, this returns the OAuth clients the caller + // has access to. + // Similar to Get, this selects the fields specified in the field mask. + // More or less fields may be returned, depending on the rights of the caller. + List(ctx context.Context, in *ListClientsRequest, opts ...grpc.CallOption) (*Clients, error) + // Update the OAuth client, changing the fields specified by the field mask to the provided values. + Update(ctx context.Context, in *UpdateClientRequest, opts ...grpc.CallOption) (*Client, error) + // Delete the OAuth client. This may not release the client ID for reuse. + Delete(ctx context.Context, in *ClientIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Restore a recently deleted client. + // + // Deployment configuration may specify if, and for how long after deletion, + // entities can be restored. + Restore(ctx context.Context, in *ClientIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Purge the client. This will release the client ID for reuse. + Purge(ctx context.Context, in *ClientIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type clientRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewClientRegistryClient(cc grpc.ClientConnInterface) ClientRegistryClient { + return &clientRegistryClient{cc} +} + +func (c *clientRegistryClient) Create(ctx context.Context, in *CreateClientRequest, opts ...grpc.CallOption) (*Client, error) { + out := new(Client) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientRegistry/Create", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientRegistryClient) Get(ctx context.Context, in *GetClientRequest, opts ...grpc.CallOption) (*Client, error) { + out := new(Client) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientRegistry/Get", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientRegistryClient) List(ctx context.Context, in *ListClientsRequest, opts ...grpc.CallOption) (*Clients, error) { + out := new(Clients) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientRegistry/List", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientRegistryClient) Update(ctx context.Context, in *UpdateClientRequest, opts ...grpc.CallOption) (*Client, error) { + out := new(Client) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientRegistry/Update", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientRegistryClient) Delete(ctx context.Context, in *ClientIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientRegistry/Delete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientRegistryClient) Restore(ctx context.Context, in *ClientIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientRegistry/Restore", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientRegistryClient) Purge(ctx context.Context, in *ClientIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientRegistry/Purge", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ClientRegistryServer is the server API for ClientRegistry service. +// All implementations must embed UnimplementedClientRegistryServer +// for forward compatibility +type ClientRegistryServer interface { + // Create a new OAuth client. This also sets the given organization or user as + // first collaborator with all possible rights. + Create(context.Context, *CreateClientRequest) (*Client, error) + // Get the OAuth client with the given identifiers, selecting the fields specified + // in the field mask. + // More or less fields may be returned, depending on the rights of the caller. + Get(context.Context, *GetClientRequest) (*Client, error) + // List OAuth clients where the given user or organization is a direct collaborator. + // If no user or organization is given, this returns the OAuth clients the caller + // has access to. + // Similar to Get, this selects the fields specified in the field mask. + // More or less fields may be returned, depending on the rights of the caller. + List(context.Context, *ListClientsRequest) (*Clients, error) + // Update the OAuth client, changing the fields specified by the field mask to the provided values. + Update(context.Context, *UpdateClientRequest) (*Client, error) + // Delete the OAuth client. This may not release the client ID for reuse. + Delete(context.Context, *ClientIdentifiers) (*emptypb.Empty, error) + // Restore a recently deleted client. + // + // Deployment configuration may specify if, and for how long after deletion, + // entities can be restored. + Restore(context.Context, *ClientIdentifiers) (*emptypb.Empty, error) + // Purge the client. This will release the client ID for reuse. + Purge(context.Context, *ClientIdentifiers) (*emptypb.Empty, error) + mustEmbedUnimplementedClientRegistryServer() +} + +// UnimplementedClientRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedClientRegistryServer struct { +} + +func (UnimplementedClientRegistryServer) Create(context.Context, *CreateClientRequest) (*Client, error) { + return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") +} +func (UnimplementedClientRegistryServer) Get(context.Context, *GetClientRequest) (*Client, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (UnimplementedClientRegistryServer) List(context.Context, *ListClientsRequest) (*Clients, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedClientRegistryServer) Update(context.Context, *UpdateClientRequest) (*Client, error) { + return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") +} +func (UnimplementedClientRegistryServer) Delete(context.Context, *ClientIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedClientRegistryServer) Restore(context.Context, *ClientIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Restore not implemented") +} +func (UnimplementedClientRegistryServer) Purge(context.Context, *ClientIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Purge not implemented") +} +func (UnimplementedClientRegistryServer) mustEmbedUnimplementedClientRegistryServer() {} + +// UnsafeClientRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ClientRegistryServer will +// result in compilation errors. +type UnsafeClientRegistryServer interface { + mustEmbedUnimplementedClientRegistryServer() +} + +func RegisterClientRegistryServer(s grpc.ServiceRegistrar, srv ClientRegistryServer) { + s.RegisterService(&ClientRegistry_ServiceDesc, srv) +} + +func _ClientRegistry_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateClientRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientRegistryServer).Create(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ClientRegistry/Create", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientRegistryServer).Create(ctx, req.(*CreateClientRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ClientRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetClientRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientRegistryServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ClientRegistry/Get", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientRegistryServer).Get(ctx, req.(*GetClientRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ClientRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListClientsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientRegistryServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ClientRegistry/List", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientRegistryServer).List(ctx, req.(*ListClientsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ClientRegistry_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateClientRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientRegistryServer).Update(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ClientRegistry/Update", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientRegistryServer).Update(ctx, req.(*UpdateClientRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ClientRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ClientIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientRegistryServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ClientRegistry/Delete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientRegistryServer).Delete(ctx, req.(*ClientIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _ClientRegistry_Restore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ClientIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientRegistryServer).Restore(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ClientRegistry/Restore", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientRegistryServer).Restore(ctx, req.(*ClientIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _ClientRegistry_Purge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ClientIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientRegistryServer).Purge(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ClientRegistry/Purge", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientRegistryServer).Purge(ctx, req.(*ClientIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// ClientRegistry_ServiceDesc is the grpc.ServiceDesc for ClientRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ClientRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.ClientRegistry", + HandlerType: (*ClientRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Create", + Handler: _ClientRegistry_Create_Handler, + }, + { + MethodName: "Get", + Handler: _ClientRegistry_Get_Handler, + }, + { + MethodName: "List", + Handler: _ClientRegistry_List_Handler, + }, + { + MethodName: "Update", + Handler: _ClientRegistry_Update_Handler, + }, + { + MethodName: "Delete", + Handler: _ClientRegistry_Delete_Handler, + }, + { + MethodName: "Restore", + Handler: _ClientRegistry_Restore_Handler, + }, + { + MethodName: "Purge", + Handler: _ClientRegistry_Purge_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/client_services.proto", +} + +// ClientAccessClient is the client API for ClientAccess service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ClientAccessClient interface { + // List the rights the caller has on this application. + ListRights(ctx context.Context, in *ClientIdentifiers, opts ...grpc.CallOption) (*Rights, error) + // Get the rights of a collaborator (member) of the client. + // Pseudo-rights in the response (such as the "_ALL" right) are not expanded. + GetCollaborator(ctx context.Context, in *GetClientCollaboratorRequest, opts ...grpc.CallOption) (*GetCollaboratorResponse, error) + // Set the rights of a collaborator (member) on the OAuth client. + // This method can also be used to delete the collaborator, by giving them no rights. + // The caller is required to have all assigned or/and removed rights. + SetCollaborator(ctx context.Context, in *SetClientCollaboratorRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // List the collaborators on this OAuth client. + ListCollaborators(ctx context.Context, in *ListClientCollaboratorsRequest, opts ...grpc.CallOption) (*Collaborators, error) +} + +type clientAccessClient struct { + cc grpc.ClientConnInterface +} + +func NewClientAccessClient(cc grpc.ClientConnInterface) ClientAccessClient { + return &clientAccessClient{cc} +} + +func (c *clientAccessClient) ListRights(ctx context.Context, in *ClientIdentifiers, opts ...grpc.CallOption) (*Rights, error) { + out := new(Rights) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientAccess/ListRights", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientAccessClient) GetCollaborator(ctx context.Context, in *GetClientCollaboratorRequest, opts ...grpc.CallOption) (*GetCollaboratorResponse, error) { + out := new(GetCollaboratorResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientAccess/GetCollaborator", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientAccessClient) SetCollaborator(ctx context.Context, in *SetClientCollaboratorRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientAccess/SetCollaborator", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientAccessClient) ListCollaborators(ctx context.Context, in *ListClientCollaboratorsRequest, opts ...grpc.CallOption) (*Collaborators, error) { + out := new(Collaborators) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ClientAccess/ListCollaborators", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ClientAccessServer is the server API for ClientAccess service. +// All implementations must embed UnimplementedClientAccessServer +// for forward compatibility +type ClientAccessServer interface { + // List the rights the caller has on this application. + ListRights(context.Context, *ClientIdentifiers) (*Rights, error) + // Get the rights of a collaborator (member) of the client. + // Pseudo-rights in the response (such as the "_ALL" right) are not expanded. + GetCollaborator(context.Context, *GetClientCollaboratorRequest) (*GetCollaboratorResponse, error) + // Set the rights of a collaborator (member) on the OAuth client. + // This method can also be used to delete the collaborator, by giving them no rights. + // The caller is required to have all assigned or/and removed rights. + SetCollaborator(context.Context, *SetClientCollaboratorRequest) (*emptypb.Empty, error) + // List the collaborators on this OAuth client. + ListCollaborators(context.Context, *ListClientCollaboratorsRequest) (*Collaborators, error) + mustEmbedUnimplementedClientAccessServer() +} + +// UnimplementedClientAccessServer must be embedded to have forward compatible implementations. +type UnimplementedClientAccessServer struct { +} + +func (UnimplementedClientAccessServer) ListRights(context.Context, *ClientIdentifiers) (*Rights, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListRights not implemented") +} +func (UnimplementedClientAccessServer) GetCollaborator(context.Context, *GetClientCollaboratorRequest) (*GetCollaboratorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCollaborator not implemented") +} +func (UnimplementedClientAccessServer) SetCollaborator(context.Context, *SetClientCollaboratorRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetCollaborator not implemented") +} +func (UnimplementedClientAccessServer) ListCollaborators(context.Context, *ListClientCollaboratorsRequest) (*Collaborators, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListCollaborators not implemented") +} +func (UnimplementedClientAccessServer) mustEmbedUnimplementedClientAccessServer() {} + +// UnsafeClientAccessServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ClientAccessServer will +// result in compilation errors. +type UnsafeClientAccessServer interface { + mustEmbedUnimplementedClientAccessServer() +} + +func RegisterClientAccessServer(s grpc.ServiceRegistrar, srv ClientAccessServer) { + s.RegisterService(&ClientAccess_ServiceDesc, srv) +} + +func _ClientAccess_ListRights_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ClientIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientAccessServer).ListRights(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ClientAccess/ListRights", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientAccessServer).ListRights(ctx, req.(*ClientIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _ClientAccess_GetCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetClientCollaboratorRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientAccessServer).GetCollaborator(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ClientAccess/GetCollaborator", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientAccessServer).GetCollaborator(ctx, req.(*GetClientCollaboratorRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ClientAccess_SetCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetClientCollaboratorRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientAccessServer).SetCollaborator(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ClientAccess/SetCollaborator", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientAccessServer).SetCollaborator(ctx, req.(*SetClientCollaboratorRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ClientAccess_ListCollaborators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListClientCollaboratorsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientAccessServer).ListCollaborators(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ClientAccess/ListCollaborators", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientAccessServer).ListCollaborators(ctx, req.(*ListClientCollaboratorsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ClientAccess_ServiceDesc is the grpc.ServiceDesc for ClientAccess service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ClientAccess_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.ClientAccess", + HandlerType: (*ClientAccessServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListRights", + Handler: _ClientAccess_ListRights_Handler, + }, + { + MethodName: "GetCollaborator", + Handler: _ClientAccess_GetCollaborator_Handler, + }, + { + MethodName: "SetCollaborator", + Handler: _ClientAccess_SetCollaborator_Handler, + }, + { + MethodName: "ListCollaborators", + Handler: _ClientAccess_ListCollaborators_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/client_services.proto", +} diff --git a/pkg/ttnpb/cluster.pb.go b/pkg/ttnpb/cluster.pb.go index 2fc33791a7..05ce1f1df8 100644 --- a/pkg/ttnpb/cluster.pb.go +++ b/pkg/ttnpb/cluster.pb.go @@ -1,30 +1,46 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/cluster.proto package ttnpb import ( - fmt "fmt" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - golang_proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // PeerInfo type PeerInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Port on which the gRPC server is exposed. GrpcPort uint32 `protobuf:"varint,1,opt,name=grpc_port,json=grpcPort,proto3" json:"grpc_port,omitempty"` // Indicates whether the gRPC server uses TLS. @@ -32,95 +48,164 @@ type PeerInfo struct { // Roles of the peer. Roles []ClusterRole `protobuf:"varint,3,rep,packed,name=roles,proto3,enum=ttn.lorawan.v3.ClusterRole" json:"roles,omitempty"` // Tags of the peer - Tags map[string]string `protobuf:"bytes,4,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Tags map[string]string `protobuf:"bytes,4,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *PeerInfo) Reset() { *m = PeerInfo{} } -func (m *PeerInfo) String() string { return proto.CompactTextString(m) } -func (*PeerInfo) ProtoMessage() {} -func (*PeerInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_5716c3fcd711eefd, []int{0} -} -func (m *PeerInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PeerInfo.Unmarshal(m, b) -} -func (m *PeerInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PeerInfo.Marshal(b, m, deterministic) -} -func (m *PeerInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_PeerInfo.Merge(m, src) +func (x *PeerInfo) Reset() { + *x = PeerInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_cluster_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PeerInfo) XXX_Size() int { - return xxx_messageInfo_PeerInfo.Size(m) + +func (x *PeerInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PeerInfo) XXX_DiscardUnknown() { - xxx_messageInfo_PeerInfo.DiscardUnknown(m) + +func (*PeerInfo) ProtoMessage() {} + +func (x *PeerInfo) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_cluster_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PeerInfo proto.InternalMessageInfo +// Deprecated: Use PeerInfo.ProtoReflect.Descriptor instead. +func (*PeerInfo) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_cluster_proto_rawDescGZIP(), []int{0} +} -func (m *PeerInfo) GetGrpcPort() uint32 { - if m != nil { - return m.GrpcPort +func (x *PeerInfo) GetGrpcPort() uint32 { + if x != nil { + return x.GrpcPort } return 0 } -func (m *PeerInfo) GetTls() bool { - if m != nil { - return m.Tls +func (x *PeerInfo) GetTls() bool { + if x != nil { + return x.Tls } return false } -func (m *PeerInfo) GetRoles() []ClusterRole { - if m != nil { - return m.Roles +func (x *PeerInfo) GetRoles() []ClusterRole { + if x != nil { + return x.Roles } return nil } -func (m *PeerInfo) GetTags() map[string]string { - if m != nil { - return m.Tags +func (x *PeerInfo) GetTags() map[string]string { + if x != nil { + return x.Tags } return nil } -func init() { - proto.RegisterType((*PeerInfo)(nil), "ttn.lorawan.v3.PeerInfo") - golang_proto.RegisterType((*PeerInfo)(nil), "ttn.lorawan.v3.PeerInfo") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.PeerInfo.TagsEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.PeerInfo.TagsEntry") +var File_lorawan_stack_api_cluster_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_cluster_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, + 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xdd, 0x01, 0x0a, 0x08, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, + 0x67, 0x72, 0x70, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x08, 0x67, 0x72, 0x70, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x31, 0x0a, 0x05, 0x72, + 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x36, + 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x65, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, + 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, + 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { proto.RegisterFile("lorawan-stack/api/cluster.proto", fileDescriptor_5716c3fcd711eefd) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/cluster.proto", fileDescriptor_5716c3fcd711eefd) +var ( + file_lorawan_stack_api_cluster_proto_rawDescOnce sync.Once + file_lorawan_stack_api_cluster_proto_rawDescData = file_lorawan_stack_api_cluster_proto_rawDesc +) + +func file_lorawan_stack_api_cluster_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_cluster_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_cluster_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_cluster_proto_rawDescData) + }) + return file_lorawan_stack_api_cluster_proto_rawDescData } -var fileDescriptor_5716c3fcd711eefd = []byte{ - // 300 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0x4f, 0x4b, 0xc3, 0x30, - 0x18, 0xc6, 0xe9, 0xba, 0xc9, 0x1a, 0x71, 0x48, 0xf1, 0x50, 0x36, 0xd4, 0xb2, 0x53, 0x2f, 0x4b, - 0x70, 0xc3, 0x3f, 0x78, 0x54, 0x3c, 0x78, 0x1b, 0xc1, 0x93, 0x17, 0x49, 0x4b, 0x96, 0x8d, 0x76, - 0x79, 0x43, 0xf2, 0xb6, 0x63, 0xdf, 0xce, 0x2f, 0xe2, 0xc9, 0x2f, 0x22, 0x4d, 0x55, 0x98, 0xde, - 0x9e, 0xe7, 0xcd, 0xf3, 0x86, 0xdf, 0xfb, 0x90, 0xcb, 0x0a, 0xac, 0xd8, 0x09, 0x3d, 0x73, 0x28, - 0x8a, 0x92, 0x09, 0xb3, 0x61, 0x45, 0x55, 0x3b, 0x94, 0x96, 0x1a, 0x0b, 0x08, 0xf1, 0x08, 0x51, - 0xd3, 0xef, 0x10, 0x6d, 0x16, 0xe3, 0x99, 0xda, 0xe0, 0xba, 0xce, 0x69, 0x01, 0x5b, 0xa6, 0x40, - 0x01, 0xf3, 0xb1, 0xbc, 0x5e, 0x79, 0xe7, 0x8d, 0x57, 0xdd, 0xfa, 0xf8, 0xfc, 0xff, 0xff, 0x52, - 0xd7, 0x5b, 0xd7, 0x3d, 0x4f, 0x3f, 0x02, 0x32, 0x5c, 0x4a, 0x69, 0x9f, 0xf5, 0x0a, 0xe2, 0x09, - 0x89, 0x94, 0x35, 0xc5, 0x9b, 0x01, 0x8b, 0x49, 0x90, 0x06, 0xd9, 0x09, 0x1f, 0xb6, 0x83, 0x25, - 0x58, 0x8c, 0x4f, 0x49, 0x88, 0x95, 0x4b, 0x7a, 0x69, 0x90, 0x0d, 0x79, 0x2b, 0xe3, 0x2b, 0x32, - 0xb0, 0x50, 0x49, 0x97, 0x84, 0x69, 0x98, 0x8d, 0xe6, 0x13, 0x7a, 0x48, 0x4a, 0x1f, 0xbb, 0x3b, - 0x38, 0x54, 0x92, 0x77, 0xc9, 0xf8, 0x86, 0xf4, 0x51, 0x28, 0x97, 0xf4, 0xd3, 0x30, 0x3b, 0x9e, - 0x4f, 0xff, 0x6e, 0xfc, 0x90, 0xd0, 0x17, 0xa1, 0xdc, 0x93, 0x46, 0xbb, 0xe7, 0x3e, 0x3f, 0xbe, - 0x25, 0xd1, 0xef, 0xa8, 0x25, 0x29, 0xe5, 0xde, 0x03, 0x46, 0xbc, 0x95, 0xf1, 0x19, 0x19, 0x34, - 0xa2, 0xaa, 0xa5, 0xa7, 0x8b, 0x78, 0x67, 0xee, 0x7b, 0x77, 0xc1, 0xc3, 0xf5, 0xfb, 0xe7, 0x45, - 0xf0, 0xca, 0x14, 0x50, 0x5c, 0x4b, 0x5c, 0x6f, 0xb4, 0x72, 0x54, 0x4b, 0xdc, 0x81, 0x2d, 0xd9, - 0x61, 0x33, 0xcd, 0x82, 0x99, 0x52, 0x31, 0x44, 0x6d, 0xf2, 0xfc, 0xc8, 0xb7, 0xb3, 0xf8, 0x0a, - 0x00, 0x00, 0xff, 0xff, 0x59, 0xea, 0x2f, 0x88, 0x9e, 0x01, 0x00, 0x00, +var file_lorawan_stack_api_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_lorawan_stack_api_cluster_proto_goTypes = []interface{}{ + (*PeerInfo)(nil), // 0: ttn.lorawan.v3.PeerInfo + nil, // 1: ttn.lorawan.v3.PeerInfo.TagsEntry + (ClusterRole)(0), // 2: ttn.lorawan.v3.ClusterRole +} +var file_lorawan_stack_api_cluster_proto_depIdxs = []int32{ + 2, // 0: ttn.lorawan.v3.PeerInfo.roles:type_name -> ttn.lorawan.v3.ClusterRole + 1, // 1: ttn.lorawan.v3.PeerInfo.tags:type_name -> ttn.lorawan.v3.PeerInfo.TagsEntry + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_cluster_proto_init() } +func file_lorawan_stack_api_cluster_proto_init() { + if File_lorawan_stack_api_cluster_proto != nil { + return + } + file_lorawan_stack_api_enums_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_cluster_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PeerInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_cluster_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_cluster_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_cluster_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_cluster_proto_msgTypes, + }.Build() + File_lorawan_stack_api_cluster_proto = out.File + file_lorawan_stack_api_cluster_proto_rawDesc = nil + file_lorawan_stack_api_cluster_proto_goTypes = nil + file_lorawan_stack_api_cluster_proto_depIdxs = nil } diff --git a/pkg/ttnpb/cluster.pb.validate.go b/pkg/ttnpb/cluster.pb.validate.go index 600c20dbf3..6ee3beab35 100644 --- a/pkg/ttnpb/cluster.pb.validate.go +++ b/pkg/ttnpb/cluster.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _cluster_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on PeerInfo with the rules defined in // the proto definition for this message. If any rules are violated, an error // is returned. diff --git a/pkg/ttnpb/configuration_services.pb.go b/pkg/ttnpb/configuration_services.pb.go index d9f054c408..280139f943 100644 --- a/pkg/ttnpb/configuration_services.pb.go +++ b/pkg/ttnpb/configuration_services.pb.go @@ -1,352 +1,373 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/configuration_services.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type ListFrequencyPlansRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Optional base frequency in MHz for hardware support (433, 470, 868 or 915) - BaseFrequency uint32 `protobuf:"varint,1,opt,name=base_frequency,json=baseFrequency,proto3" json:"base_frequency,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + BaseFrequency uint32 `protobuf:"varint,1,opt,name=base_frequency,json=baseFrequency,proto3" json:"base_frequency,omitempty"` } -func (m *ListFrequencyPlansRequest) Reset() { *m = ListFrequencyPlansRequest{} } -func (m *ListFrequencyPlansRequest) String() string { return proto.CompactTextString(m) } -func (*ListFrequencyPlansRequest) ProtoMessage() {} -func (*ListFrequencyPlansRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_2ed64f51a0283877, []int{0} -} -func (m *ListFrequencyPlansRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListFrequencyPlansRequest.Unmarshal(m, b) -} -func (m *ListFrequencyPlansRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListFrequencyPlansRequest.Marshal(b, m, deterministic) -} -func (m *ListFrequencyPlansRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListFrequencyPlansRequest.Merge(m, src) +func (x *ListFrequencyPlansRequest) Reset() { + *x = ListFrequencyPlansRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListFrequencyPlansRequest) XXX_Size() int { - return xxx_messageInfo_ListFrequencyPlansRequest.Size(m) + +func (x *ListFrequencyPlansRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListFrequencyPlansRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListFrequencyPlansRequest.DiscardUnknown(m) + +func (*ListFrequencyPlansRequest) ProtoMessage() {} + +func (x *ListFrequencyPlansRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListFrequencyPlansRequest proto.InternalMessageInfo +// Deprecated: Use ListFrequencyPlansRequest.ProtoReflect.Descriptor instead. +func (*ListFrequencyPlansRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_configuration_services_proto_rawDescGZIP(), []int{0} +} -func (m *ListFrequencyPlansRequest) GetBaseFrequency() uint32 { - if m != nil { - return m.BaseFrequency +func (x *ListFrequencyPlansRequest) GetBaseFrequency() uint32 { + if x != nil { + return x.BaseFrequency } return 0 } type FrequencyPlanDescription struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // The ID of the frequency that the current frequency plan is based on. BaseId string `protobuf:"bytes,2,opt,name=base_id,json=baseId,proto3" json:"base_id,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` // Base frequency in MHz for hardware support (433, 470, 868 or 915) - BaseFrequency uint32 `protobuf:"varint,4,opt,name=base_frequency,json=baseFrequency,proto3" json:"base_frequency,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + BaseFrequency uint32 `protobuf:"varint,4,opt,name=base_frequency,json=baseFrequency,proto3" json:"base_frequency,omitempty"` } -func (m *FrequencyPlanDescription) Reset() { *m = FrequencyPlanDescription{} } -func (m *FrequencyPlanDescription) String() string { return proto.CompactTextString(m) } -func (*FrequencyPlanDescription) ProtoMessage() {} -func (*FrequencyPlanDescription) Descriptor() ([]byte, []int) { - return fileDescriptor_2ed64f51a0283877, []int{1} -} -func (m *FrequencyPlanDescription) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FrequencyPlanDescription.Unmarshal(m, b) -} -func (m *FrequencyPlanDescription) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FrequencyPlanDescription.Marshal(b, m, deterministic) -} -func (m *FrequencyPlanDescription) XXX_Merge(src proto.Message) { - xxx_messageInfo_FrequencyPlanDescription.Merge(m, src) +func (x *FrequencyPlanDescription) Reset() { + *x = FrequencyPlanDescription{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *FrequencyPlanDescription) XXX_Size() int { - return xxx_messageInfo_FrequencyPlanDescription.Size(m) + +func (x *FrequencyPlanDescription) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *FrequencyPlanDescription) XXX_DiscardUnknown() { - xxx_messageInfo_FrequencyPlanDescription.DiscardUnknown(m) + +func (*FrequencyPlanDescription) ProtoMessage() {} + +func (x *FrequencyPlanDescription) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_FrequencyPlanDescription proto.InternalMessageInfo +// Deprecated: Use FrequencyPlanDescription.ProtoReflect.Descriptor instead. +func (*FrequencyPlanDescription) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_configuration_services_proto_rawDescGZIP(), []int{1} +} -func (m *FrequencyPlanDescription) GetId() string { - if m != nil { - return m.Id +func (x *FrequencyPlanDescription) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *FrequencyPlanDescription) GetBaseId() string { - if m != nil { - return m.BaseId +func (x *FrequencyPlanDescription) GetBaseId() string { + if x != nil { + return x.BaseId } return "" } -func (m *FrequencyPlanDescription) GetName() string { - if m != nil { - return m.Name +func (x *FrequencyPlanDescription) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *FrequencyPlanDescription) GetBaseFrequency() uint32 { - if m != nil { - return m.BaseFrequency +func (x *FrequencyPlanDescription) GetBaseFrequency() uint32 { + if x != nil { + return x.BaseFrequency } return 0 } type ListFrequencyPlansResponse struct { - FrequencyPlans []*FrequencyPlanDescription `protobuf:"bytes,1,rep,name=frequency_plans,json=frequencyPlans,proto3" json:"frequency_plans,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ListFrequencyPlansResponse) Reset() { *m = ListFrequencyPlansResponse{} } -func (m *ListFrequencyPlansResponse) String() string { return proto.CompactTextString(m) } -func (*ListFrequencyPlansResponse) ProtoMessage() {} -func (*ListFrequencyPlansResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_2ed64f51a0283877, []int{2} -} -func (m *ListFrequencyPlansResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListFrequencyPlansResponse.Unmarshal(m, b) -} -func (m *ListFrequencyPlansResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListFrequencyPlansResponse.Marshal(b, m, deterministic) + FrequencyPlans []*FrequencyPlanDescription `protobuf:"bytes,1,rep,name=frequency_plans,json=frequencyPlans,proto3" json:"frequency_plans,omitempty"` } -func (m *ListFrequencyPlansResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListFrequencyPlansResponse.Merge(m, src) + +func (x *ListFrequencyPlansResponse) Reset() { + *x = ListFrequencyPlansResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListFrequencyPlansResponse) XXX_Size() int { - return xxx_messageInfo_ListFrequencyPlansResponse.Size(m) + +func (x *ListFrequencyPlansResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListFrequencyPlansResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListFrequencyPlansResponse.DiscardUnknown(m) + +func (*ListFrequencyPlansResponse) ProtoMessage() {} + +func (x *ListFrequencyPlansResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListFrequencyPlansResponse proto.InternalMessageInfo +// Deprecated: Use ListFrequencyPlansResponse.ProtoReflect.Descriptor instead. +func (*ListFrequencyPlansResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_configuration_services_proto_rawDescGZIP(), []int{2} +} -func (m *ListFrequencyPlansResponse) GetFrequencyPlans() []*FrequencyPlanDescription { - if m != nil { - return m.FrequencyPlans +func (x *ListFrequencyPlansResponse) GetFrequencyPlans() []*FrequencyPlanDescription { + if x != nil { + return x.FrequencyPlans } return nil } type GetPhyVersionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Optional Band ID to filter the results. // If unused, all supported Bands and their versions are returned. - BandId string `protobuf:"bytes,1,opt,name=band_id,json=bandId,proto3" json:"band_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + BandId string `protobuf:"bytes,1,opt,name=band_id,json=bandId,proto3" json:"band_id,omitempty"` } -func (m *GetPhyVersionsRequest) Reset() { *m = GetPhyVersionsRequest{} } -func (m *GetPhyVersionsRequest) String() string { return proto.CompactTextString(m) } -func (*GetPhyVersionsRequest) ProtoMessage() {} -func (*GetPhyVersionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_2ed64f51a0283877, []int{3} -} -func (m *GetPhyVersionsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetPhyVersionsRequest.Unmarshal(m, b) -} -func (m *GetPhyVersionsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetPhyVersionsRequest.Marshal(b, m, deterministic) -} -func (m *GetPhyVersionsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetPhyVersionsRequest.Merge(m, src) +func (x *GetPhyVersionsRequest) Reset() { + *x = GetPhyVersionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetPhyVersionsRequest) XXX_Size() int { - return xxx_messageInfo_GetPhyVersionsRequest.Size(m) + +func (x *GetPhyVersionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetPhyVersionsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetPhyVersionsRequest.DiscardUnknown(m) + +func (*GetPhyVersionsRequest) ProtoMessage() {} + +func (x *GetPhyVersionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetPhyVersionsRequest proto.InternalMessageInfo +// Deprecated: Use GetPhyVersionsRequest.ProtoReflect.Descriptor instead. +func (*GetPhyVersionsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_configuration_services_proto_rawDescGZIP(), []int{3} +} -func (m *GetPhyVersionsRequest) GetBandId() string { - if m != nil { - return m.BandId +func (x *GetPhyVersionsRequest) GetBandId() string { + if x != nil { + return x.BandId } return "" } type GetPhyVersionsResponse struct { - VersionInfo []*GetPhyVersionsResponse_VersionInfo `protobuf:"bytes,2,rep,name=version_info,json=versionInfo,proto3" json:"version_info,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GetPhyVersionsResponse) Reset() { *m = GetPhyVersionsResponse{} } -func (m *GetPhyVersionsResponse) String() string { return proto.CompactTextString(m) } -func (*GetPhyVersionsResponse) ProtoMessage() {} -func (*GetPhyVersionsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_2ed64f51a0283877, []int{4} -} -func (m *GetPhyVersionsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetPhyVersionsResponse.Unmarshal(m, b) -} -func (m *GetPhyVersionsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetPhyVersionsResponse.Marshal(b, m, deterministic) + VersionInfo []*GetPhyVersionsResponse_VersionInfo `protobuf:"bytes,2,rep,name=version_info,json=versionInfo,proto3" json:"version_info,omitempty"` } -func (m *GetPhyVersionsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetPhyVersionsResponse.Merge(m, src) -} -func (m *GetPhyVersionsResponse) XXX_Size() int { - return xxx_messageInfo_GetPhyVersionsResponse.Size(m) -} -func (m *GetPhyVersionsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetPhyVersionsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetPhyVersionsResponse proto.InternalMessageInfo -func (m *GetPhyVersionsResponse) GetVersionInfo() []*GetPhyVersionsResponse_VersionInfo { - if m != nil { - return m.VersionInfo +func (x *GetPhyVersionsResponse) Reset() { + *x = GetPhyVersionsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -type GetPhyVersionsResponse_VersionInfo struct { - BandId string `protobuf:"bytes,1,opt,name=band_id,json=bandId,proto3" json:"band_id,omitempty"` - PhyVersions []PHYVersion `protobuf:"varint,2,rep,packed,name=phy_versions,json=phyVersions,proto3,enum=ttn.lorawan.v3.PHYVersion" json:"phy_versions,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *GetPhyVersionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetPhyVersionsResponse_VersionInfo) Reset() { *m = GetPhyVersionsResponse_VersionInfo{} } -func (m *GetPhyVersionsResponse_VersionInfo) String() string { return proto.CompactTextString(m) } -func (*GetPhyVersionsResponse_VersionInfo) ProtoMessage() {} -func (*GetPhyVersionsResponse_VersionInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_2ed64f51a0283877, []int{4, 0} -} -func (m *GetPhyVersionsResponse_VersionInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetPhyVersionsResponse_VersionInfo.Unmarshal(m, b) -} -func (m *GetPhyVersionsResponse_VersionInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetPhyVersionsResponse_VersionInfo.Marshal(b, m, deterministic) -} -func (m *GetPhyVersionsResponse_VersionInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetPhyVersionsResponse_VersionInfo.Merge(m, src) -} -func (m *GetPhyVersionsResponse_VersionInfo) XXX_Size() int { - return xxx_messageInfo_GetPhyVersionsResponse_VersionInfo.Size(m) -} -func (m *GetPhyVersionsResponse_VersionInfo) XXX_DiscardUnknown() { - xxx_messageInfo_GetPhyVersionsResponse_VersionInfo.DiscardUnknown(m) -} +func (*GetPhyVersionsResponse) ProtoMessage() {} -var xxx_messageInfo_GetPhyVersionsResponse_VersionInfo proto.InternalMessageInfo - -func (m *GetPhyVersionsResponse_VersionInfo) GetBandId() string { - if m != nil { - return m.BandId +func (x *GetPhyVersionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (m *GetPhyVersionsResponse_VersionInfo) GetPhyVersions() []PHYVersion { - if m != nil { - return m.PhyVersions +// Deprecated: Use GetPhyVersionsResponse.ProtoReflect.Descriptor instead. +func (*GetPhyVersionsResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_configuration_services_proto_rawDescGZIP(), []int{4} +} + +func (x *GetPhyVersionsResponse) GetVersionInfo() []*GetPhyVersionsResponse_VersionInfo { + if x != nil { + return x.VersionInfo } return nil } type ListBandsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Optional Band ID to filter the results. // If unused, all supported Bands are returned. BandId string `protobuf:"bytes,1,opt,name=band_id,json=bandId,proto3" json:"band_id,omitempty"` // Optional PHY version to filter the results. // If unused, all supported versions are returned. - PhyVersion PHYVersion `protobuf:"varint,2,opt,name=phy_version,json=phyVersion,proto3,enum=ttn.lorawan.v3.PHYVersion" json:"phy_version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + PhyVersion PHYVersion `protobuf:"varint,2,opt,name=phy_version,json=phyVersion,proto3,enum=ttn.lorawan.v3.PHYVersion" json:"phy_version,omitempty"` } -func (m *ListBandsRequest) Reset() { *m = ListBandsRequest{} } -func (m *ListBandsRequest) String() string { return proto.CompactTextString(m) } -func (*ListBandsRequest) ProtoMessage() {} -func (*ListBandsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_2ed64f51a0283877, []int{5} -} -func (m *ListBandsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListBandsRequest.Unmarshal(m, b) -} -func (m *ListBandsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListBandsRequest.Marshal(b, m, deterministic) -} -func (m *ListBandsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListBandsRequest.Merge(m, src) +func (x *ListBandsRequest) Reset() { + *x = ListBandsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListBandsRequest) XXX_Size() int { - return xxx_messageInfo_ListBandsRequest.Size(m) + +func (x *ListBandsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListBandsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListBandsRequest.DiscardUnknown(m) + +func (*ListBandsRequest) ProtoMessage() {} + +func (x *ListBandsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListBandsRequest proto.InternalMessageInfo +// Deprecated: Use ListBandsRequest.ProtoReflect.Descriptor instead. +func (*ListBandsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_configuration_services_proto_rawDescGZIP(), []int{5} +} -func (m *ListBandsRequest) GetBandId() string { - if m != nil { - return m.BandId +func (x *ListBandsRequest) GetBandId() string { + if x != nil { + return x.BandId } return "" } -func (m *ListBandsRequest) GetPhyVersion() PHYVersion { - if m != nil { - return m.PhyVersion +func (x *ListBandsRequest) GetPhyVersion() PHYVersion { + if x != nil { + return x.PhyVersion } return PHYVersion_PHY_UNKNOWN } type BandDescription struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Beacon *BandDescription_Beacon `protobuf:"bytes,2,opt,name=beacon,proto3" json:"beacon,omitempty"` PingSlotFrequencies []uint64 `protobuf:"varint,32,rep,packed,name=ping_slot_frequencies,json=pingSlotFrequencies,proto3" json:"ping_slot_frequencies,omitempty"` @@ -359,933 +380,1354 @@ type BandDescription struct { FreqMultiplier uint64 `protobuf:"varint,10,opt,name=freq_multiplier,json=freqMultiplier,proto3" json:"freq_multiplier,omitempty"` ImplementsCfList bool `protobuf:"varint,11,opt,name=implements_cf_list,json=implementsCfList,proto3" json:"implements_cf_list,omitempty"` CfListType CFListType `protobuf:"varint,12,opt,name=cf_list_type,json=cfListType,proto3,enum=ttn.lorawan.v3.CFListType" json:"cf_list_type,omitempty"` - ReceiveDelay_1 *types.Duration `protobuf:"bytes,13,opt,name=receive_delay_1,json=receiveDelay1,proto3" json:"receive_delay_1,omitempty"` - ReceiveDelay_2 *types.Duration `protobuf:"bytes,14,opt,name=receive_delay_2,json=receiveDelay2,proto3" json:"receive_delay_2,omitempty"` - JoinAcceptDelay_1 *types.Duration `protobuf:"bytes,15,opt,name=join_accept_delay_1,json=joinAcceptDelay1,proto3" json:"join_accept_delay_1,omitempty"` - JoinAcceptDelay_2 *types.Duration `protobuf:"bytes,16,opt,name=join_accept_delay_2,json=joinAcceptDelay2,proto3" json:"join_accept_delay_2,omitempty"` + ReceiveDelay_1 *durationpb.Duration `protobuf:"bytes,13,opt,name=receive_delay_1,json=receiveDelay1,proto3" json:"receive_delay_1,omitempty"` + ReceiveDelay_2 *durationpb.Duration `protobuf:"bytes,14,opt,name=receive_delay_2,json=receiveDelay2,proto3" json:"receive_delay_2,omitempty"` + JoinAcceptDelay_1 *durationpb.Duration `protobuf:"bytes,15,opt,name=join_accept_delay_1,json=joinAcceptDelay1,proto3" json:"join_accept_delay_1,omitempty"` + JoinAcceptDelay_2 *durationpb.Duration `protobuf:"bytes,16,opt,name=join_accept_delay_2,json=joinAcceptDelay2,proto3" json:"join_accept_delay_2,omitempty"` MaxFcntGap uint64 `protobuf:"varint,17,opt,name=max_fcnt_gap,json=maxFcntGap,proto3" json:"max_fcnt_gap,omitempty"` SupportsDynamicAdr bool `protobuf:"varint,18,opt,name=supports_dynamic_adr,json=supportsDynamicAdr,proto3" json:"supports_dynamic_adr,omitempty"` AdrAckLimit ADRAckLimitExponent `protobuf:"varint,19,opt,name=adr_ack_limit,json=adrAckLimit,proto3,enum=ttn.lorawan.v3.ADRAckLimitExponent" json:"adr_ack_limit,omitempty"` - MinRetransmitTimeout *types.Duration `protobuf:"bytes,20,opt,name=min_retransmit_timeout,json=minRetransmitTimeout,proto3" json:"min_retransmit_timeout,omitempty"` - MaxRetransmitTimeout *types.Duration `protobuf:"bytes,21,opt,name=max_retransmit_timeout,json=maxRetransmitTimeout,proto3" json:"max_retransmit_timeout,omitempty"` + MinRetransmitTimeout *durationpb.Duration `protobuf:"bytes,20,opt,name=min_retransmit_timeout,json=minRetransmitTimeout,proto3" json:"min_retransmit_timeout,omitempty"` + MaxRetransmitTimeout *durationpb.Duration `protobuf:"bytes,21,opt,name=max_retransmit_timeout,json=maxRetransmitTimeout,proto3" json:"max_retransmit_timeout,omitempty"` TxOffset []float32 `protobuf:"fixed32,22,rep,packed,name=tx_offset,json=txOffset,proto3" json:"tx_offset,omitempty"` MaxAdrDataRateIndex DataRateIndex `protobuf:"varint,23,opt,name=max_adr_data_rate_index,json=maxAdrDataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"max_adr_data_rate_index,omitempty"` TxParamSetupReqSupport bool `protobuf:"varint,24,opt,name=tx_param_setup_req_support,json=txParamSetupReqSupport,proto3" json:"tx_param_setup_req_support,omitempty"` DefaultMaxEirp float32 `protobuf:"fixed32,25,opt,name=default_max_eirp,json=defaultMaxEirp,proto3" json:"default_max_eirp,omitempty"` DefaultRx2Parameters *BandDescription_Rx2Parameters `protobuf:"bytes,30,opt,name=default_rx2_parameters,json=defaultRx2Parameters,proto3" json:"default_rx2_parameters,omitempty"` BootDwellTime *BandDescription_DwellTime `protobuf:"bytes,31,opt,name=boot_dwell_time,json=bootDwellTime,proto3" json:"boot_dwell_time,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *BandDescription) Reset() { *m = BandDescription{} } -func (m *BandDescription) String() string { return proto.CompactTextString(m) } -func (*BandDescription) ProtoMessage() {} -func (*BandDescription) Descriptor() ([]byte, []int) { - return fileDescriptor_2ed64f51a0283877, []int{6} -} -func (m *BandDescription) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BandDescription.Unmarshal(m, b) -} -func (m *BandDescription) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BandDescription.Marshal(b, m, deterministic) -} -func (m *BandDescription) XXX_Merge(src proto.Message) { - xxx_messageInfo_BandDescription.Merge(m, src) +func (x *BandDescription) Reset() { + *x = BandDescription{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *BandDescription) XXX_Size() int { - return xxx_messageInfo_BandDescription.Size(m) + +func (x *BandDescription) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *BandDescription) XXX_DiscardUnknown() { - xxx_messageInfo_BandDescription.DiscardUnknown(m) + +func (*BandDescription) ProtoMessage() {} + +func (x *BandDescription) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_BandDescription proto.InternalMessageInfo +// Deprecated: Use BandDescription.ProtoReflect.Descriptor instead. +func (*BandDescription) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_configuration_services_proto_rawDescGZIP(), []int{6} +} -func (m *BandDescription) GetId() string { - if m != nil { - return m.Id +func (x *BandDescription) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *BandDescription) GetBeacon() *BandDescription_Beacon { - if m != nil { - return m.Beacon +func (x *BandDescription) GetBeacon() *BandDescription_Beacon { + if x != nil { + return x.Beacon } return nil } -func (m *BandDescription) GetPingSlotFrequencies() []uint64 { - if m != nil { - return m.PingSlotFrequencies +func (x *BandDescription) GetPingSlotFrequencies() []uint64 { + if x != nil { + return x.PingSlotFrequencies } return nil } -func (m *BandDescription) GetMaxUplinkChannels() uint32 { - if m != nil { - return m.MaxUplinkChannels +func (x *BandDescription) GetMaxUplinkChannels() uint32 { + if x != nil { + return x.MaxUplinkChannels } return 0 } -func (m *BandDescription) GetUplinkChannels() []*BandDescription_Channel { - if m != nil { - return m.UplinkChannels +func (x *BandDescription) GetUplinkChannels() []*BandDescription_Channel { + if x != nil { + return x.UplinkChannels } return nil } -func (m *BandDescription) GetMaxDownlinkChannels() uint32 { - if m != nil { - return m.MaxDownlinkChannels +func (x *BandDescription) GetMaxDownlinkChannels() uint32 { + if x != nil { + return x.MaxDownlinkChannels } return 0 } -func (m *BandDescription) GetDownlinkChannels() []*BandDescription_Channel { - if m != nil { - return m.DownlinkChannels +func (x *BandDescription) GetDownlinkChannels() []*BandDescription_Channel { + if x != nil { + return x.DownlinkChannels } return nil } -func (m *BandDescription) GetSubBands() []*BandDescription_SubBandParameters { - if m != nil { - return m.SubBands +func (x *BandDescription) GetSubBands() []*BandDescription_SubBandParameters { + if x != nil { + return x.SubBands } return nil } -func (m *BandDescription) GetDataRates() map[uint32]*BandDescription_BandDataRate { - if m != nil { - return m.DataRates +func (x *BandDescription) GetDataRates() map[uint32]*BandDescription_BandDataRate { + if x != nil { + return x.DataRates } return nil } -func (m *BandDescription) GetFreqMultiplier() uint64 { - if m != nil { - return m.FreqMultiplier +func (x *BandDescription) GetFreqMultiplier() uint64 { + if x != nil { + return x.FreqMultiplier } return 0 } -func (m *BandDescription) GetImplementsCfList() bool { - if m != nil { - return m.ImplementsCfList +func (x *BandDescription) GetImplementsCfList() bool { + if x != nil { + return x.ImplementsCfList } return false } -func (m *BandDescription) GetCfListType() CFListType { - if m != nil { - return m.CfListType +func (x *BandDescription) GetCfListType() CFListType { + if x != nil { + return x.CfListType } return CFListType_FREQUENCIES } -func (m *BandDescription) GetReceiveDelay_1() *types.Duration { - if m != nil { - return m.ReceiveDelay_1 +func (x *BandDescription) GetReceiveDelay_1() *durationpb.Duration { + if x != nil { + return x.ReceiveDelay_1 } return nil } -func (m *BandDescription) GetReceiveDelay_2() *types.Duration { - if m != nil { - return m.ReceiveDelay_2 +func (x *BandDescription) GetReceiveDelay_2() *durationpb.Duration { + if x != nil { + return x.ReceiveDelay_2 } return nil } -func (m *BandDescription) GetJoinAcceptDelay_1() *types.Duration { - if m != nil { - return m.JoinAcceptDelay_1 +func (x *BandDescription) GetJoinAcceptDelay_1() *durationpb.Duration { + if x != nil { + return x.JoinAcceptDelay_1 } return nil } -func (m *BandDescription) GetJoinAcceptDelay_2() *types.Duration { - if m != nil { - return m.JoinAcceptDelay_2 +func (x *BandDescription) GetJoinAcceptDelay_2() *durationpb.Duration { + if x != nil { + return x.JoinAcceptDelay_2 } return nil } -func (m *BandDescription) GetMaxFcntGap() uint64 { - if m != nil { - return m.MaxFcntGap +func (x *BandDescription) GetMaxFcntGap() uint64 { + if x != nil { + return x.MaxFcntGap } return 0 } -func (m *BandDescription) GetSupportsDynamicAdr() bool { - if m != nil { - return m.SupportsDynamicAdr +func (x *BandDescription) GetSupportsDynamicAdr() bool { + if x != nil { + return x.SupportsDynamicAdr } return false } -func (m *BandDescription) GetAdrAckLimit() ADRAckLimitExponent { - if m != nil { - return m.AdrAckLimit +func (x *BandDescription) GetAdrAckLimit() ADRAckLimitExponent { + if x != nil { + return x.AdrAckLimit } return ADRAckLimitExponent_ADR_ACK_LIMIT_1 } -func (m *BandDescription) GetMinRetransmitTimeout() *types.Duration { - if m != nil { - return m.MinRetransmitTimeout +func (x *BandDescription) GetMinRetransmitTimeout() *durationpb.Duration { + if x != nil { + return x.MinRetransmitTimeout } return nil } -func (m *BandDescription) GetMaxRetransmitTimeout() *types.Duration { - if m != nil { - return m.MaxRetransmitTimeout +func (x *BandDescription) GetMaxRetransmitTimeout() *durationpb.Duration { + if x != nil { + return x.MaxRetransmitTimeout } return nil } -func (m *BandDescription) GetTxOffset() []float32 { - if m != nil { - return m.TxOffset +func (x *BandDescription) GetTxOffset() []float32 { + if x != nil { + return x.TxOffset } return nil } -func (m *BandDescription) GetMaxAdrDataRateIndex() DataRateIndex { - if m != nil { - return m.MaxAdrDataRateIndex +func (x *BandDescription) GetMaxAdrDataRateIndex() DataRateIndex { + if x != nil { + return x.MaxAdrDataRateIndex } return DataRateIndex_DATA_RATE_0 } -func (m *BandDescription) GetTxParamSetupReqSupport() bool { - if m != nil { - return m.TxParamSetupReqSupport +func (x *BandDescription) GetTxParamSetupReqSupport() bool { + if x != nil { + return x.TxParamSetupReqSupport } return false } -func (m *BandDescription) GetDefaultMaxEirp() float32 { - if m != nil { - return m.DefaultMaxEirp +func (x *BandDescription) GetDefaultMaxEirp() float32 { + if x != nil { + return x.DefaultMaxEirp } return 0 } -func (m *BandDescription) GetDefaultRx2Parameters() *BandDescription_Rx2Parameters { - if m != nil { - return m.DefaultRx2Parameters +func (x *BandDescription) GetDefaultRx2Parameters() *BandDescription_Rx2Parameters { + if x != nil { + return x.DefaultRx2Parameters } return nil } -func (m *BandDescription) GetBootDwellTime() *BandDescription_DwellTime { - if m != nil { - return m.BootDwellTime +func (x *BandDescription) GetBootDwellTime() *BandDescription_DwellTime { + if x != nil { + return x.BootDwellTime } return nil } -type BandDescription_Beacon struct { - DataRateIndex DataRateIndex `protobuf:"varint,1,opt,name=data_rate_index,json=dataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"data_rate_index,omitempty"` - CodingRate string `protobuf:"bytes,2,opt,name=coding_rate,json=codingRate,proto3" json:"coding_rate,omitempty"` - Frequencies []uint64 `protobuf:"varint,5,rep,packed,name=frequencies,proto3" json:"frequencies,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type ListBandsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Descriptions map[string]*ListBandsResponse_VersionedBandDescription `protobuf:"bytes,1,rep,name=descriptions,proto3" json:"descriptions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *BandDescription_Beacon) Reset() { *m = BandDescription_Beacon{} } -func (m *BandDescription_Beacon) String() string { return proto.CompactTextString(m) } -func (*BandDescription_Beacon) ProtoMessage() {} -func (*BandDescription_Beacon) Descriptor() ([]byte, []int) { - return fileDescriptor_2ed64f51a0283877, []int{6, 0} +func (x *ListBandsResponse) Reset() { + *x = ListBandsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListBandsResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *BandDescription_Beacon) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BandDescription_Beacon.Unmarshal(m, b) + +func (*ListBandsResponse) ProtoMessage() {} + +func (x *ListBandsResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListBandsResponse.ProtoReflect.Descriptor instead. +func (*ListBandsResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_configuration_services_proto_rawDescGZIP(), []int{7} } -func (m *BandDescription_Beacon) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BandDescription_Beacon.Marshal(b, m, deterministic) + +func (x *ListBandsResponse) GetDescriptions() map[string]*ListBandsResponse_VersionedBandDescription { + if x != nil { + return x.Descriptions + } + return nil } -func (m *BandDescription_Beacon) XXX_Merge(src proto.Message) { - xxx_messageInfo_BandDescription_Beacon.Merge(m, src) + +type GetPhyVersionsResponse_VersionInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BandId string `protobuf:"bytes,1,opt,name=band_id,json=bandId,proto3" json:"band_id,omitempty"` + PhyVersions []PHYVersion `protobuf:"varint,2,rep,packed,name=phy_versions,json=phyVersions,proto3,enum=ttn.lorawan.v3.PHYVersion" json:"phy_versions,omitempty"` } -func (m *BandDescription_Beacon) XXX_Size() int { - return xxx_messageInfo_BandDescription_Beacon.Size(m) + +func (x *GetPhyVersionsResponse_VersionInfo) Reset() { + *x = GetPhyVersionsResponse_VersionInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *BandDescription_Beacon) XXX_DiscardUnknown() { - xxx_messageInfo_BandDescription_Beacon.DiscardUnknown(m) + +func (x *GetPhyVersionsResponse_VersionInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_BandDescription_Beacon proto.InternalMessageInfo +func (*GetPhyVersionsResponse_VersionInfo) ProtoMessage() {} -func (m *BandDescription_Beacon) GetDataRateIndex() DataRateIndex { - if m != nil { - return m.DataRateIndex +func (x *GetPhyVersionsResponse_VersionInfo) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return DataRateIndex_DATA_RATE_0 + return mi.MessageOf(x) } -func (m *BandDescription_Beacon) GetCodingRate() string { - if m != nil { - return m.CodingRate +// Deprecated: Use GetPhyVersionsResponse_VersionInfo.ProtoReflect.Descriptor instead. +func (*GetPhyVersionsResponse_VersionInfo) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_configuration_services_proto_rawDescGZIP(), []int{4, 0} +} + +func (x *GetPhyVersionsResponse_VersionInfo) GetBandId() string { + if x != nil { + return x.BandId } return "" } -func (m *BandDescription_Beacon) GetFrequencies() []uint64 { - if m != nil { - return m.Frequencies +func (x *GetPhyVersionsResponse_VersionInfo) GetPhyVersions() []PHYVersion { + if x != nil { + return x.PhyVersions } return nil } -type BandDescription_Channel struct { - Frequency uint64 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"` - MinDataRate DataRateIndex `protobuf:"varint,2,opt,name=min_data_rate,json=minDataRate,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"min_data_rate,omitempty"` - MaxDataRate DataRateIndex `protobuf:"varint,3,opt,name=max_data_rate,json=maxDataRate,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"max_data_rate,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type BandDescription_Beacon struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *BandDescription_Channel) Reset() { *m = BandDescription_Channel{} } -func (m *BandDescription_Channel) String() string { return proto.CompactTextString(m) } -func (*BandDescription_Channel) ProtoMessage() {} -func (*BandDescription_Channel) Descriptor() ([]byte, []int) { - return fileDescriptor_2ed64f51a0283877, []int{6, 1} -} -func (m *BandDescription_Channel) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BandDescription_Channel.Unmarshal(m, b) + DataRateIndex DataRateIndex `protobuf:"varint,1,opt,name=data_rate_index,json=dataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"data_rate_index,omitempty"` + CodingRate string `protobuf:"bytes,2,opt,name=coding_rate,json=codingRate,proto3" json:"coding_rate,omitempty"` + Frequencies []uint64 `protobuf:"varint,5,rep,packed,name=frequencies,proto3" json:"frequencies,omitempty"` } -func (m *BandDescription_Channel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BandDescription_Channel.Marshal(b, m, deterministic) -} -func (m *BandDescription_Channel) XXX_Merge(src proto.Message) { - xxx_messageInfo_BandDescription_Channel.Merge(m, src) -} -func (m *BandDescription_Channel) XXX_Size() int { - return xxx_messageInfo_BandDescription_Channel.Size(m) + +func (x *BandDescription_Beacon) Reset() { + *x = BandDescription_Beacon{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *BandDescription_Channel) XXX_DiscardUnknown() { - xxx_messageInfo_BandDescription_Channel.DiscardUnknown(m) + +func (x *BandDescription_Beacon) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_BandDescription_Channel proto.InternalMessageInfo +func (*BandDescription_Beacon) ProtoMessage() {} -func (m *BandDescription_Channel) GetFrequency() uint64 { - if m != nil { - return m.Frequency +func (x *BandDescription_Beacon) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (m *BandDescription_Channel) GetMinDataRate() DataRateIndex { - if m != nil { - return m.MinDataRate - } - return DataRateIndex_DATA_RATE_0 +// Deprecated: Use BandDescription_Beacon.ProtoReflect.Descriptor instead. +func (*BandDescription_Beacon) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_configuration_services_proto_rawDescGZIP(), []int{6, 0} } -func (m *BandDescription_Channel) GetMaxDataRate() DataRateIndex { - if m != nil { - return m.MaxDataRate +func (x *BandDescription_Beacon) GetDataRateIndex() DataRateIndex { + if x != nil { + return x.DataRateIndex } return DataRateIndex_DATA_RATE_0 } -type BandDescription_SubBandParameters struct { - MinFrequency uint64 `protobuf:"varint,1,opt,name=min_frequency,json=minFrequency,proto3" json:"min_frequency,omitempty"` - MaxFrequency uint64 `protobuf:"varint,2,opt,name=max_frequency,json=maxFrequency,proto3" json:"max_frequency,omitempty"` - DutyCycle float32 `protobuf:"fixed32,3,opt,name=duty_cycle,json=dutyCycle,proto3" json:"duty_cycle,omitempty"` - MaxEirp float32 `protobuf:"fixed32,4,opt,name=max_eirp,json=maxEirp,proto3" json:"max_eirp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *BandDescription_SubBandParameters) Reset() { *m = BandDescription_SubBandParameters{} } -func (m *BandDescription_SubBandParameters) String() string { return proto.CompactTextString(m) } -func (*BandDescription_SubBandParameters) ProtoMessage() {} -func (*BandDescription_SubBandParameters) Descriptor() ([]byte, []int) { - return fileDescriptor_2ed64f51a0283877, []int{6, 2} -} -func (m *BandDescription_SubBandParameters) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BandDescription_SubBandParameters.Unmarshal(m, b) +func (x *BandDescription_Beacon) GetCodingRate() string { + if x != nil { + return x.CodingRate + } + return "" } -func (m *BandDescription_SubBandParameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BandDescription_SubBandParameters.Marshal(b, m, deterministic) + +func (x *BandDescription_Beacon) GetFrequencies() []uint64 { + if x != nil { + return x.Frequencies + } + return nil } -func (m *BandDescription_SubBandParameters) XXX_Merge(src proto.Message) { - xxx_messageInfo_BandDescription_SubBandParameters.Merge(m, src) + +type BandDescription_Channel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Frequency uint64 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"` + MinDataRate DataRateIndex `protobuf:"varint,2,opt,name=min_data_rate,json=minDataRate,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"min_data_rate,omitempty"` + MaxDataRate DataRateIndex `protobuf:"varint,3,opt,name=max_data_rate,json=maxDataRate,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"max_data_rate,omitempty"` } -func (m *BandDescription_SubBandParameters) XXX_Size() int { - return xxx_messageInfo_BandDescription_SubBandParameters.Size(m) + +func (x *BandDescription_Channel) Reset() { + *x = BandDescription_Channel{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *BandDescription_SubBandParameters) XXX_DiscardUnknown() { - xxx_messageInfo_BandDescription_SubBandParameters.DiscardUnknown(m) + +func (x *BandDescription_Channel) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_BandDescription_SubBandParameters proto.InternalMessageInfo +func (*BandDescription_Channel) ProtoMessage() {} -func (m *BandDescription_SubBandParameters) GetMinFrequency() uint64 { - if m != nil { - return m.MinFrequency +func (x *BandDescription_Channel) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (m *BandDescription_SubBandParameters) GetMaxFrequency() uint64 { - if m != nil { - return m.MaxFrequency - } - return 0 +// Deprecated: Use BandDescription_Channel.ProtoReflect.Descriptor instead. +func (*BandDescription_Channel) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_configuration_services_proto_rawDescGZIP(), []int{6, 1} } -func (m *BandDescription_SubBandParameters) GetDutyCycle() float32 { - if m != nil { - return m.DutyCycle +func (x *BandDescription_Channel) GetFrequency() uint64 { + if x != nil { + return x.Frequency } return 0 } -func (m *BandDescription_SubBandParameters) GetMaxEirp() float32 { - if m != nil { - return m.MaxEirp +func (x *BandDescription_Channel) GetMinDataRate() DataRateIndex { + if x != nil { + return x.MinDataRate } - return 0 + return DataRateIndex_DATA_RATE_0 } -type BandDescription_BandDataRate struct { - Rate *DataRate `protobuf:"bytes,1,opt,name=rate,proto3" json:"rate,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *BandDescription_Channel) GetMaxDataRate() DataRateIndex { + if x != nil { + return x.MaxDataRate + } + return DataRateIndex_DATA_RATE_0 } -func (m *BandDescription_BandDataRate) Reset() { *m = BandDescription_BandDataRate{} } -func (m *BandDescription_BandDataRate) String() string { return proto.CompactTextString(m) } -func (*BandDescription_BandDataRate) ProtoMessage() {} -func (*BandDescription_BandDataRate) Descriptor() ([]byte, []int) { - return fileDescriptor_2ed64f51a0283877, []int{6, 3} -} -func (m *BandDescription_BandDataRate) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BandDescription_BandDataRate.Unmarshal(m, b) -} -func (m *BandDescription_BandDataRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BandDescription_BandDataRate.Marshal(b, m, deterministic) -} -func (m *BandDescription_BandDataRate) XXX_Merge(src proto.Message) { - xxx_messageInfo_BandDescription_BandDataRate.Merge(m, src) +type BandDescription_SubBandParameters struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MinFrequency uint64 `protobuf:"varint,1,opt,name=min_frequency,json=minFrequency,proto3" json:"min_frequency,omitempty"` + MaxFrequency uint64 `protobuf:"varint,2,opt,name=max_frequency,json=maxFrequency,proto3" json:"max_frequency,omitempty"` + DutyCycle float32 `protobuf:"fixed32,3,opt,name=duty_cycle,json=dutyCycle,proto3" json:"duty_cycle,omitempty"` + MaxEirp float32 `protobuf:"fixed32,4,opt,name=max_eirp,json=maxEirp,proto3" json:"max_eirp,omitempty"` } -func (m *BandDescription_BandDataRate) XXX_Size() int { - return xxx_messageInfo_BandDescription_BandDataRate.Size(m) + +func (x *BandDescription_SubBandParameters) Reset() { + *x = BandDescription_SubBandParameters{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *BandDescription_BandDataRate) XXX_DiscardUnknown() { - xxx_messageInfo_BandDescription_BandDataRate.DiscardUnknown(m) + +func (x *BandDescription_SubBandParameters) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_BandDescription_BandDataRate proto.InternalMessageInfo +func (*BandDescription_SubBandParameters) ProtoMessage() {} -func (m *BandDescription_BandDataRate) GetRate() *DataRate { - if m != nil { - return m.Rate +func (x *BandDescription_SubBandParameters) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type BandDescription_Rx2Parameters struct { - DataRateIndex DataRateIndex `protobuf:"varint,1,opt,name=data_rate_index,json=dataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"data_rate_index,omitempty"` - Frequency uint64 `protobuf:"varint,2,opt,name=frequency,proto3" json:"frequency,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use BandDescription_SubBandParameters.ProtoReflect.Descriptor instead. +func (*BandDescription_SubBandParameters) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_configuration_services_proto_rawDescGZIP(), []int{6, 2} } -func (m *BandDescription_Rx2Parameters) Reset() { *m = BandDescription_Rx2Parameters{} } -func (m *BandDescription_Rx2Parameters) String() string { return proto.CompactTextString(m) } -func (*BandDescription_Rx2Parameters) ProtoMessage() {} -func (*BandDescription_Rx2Parameters) Descriptor() ([]byte, []int) { - return fileDescriptor_2ed64f51a0283877, []int{6, 5} -} -func (m *BandDescription_Rx2Parameters) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BandDescription_Rx2Parameters.Unmarshal(m, b) -} -func (m *BandDescription_Rx2Parameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BandDescription_Rx2Parameters.Marshal(b, m, deterministic) -} -func (m *BandDescription_Rx2Parameters) XXX_Merge(src proto.Message) { - xxx_messageInfo_BandDescription_Rx2Parameters.Merge(m, src) -} -func (m *BandDescription_Rx2Parameters) XXX_Size() int { - return xxx_messageInfo_BandDescription_Rx2Parameters.Size(m) -} -func (m *BandDescription_Rx2Parameters) XXX_DiscardUnknown() { - xxx_messageInfo_BandDescription_Rx2Parameters.DiscardUnknown(m) +func (x *BandDescription_SubBandParameters) GetMinFrequency() uint64 { + if x != nil { + return x.MinFrequency + } + return 0 } -var xxx_messageInfo_BandDescription_Rx2Parameters proto.InternalMessageInfo - -func (m *BandDescription_Rx2Parameters) GetDataRateIndex() DataRateIndex { - if m != nil { - return m.DataRateIndex +func (x *BandDescription_SubBandParameters) GetMaxFrequency() uint64 { + if x != nil { + return x.MaxFrequency } - return DataRateIndex_DATA_RATE_0 + return 0 } -func (m *BandDescription_Rx2Parameters) GetFrequency() uint64 { - if m != nil { - return m.Frequency +func (x *BandDescription_SubBandParameters) GetDutyCycle() float32 { + if x != nil { + return x.DutyCycle } return 0 } -type BandDescription_DwellTime struct { - Uplinks *types.BoolValue `protobuf:"bytes,1,opt,name=uplinks,proto3" json:"uplinks,omitempty"` - Downlinks *types.BoolValue `protobuf:"bytes,2,opt,name=downlinks,proto3" json:"downlinks,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *BandDescription_SubBandParameters) GetMaxEirp() float32 { + if x != nil { + return x.MaxEirp + } + return 0 } -func (m *BandDescription_DwellTime) Reset() { *m = BandDescription_DwellTime{} } -func (m *BandDescription_DwellTime) String() string { return proto.CompactTextString(m) } -func (*BandDescription_DwellTime) ProtoMessage() {} -func (*BandDescription_DwellTime) Descriptor() ([]byte, []int) { - return fileDescriptor_2ed64f51a0283877, []int{6, 6} -} -func (m *BandDescription_DwellTime) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BandDescription_DwellTime.Unmarshal(m, b) -} -func (m *BandDescription_DwellTime) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BandDescription_DwellTime.Marshal(b, m, deterministic) -} -func (m *BandDescription_DwellTime) XXX_Merge(src proto.Message) { - xxx_messageInfo_BandDescription_DwellTime.Merge(m, src) +type BandDescription_BandDataRate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Rate *DataRate `protobuf:"bytes,1,opt,name=rate,proto3" json:"rate,omitempty"` } -func (m *BandDescription_DwellTime) XXX_Size() int { - return xxx_messageInfo_BandDescription_DwellTime.Size(m) + +func (x *BandDescription_BandDataRate) Reset() { + *x = BandDescription_BandDataRate{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *BandDescription_DwellTime) XXX_DiscardUnknown() { - xxx_messageInfo_BandDescription_DwellTime.DiscardUnknown(m) + +func (x *BandDescription_BandDataRate) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_BandDescription_DwellTime proto.InternalMessageInfo +func (*BandDescription_BandDataRate) ProtoMessage() {} -func (m *BandDescription_DwellTime) GetUplinks() *types.BoolValue { - if m != nil { - return m.Uplinks +func (x *BandDescription_BandDataRate) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) +} + +// Deprecated: Use BandDescription_BandDataRate.ProtoReflect.Descriptor instead. +func (*BandDescription_BandDataRate) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_configuration_services_proto_rawDescGZIP(), []int{6, 3} } -func (m *BandDescription_DwellTime) GetDownlinks() *types.BoolValue { - if m != nil { - return m.Downlinks +func (x *BandDescription_BandDataRate) GetRate() *DataRate { + if x != nil { + return x.Rate } return nil } -type ListBandsResponse struct { - Descriptions map[string]*ListBandsResponse_VersionedBandDescription `protobuf:"bytes,1,rep,name=descriptions,proto3" json:"descriptions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type BandDescription_Rx2Parameters struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ListBandsResponse) Reset() { *m = ListBandsResponse{} } -func (m *ListBandsResponse) String() string { return proto.CompactTextString(m) } -func (*ListBandsResponse) ProtoMessage() {} -func (*ListBandsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_2ed64f51a0283877, []int{7} + DataRateIndex DataRateIndex `protobuf:"varint,1,opt,name=data_rate_index,json=dataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"data_rate_index,omitempty"` + Frequency uint64 `protobuf:"varint,2,opt,name=frequency,proto3" json:"frequency,omitempty"` } -func (m *ListBandsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListBandsResponse.Unmarshal(m, b) -} -func (m *ListBandsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListBandsResponse.Marshal(b, m, deterministic) -} -func (m *ListBandsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListBandsResponse.Merge(m, src) -} -func (m *ListBandsResponse) XXX_Size() int { - return xxx_messageInfo_ListBandsResponse.Size(m) + +func (x *BandDescription_Rx2Parameters) Reset() { + *x = BandDescription_Rx2Parameters{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListBandsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListBandsResponse.DiscardUnknown(m) + +func (x *BandDescription_Rx2Parameters) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ListBandsResponse proto.InternalMessageInfo +func (*BandDescription_Rx2Parameters) ProtoMessage() {} -func (m *ListBandsResponse) GetDescriptions() map[string]*ListBandsResponse_VersionedBandDescription { - if m != nil { - return m.Descriptions +func (x *BandDescription_Rx2Parameters) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type ListBandsResponse_VersionedBandDescription struct { - Band map[string]*BandDescription `protobuf:"bytes,1,rep,name=band,proto3" json:"band,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use BandDescription_Rx2Parameters.ProtoReflect.Descriptor instead. +func (*BandDescription_Rx2Parameters) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_configuration_services_proto_rawDescGZIP(), []int{6, 5} } -func (m *ListBandsResponse_VersionedBandDescription) Reset() { - *m = ListBandsResponse_VersionedBandDescription{} -} -func (m *ListBandsResponse_VersionedBandDescription) String() string { - return proto.CompactTextString(m) -} -func (*ListBandsResponse_VersionedBandDescription) ProtoMessage() {} -func (*ListBandsResponse_VersionedBandDescription) Descriptor() ([]byte, []int) { - return fileDescriptor_2ed64f51a0283877, []int{7, 0} -} -func (m *ListBandsResponse_VersionedBandDescription) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListBandsResponse_VersionedBandDescription.Unmarshal(m, b) -} -func (m *ListBandsResponse_VersionedBandDescription) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListBandsResponse_VersionedBandDescription.Marshal(b, m, deterministic) -} -func (m *ListBandsResponse_VersionedBandDescription) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListBandsResponse_VersionedBandDescription.Merge(m, src) -} -func (m *ListBandsResponse_VersionedBandDescription) XXX_Size() int { - return xxx_messageInfo_ListBandsResponse_VersionedBandDescription.Size(m) -} -func (m *ListBandsResponse_VersionedBandDescription) XXX_DiscardUnknown() { - xxx_messageInfo_ListBandsResponse_VersionedBandDescription.DiscardUnknown(m) +func (x *BandDescription_Rx2Parameters) GetDataRateIndex() DataRateIndex { + if x != nil { + return x.DataRateIndex + } + return DataRateIndex_DATA_RATE_0 } -var xxx_messageInfo_ListBandsResponse_VersionedBandDescription proto.InternalMessageInfo - -func (m *ListBandsResponse_VersionedBandDescription) GetBand() map[string]*BandDescription { - if m != nil { - return m.Band +func (x *BandDescription_Rx2Parameters) GetFrequency() uint64 { + if x != nil { + return x.Frequency } - return nil + return 0 } -func init() { - proto.RegisterType((*ListFrequencyPlansRequest)(nil), "ttn.lorawan.v3.ListFrequencyPlansRequest") - golang_proto.RegisterType((*ListFrequencyPlansRequest)(nil), "ttn.lorawan.v3.ListFrequencyPlansRequest") - proto.RegisterType((*FrequencyPlanDescription)(nil), "ttn.lorawan.v3.FrequencyPlanDescription") - golang_proto.RegisterType((*FrequencyPlanDescription)(nil), "ttn.lorawan.v3.FrequencyPlanDescription") - proto.RegisterType((*ListFrequencyPlansResponse)(nil), "ttn.lorawan.v3.ListFrequencyPlansResponse") - golang_proto.RegisterType((*ListFrequencyPlansResponse)(nil), "ttn.lorawan.v3.ListFrequencyPlansResponse") - proto.RegisterType((*GetPhyVersionsRequest)(nil), "ttn.lorawan.v3.GetPhyVersionsRequest") - golang_proto.RegisterType((*GetPhyVersionsRequest)(nil), "ttn.lorawan.v3.GetPhyVersionsRequest") - proto.RegisterType((*GetPhyVersionsResponse)(nil), "ttn.lorawan.v3.GetPhyVersionsResponse") - golang_proto.RegisterType((*GetPhyVersionsResponse)(nil), "ttn.lorawan.v3.GetPhyVersionsResponse") - proto.RegisterType((*GetPhyVersionsResponse_VersionInfo)(nil), "ttn.lorawan.v3.GetPhyVersionsResponse.VersionInfo") - golang_proto.RegisterType((*GetPhyVersionsResponse_VersionInfo)(nil), "ttn.lorawan.v3.GetPhyVersionsResponse.VersionInfo") - proto.RegisterType((*ListBandsRequest)(nil), "ttn.lorawan.v3.ListBandsRequest") - golang_proto.RegisterType((*ListBandsRequest)(nil), "ttn.lorawan.v3.ListBandsRequest") - proto.RegisterType((*BandDescription)(nil), "ttn.lorawan.v3.BandDescription") - golang_proto.RegisterType((*BandDescription)(nil), "ttn.lorawan.v3.BandDescription") - proto.RegisterMapType((map[uint32]*BandDescription_BandDataRate)(nil), "ttn.lorawan.v3.BandDescription.DataRatesEntry") - golang_proto.RegisterMapType((map[uint32]*BandDescription_BandDataRate)(nil), "ttn.lorawan.v3.BandDescription.DataRatesEntry") - proto.RegisterType((*BandDescription_Beacon)(nil), "ttn.lorawan.v3.BandDescription.Beacon") - golang_proto.RegisterType((*BandDescription_Beacon)(nil), "ttn.lorawan.v3.BandDescription.Beacon") - proto.RegisterType((*BandDescription_Channel)(nil), "ttn.lorawan.v3.BandDescription.Channel") - golang_proto.RegisterType((*BandDescription_Channel)(nil), "ttn.lorawan.v3.BandDescription.Channel") - proto.RegisterType((*BandDescription_SubBandParameters)(nil), "ttn.lorawan.v3.BandDescription.SubBandParameters") - golang_proto.RegisterType((*BandDescription_SubBandParameters)(nil), "ttn.lorawan.v3.BandDescription.SubBandParameters") - proto.RegisterType((*BandDescription_BandDataRate)(nil), "ttn.lorawan.v3.BandDescription.BandDataRate") - golang_proto.RegisterType((*BandDescription_BandDataRate)(nil), "ttn.lorawan.v3.BandDescription.BandDataRate") - proto.RegisterType((*BandDescription_Rx2Parameters)(nil), "ttn.lorawan.v3.BandDescription.Rx2Parameters") - golang_proto.RegisterType((*BandDescription_Rx2Parameters)(nil), "ttn.lorawan.v3.BandDescription.Rx2Parameters") - proto.RegisterType((*BandDescription_DwellTime)(nil), "ttn.lorawan.v3.BandDescription.DwellTime") - golang_proto.RegisterType((*BandDescription_DwellTime)(nil), "ttn.lorawan.v3.BandDescription.DwellTime") - proto.RegisterType((*ListBandsResponse)(nil), "ttn.lorawan.v3.ListBandsResponse") - golang_proto.RegisterType((*ListBandsResponse)(nil), "ttn.lorawan.v3.ListBandsResponse") - proto.RegisterMapType((map[string]*ListBandsResponse_VersionedBandDescription)(nil), "ttn.lorawan.v3.ListBandsResponse.DescriptionsEntry") - golang_proto.RegisterMapType((map[string]*ListBandsResponse_VersionedBandDescription)(nil), "ttn.lorawan.v3.ListBandsResponse.DescriptionsEntry") - proto.RegisterType((*ListBandsResponse_VersionedBandDescription)(nil), "ttn.lorawan.v3.ListBandsResponse.VersionedBandDescription") - golang_proto.RegisterType((*ListBandsResponse_VersionedBandDescription)(nil), "ttn.lorawan.v3.ListBandsResponse.VersionedBandDescription") - proto.RegisterMapType((map[string]*BandDescription)(nil), "ttn.lorawan.v3.ListBandsResponse.VersionedBandDescription.BandEntry") - golang_proto.RegisterMapType((map[string]*BandDescription)(nil), "ttn.lorawan.v3.ListBandsResponse.VersionedBandDescription.BandEntry") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/configuration_services.proto", fileDescriptor_2ed64f51a0283877) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/configuration_services.proto", fileDescriptor_2ed64f51a0283877) -} - -var fileDescriptor_2ed64f51a0283877 = []byte{ - // 1783 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x4f, 0x6f, 0xdb, 0xc8, - 0x15, 0x2f, 0x25, 0xd9, 0x96, 0x9e, 0x2c, 0x59, 0x9e, 0x38, 0x0e, 0xcd, 0xc4, 0x8e, 0xea, 0x60, - 0xb3, 0xda, 0x22, 0x96, 0x1a, 0xa5, 0x0b, 0x2c, 0x8c, 0xb6, 0x80, 0x6d, 0x39, 0x59, 0x1b, 0x49, - 0xd7, 0xa5, 0xbd, 0xdb, 0x6d, 0x2e, 0xc4, 0x88, 0x1c, 0x49, 0xb3, 0x26, 0x87, 0x5c, 0x72, 0x24, - 0x4b, 0x48, 0xb7, 0x87, 0x45, 0xbf, 0xc1, 0x1e, 0x7a, 0xeb, 0x07, 0x28, 0xd0, 0x2f, 0xd0, 0xd3, - 0x7e, 0x82, 0x5e, 0x0a, 0xf4, 0x0b, 0xb4, 0xa7, 0x5e, 0x0a, 0xf4, 0xd8, 0x53, 0x31, 0xc3, 0x3f, - 0x22, 0x25, 0xc5, 0x4a, 0x8a, 0xde, 0x38, 0xef, 0xcf, 0xef, 0xbd, 0x79, 0xf3, 0x9b, 0x99, 0x37, - 0x84, 0xa6, 0xed, 0xfa, 0xf8, 0x06, 0xb3, 0x83, 0x80, 0x63, 0xf3, 0xba, 0x85, 0x3d, 0xda, 0x32, - 0x5d, 0xd6, 0xa3, 0xfd, 0xa1, 0x8f, 0x39, 0x75, 0x99, 0x11, 0x10, 0x7f, 0x44, 0x4d, 0x12, 0x34, - 0x3d, 0xdf, 0xe5, 0x2e, 0xaa, 0x72, 0xce, 0x62, 0x9f, 0xe6, 0xe8, 0x99, 0xd6, 0xe9, 0x53, 0x3e, - 0x18, 0x76, 0x9b, 0xa6, 0xeb, 0xb4, 0xae, 0x06, 0xe4, 0x6a, 0x40, 0x59, 0x3f, 0x38, 0x63, 0xd6, - 0x30, 0xe0, 0x3e, 0x25, 0x41, 0x4b, 0x7a, 0x99, 0x07, 0x7d, 0xc2, 0x0e, 0xfa, 0xee, 0x41, 0xcf, - 0xc6, 0xfd, 0xa0, 0x85, 0x19, 0x73, 0xb9, 0x44, 0x8f, 0x50, 0xb5, 0xa3, 0x14, 0x0a, 0x61, 0x23, - 0x77, 0xe2, 0xf9, 0xee, 0x78, 0x92, 0x76, 0x1e, 0x61, 0x9b, 0x5a, 0x98, 0x93, 0xd6, 0xdc, 0x47, - 0x04, 0x71, 0x90, 0x82, 0xe8, 0xbb, 0x7d, 0x37, 0x74, 0xee, 0x0e, 0x7b, 0x72, 0x24, 0x07, 0xf2, - 0x2b, 0x32, 0xdf, 0xeb, 0xbb, 0x6e, 0xdf, 0x26, 0x53, 0x2b, 0x2b, 0x9a, 0x70, 0xa4, 0x7f, 0x10, - 0xe9, 0x45, 0x41, 0xe6, 0xf3, 0x9d, 0xf3, 0xbe, 0xf1, 0xb1, 0xe7, 0x11, 0x3f, 0xd6, 0x3f, 0x9c, - 0xaf, 0x6a, 0x5c, 0x33, 0x69, 0xb0, 0xff, 0x12, 0x76, 0x5e, 0xd2, 0x80, 0x3f, 0xf7, 0xc9, 0xd7, - 0x43, 0xc2, 0xcc, 0xc9, 0x85, 0x8d, 0x59, 0xa0, 0x8b, 0x41, 0xc0, 0xd1, 0x07, 0x50, 0xed, 0xe2, - 0x80, 0x18, 0xbd, 0x58, 0xab, 0x2a, 0x75, 0xa5, 0x51, 0xd1, 0x2b, 0x42, 0x9a, 0xb8, 0x1c, 0x16, - 0xff, 0xfd, 0xc7, 0x9d, 0x42, 0xf1, 0x07, 0x35, 0x65, 0xff, 0xb7, 0xa0, 0x66, 0x90, 0x3a, 0x24, - 0x30, 0x7d, 0xea, 0x89, 0x8c, 0x51, 0x15, 0x72, 0xd4, 0x92, 0x00, 0x25, 0x3d, 0x47, 0x2d, 0x74, - 0x0f, 0xd6, 0x24, 0x38, 0xb5, 0xd4, 0x9c, 0x14, 0xae, 0x8a, 0xe1, 0x99, 0x85, 0x10, 0x14, 0x18, - 0x76, 0x88, 0x9a, 0x97, 0x52, 0xf9, 0xbd, 0x20, 0x93, 0xc2, 0x82, 0x4c, 0xf6, 0x5d, 0xd0, 0x16, - 0xcd, 0x26, 0xf0, 0x5c, 0x16, 0x10, 0xf4, 0x4b, 0xd8, 0x48, 0xfc, 0x0d, 0x4f, 0xa8, 0x54, 0xa5, - 0x9e, 0x6f, 0x94, 0xdb, 0x8d, 0x66, 0x96, 0x4c, 0xcd, 0xb7, 0x4d, 0x42, 0xaf, 0xf6, 0x32, 0xd0, - 0xfb, 0x87, 0x70, 0xf7, 0x05, 0xe1, 0x17, 0x83, 0xc9, 0x17, 0xc4, 0x0f, 0xc4, 0xba, 0xc4, 0xa5, - 0x93, 0xb3, 0x63, 0x96, 0x91, 0x4c, 0x79, 0x55, 0x0c, 0xcf, 0xac, 0x54, 0xb1, 0xfe, 0xa6, 0xc0, - 0xf6, 0xac, 0x73, 0x94, 0xe9, 0xe7, 0xb0, 0x3e, 0x0a, 0x65, 0x06, 0x65, 0x3d, 0x57, 0xcd, 0xc9, - 0x34, 0xdb, 0xb3, 0x69, 0x2e, 0xf6, 0x6e, 0x46, 0x82, 0x33, 0xd6, 0x73, 0xf5, 0xf2, 0x68, 0x3a, - 0xd0, 0x08, 0x94, 0x53, 0xba, 0xb7, 0xe6, 0x88, 0x7e, 0x06, 0xeb, 0xde, 0x60, 0x62, 0x44, 0xae, - 0x81, 0x0c, 0x5f, 0x6d, 0x6b, 0xb3, 0xe1, 0x2f, 0x3e, 0xfd, 0x75, 0x04, 0xa7, 0x97, 0xbd, 0x69, - 0x1e, 0xfb, 0xbf, 0x81, 0x9a, 0x58, 0x85, 0x63, 0xcc, 0xac, 0xa5, 0xf5, 0x40, 0xa7, 0x50, 0x4e, - 0xc5, 0x92, 0x54, 0xb8, 0x35, 0xd4, 0x71, 0xf1, 0x3f, 0xc7, 0x2b, 0xdf, 0x2a, 0xb9, 0x9a, 0xa2, - 0xc3, 0x34, 0x68, 0xaa, 0xac, 0xff, 0xdc, 0x82, 0x0d, 0x11, 0xfa, 0x36, 0xee, 0xfd, 0x1c, 0x56, - 0xbb, 0x04, 0x9b, 0x51, 0xbc, 0x72, 0xfb, 0xf1, 0x6c, 0xbc, 0x19, 0x80, 0xe6, 0xb1, 0xb4, 0xd6, - 0x23, 0x2f, 0xd4, 0x86, 0xbb, 0x1e, 0x65, 0x7d, 0x23, 0xb0, 0x5d, 0x9e, 0x70, 0x92, 0x92, 0x40, - 0xad, 0xd7, 0xf3, 0x8d, 0x82, 0x7e, 0x47, 0x28, 0x2f, 0x6d, 0x37, 0x21, 0x22, 0x25, 0x01, 0x6a, - 0xc2, 0x1d, 0x07, 0x8f, 0x8d, 0xa1, 0x67, 0x53, 0x76, 0x6d, 0x98, 0x03, 0xcc, 0x18, 0xb1, 0x83, - 0x88, 0xc7, 0x9b, 0x0e, 0x1e, 0x7f, 0x2e, 0x35, 0x27, 0x91, 0x02, 0x5d, 0xc0, 0xc6, 0xac, 0xed, - 0x8a, 0xa4, 0xc1, 0x87, 0xcb, 0x92, 0x8d, 0x20, 0xf4, 0xea, 0x30, 0x8b, 0xd8, 0x86, 0xbb, 0x22, - 0x03, 0xcb, 0xbd, 0x61, 0x59, 0xdc, 0x55, 0x99, 0x83, 0x48, 0xaf, 0x13, 0xe9, 0x12, 0x9f, 0x2b, - 0xd8, 0x9c, 0xb7, 0x5f, 0x7b, 0xbf, 0x3c, 0x6a, 0xd6, 0x2c, 0xea, 0x2f, 0xa0, 0x14, 0x0c, 0xbb, - 0x86, 0xa0, 0x40, 0xa0, 0x16, 0x25, 0xda, 0xd3, 0x65, 0x68, 0x97, 0xc3, 0xae, 0x10, 0x5d, 0x60, - 0x1f, 0x3b, 0x84, 0x13, 0x3f, 0xd0, 0x8b, 0x41, 0x28, 0x0a, 0xd0, 0x2b, 0x00, 0x0b, 0x73, 0x6c, - 0xf8, 0x98, 0x93, 0x40, 0x2d, 0x49, 0xc0, 0xe6, 0x32, 0xc0, 0x0e, 0xe6, 0x58, 0x17, 0x0e, 0xa7, - 0x8c, 0xfb, 0x13, 0xbd, 0x64, 0xc5, 0x63, 0xf4, 0x61, 0x78, 0x50, 0x18, 0xce, 0xd0, 0xe6, 0xd4, - 0xb3, 0x29, 0xf1, 0x55, 0xa8, 0x2b, 0x8d, 0x42, 0xb8, 0xfd, 0x5f, 0x25, 0x52, 0xf4, 0x04, 0x10, - 0x75, 0x3c, 0x9b, 0x38, 0x84, 0xf1, 0xc0, 0x30, 0x7b, 0x86, 0x4d, 0x03, 0xae, 0x96, 0xeb, 0x4a, - 0xa3, 0xa8, 0xd7, 0xa6, 0x9a, 0x93, 0x9e, 0xd8, 0x0f, 0xe8, 0xa7, 0xb0, 0x1e, 0x99, 0x18, 0x7c, - 0xe2, 0x11, 0x75, 0x7d, 0x31, 0xd7, 0x4f, 0x9e, 0x0b, 0xeb, 0xab, 0x89, 0x47, 0x74, 0x30, 0x7b, - 0xf1, 0x37, 0x3a, 0x82, 0x0d, 0x9f, 0x98, 0x84, 0x8e, 0x88, 0x61, 0x11, 0x1b, 0x4f, 0x8c, 0xa7, - 0x6a, 0x45, 0x92, 0x77, 0xa7, 0x19, 0x5e, 0x02, 0xcd, 0xf8, 0x12, 0x68, 0x76, 0xa2, 0x2b, 0x44, - 0xaf, 0x44, 0x1e, 0x1d, 0xe1, 0xf0, 0x74, 0x1e, 0xa2, 0xad, 0x56, 0xdf, 0x0b, 0xa2, 0x8d, 0x3e, - 0x85, 0x3b, 0x5f, 0xb9, 0x94, 0x19, 0xd8, 0x34, 0x89, 0xc7, 0x93, 0x4c, 0x36, 0x96, 0xc1, 0xd4, - 0x84, 0xd7, 0x91, 0x74, 0x8a, 0x92, 0x59, 0x88, 0xd4, 0x56, 0x6b, 0xef, 0x8b, 0xd4, 0x46, 0x75, - 0x58, 0x17, 0xbc, 0xee, 0x99, 0x8c, 0x1b, 0x7d, 0xec, 0xa9, 0x9b, 0x72, 0xad, 0xc0, 0xc1, 0xe3, - 0xe7, 0x26, 0xe3, 0x2f, 0xb0, 0x87, 0x7e, 0x0c, 0x5b, 0xc1, 0xd0, 0xf3, 0x5c, 0x9f, 0x07, 0x86, - 0x35, 0x61, 0xd8, 0xa1, 0xa6, 0x81, 0x2d, 0x5f, 0x45, 0x72, 0xa5, 0x50, 0xac, 0xeb, 0x84, 0xaa, - 0x23, 0xcb, 0x47, 0x2f, 0xa0, 0x82, 0x2d, 0xdf, 0xc0, 0xe6, 0xb5, 0x61, 0x53, 0x87, 0x72, 0xf5, - 0x8e, 0x5c, 0xac, 0x47, 0xb3, 0x8b, 0x75, 0xd4, 0xd1, 0x8f, 0xcc, 0xeb, 0x97, 0xc2, 0xe4, 0x74, - 0xec, 0xb9, 0x8c, 0x30, 0xae, 0x97, 0xb1, 0xe5, 0xc7, 0x42, 0xf4, 0x19, 0x6c, 0x3b, 0x94, 0x19, - 0x3e, 0xe1, 0x3e, 0x66, 0x81, 0x43, 0xb9, 0xc1, 0xa9, 0x43, 0xdc, 0x21, 0x57, 0xb7, 0x96, 0xcd, - 0x74, 0xcb, 0xa1, 0x4c, 0x4f, 0xfc, 0xae, 0x42, 0x37, 0x09, 0x88, 0xc7, 0x8b, 0x00, 0xef, 0x2e, - 0x07, 0xc4, 0xe3, 0x79, 0xc0, 0xfb, 0x50, 0xe2, 0x63, 0xc3, 0xed, 0xf5, 0x02, 0xc2, 0xd5, 0xed, - 0x7a, 0xbe, 0x91, 0xd3, 0x8b, 0x7c, 0xfc, 0x99, 0x1c, 0xa3, 0x4b, 0xb8, 0x27, 0xa2, 0x89, 0x5a, - 0x24, 0x3b, 0xcc, 0xa0, 0xcc, 0x22, 0x63, 0xf5, 0x9e, 0xac, 0xc8, 0xee, 0x6c, 0x45, 0xe2, 0x6d, - 0x75, 0x26, 0x8c, 0xe4, 0xa1, 0x72, 0x64, 0xf9, 0x19, 0x21, 0x3a, 0x04, 0x8d, 0x8f, 0x0d, 0x4f, - 0xec, 0x64, 0x23, 0x20, 0x7c, 0xe8, 0x19, 0x62, 0xb7, 0x45, 0xab, 0xa0, 0xaa, 0x72, 0x51, 0xb6, - 0xf9, 0x58, 0x6e, 0xf5, 0x4b, 0xa1, 0xd7, 0xc9, 0xd7, 0x97, 0xa1, 0x16, 0x35, 0xa0, 0x66, 0x91, - 0x1e, 0x1e, 0xda, 0xdc, 0x10, 0x89, 0x11, 0xea, 0x7b, 0xea, 0x4e, 0x5d, 0x69, 0xe4, 0xf4, 0x6a, - 0x24, 0x7f, 0x85, 0xc7, 0xa7, 0xd4, 0xf7, 0x90, 0x09, 0xdb, 0xb1, 0xa5, 0x3f, 0x6e, 0x87, 0xe1, - 0xe4, 0xc1, 0xa1, 0xee, 0xc9, 0x42, 0x1d, 0x2c, 0x3b, 0x20, 0xf4, 0x71, 0x3b, 0x75, 0xda, 0x6c, - 0x45, 0x60, 0x19, 0xa9, 0xe8, 0x29, 0xba, 0xae, 0xcb, 0x0d, 0xeb, 0x86, 0xd8, 0xb6, 0x5c, 0x09, - 0xf5, 0xa1, 0x44, 0xff, 0x68, 0xe9, 0xf1, 0x23, 0x3c, 0xc4, 0x1a, 0xe8, 0x15, 0x81, 0x90, 0x0c, - 0xb5, 0x3f, 0x28, 0xb0, 0x1a, 0xde, 0x37, 0xe8, 0x14, 0x36, 0x66, 0xab, 0xae, 0xbc, 0x4b, 0xd5, - 0x2b, 0x56, 0xa6, 0xde, 0x0f, 0xa1, 0x6c, 0xba, 0x96, 0xb8, 0xb0, 0x04, 0x50, 0xd4, 0x6e, 0x41, - 0x28, 0x12, 0x56, 0xa8, 0x0e, 0xe5, 0xf4, 0x2d, 0xb6, 0x22, 0x6f, 0xb1, 0xb4, 0xe8, 0xbc, 0x50, - 0xcc, 0xd7, 0x0a, 0xe7, 0x85, 0x62, 0xa1, 0xb6, 0xa2, 0xfd, 0x49, 0x81, 0xb5, 0xe8, 0x28, 0x47, - 0x0f, 0xa0, 0x94, 0xed, 0x0e, 0x0b, 0xfa, 0x54, 0x80, 0x8e, 0xa0, 0x22, 0xc8, 0x9f, 0xcc, 0x21, - 0xba, 0xde, 0x97, 0x64, 0x5f, 0x76, 0x28, 0x8b, 0x25, 0x12, 0x42, 0x5c, 0x5a, 0x09, 0x44, 0xfe, - 0xdd, 0x20, 0xf0, 0x38, 0x96, 0x68, 0xbf, 0x57, 0x60, 0x73, 0xee, 0xf6, 0x40, 0x8f, 0xc2, 0xdc, - 0x66, 0xb3, 0x5f, 0x77, 0x28, 0x4b, 0xda, 0x3f, 0x69, 0x24, 0x8e, 0x96, 0xc4, 0x28, 0x17, 0x19, - 0xe1, 0xf1, 0xd4, 0x68, 0x17, 0xc0, 0x1a, 0xf2, 0x89, 0x61, 0x4e, 0x4c, 0x3b, 0xcc, 0x2f, 0xa7, - 0x97, 0x84, 0xe4, 0x44, 0x08, 0xd0, 0x0e, 0x14, 0x13, 0xa6, 0x16, 0xa4, 0x72, 0xcd, 0x09, 0x29, - 0xaa, 0x1d, 0xc3, 0xba, 0xa4, 0x45, 0x3c, 0xd9, 0x27, 0x50, 0x90, 0x73, 0x54, 0x24, 0x85, 0xd4, - 0xb7, 0xcd, 0x51, 0x97, 0x56, 0xe7, 0x85, 0x62, 0xae, 0x96, 0xd7, 0xbe, 0x82, 0x6a, 0xf6, 0x26, - 0x43, 0x35, 0xc8, 0x5f, 0x93, 0xb8, 0x57, 0x17, 0x9f, 0xe8, 0x18, 0x56, 0x46, 0xd8, 0x1e, 0x92, - 0xa8, 0xdd, 0x79, 0xb2, 0xb4, 0xdd, 0x49, 0x25, 0xa5, 0x87, 0xae, 0x87, 0xb9, 0x4f, 0x14, 0x8d, - 0x43, 0x25, 0x4b, 0xff, 0xff, 0x13, 0x41, 0x33, 0x2c, 0xca, 0xcd, 0xb0, 0x48, 0x7b, 0x03, 0xa5, - 0x64, 0x77, 0xa0, 0x9f, 0xc0, 0x5a, 0xd8, 0xd6, 0x04, 0x51, 0x95, 0xb4, 0xb9, 0xf3, 0xee, 0xd8, - 0x75, 0xed, 0x2f, 0x44, 0xce, 0x7a, 0x6c, 0x8a, 0x3e, 0x81, 0x52, 0xdc, 0x84, 0x04, 0x51, 0x11, - 0x6e, 0xf3, 0x9b, 0x1a, 0x27, 0xc4, 0xd7, 0x6a, 0xf7, 0xcf, 0x0b, 0xc5, 0xfb, 0xb5, 0x07, 0xe7, - 0x85, 0xe2, 0x83, 0xda, 0xee, 0x79, 0xa1, 0xb8, 0x5b, 0xdb, 0xdb, 0xff, 0x73, 0x1e, 0x36, 0x53, - 0xbd, 0x6e, 0xd4, 0xbe, 0xff, 0x0a, 0xd6, 0xad, 0x69, 0x35, 0xe3, 0x57, 0xc6, 0xb3, 0xd9, 0x92, - 0xcc, 0x39, 0x36, 0x53, 0x6b, 0x10, 0x75, 0x25, 0x19, 0x20, 0xed, 0x2f, 0x0a, 0xa8, 0x51, 0xc7, - 0x4b, 0xac, 0xd9, 0x26, 0xf7, 0x4b, 0x28, 0x88, 0x86, 0x2a, 0x8a, 0xd6, 0x59, 0x1e, 0xed, 0x6d, - 0x48, 0x72, 0xf9, 0xc3, 0xf0, 0x12, 0x51, 0xfb, 0x12, 0x4a, 0x89, 0x28, 0xcd, 0xae, 0x52, 0xc8, - 0xae, 0x8f, 0xb3, 0xec, 0x7a, 0xb8, 0x84, 0x5d, 0x69, 0x42, 0xbd, 0x81, 0xcd, 0xb9, 0x39, 0x2f, - 0x88, 0x70, 0x91, 0x8d, 0x70, 0xf8, 0xbf, 0xcf, 0x2d, 0x15, 0xbc, 0xfd, 0xaf, 0x3c, 0x54, 0x4e, - 0xd2, 0xff, 0x18, 0xd0, 0x77, 0x0a, 0xa0, 0xf9, 0x07, 0x24, 0xfa, 0x68, 0x51, 0xbc, 0x85, 0x4f, - 0x66, 0xed, 0x47, 0xef, 0x62, 0x1a, 0xe6, 0xb8, 0xff, 0xf8, 0xdb, 0xbf, 0xfe, 0xe3, 0xbb, 0x5c, - 0x1d, 0xed, 0x65, 0xff, 0x74, 0xb4, 0x12, 0xe6, 0x1f, 0xc8, 0x47, 0x2a, 0xfa, 0x9d, 0x02, 0xd5, - 0xec, 0x53, 0x0f, 0x7d, 0xb0, 0xec, 0x29, 0x18, 0x66, 0xf3, 0xf8, 0xdd, 0x5e, 0x8c, 0xfb, 0x8f, - 0x64, 0x26, 0xbb, 0xe8, 0xfe, 0x4c, 0x26, 0xde, 0x60, 0x72, 0x10, 0xbf, 0x02, 0xd1, 0xf7, 0x0a, - 0x94, 0x92, 0x42, 0xa3, 0xfa, 0x2d, 0x6b, 0x10, 0x06, 0xff, 0xe1, 0xd2, 0x55, 0xda, 0x67, 0x32, - 0xee, 0x00, 0x6d, 0xcd, 0xc4, 0x95, 0x0f, 0x83, 0xd7, 0xf3, 0x95, 0x91, 0xf2, 0xd6, 0x9b, 0xe8, - 0x25, 0xf9, 0xcd, 0xeb, 0x26, 0x7a, 0x72, 0xbb, 0x45, 0xeb, 0x4d, 0xea, 0x71, 0xf9, 0xcd, 0xf1, - 0xc7, 0xdf, 0xff, 0x7d, 0x4f, 0x79, 0xdd, 0xea, 0xbb, 0x4d, 0x3e, 0x20, 0x5c, 0xfe, 0x22, 0x6a, - 0x32, 0xc2, 0x6f, 0x5c, 0xff, 0xba, 0x95, 0xfd, 0x53, 0x32, 0x7a, 0xd6, 0xf2, 0xae, 0xfb, 0x2d, - 0xce, 0x99, 0xd7, 0xed, 0xae, 0xca, 0x23, 0xe2, 0xd9, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x10, - 0xd8, 0x59, 0x00, 0xa4, 0x12, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// ConfigurationClient is the client API for Configuration service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ConfigurationClient interface { - ListFrequencyPlans(ctx context.Context, in *ListFrequencyPlansRequest, opts ...grpc.CallOption) (*ListFrequencyPlansResponse, error) - // Returns a list of supported LoRaWAN PHY Versions for the given Band ID. - GetPhyVersions(ctx context.Context, in *GetPhyVersionsRequest, opts ...grpc.CallOption) (*GetPhyVersionsResponse, error) - ListBands(ctx context.Context, in *ListBandsRequest, opts ...grpc.CallOption) (*ListBandsResponse, error) +type BandDescription_DwellTime struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uplinks *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=uplinks,proto3" json:"uplinks,omitempty"` + Downlinks *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=downlinks,proto3" json:"downlinks,omitempty"` } -type configurationClient struct { - cc *grpc.ClientConn +func (x *BandDescription_DwellTime) Reset() { + *x = BandDescription_DwellTime{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func NewConfigurationClient(cc *grpc.ClientConn) ConfigurationClient { - return &configurationClient{cc} +func (x *BandDescription_DwellTime) String() string { + return protoimpl.X.MessageStringOf(x) } -func (c *configurationClient) ListFrequencyPlans(ctx context.Context, in *ListFrequencyPlansRequest, opts ...grpc.CallOption) (*ListFrequencyPlansResponse, error) { - out := new(ListFrequencyPlansResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Configuration/ListFrequencyPlans", in, out, opts...) - if err != nil { - return nil, err +func (*BandDescription_DwellTime) ProtoMessage() {} + +func (x *BandDescription_DwellTime) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return out, nil + return mi.MessageOf(x) } -func (c *configurationClient) GetPhyVersions(ctx context.Context, in *GetPhyVersionsRequest, opts ...grpc.CallOption) (*GetPhyVersionsResponse, error) { - out := new(GetPhyVersionsResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Configuration/GetPhyVersions", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// Deprecated: Use BandDescription_DwellTime.ProtoReflect.Descriptor instead. +func (*BandDescription_DwellTime) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_configuration_services_proto_rawDescGZIP(), []int{6, 6} } -func (c *configurationClient) ListBands(ctx context.Context, in *ListBandsRequest, opts ...grpc.CallOption) (*ListBandsResponse, error) { - out := new(ListBandsResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Configuration/ListBands", in, out, opts...) - if err != nil { - return nil, err +func (x *BandDescription_DwellTime) GetUplinks() *wrapperspb.BoolValue { + if x != nil { + return x.Uplinks } - return out, nil + return nil } -// ConfigurationServer is the server API for Configuration service. -type ConfigurationServer interface { - ListFrequencyPlans(context.Context, *ListFrequencyPlansRequest) (*ListFrequencyPlansResponse, error) - // Returns a list of supported LoRaWAN PHY Versions for the given Band ID. - GetPhyVersions(context.Context, *GetPhyVersionsRequest) (*GetPhyVersionsResponse, error) - ListBands(context.Context, *ListBandsRequest) (*ListBandsResponse, error) +func (x *BandDescription_DwellTime) GetDownlinks() *wrapperspb.BoolValue { + if x != nil { + return x.Downlinks + } + return nil } -// UnimplementedConfigurationServer can be embedded to have forward compatible implementations. -type UnimplementedConfigurationServer struct { -} +type ListBandsResponse_VersionedBandDescription struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (*UnimplementedConfigurationServer) ListFrequencyPlans(ctx context.Context, req *ListFrequencyPlansRequest) (*ListFrequencyPlansResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListFrequencyPlans not implemented") -} -func (*UnimplementedConfigurationServer) GetPhyVersions(ctx context.Context, req *GetPhyVersionsRequest) (*GetPhyVersionsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetPhyVersions not implemented") + Band map[string]*BandDescription `protobuf:"bytes,1,rep,name=band,proto3" json:"band,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (*UnimplementedConfigurationServer) ListBands(ctx context.Context, req *ListBandsRequest) (*ListBandsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBands not implemented") + +func (x *ListBandsResponse_VersionedBandDescription) Reset() { + *x = ListBandsResponse_VersionedBandDescription{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func RegisterConfigurationServer(s *grpc.Server, srv ConfigurationServer) { - s.RegisterService(&_Configuration_serviceDesc, srv) +func (x *ListBandsResponse_VersionedBandDescription) String() string { + return protoimpl.X.MessageStringOf(x) } -func _Configuration_ListFrequencyPlans_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListFrequencyPlansRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ConfigurationServer).ListFrequencyPlans(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Configuration/ListFrequencyPlans", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ConfigurationServer).ListFrequencyPlans(ctx, req.(*ListFrequencyPlansRequest)) +func (*ListBandsResponse_VersionedBandDescription) ProtoMessage() {} + +func (x *ListBandsResponse_VersionedBandDescription) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_configuration_services_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return interceptor(ctx, in, info, handler) + return mi.MessageOf(x) } -func _Configuration_GetPhyVersions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetPhyVersionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ConfigurationServer).GetPhyVersions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Configuration/GetPhyVersions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ConfigurationServer).GetPhyVersions(ctx, req.(*GetPhyVersionsRequest)) - } - return interceptor(ctx, in, info, handler) +// Deprecated: Use ListBandsResponse_VersionedBandDescription.ProtoReflect.Descriptor instead. +func (*ListBandsResponse_VersionedBandDescription) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_configuration_services_proto_rawDescGZIP(), []int{7, 0} } -func _Configuration_ListBands_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListBandsRequest) - if err := dec(in); err != nil { - return nil, err +func (x *ListBandsResponse_VersionedBandDescription) GetBand() map[string]*BandDescription { + if x != nil { + return x.Band } - if interceptor == nil { - return srv.(ConfigurationServer).ListBands(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Configuration/ListBands", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ConfigurationServer).ListBands(ctx, req.(*ListBandsRequest)) - } - return interceptor(ctx, in, info, handler) + return nil } -var _Configuration_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.Configuration", - HandlerType: (*ConfigurationServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListFrequencyPlans", - Handler: _Configuration_ListFrequencyPlans_Handler, - }, - { - MethodName: "GetPhyVersions", - Handler: _Configuration_GetPhyVersions_Handler, - }, - { - MethodName: "ListBands", - Handler: _Configuration_ListBands_Handler, +var File_lorawan_stack_api_configuration_services_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_configuration_services_proto_rawDesc = []byte{ + 0x0a, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, + 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, + 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4c, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x46, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x62, 0x61, + 0x73, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0x7e, 0x0a, 0x18, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, + 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x46, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x6f, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x22, 0x3a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x17, 0x0a, 0x07, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x62, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, + 0x10, 0x01, 0x22, 0xd6, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, + 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x65, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, + 0x70, 0x68, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, + 0x70, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7c, 0x0a, 0x10, 0x4c, + 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x17, 0x0a, 0x07, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x62, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x0b, 0x70, 0x68, 0x79, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, + 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xea, 0x14, 0x0a, 0x0f, 0x42, 0x61, + 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3e, 0x0a, + 0x06, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, + 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, + 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x52, 0x06, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x12, 0x32, 0x0a, + 0x15, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x04, 0x52, 0x13, 0x70, 0x69, + 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, + 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, + 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, + 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x73, 0x12, 0x50, 0x0a, 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x54, 0x0a, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x10, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x4e, 0x0a, + 0x09, 0x73, 0x75, 0x62, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x31, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x42, 0x61, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x52, 0x08, 0x73, 0x75, 0x62, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x4d, 0x0a, + 0x0a, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, + 0x66, 0x72, 0x65, 0x71, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x71, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x66, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x10, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x66, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x63, 0x66, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x46, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x63, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x6c, + 0x61, 0x79, 0x5f, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x44, 0x65, + 0x6c, 0x61, 0x79, 0x31, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, + 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x32, 0x12, 0x48, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, + 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x31, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x10, 0x6a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x44, 0x65, 0x6c, 0x61, 0x79, + 0x31, 0x12, 0x48, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, + 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x32, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6a, 0x6f, 0x69, 0x6e, 0x41, + 0x63, 0x63, 0x65, 0x70, 0x74, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x32, 0x12, 0x20, 0x0a, 0x0c, 0x6d, + 0x61, 0x78, 0x5f, 0x66, 0x63, 0x6e, 0x74, 0x5f, 0x67, 0x61, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x46, 0x63, 0x6e, 0x74, 0x47, 0x61, 0x70, 0x12, 0x30, 0x0a, + 0x14, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, + 0x63, 0x5f, 0x61, 0x64, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x41, 0x64, 0x72, 0x12, + 0x47, 0x0a, 0x0d, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x61, 0x64, 0x72, + 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x4f, 0x0a, 0x16, 0x6d, 0x69, 0x6e, 0x5f, + 0x72, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, + 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4f, 0x0a, 0x16, 0x6d, 0x61, 0x78, + 0x5f, 0x72, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, + 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x16, 0x20, 0x03, 0x28, 0x02, 0x52, 0x08, 0x74, + 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x53, 0x0a, 0x17, 0x6d, 0x61, 0x78, 0x5f, 0x61, + 0x64, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x41, 0x64, 0x72, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x3a, 0x0a, 0x1a, + 0x74, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x72, + 0x65, 0x71, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x16, 0x74, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, + 0x71, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x69, 0x72, 0x70, 0x18, 0x19, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x61, 0x78, 0x45, 0x69, + 0x72, 0x70, 0x12, 0x63, 0x0a, 0x16, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x78, + 0x32, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x1e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x78, 0x32, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x52, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x78, 0x32, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x0f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, + 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x44, 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0d, 0x62, 0x6f, 0x6f, + 0x74, 0x44, 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x9e, 0x01, 0x0a, 0x06, 0x42, + 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0d, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, + 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x04, 0x52, 0x0b, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x4a, + 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x1a, 0xad, 0x01, 0x0a, 0x07, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x41, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0b, 0x6d, 0x69, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0b, + 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x1a, 0x97, 0x01, 0x0a, 0x11, + 0x53, 0x75, 0x62, 0x42, 0x61, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, + 0x61, 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x64, + 0x75, 0x74, 0x79, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x09, 0x64, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, + 0x78, 0x5f, 0x65, 0x69, 0x72, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x6d, 0x61, + 0x78, 0x45, 0x69, 0x72, 0x70, 0x1a, 0x42, 0x0a, 0x0c, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x04, 0x72, + 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x1a, 0x6a, 0x0a, 0x0e, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x42, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, + 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x61, + 0x6e, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x74, 0x0a, 0x0d, 0x52, 0x78, 0x32, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0d, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, + 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0x7b, 0x0a, 0x09, 0x44, + 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x75, 0x70, 0x6c, 0x69, + 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x38, + 0x0a, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, + 0x08, 0x1a, 0x10, 0x1b, 0x4a, 0x04, 0x08, 0x1b, 0x10, 0x1c, 0x4a, 0x04, 0x08, 0x1c, 0x10, 0x1d, + 0x4a, 0x04, 0x08, 0x1d, 0x10, 0x1e, 0x22, 0xba, 0x03, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x42, + 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0c, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xce, 0x01, 0x0a, 0x18, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x65, 0x64, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x04, 0x62, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x44, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x42, 0x61, 0x6e, + 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x61, 0x6e, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x62, 0x61, 0x6e, 0x64, 0x1a, 0x58, 0x0a, 0x09, + 0x42, 0x61, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x7b, 0x0a, 0x11, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x50, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x32, 0xef, 0x03, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x93, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x29, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x2d, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x0e, + 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x68, 0x79, 0x2d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0xc0, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, + 0x12, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x68, 0x12, 0x14, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x61, + 0x6e, 0x64, 0x73, 0x5a, 0x20, 0x12, 0x1e, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x62, 0x61, 0x6e, + 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x5a, 0x2e, 0x12, 0x2c, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x62, + 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x70, 0x68, 0x79, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_configuration_services_proto_rawDescOnce sync.Once + file_lorawan_stack_api_configuration_services_proto_rawDescData = file_lorawan_stack_api_configuration_services_proto_rawDesc +) + +func file_lorawan_stack_api_configuration_services_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_configuration_services_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_configuration_services_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_configuration_services_proto_rawDescData) + }) + return file_lorawan_stack_api_configuration_services_proto_rawDescData +} + +var file_lorawan_stack_api_configuration_services_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_lorawan_stack_api_configuration_services_proto_goTypes = []interface{}{ + (*ListFrequencyPlansRequest)(nil), // 0: ttn.lorawan.v3.ListFrequencyPlansRequest + (*FrequencyPlanDescription)(nil), // 1: ttn.lorawan.v3.FrequencyPlanDescription + (*ListFrequencyPlansResponse)(nil), // 2: ttn.lorawan.v3.ListFrequencyPlansResponse + (*GetPhyVersionsRequest)(nil), // 3: ttn.lorawan.v3.GetPhyVersionsRequest + (*GetPhyVersionsResponse)(nil), // 4: ttn.lorawan.v3.GetPhyVersionsResponse + (*ListBandsRequest)(nil), // 5: ttn.lorawan.v3.ListBandsRequest + (*BandDescription)(nil), // 6: ttn.lorawan.v3.BandDescription + (*ListBandsResponse)(nil), // 7: ttn.lorawan.v3.ListBandsResponse + (*GetPhyVersionsResponse_VersionInfo)(nil), // 8: ttn.lorawan.v3.GetPhyVersionsResponse.VersionInfo + (*BandDescription_Beacon)(nil), // 9: ttn.lorawan.v3.BandDescription.Beacon + (*BandDescription_Channel)(nil), // 10: ttn.lorawan.v3.BandDescription.Channel + (*BandDescription_SubBandParameters)(nil), // 11: ttn.lorawan.v3.BandDescription.SubBandParameters + (*BandDescription_BandDataRate)(nil), // 12: ttn.lorawan.v3.BandDescription.BandDataRate + nil, // 13: ttn.lorawan.v3.BandDescription.DataRatesEntry + (*BandDescription_Rx2Parameters)(nil), // 14: ttn.lorawan.v3.BandDescription.Rx2Parameters + (*BandDescription_DwellTime)(nil), // 15: ttn.lorawan.v3.BandDescription.DwellTime + (*ListBandsResponse_VersionedBandDescription)(nil), // 16: ttn.lorawan.v3.ListBandsResponse.VersionedBandDescription + nil, // 17: ttn.lorawan.v3.ListBandsResponse.DescriptionsEntry + nil, // 18: ttn.lorawan.v3.ListBandsResponse.VersionedBandDescription.BandEntry + (PHYVersion)(0), // 19: ttn.lorawan.v3.PHYVersion + (CFListType)(0), // 20: ttn.lorawan.v3.CFListType + (*durationpb.Duration)(nil), // 21: google.protobuf.Duration + (ADRAckLimitExponent)(0), // 22: ttn.lorawan.v3.ADRAckLimitExponent + (DataRateIndex)(0), // 23: ttn.lorawan.v3.DataRateIndex + (*DataRate)(nil), // 24: ttn.lorawan.v3.DataRate + (*wrapperspb.BoolValue)(nil), // 25: google.protobuf.BoolValue +} +var file_lorawan_stack_api_configuration_services_proto_depIdxs = []int32{ + 1, // 0: ttn.lorawan.v3.ListFrequencyPlansResponse.frequency_plans:type_name -> ttn.lorawan.v3.FrequencyPlanDescription + 8, // 1: ttn.lorawan.v3.GetPhyVersionsResponse.version_info:type_name -> ttn.lorawan.v3.GetPhyVersionsResponse.VersionInfo + 19, // 2: ttn.lorawan.v3.ListBandsRequest.phy_version:type_name -> ttn.lorawan.v3.PHYVersion + 9, // 3: ttn.lorawan.v3.BandDescription.beacon:type_name -> ttn.lorawan.v3.BandDescription.Beacon + 10, // 4: ttn.lorawan.v3.BandDescription.uplink_channels:type_name -> ttn.lorawan.v3.BandDescription.Channel + 10, // 5: ttn.lorawan.v3.BandDescription.downlink_channels:type_name -> ttn.lorawan.v3.BandDescription.Channel + 11, // 6: ttn.lorawan.v3.BandDescription.sub_bands:type_name -> ttn.lorawan.v3.BandDescription.SubBandParameters + 13, // 7: ttn.lorawan.v3.BandDescription.data_rates:type_name -> ttn.lorawan.v3.BandDescription.DataRatesEntry + 20, // 8: ttn.lorawan.v3.BandDescription.cf_list_type:type_name -> ttn.lorawan.v3.CFListType + 21, // 9: ttn.lorawan.v3.BandDescription.receive_delay_1:type_name -> google.protobuf.Duration + 21, // 10: ttn.lorawan.v3.BandDescription.receive_delay_2:type_name -> google.protobuf.Duration + 21, // 11: ttn.lorawan.v3.BandDescription.join_accept_delay_1:type_name -> google.protobuf.Duration + 21, // 12: ttn.lorawan.v3.BandDescription.join_accept_delay_2:type_name -> google.protobuf.Duration + 22, // 13: ttn.lorawan.v3.BandDescription.adr_ack_limit:type_name -> ttn.lorawan.v3.ADRAckLimitExponent + 21, // 14: ttn.lorawan.v3.BandDescription.min_retransmit_timeout:type_name -> google.protobuf.Duration + 21, // 15: ttn.lorawan.v3.BandDescription.max_retransmit_timeout:type_name -> google.protobuf.Duration + 23, // 16: ttn.lorawan.v3.BandDescription.max_adr_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 14, // 17: ttn.lorawan.v3.BandDescription.default_rx2_parameters:type_name -> ttn.lorawan.v3.BandDescription.Rx2Parameters + 15, // 18: ttn.lorawan.v3.BandDescription.boot_dwell_time:type_name -> ttn.lorawan.v3.BandDescription.DwellTime + 17, // 19: ttn.lorawan.v3.ListBandsResponse.descriptions:type_name -> ttn.lorawan.v3.ListBandsResponse.DescriptionsEntry + 19, // 20: ttn.lorawan.v3.GetPhyVersionsResponse.VersionInfo.phy_versions:type_name -> ttn.lorawan.v3.PHYVersion + 23, // 21: ttn.lorawan.v3.BandDescription.Beacon.data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 23, // 22: ttn.lorawan.v3.BandDescription.Channel.min_data_rate:type_name -> ttn.lorawan.v3.DataRateIndex + 23, // 23: ttn.lorawan.v3.BandDescription.Channel.max_data_rate:type_name -> ttn.lorawan.v3.DataRateIndex + 24, // 24: ttn.lorawan.v3.BandDescription.BandDataRate.rate:type_name -> ttn.lorawan.v3.DataRate + 12, // 25: ttn.lorawan.v3.BandDescription.DataRatesEntry.value:type_name -> ttn.lorawan.v3.BandDescription.BandDataRate + 23, // 26: ttn.lorawan.v3.BandDescription.Rx2Parameters.data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 25, // 27: ttn.lorawan.v3.BandDescription.DwellTime.uplinks:type_name -> google.protobuf.BoolValue + 25, // 28: ttn.lorawan.v3.BandDescription.DwellTime.downlinks:type_name -> google.protobuf.BoolValue + 18, // 29: ttn.lorawan.v3.ListBandsResponse.VersionedBandDescription.band:type_name -> ttn.lorawan.v3.ListBandsResponse.VersionedBandDescription.BandEntry + 16, // 30: ttn.lorawan.v3.ListBandsResponse.DescriptionsEntry.value:type_name -> ttn.lorawan.v3.ListBandsResponse.VersionedBandDescription + 6, // 31: ttn.lorawan.v3.ListBandsResponse.VersionedBandDescription.BandEntry.value:type_name -> ttn.lorawan.v3.BandDescription + 0, // 32: ttn.lorawan.v3.Configuration.ListFrequencyPlans:input_type -> ttn.lorawan.v3.ListFrequencyPlansRequest + 3, // 33: ttn.lorawan.v3.Configuration.GetPhyVersions:input_type -> ttn.lorawan.v3.GetPhyVersionsRequest + 5, // 34: ttn.lorawan.v3.Configuration.ListBands:input_type -> ttn.lorawan.v3.ListBandsRequest + 2, // 35: ttn.lorawan.v3.Configuration.ListFrequencyPlans:output_type -> ttn.lorawan.v3.ListFrequencyPlansResponse + 4, // 36: ttn.lorawan.v3.Configuration.GetPhyVersions:output_type -> ttn.lorawan.v3.GetPhyVersionsResponse + 7, // 37: ttn.lorawan.v3.Configuration.ListBands:output_type -> ttn.lorawan.v3.ListBandsResponse + 35, // [35:38] is the sub-list for method output_type + 32, // [32:35] is the sub-list for method input_type + 32, // [32:32] is the sub-list for extension type_name + 32, // [32:32] is the sub-list for extension extendee + 0, // [0:32] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_configuration_services_proto_init() } +func file_lorawan_stack_api_configuration_services_proto_init() { + if File_lorawan_stack_api_configuration_services_proto != nil { + return + } + file_lorawan_stack_api_lorawan_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_configuration_services_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListFrequencyPlansRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_configuration_services_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FrequencyPlanDescription); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_configuration_services_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListFrequencyPlansResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_configuration_services_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPhyVersionsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_configuration_services_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPhyVersionsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_configuration_services_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListBandsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_configuration_services_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BandDescription); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_configuration_services_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListBandsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_configuration_services_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPhyVersionsResponse_VersionInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_configuration_services_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BandDescription_Beacon); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_configuration_services_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BandDescription_Channel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_configuration_services_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BandDescription_SubBandParameters); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_configuration_services_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BandDescription_BandDataRate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_configuration_services_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BandDescription_Rx2Parameters); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_configuration_services_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BandDescription_DwellTime); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_configuration_services_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListBandsResponse_VersionedBandDescription); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_configuration_services_proto_rawDesc, + NumEnums: 0, + NumMessages: 19, + NumExtensions: 0, + NumServices: 1, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/configuration_services.proto", + GoTypes: file_lorawan_stack_api_configuration_services_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_configuration_services_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_configuration_services_proto_msgTypes, + }.Build() + File_lorawan_stack_api_configuration_services_proto = out.File + file_lorawan_stack_api_configuration_services_proto_rawDesc = nil + file_lorawan_stack_api_configuration_services_proto_goTypes = nil + file_lorawan_stack_api_configuration_services_proto_depIdxs = nil } diff --git a/pkg/ttnpb/configuration_services.pb.gw.go b/pkg/ttnpb/configuration_services.pb.gw.go index 2c71e16121..e7993bf20a 100644 --- a/pkg/ttnpb/configuration_services.pb.gw.go +++ b/pkg/ttnpb/configuration_services.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join var ( @@ -162,7 +160,6 @@ func request_Configuration_ListBands_1(ctx context.Context, marshaler runtime.Ma } protoReq.BandId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "band_id", err) } @@ -196,7 +193,6 @@ func local_request_Configuration_ListBands_1(ctx context.Context, marshaler runt } protoReq.BandId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "band_id", err) } @@ -231,7 +227,6 @@ func request_Configuration_ListBands_2(ctx context.Context, marshaler runtime.Ma } protoReq.BandId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "band_id", err) } @@ -242,7 +237,6 @@ func request_Configuration_ListBands_2(ctx context.Context, marshaler runtime.Ma } e, err = runtime.Enum(val, PHYVersion_value) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "phy_version", err) } @@ -272,7 +266,6 @@ func local_request_Configuration_ListBands_2(ctx context.Context, marshaler runt } protoReq.BandId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "band_id", err) } @@ -283,7 +276,6 @@ func local_request_Configuration_ListBands_2(ctx context.Context, marshaler runt } e, err = runtime.Enum(val, PHYVersion_value) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "phy_version", err) } @@ -307,20 +299,22 @@ func RegisterConfigurationHandlerServer(ctx context.Context, mux *runtime.ServeM var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Configuration/ListFrequencyPlans", runtime.WithHTTPPathPattern("/configuration/frequency-plans")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Configuration_ListFrequencyPlans_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Configuration_ListFrequencyPlans_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Configuration_ListFrequencyPlans_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Configuration_ListFrequencyPlans_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -330,20 +324,22 @@ func RegisterConfigurationHandlerServer(ctx context.Context, mux *runtime.ServeM var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Configuration/GetPhyVersions", runtime.WithHTTPPathPattern("/configuration/phy-versions")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Configuration_GetPhyVersions_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Configuration_GetPhyVersions_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Configuration_GetPhyVersions_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Configuration_GetPhyVersions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -353,20 +349,22 @@ func RegisterConfigurationHandlerServer(ctx context.Context, mux *runtime.ServeM var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Configuration/ListBands", runtime.WithHTTPPathPattern("/configuration/bands")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Configuration_ListBands_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Configuration_ListBands_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Configuration_ListBands_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Configuration_ListBands_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -376,20 +374,22 @@ func RegisterConfigurationHandlerServer(ctx context.Context, mux *runtime.ServeM var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Configuration/ListBands", runtime.WithHTTPPathPattern("/configuration/bands/{band_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Configuration_ListBands_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Configuration_ListBands_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Configuration_ListBands_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Configuration_ListBands_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -399,20 +399,22 @@ func RegisterConfigurationHandlerServer(ctx context.Context, mux *runtime.ServeM var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Configuration/ListBands", runtime.WithHTTPPathPattern("/configuration/bands/{band_id}/{phy_version}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Configuration_ListBands_2(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Configuration_ListBands_2(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Configuration_ListBands_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Configuration_ListBands_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -461,19 +463,21 @@ func RegisterConfigurationHandlerClient(ctx context.Context, mux *runtime.ServeM ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Configuration/ListFrequencyPlans", runtime.WithHTTPPathPattern("/configuration/frequency-plans")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Configuration_ListFrequencyPlans_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Configuration_ListFrequencyPlans_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Configuration_ListFrequencyPlans_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Configuration_ListFrequencyPlans_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -481,19 +485,21 @@ func RegisterConfigurationHandlerClient(ctx context.Context, mux *runtime.ServeM ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Configuration/GetPhyVersions", runtime.WithHTTPPathPattern("/configuration/phy-versions")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Configuration_GetPhyVersions_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Configuration_GetPhyVersions_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Configuration_GetPhyVersions_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Configuration_GetPhyVersions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -501,19 +507,21 @@ func RegisterConfigurationHandlerClient(ctx context.Context, mux *runtime.ServeM ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Configuration/ListBands", runtime.WithHTTPPathPattern("/configuration/bands")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Configuration_ListBands_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Configuration_ListBands_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Configuration_ListBands_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Configuration_ListBands_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -521,19 +529,21 @@ func RegisterConfigurationHandlerClient(ctx context.Context, mux *runtime.ServeM ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Configuration/ListBands", runtime.WithHTTPPathPattern("/configuration/bands/{band_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Configuration_ListBands_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Configuration_ListBands_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Configuration_ListBands_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Configuration_ListBands_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -541,19 +551,21 @@ func RegisterConfigurationHandlerClient(ctx context.Context, mux *runtime.ServeM ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Configuration/ListBands", runtime.WithHTTPPathPattern("/configuration/bands/{band_id}/{phy_version}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Configuration_ListBands_2(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Configuration_ListBands_2(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Configuration_ListBands_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Configuration_ListBands_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -561,15 +573,15 @@ func RegisterConfigurationHandlerClient(ctx context.Context, mux *runtime.ServeM } var ( - pattern_Configuration_ListFrequencyPlans_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"configuration", "frequency-plans"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Configuration_ListFrequencyPlans_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"configuration", "frequency-plans"}, "")) - pattern_Configuration_GetPhyVersions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"configuration", "phy-versions"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Configuration_GetPhyVersions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"configuration", "phy-versions"}, "")) - pattern_Configuration_ListBands_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"configuration", "bands"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Configuration_ListBands_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"configuration", "bands"}, "")) - pattern_Configuration_ListBands_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"configuration", "bands", "band_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Configuration_ListBands_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"configuration", "bands", "band_id"}, "")) - pattern_Configuration_ListBands_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"configuration", "bands", "band_id", "phy_version"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Configuration_ListBands_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"configuration", "bands", "band_id", "phy_version"}, "")) ) var ( diff --git a/pkg/ttnpb/configuration_services.pb.setters.fm.go b/pkg/ttnpb/configuration_services.pb.setters.fm.go index 9c951d97fe..5d680cffd4 100644 --- a/pkg/ttnpb/configuration_services.pb.setters.fm.go +++ b/pkg/ttnpb/configuration_services.pb.setters.fm.go @@ -157,8 +157,7 @@ func (dst *ListBandsRequest) SetFields(src *ListBandsRequest, paths ...string) e if src != nil { dst.PhyVersion = src.PhyVersion } else { - var zero PHYVersion - dst.PhyVersion = zero + dst.PhyVersion = 0 } default: @@ -298,8 +297,7 @@ func (dst *BandDescription) SetFields(src *BandDescription, paths ...string) err if src != nil { dst.CfListType = src.CfListType } else { - var zero CFListType - dst.CfListType = zero + dst.CfListType = 0 } case "receive_delay_1": if len(subs) > 0 { @@ -364,8 +362,7 @@ func (dst *BandDescription) SetFields(src *BandDescription, paths ...string) err if src != nil { dst.AdrAckLimit = src.AdrAckLimit } else { - var zero ADRAckLimitExponent - dst.AdrAckLimit = zero + dst.AdrAckLimit = 0 } case "min_retransmit_timeout": if len(subs) > 0 { @@ -401,8 +398,7 @@ func (dst *BandDescription) SetFields(src *BandDescription, paths ...string) err if src != nil { dst.MaxAdrDataRateIndex = src.MaxAdrDataRateIndex } else { - var zero DataRateIndex - dst.MaxAdrDataRateIndex = zero + dst.MaxAdrDataRateIndex = 0 } case "tx_param_setup_req_support": if len(subs) > 0 { @@ -542,8 +538,7 @@ func (dst *BandDescription_Beacon) SetFields(src *BandDescription_Beacon, paths if src != nil { dst.DataRateIndex = src.DataRateIndex } else { - var zero DataRateIndex - dst.DataRateIndex = zero + dst.DataRateIndex = 0 } case "coding_rate": if len(subs) > 0 { @@ -592,8 +587,7 @@ func (dst *BandDescription_Channel) SetFields(src *BandDescription_Channel, path if src != nil { dst.MinDataRate = src.MinDataRate } else { - var zero DataRateIndex - dst.MinDataRate = zero + dst.MinDataRate = 0 } case "max_data_rate": if len(subs) > 0 { @@ -602,8 +596,7 @@ func (dst *BandDescription_Channel) SetFields(src *BandDescription_Channel, path if src != nil { dst.MaxDataRate = src.MaxDataRate } else { - var zero DataRateIndex - dst.MaxDataRate = zero + dst.MaxDataRate = 0 } default: @@ -710,8 +703,7 @@ func (dst *BandDescription_Rx2Parameters) SetFields(src *BandDescription_Rx2Para if src != nil { dst.DataRateIndex = src.DataRateIndex } else { - var zero DataRateIndex - dst.DataRateIndex = zero + dst.DataRateIndex = 0 } case "frequency": if len(subs) > 0 { diff --git a/pkg/ttnpb/configuration_services.pb.validate.go b/pkg/ttnpb/configuration_services.pb.validate.go index 83d90d2064..68e6e879e0 100644 --- a/pkg/ttnpb/configuration_services.pb.validate.go +++ b/pkg/ttnpb/configuration_services.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _configuration_services_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on ListFrequencyPlansRequest with the // rules defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/configuration_services_flags.pb.go b/pkg/ttnpb/configuration_services_flags.pb.go index f184e39a2e..f841ebdb2e 100644 --- a/pkg/ttnpb/configuration_services_flags.pb.go +++ b/pkg/ttnpb/configuration_services_flags.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/configuration_services.proto package ttnpb diff --git a/pkg/ttnpb/configuration_services_grpc.pb.go b/pkg/ttnpb/configuration_services_grpc.pb.go new file mode 100644 index 0000000000..4a7cdb40ff --- /dev/null +++ b/pkg/ttnpb/configuration_services_grpc.pb.go @@ -0,0 +1,179 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/configuration_services.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// ConfigurationClient is the client API for Configuration service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ConfigurationClient interface { + ListFrequencyPlans(ctx context.Context, in *ListFrequencyPlansRequest, opts ...grpc.CallOption) (*ListFrequencyPlansResponse, error) + // Returns a list of supported LoRaWAN PHY Versions for the given Band ID. + GetPhyVersions(ctx context.Context, in *GetPhyVersionsRequest, opts ...grpc.CallOption) (*GetPhyVersionsResponse, error) + ListBands(ctx context.Context, in *ListBandsRequest, opts ...grpc.CallOption) (*ListBandsResponse, error) +} + +type configurationClient struct { + cc grpc.ClientConnInterface +} + +func NewConfigurationClient(cc grpc.ClientConnInterface) ConfigurationClient { + return &configurationClient{cc} +} + +func (c *configurationClient) ListFrequencyPlans(ctx context.Context, in *ListFrequencyPlansRequest, opts ...grpc.CallOption) (*ListFrequencyPlansResponse, error) { + out := new(ListFrequencyPlansResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Configuration/ListFrequencyPlans", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configurationClient) GetPhyVersions(ctx context.Context, in *GetPhyVersionsRequest, opts ...grpc.CallOption) (*GetPhyVersionsResponse, error) { + out := new(GetPhyVersionsResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Configuration/GetPhyVersions", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configurationClient) ListBands(ctx context.Context, in *ListBandsRequest, opts ...grpc.CallOption) (*ListBandsResponse, error) { + out := new(ListBandsResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Configuration/ListBands", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ConfigurationServer is the server API for Configuration service. +// All implementations must embed UnimplementedConfigurationServer +// for forward compatibility +type ConfigurationServer interface { + ListFrequencyPlans(context.Context, *ListFrequencyPlansRequest) (*ListFrequencyPlansResponse, error) + // Returns a list of supported LoRaWAN PHY Versions for the given Band ID. + GetPhyVersions(context.Context, *GetPhyVersionsRequest) (*GetPhyVersionsResponse, error) + ListBands(context.Context, *ListBandsRequest) (*ListBandsResponse, error) + mustEmbedUnimplementedConfigurationServer() +} + +// UnimplementedConfigurationServer must be embedded to have forward compatible implementations. +type UnimplementedConfigurationServer struct { +} + +func (UnimplementedConfigurationServer) ListFrequencyPlans(context.Context, *ListFrequencyPlansRequest) (*ListFrequencyPlansResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListFrequencyPlans not implemented") +} +func (UnimplementedConfigurationServer) GetPhyVersions(context.Context, *GetPhyVersionsRequest) (*GetPhyVersionsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetPhyVersions not implemented") +} +func (UnimplementedConfigurationServer) ListBands(context.Context, *ListBandsRequest) (*ListBandsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListBands not implemented") +} +func (UnimplementedConfigurationServer) mustEmbedUnimplementedConfigurationServer() {} + +// UnsafeConfigurationServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ConfigurationServer will +// result in compilation errors. +type UnsafeConfigurationServer interface { + mustEmbedUnimplementedConfigurationServer() +} + +func RegisterConfigurationServer(s grpc.ServiceRegistrar, srv ConfigurationServer) { + s.RegisterService(&Configuration_ServiceDesc, srv) +} + +func _Configuration_ListFrequencyPlans_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListFrequencyPlansRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigurationServer).ListFrequencyPlans(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Configuration/ListFrequencyPlans", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigurationServer).ListFrequencyPlans(ctx, req.(*ListFrequencyPlansRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Configuration_GetPhyVersions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPhyVersionsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigurationServer).GetPhyVersions(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Configuration/GetPhyVersions", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigurationServer).GetPhyVersions(ctx, req.(*GetPhyVersionsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Configuration_ListBands_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListBandsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigurationServer).ListBands(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Configuration/ListBands", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigurationServer).ListBands(ctx, req.(*ListBandsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Configuration_ServiceDesc is the grpc.ServiceDesc for Configuration service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Configuration_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.Configuration", + HandlerType: (*ConfigurationServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListFrequencyPlans", + Handler: _Configuration_ListFrequencyPlans_Handler, + }, + { + MethodName: "GetPhyVersions", + Handler: _Configuration_GetPhyVersions_Handler, + }, + { + MethodName: "ListBands", + Handler: _Configuration_ListBands_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/configuration_services.proto", +} diff --git a/pkg/ttnpb/configuration_services_json.pb.go b/pkg/ttnpb/configuration_services_json.pb.go index 3fbcdb5bc4..f9c3c95f64 100644 --- a/pkg/ttnpb/configuration_services_json.pb.go +++ b/pkg/ttnpb/configuration_services_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/configuration_services.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" ) @@ -421,7 +421,7 @@ func (x *BandDescription) MarshalProtoJSON(s *jsonplugin.MarshalState) { for _, element := range x.SubBands { s.WriteMoreIf(&wroteElement) // NOTE: BandDescription_SubBandParameters does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, element) + golang.MarshalMessage(s, element) } s.WriteArrayEnd() } @@ -434,7 +434,7 @@ func (x *BandDescription) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteElement) s.WriteObjectUint32Field(k) // NOTE: BandDescription_BandDataRate does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, v) + golang.MarshalMessage(s, v) } s.WriteObjectEnd() } @@ -459,7 +459,7 @@ func (x *BandDescription) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ReceiveDelay_1 == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.ReceiveDelay_1) + golang.MarshalDuration(s, x.ReceiveDelay_1) } } if x.ReceiveDelay_2 != nil || s.HasField("receive_delay_2") { @@ -468,7 +468,7 @@ func (x *BandDescription) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ReceiveDelay_2 == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.ReceiveDelay_2) + golang.MarshalDuration(s, x.ReceiveDelay_2) } } if x.JoinAcceptDelay_1 != nil || s.HasField("join_accept_delay_1") { @@ -477,7 +477,7 @@ func (x *BandDescription) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.JoinAcceptDelay_1 == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.JoinAcceptDelay_1) + golang.MarshalDuration(s, x.JoinAcceptDelay_1) } } if x.JoinAcceptDelay_2 != nil || s.HasField("join_accept_delay_2") { @@ -486,7 +486,7 @@ func (x *BandDescription) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.JoinAcceptDelay_2 == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.JoinAcceptDelay_2) + golang.MarshalDuration(s, x.JoinAcceptDelay_2) } } if x.MaxFcntGap != 0 || s.HasField("max_fcnt_gap") { @@ -510,7 +510,7 @@ func (x *BandDescription) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.MinRetransmitTimeout == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.MinRetransmitTimeout) + golang.MarshalDuration(s, x.MinRetransmitTimeout) } } if x.MaxRetransmitTimeout != nil || s.HasField("max_retransmit_timeout") { @@ -519,7 +519,7 @@ func (x *BandDescription) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.MaxRetransmitTimeout == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.MaxRetransmitTimeout) + golang.MarshalDuration(s, x.MaxRetransmitTimeout) } } if len(x.TxOffset) > 0 || s.HasField("tx_offset") { @@ -551,7 +551,7 @@ func (x *BandDescription) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("boot_dwell_time") // NOTE: BandDescription_DwellTime does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.BootDwellTime) + golang.MarshalMessage(s, x.BootDwellTime) } s.WriteObjectEnd() } @@ -638,7 +638,7 @@ func (x *BandDescription) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { s.ReadArray(func() { // NOTE: BandDescription_SubBandParameters does not seem to implement UnmarshalProtoJSON. var v BandDescription_SubBandParameters - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.SubBands = append(x.SubBands, &v) }) case "data_rates", "dataRates": @@ -651,7 +651,7 @@ func (x *BandDescription) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { s.ReadUint32Map(func(key uint32) { // NOTE: BandDescription_BandDataRate does not seem to implement UnmarshalProtoJSON. var v BandDescription_BandDataRate - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.DataRates[key] = &v }) case "freq_multiplier", "freqMultiplier": @@ -669,7 +669,7 @@ func (x *BandDescription) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ReceiveDelay_1 = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -680,7 +680,7 @@ func (x *BandDescription) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ReceiveDelay_2 = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -691,7 +691,7 @@ func (x *BandDescription) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.JoinAcceptDelay_1 = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -702,7 +702,7 @@ func (x *BandDescription) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.JoinAcceptDelay_2 = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -722,7 +722,7 @@ func (x *BandDescription) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.MinRetransmitTimeout = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -733,7 +733,7 @@ func (x *BandDescription) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.MaxRetransmitTimeout = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -769,7 +769,7 @@ func (x *BandDescription) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: BandDescription_DwellTime does not seem to implement UnmarshalProtoJSON. var v BandDescription_DwellTime - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.BootDwellTime = &v } }) diff --git a/pkg/ttnpb/contact_info.pb.go b/pkg/ttnpb/contact_info.pb.go index bd2d55942a..f1224e06e4 100644 --- a/pkg/ttnpb/contact_info.pb.go +++ b/pkg/ttnpb/contact_info.pb.go @@ -1,36 +1,45 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/contact_info.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type ContactType int32 @@ -41,26 +50,47 @@ const ( ContactType_CONTACT_TYPE_TECHNICAL ContactType = 3 ) -var ContactType_name = map[int32]string{ - 0: "CONTACT_TYPE_OTHER", - 1: "CONTACT_TYPE_ABUSE", - 2: "CONTACT_TYPE_BILLING", - 3: "CONTACT_TYPE_TECHNICAL", -} +// Enum value maps for ContactType. +var ( + ContactType_name = map[int32]string{ + 0: "CONTACT_TYPE_OTHER", + 1: "CONTACT_TYPE_ABUSE", + 2: "CONTACT_TYPE_BILLING", + 3: "CONTACT_TYPE_TECHNICAL", + } + ContactType_value = map[string]int32{ + "CONTACT_TYPE_OTHER": 0, + "CONTACT_TYPE_ABUSE": 1, + "CONTACT_TYPE_BILLING": 2, + "CONTACT_TYPE_TECHNICAL": 3, + } +) -var ContactType_value = map[string]int32{ - "CONTACT_TYPE_OTHER": 0, - "CONTACT_TYPE_ABUSE": 1, - "CONTACT_TYPE_BILLING": 2, - "CONTACT_TYPE_TECHNICAL": 3, +func (x ContactType) Enum() *ContactType { + p := new(ContactType) + *p = x + return p } func (x ContactType) String() string { - return proto.EnumName(ContactType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (ContactType) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_contact_info_proto_enumTypes[0].Descriptor() +} + +func (ContactType) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_contact_info_proto_enumTypes[0] +} + +func (x ContactType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ContactType.Descriptor instead. func (ContactType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_3baa36b7c4d52524, []int{0} + return file_lorawan_stack_api_contact_info_proto_rawDescGZIP(), []int{0} } type ContactMethod int32 @@ -71,360 +101,413 @@ const ( ContactMethod_CONTACT_METHOD_PHONE ContactMethod = 2 ) -var ContactMethod_name = map[int32]string{ - 0: "CONTACT_METHOD_OTHER", - 1: "CONTACT_METHOD_EMAIL", - 2: "CONTACT_METHOD_PHONE", -} +// Enum value maps for ContactMethod. +var ( + ContactMethod_name = map[int32]string{ + 0: "CONTACT_METHOD_OTHER", + 1: "CONTACT_METHOD_EMAIL", + 2: "CONTACT_METHOD_PHONE", + } + ContactMethod_value = map[string]int32{ + "CONTACT_METHOD_OTHER": 0, + "CONTACT_METHOD_EMAIL": 1, + "CONTACT_METHOD_PHONE": 2, + } +) -var ContactMethod_value = map[string]int32{ - "CONTACT_METHOD_OTHER": 0, - "CONTACT_METHOD_EMAIL": 1, - "CONTACT_METHOD_PHONE": 2, +func (x ContactMethod) Enum() *ContactMethod { + p := new(ContactMethod) + *p = x + return p } func (x ContactMethod) String() string { - return proto.EnumName(ContactMethod_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ContactMethod) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_3baa36b7c4d52524, []int{1} +func (ContactMethod) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_contact_info_proto_enumTypes[1].Descriptor() } -type ContactInfo struct { - ContactType ContactType `protobuf:"varint,1,opt,name=contact_type,json=contactType,proto3,enum=ttn.lorawan.v3.ContactType" json:"contact_type,omitempty"` - ContactMethod ContactMethod `protobuf:"varint,2,opt,name=contact_method,json=contactMethod,proto3,enum=ttn.lorawan.v3.ContactMethod" json:"contact_method,omitempty"` - Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` - Public bool `protobuf:"varint,4,opt,name=public,proto3" json:"public,omitempty"` - ValidatedAt *types.Timestamp `protobuf:"bytes,5,opt,name=validated_at,json=validatedAt,proto3" json:"validated_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ContactInfo) Reset() { *m = ContactInfo{} } -func (m *ContactInfo) String() string { return proto.CompactTextString(m) } -func (*ContactInfo) ProtoMessage() {} -func (*ContactInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_3baa36b7c4d52524, []int{0} +func (ContactMethod) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_contact_info_proto_enumTypes[1] } -func (m *ContactInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ContactInfo.Unmarshal(m, b) + +func (x ContactMethod) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (m *ContactInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ContactInfo.Marshal(b, m, deterministic) + +// Deprecated: Use ContactMethod.Descriptor instead. +func (ContactMethod) EnumDescriptor() ([]byte, []int) { + return file_lorawan_stack_api_contact_info_proto_rawDescGZIP(), []int{1} } -func (m *ContactInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_ContactInfo.Merge(m, src) + +type ContactInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContactType ContactType `protobuf:"varint,1,opt,name=contact_type,json=contactType,proto3,enum=ttn.lorawan.v3.ContactType" json:"contact_type,omitempty"` + ContactMethod ContactMethod `protobuf:"varint,2,opt,name=contact_method,json=contactMethod,proto3,enum=ttn.lorawan.v3.ContactMethod" json:"contact_method,omitempty"` + Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + Public bool `protobuf:"varint,4,opt,name=public,proto3" json:"public,omitempty"` + ValidatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=validated_at,json=validatedAt,proto3" json:"validated_at,omitempty"` +} + +func (x *ContactInfo) Reset() { + *x = ContactInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_contact_info_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ContactInfo) XXX_Size() int { - return xxx_messageInfo_ContactInfo.Size(m) + +func (x *ContactInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ContactInfo) XXX_DiscardUnknown() { - xxx_messageInfo_ContactInfo.DiscardUnknown(m) + +func (*ContactInfo) ProtoMessage() {} + +func (x *ContactInfo) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_contact_info_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ContactInfo proto.InternalMessageInfo +// Deprecated: Use ContactInfo.ProtoReflect.Descriptor instead. +func (*ContactInfo) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_contact_info_proto_rawDescGZIP(), []int{0} +} -func (m *ContactInfo) GetContactType() ContactType { - if m != nil { - return m.ContactType +func (x *ContactInfo) GetContactType() ContactType { + if x != nil { + return x.ContactType } return ContactType_CONTACT_TYPE_OTHER } -func (m *ContactInfo) GetContactMethod() ContactMethod { - if m != nil { - return m.ContactMethod +func (x *ContactInfo) GetContactMethod() ContactMethod { + if x != nil { + return x.ContactMethod } return ContactMethod_CONTACT_METHOD_OTHER } -func (m *ContactInfo) GetValue() string { - if m != nil { - return m.Value +func (x *ContactInfo) GetValue() string { + if x != nil { + return x.Value } return "" } -func (m *ContactInfo) GetPublic() bool { - if m != nil { - return m.Public +func (x *ContactInfo) GetPublic() bool { + if x != nil { + return x.Public } return false } -func (m *ContactInfo) GetValidatedAt() *types.Timestamp { - if m != nil { - return m.ValidatedAt +func (x *ContactInfo) GetValidatedAt() *timestamppb.Timestamp { + if x != nil { + return x.ValidatedAt } return nil } type ContactInfoValidation struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` - Entity *EntityIdentifiers `protobuf:"bytes,3,opt,name=entity,proto3" json:"entity,omitempty"` - ContactInfo []*ContactInfo `protobuf:"bytes,4,rep,name=contact_info,json=contactInfo,proto3" json:"contact_info,omitempty"` - CreatedAt *types.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - ExpiresAt *types.Timestamp `protobuf:"bytes,6,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ContactInfoValidation) Reset() { *m = ContactInfoValidation{} } -func (m *ContactInfoValidation) String() string { return proto.CompactTextString(m) } -func (*ContactInfoValidation) ProtoMessage() {} -func (*ContactInfoValidation) Descriptor() ([]byte, []int) { - return fileDescriptor_3baa36b7c4d52524, []int{1} -} -func (m *ContactInfoValidation) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ContactInfoValidation.Unmarshal(m, b) -} -func (m *ContactInfoValidation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ContactInfoValidation.Marshal(b, m, deterministic) -} -func (m *ContactInfoValidation) XXX_Merge(src proto.Message) { - xxx_messageInfo_ContactInfoValidation.Merge(m, src) -} -func (m *ContactInfoValidation) XXX_Size() int { - return xxx_messageInfo_ContactInfoValidation.Size(m) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` + Entity *EntityIdentifiers `protobuf:"bytes,3,opt,name=entity,proto3" json:"entity,omitempty"` + ContactInfo []*ContactInfo `protobuf:"bytes,4,rep,name=contact_info,json=contactInfo,proto3" json:"contact_info,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` +} + +func (x *ContactInfoValidation) Reset() { + *x = ContactInfoValidation{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_contact_info_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ContactInfoValidation) XXX_DiscardUnknown() { - xxx_messageInfo_ContactInfoValidation.DiscardUnknown(m) + +func (x *ContactInfoValidation) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ContactInfoValidation proto.InternalMessageInfo +func (*ContactInfoValidation) ProtoMessage() {} -func (m *ContactInfoValidation) GetId() string { - if m != nil { - return m.Id +func (x *ContactInfoValidation) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_contact_info_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (m *ContactInfoValidation) GetToken() string { - if m != nil { - return m.Token - } - return "" +// Deprecated: Use ContactInfoValidation.ProtoReflect.Descriptor instead. +func (*ContactInfoValidation) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_contact_info_proto_rawDescGZIP(), []int{1} } -func (m *ContactInfoValidation) GetEntity() *EntityIdentifiers { - if m != nil { - return m.Entity +func (x *ContactInfoValidation) GetId() string { + if x != nil { + return x.Id } - return nil + return "" } -func (m *ContactInfoValidation) GetContactInfo() []*ContactInfo { - if m != nil { - return m.ContactInfo +func (x *ContactInfoValidation) GetToken() string { + if x != nil { + return x.Token } - return nil + return "" } -func (m *ContactInfoValidation) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *ContactInfoValidation) GetEntity() *EntityIdentifiers { + if x != nil { + return x.Entity } return nil } -func (m *ContactInfoValidation) GetExpiresAt() *types.Timestamp { - if m != nil { - return m.ExpiresAt +func (x *ContactInfoValidation) GetContactInfo() []*ContactInfo { + if x != nil { + return x.ContactInfo } return nil } -func init() { - proto.RegisterEnum("ttn.lorawan.v3.ContactType", ContactType_name, ContactType_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.ContactType", ContactType_name, ContactType_value) - proto.RegisterEnum("ttn.lorawan.v3.ContactMethod", ContactMethod_name, ContactMethod_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.ContactMethod", ContactMethod_name, ContactMethod_value) - proto.RegisterType((*ContactInfo)(nil), "ttn.lorawan.v3.ContactInfo") - golang_proto.RegisterType((*ContactInfo)(nil), "ttn.lorawan.v3.ContactInfo") - proto.RegisterType((*ContactInfoValidation)(nil), "ttn.lorawan.v3.ContactInfoValidation") - golang_proto.RegisterType((*ContactInfoValidation)(nil), "ttn.lorawan.v3.ContactInfoValidation") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/contact_info.proto", fileDescriptor_3baa36b7c4d52524) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/contact_info.proto", fileDescriptor_3baa36b7c4d52524) -} - -var fileDescriptor_3baa36b7c4d52524 = []byte{ - // 767 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xcd, 0x8e, 0xe2, 0x46, - 0x10, 0x4e, 0x9b, 0x1f, 0x41, 0x33, 0x8b, 0x9c, 0xce, 0x06, 0x19, 0x6f, 0x76, 0x97, 0xb0, 0x89, - 0x84, 0x90, 0xb0, 0x25, 0x46, 0x39, 0xec, 0x4a, 0x89, 0x62, 0x58, 0x2b, 0x20, 0x31, 0xb0, 0x72, - 0x9c, 0x48, 0xc9, 0x05, 0x19, 0xd3, 0x98, 0x0e, 0xd0, 0xed, 0xd8, 0x0d, 0x33, 0xdc, 0xa2, 0xb9, - 0x25, 0xd7, 0xbc, 0x44, 0x34, 0x4f, 0x91, 0x43, 0xde, 0x20, 0x8f, 0x90, 0x9c, 0xe6, 0x98, 0xe3, - 0x9c, 0x22, 0x1a, 0x03, 0xf6, 0x90, 0xf9, 0xc9, 0xcd, 0x5d, 0xdf, 0x57, 0x5f, 0x75, 0xd7, 0x57, - 0x2e, 0xf8, 0xc9, 0x9c, 0x05, 0xce, 0xb9, 0x43, 0x1b, 0x21, 0x77, 0xdc, 0x99, 0xee, 0xf8, 0x44, - 0x77, 0x19, 0xe5, 0x8e, 0xcb, 0x87, 0x84, 0x4e, 0x98, 0xe6, 0x07, 0x8c, 0x33, 0x54, 0xe4, 0x9c, - 0x6a, 0x11, 0x53, 0x5b, 0x9d, 0xaa, 0x86, 0x47, 0xf8, 0x74, 0x39, 0xd2, 0x5c, 0xb6, 0xd0, 0x31, - 0x5d, 0xb1, 0xb5, 0x1f, 0xb0, 0x8b, 0xb5, 0x2e, 0xc8, 0x6e, 0xc3, 0xc3, 0xb4, 0xb1, 0x72, 0xe6, - 0x64, 0xec, 0x70, 0xac, 0x1f, 0x7d, 0x6c, 0x25, 0xd5, 0x46, 0x4c, 0xc2, 0x63, 0x1e, 0xdb, 0x26, - 0x8f, 0x96, 0x13, 0x71, 0x12, 0x07, 0xf1, 0x15, 0xd1, 0xdb, 0x31, 0xba, 0x3d, 0xc5, 0xf6, 0x94, - 0x50, 0x2f, 0xec, 0xd2, 0xf1, 0x32, 0xe4, 0x01, 0xc1, 0x61, 0xbc, 0xb4, 0xc7, 0x1a, 0x3f, 0x84, - 0x8c, 0xea, 0x0e, 0xa5, 0x8c, 0x3b, 0x9c, 0x30, 0x1a, 0x46, 0x22, 0x6f, 0xff, 0x97, 0xc8, 0x64, - 0xee, 0x78, 0xe1, 0x7f, 0xa8, 0x7c, 0xe4, 0x31, 0xe6, 0xcd, 0xb1, 0xe8, 0xd5, 0x31, 0xfa, 0x2c, - 0x42, 0xf7, 0xcf, 0xc1, 0x0b, 0x9f, 0xaf, 0x23, 0xf0, 0xe5, 0x6d, 0x90, 0x93, 0x05, 0x0e, 0xb9, - 0xb3, 0xf0, 0x23, 0xc2, 0xab, 0x63, 0x3b, 0xc8, 0x18, 0x53, 0x4e, 0x26, 0x04, 0x07, 0x51, 0x89, - 0xea, 0x6f, 0x12, 0x2c, 0xb4, 0xb7, 0x26, 0x75, 0xe9, 0x84, 0xa1, 0x0e, 0x3c, 0xd9, 0x79, 0xc6, - 0xd7, 0x3e, 0x56, 0x40, 0x05, 0xd4, 0x8a, 0xcd, 0x67, 0x5a, 0xd2, 0x34, 0x2d, 0x4a, 0xb1, 0xd7, - 0x3e, 0x6e, 0xe5, 0x6e, 0x5a, 0x99, 0x4b, 0x20, 0xc9, 0xc0, 0x2a, 0xb8, 0x87, 0x30, 0xea, 0xc3, - 0xe2, 0x4e, 0x69, 0x81, 0xf9, 0x94, 0x8d, 0x15, 0x49, 0x68, 0x3d, 0xbf, 0x43, 0xeb, 0x4c, 0x90, - 0x62, 0x6a, 0x4f, 0xdc, 0x38, 0x80, 0x5e, 0xc0, 0xcc, 0xca, 0x99, 0x2f, 0xb1, 0x92, 0xaa, 0x80, - 0x5a, 0x5e, 0xf0, 0x82, 0x94, 0xf2, 0x93, 0x64, 0x6d, 0xc3, 0xa8, 0x04, 0xb3, 0xfe, 0x72, 0x34, - 0x27, 0xae, 0x92, 0xae, 0x80, 0x5a, 0xce, 0x8a, 0x4e, 0xe8, 0x73, 0x78, 0xb2, 0x1b, 0x97, 0xf1, - 0xd0, 0xe1, 0x4a, 0xa6, 0x02, 0x6a, 0x85, 0xa6, 0xaa, 0x6d, 0xdb, 0xa7, 0xed, 0xda, 0xa7, 0xd9, - 0xbb, 0xf6, 0x59, 0x85, 0x3d, 0xdf, 0xe0, 0x6f, 0x72, 0xff, 0x5c, 0x95, 0xd3, 0x39, 0x20, 0x83, - 0xea, 0x1f, 0x12, 0xfc, 0x30, 0xd6, 0xaa, 0x6f, 0xb7, 0x24, 0xc2, 0x28, 0x2a, 0x43, 0x89, 0x8c, - 0x45, 0xab, 0xf2, 0xad, 0xfc, 0x4d, 0x2b, 0x1b, 0xa4, 0x65, 0xa0, 0x7c, 0x69, 0x49, 0x64, 0x8c, - 0x5e, 0xc2, 0x0c, 0x67, 0x33, 0x4c, 0xc5, 0xe3, 0x13, 0xe8, 0x36, 0x8e, 0x5e, 0xc3, 0xec, 0xc6, - 0x13, 0xbe, 0x16, 0xef, 0x2a, 0x34, 0x3f, 0xbe, 0xdd, 0x1e, 0x53, 0xa0, 0xdd, 0x83, 0x73, 0x56, - 0x94, 0x80, 0xbe, 0x38, 0x78, 0xb5, 0xf9, 0xbf, 0x94, 0x74, 0x25, 0x55, 0x2b, 0xdc, 0xe9, 0xd5, - 0xe6, 0xce, 0x7b, 0x87, 0x84, 0xd7, 0xaf, 0x21, 0x74, 0x03, 0xfc, 0xf8, 0xbe, 0xe4, 0x23, 0xb6, - 0xc1, 0x37, 0xa9, 0xf8, 0xc2, 0x27, 0x01, 0x0e, 0x37, 0xa9, 0xd9, 0x87, 0x53, 0x23, 0xb6, 0xc1, - 0xeb, 0x3f, 0x83, 0xfd, 0xc4, 0x89, 0x39, 0x29, 0x41, 0xd4, 0x1e, 0xf4, 0x6d, 0xa3, 0x6d, 0x0f, - 0xed, 0xef, 0xde, 0x99, 0xc3, 0x81, 0xdd, 0x31, 0x2d, 0xf9, 0xbd, 0xa3, 0xb8, 0xd1, 0xfa, 0xe6, - 0x6b, 0x53, 0x06, 0x48, 0x81, 0x4f, 0x13, 0xf1, 0x56, 0xb7, 0xd7, 0xeb, 0xf6, 0xbf, 0x92, 0x25, - 0xa4, 0xc2, 0x52, 0x02, 0xb1, 0xcd, 0x76, 0xa7, 0xdf, 0x6d, 0x1b, 0x3d, 0x39, 0xa5, 0x3e, 0xbd, - 0xbe, 0x2a, 0xcb, 0x0a, 0xa8, 0x9f, 0xc4, 0x19, 0xf5, 0x25, 0x7c, 0x92, 0x98, 0xbe, 0xb8, 0xf8, - 0x99, 0x69, 0x77, 0x06, 0x6f, 0xf7, 0xd7, 0x39, 0x46, 0xcc, 0x33, 0xa3, 0xdb, 0x4b, 0x5e, 0x28, - 0x42, 0xde, 0x75, 0x06, 0x7d, 0x53, 0x96, 0xd4, 0xd2, 0xf5, 0x55, 0x19, 0x29, 0xa0, 0x5e, 0x4c, - 0xe2, 0xcd, 0x5f, 0x24, 0xf8, 0x41, 0xdc, 0x15, 0xec, 0x91, 0x90, 0x07, 0x6b, 0x74, 0x09, 0xe0, - 0xfb, 0x16, 0xfe, 0x71, 0x89, 0x43, 0x1e, 0x9b, 0xae, 0x87, 0x27, 0x42, 0xfd, 0xf4, 0x1e, 0xcf, - 0x0f, 0x4a, 0xd5, 0x57, 0x97, 0x7f, 0xfe, 0xfd, 0xab, 0xf4, 0xbc, 0xaa, 0x24, 0xf6, 0xf2, 0x6e, - 0x9b, 0x12, 0x46, 0xdf, 0x80, 0x3a, 0xa2, 0x30, 0x17, 0xa5, 0x60, 0xf4, 0x38, 0x5d, 0xb5, 0x74, - 0xe4, 0xbc, 0xb9, 0x59, 0x54, 0xbb, 0x7a, 0xcd, 0xfb, 0xea, 0xb5, 0x3e, 0xfb, 0xfd, 0xaf, 0x17, - 0xe0, 0x7b, 0xdd, 0x63, 0x1a, 0x9f, 0x62, 0x2e, 0xd6, 0xa8, 0x46, 0x31, 0x3f, 0x67, 0xc1, 0x4c, - 0x4f, 0x6e, 0xb0, 0xd5, 0xa9, 0xee, 0xcf, 0x3c, 0x9d, 0x73, 0xea, 0x8f, 0x46, 0x59, 0x51, 0xeb, - 0xf4, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x22, 0x5e, 0x27, 0xf2, 0x75, 0x06, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// ContactInfoRegistryClient is the client API for ContactInfoRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ContactInfoRegistryClient interface { - // Request validation for the non-validated contact info for the given entity. - RequestValidation(ctx context.Context, in *EntityIdentifiers, opts ...grpc.CallOption) (*ContactInfoValidation, error) - // Validate confirms a contact info validation. - Validate(ctx context.Context, in *ContactInfoValidation, opts ...grpc.CallOption) (*types.Empty, error) -} - -type contactInfoRegistryClient struct { - cc *grpc.ClientConn -} - -func NewContactInfoRegistryClient(cc *grpc.ClientConn) ContactInfoRegistryClient { - return &contactInfoRegistryClient{cc} -} - -func (c *contactInfoRegistryClient) RequestValidation(ctx context.Context, in *EntityIdentifiers, opts ...grpc.CallOption) (*ContactInfoValidation, error) { - out := new(ContactInfoValidation) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ContactInfoRegistry/RequestValidation", in, out, opts...) - if err != nil { - return nil, err +func (x *ContactInfoValidation) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } - return out, nil + return nil } -func (c *contactInfoRegistryClient) Validate(ctx context.Context, in *ContactInfoValidation, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ContactInfoRegistry/Validate", in, out, opts...) - if err != nil { - return nil, err +func (x *ContactInfoValidation) GetExpiresAt() *timestamppb.Timestamp { + if x != nil { + return x.ExpiresAt } - return out, nil -} - -// ContactInfoRegistryServer is the server API for ContactInfoRegistry service. -type ContactInfoRegistryServer interface { - // Request validation for the non-validated contact info for the given entity. - RequestValidation(context.Context, *EntityIdentifiers) (*ContactInfoValidation, error) - // Validate confirms a contact info validation. - Validate(context.Context, *ContactInfoValidation) (*types.Empty, error) -} - -// UnimplementedContactInfoRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedContactInfoRegistryServer struct { -} - -func (*UnimplementedContactInfoRegistryServer) RequestValidation(ctx context.Context, req *EntityIdentifiers) (*ContactInfoValidation, error) { - return nil, status.Errorf(codes.Unimplemented, "method RequestValidation not implemented") -} -func (*UnimplementedContactInfoRegistryServer) Validate(ctx context.Context, req *ContactInfoValidation) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Validate not implemented") -} - -func RegisterContactInfoRegistryServer(s *grpc.Server, srv ContactInfoRegistryServer) { - s.RegisterService(&_ContactInfoRegistry_serviceDesc, srv) + return nil } -func _ContactInfoRegistry_RequestValidation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(EntityIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContactInfoRegistryServer).RequestValidation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ContactInfoRegistry/RequestValidation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactInfoRegistryServer).RequestValidation(ctx, req.(*EntityIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} +var File_lorawan_stack_api_contact_info_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_contact_info_proto_rawDesc = []byte{ + 0x0a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, + 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, + 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, + 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, + 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa8, 0x02, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x48, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4e, + 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1e, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x3d, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, + 0xc4, 0x02, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x05, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x12, 0x3e, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, + 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x2a, 0x89, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x00, 0x12, 0x16, + 0x0a, 0x12, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, + 0x42, 0x55, 0x53, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x02, + 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x54, 0x45, 0x43, 0x48, 0x4e, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x03, 0x1a, 0x14, 0xea, 0xaa, + 0x19, 0x10, 0x18, 0x01, 0x2a, 0x0c, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x2a, 0x75, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x4d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x4d, + 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x00, 0x12, 0x18, 0x0a, + 0x14, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, + 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x54, 0x41, + 0x43, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x50, 0x48, 0x4f, 0x4e, 0x45, 0x10, + 0x02, 0x1a, 0x16, 0xea, 0xaa, 0x19, 0x12, 0x18, 0x01, 0x2a, 0x0e, 0x43, 0x4f, 0x4e, 0x54, 0x41, + 0x43, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x32, 0x8a, 0x02, 0x0a, 0x13, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, + 0x79, 0x12, 0x82, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x25, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x3a, 0x01, 0x2a, 0x12, 0x6e, 0x0a, 0x08, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x32, 0x18, 0x2f, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x3a, 0x01, 0x2a, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_contact_info_proto_rawDescOnce sync.Once + file_lorawan_stack_api_contact_info_proto_rawDescData = file_lorawan_stack_api_contact_info_proto_rawDesc +) -func _ContactInfoRegistry_Validate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ContactInfoValidation) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContactInfoRegistryServer).Validate(ctx, in) +func file_lorawan_stack_api_contact_info_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_contact_info_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_contact_info_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_contact_info_proto_rawDescData) + }) + return file_lorawan_stack_api_contact_info_proto_rawDescData +} + +var file_lorawan_stack_api_contact_info_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_lorawan_stack_api_contact_info_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_lorawan_stack_api_contact_info_proto_goTypes = []interface{}{ + (ContactType)(0), // 0: ttn.lorawan.v3.ContactType + (ContactMethod)(0), // 1: ttn.lorawan.v3.ContactMethod + (*ContactInfo)(nil), // 2: ttn.lorawan.v3.ContactInfo + (*ContactInfoValidation)(nil), // 3: ttn.lorawan.v3.ContactInfoValidation + (*timestamppb.Timestamp)(nil), // 4: google.protobuf.Timestamp + (*EntityIdentifiers)(nil), // 5: ttn.lorawan.v3.EntityIdentifiers + (*emptypb.Empty)(nil), // 6: google.protobuf.Empty +} +var file_lorawan_stack_api_contact_info_proto_depIdxs = []int32{ + 0, // 0: ttn.lorawan.v3.ContactInfo.contact_type:type_name -> ttn.lorawan.v3.ContactType + 1, // 1: ttn.lorawan.v3.ContactInfo.contact_method:type_name -> ttn.lorawan.v3.ContactMethod + 4, // 2: ttn.lorawan.v3.ContactInfo.validated_at:type_name -> google.protobuf.Timestamp + 5, // 3: ttn.lorawan.v3.ContactInfoValidation.entity:type_name -> ttn.lorawan.v3.EntityIdentifiers + 2, // 4: ttn.lorawan.v3.ContactInfoValidation.contact_info:type_name -> ttn.lorawan.v3.ContactInfo + 4, // 5: ttn.lorawan.v3.ContactInfoValidation.created_at:type_name -> google.protobuf.Timestamp + 4, // 6: ttn.lorawan.v3.ContactInfoValidation.expires_at:type_name -> google.protobuf.Timestamp + 5, // 7: ttn.lorawan.v3.ContactInfoRegistry.RequestValidation:input_type -> ttn.lorawan.v3.EntityIdentifiers + 3, // 8: ttn.lorawan.v3.ContactInfoRegistry.Validate:input_type -> ttn.lorawan.v3.ContactInfoValidation + 3, // 9: ttn.lorawan.v3.ContactInfoRegistry.RequestValidation:output_type -> ttn.lorawan.v3.ContactInfoValidation + 6, // 10: ttn.lorawan.v3.ContactInfoRegistry.Validate:output_type -> google.protobuf.Empty + 9, // [9:11] is the sub-list for method output_type + 7, // [7:9] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_contact_info_proto_init() } +func file_lorawan_stack_api_contact_info_proto_init() { + if File_lorawan_stack_api_contact_info_proto != nil { + return } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ContactInfoRegistry/Validate", + file_lorawan_stack_api_identifiers_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_contact_info_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContactInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_contact_info_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContactInfoValidation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactInfoRegistryServer).Validate(ctx, req.(*ContactInfoValidation)) - } - return interceptor(ctx, in, info, handler) -} - -var _ContactInfoRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.ContactInfoRegistry", - HandlerType: (*ContactInfoRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "RequestValidation", - Handler: _ContactInfoRegistry_RequestValidation_Handler, - }, - { - MethodName: "Validate", - Handler: _ContactInfoRegistry_Validate_Handler, + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_contact_info_proto_rawDesc, + NumEnums: 2, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/contact_info.proto", + GoTypes: file_lorawan_stack_api_contact_info_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_contact_info_proto_depIdxs, + EnumInfos: file_lorawan_stack_api_contact_info_proto_enumTypes, + MessageInfos: file_lorawan_stack_api_contact_info_proto_msgTypes, + }.Build() + File_lorawan_stack_api_contact_info_proto = out.File + file_lorawan_stack_api_contact_info_proto_rawDesc = nil + file_lorawan_stack_api_contact_info_proto_goTypes = nil + file_lorawan_stack_api_contact_info_proto_depIdxs = nil } diff --git a/pkg/ttnpb/contact_info.pb.gw.go b/pkg/ttnpb/contact_info.pb.gw.go index 437bce0ccd..c70585080a 100644 --- a/pkg/ttnpb/contact_info.pb.gw.go +++ b/pkg/ttnpb/contact_info.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join func request_ContactInfoRegistry_RequestValidation_0(ctx context.Context, marshaler runtime.Marshaler, client ContactInfoRegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -113,20 +111,22 @@ func RegisterContactInfoRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ContactInfoRegistry/RequestValidation", runtime.WithHTTPPathPattern("/contact_info/validation")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ContactInfoRegistry_RequestValidation_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ContactInfoRegistry_RequestValidation_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ContactInfoRegistry_RequestValidation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ContactInfoRegistry_RequestValidation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -136,20 +136,22 @@ func RegisterContactInfoRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ContactInfoRegistry/Validate", runtime.WithHTTPPathPattern("/contact_info/validation")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ContactInfoRegistry_Validate_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ContactInfoRegistry_Validate_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ContactInfoRegistry_Validate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ContactInfoRegistry_Validate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -198,19 +200,21 @@ func RegisterContactInfoRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ContactInfoRegistry/RequestValidation", runtime.WithHTTPPathPattern("/contact_info/validation")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ContactInfoRegistry_RequestValidation_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ContactInfoRegistry_RequestValidation_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ContactInfoRegistry_RequestValidation_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ContactInfoRegistry_RequestValidation_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -218,19 +222,21 @@ func RegisterContactInfoRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ContactInfoRegistry/Validate", runtime.WithHTTPPathPattern("/contact_info/validation")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ContactInfoRegistry_Validate_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ContactInfoRegistry_Validate_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ContactInfoRegistry_Validate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ContactInfoRegistry_Validate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -238,9 +244,9 @@ func RegisterContactInfoRegistryHandlerClient(ctx context.Context, mux *runtime. } var ( - pattern_ContactInfoRegistry_RequestValidation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"contact_info", "validation"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ContactInfoRegistry_RequestValidation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"contact_info", "validation"}, "")) - pattern_ContactInfoRegistry_Validate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"contact_info", "validation"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ContactInfoRegistry_Validate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"contact_info", "validation"}, "")) ) var ( diff --git a/pkg/ttnpb/contact_info.pb.setters.fm.go b/pkg/ttnpb/contact_info.pb.setters.fm.go index 01a434079b..016203b8d7 100644 --- a/pkg/ttnpb/contact_info.pb.setters.fm.go +++ b/pkg/ttnpb/contact_info.pb.setters.fm.go @@ -14,8 +14,7 @@ func (dst *ContactInfo) SetFields(src *ContactInfo, paths ...string) error { if src != nil { dst.ContactType = src.ContactType } else { - var zero ContactType - dst.ContactType = zero + dst.ContactType = 0 } case "contact_method": if len(subs) > 0 { @@ -24,8 +23,7 @@ func (dst *ContactInfo) SetFields(src *ContactInfo, paths ...string) error { if src != nil { dst.ContactMethod = src.ContactMethod } else { - var zero ContactMethod - dst.ContactMethod = zero + dst.ContactMethod = 0 } case "value": if len(subs) > 0 { diff --git a/pkg/ttnpb/contact_info.pb.validate.go b/pkg/ttnpb/contact_info.pb.validate.go index 2bcec19000..3ec50467d6 100644 --- a/pkg/ttnpb/contact_info.pb.validate.go +++ b/pkg/ttnpb/contact_info.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _contact_info_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on ContactInfo with the rules defined // in the proto definition for this message. If any rules are violated, an // error is returned. diff --git a/pkg/ttnpb/contact_info_flags.pb.go b/pkg/ttnpb/contact_info_flags.pb.go index a05708f8db..16ab6b0e2e 100644 --- a/pkg/ttnpb/contact_info_flags.pb.go +++ b/pkg/ttnpb/contact_info_flags.pb.go @@ -1,14 +1,14 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/contact_info.proto package ttnpb import ( flagsplugin "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - gogo "github.com/TheThingsIndustries/protoc-gen-go-flags/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-flags/golang" pflag "github.com/spf13/pflag" ) @@ -97,7 +97,7 @@ func (m *ContactInfo) SetFromFlags(flags *pflag.FlagSet, prefix string) (paths [ if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("validated_at", prefix)); err != nil { return nil, err } else if changed { - m.ValidatedAt = gogo.SetTimestamp(val) + m.ValidatedAt = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("validated_at", prefix)) } return paths, nil diff --git a/pkg/ttnpb/contact_info_grpc.pb.go b/pkg/ttnpb/contact_info_grpc.pb.go new file mode 100644 index 0000000000..df35ac2b57 --- /dev/null +++ b/pkg/ttnpb/contact_info_grpc.pb.go @@ -0,0 +1,146 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/contact_info.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// ContactInfoRegistryClient is the client API for ContactInfoRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ContactInfoRegistryClient interface { + // Request validation for the non-validated contact info for the given entity. + RequestValidation(ctx context.Context, in *EntityIdentifiers, opts ...grpc.CallOption) (*ContactInfoValidation, error) + // Validate confirms a contact info validation. + Validate(ctx context.Context, in *ContactInfoValidation, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type contactInfoRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewContactInfoRegistryClient(cc grpc.ClientConnInterface) ContactInfoRegistryClient { + return &contactInfoRegistryClient{cc} +} + +func (c *contactInfoRegistryClient) RequestValidation(ctx context.Context, in *EntityIdentifiers, opts ...grpc.CallOption) (*ContactInfoValidation, error) { + out := new(ContactInfoValidation) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ContactInfoRegistry/RequestValidation", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactInfoRegistryClient) Validate(ctx context.Context, in *ContactInfoValidation, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ContactInfoRegistry/Validate", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ContactInfoRegistryServer is the server API for ContactInfoRegistry service. +// All implementations must embed UnimplementedContactInfoRegistryServer +// for forward compatibility +type ContactInfoRegistryServer interface { + // Request validation for the non-validated contact info for the given entity. + RequestValidation(context.Context, *EntityIdentifiers) (*ContactInfoValidation, error) + // Validate confirms a contact info validation. + Validate(context.Context, *ContactInfoValidation) (*emptypb.Empty, error) + mustEmbedUnimplementedContactInfoRegistryServer() +} + +// UnimplementedContactInfoRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedContactInfoRegistryServer struct { +} + +func (UnimplementedContactInfoRegistryServer) RequestValidation(context.Context, *EntityIdentifiers) (*ContactInfoValidation, error) { + return nil, status.Errorf(codes.Unimplemented, "method RequestValidation not implemented") +} +func (UnimplementedContactInfoRegistryServer) Validate(context.Context, *ContactInfoValidation) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Validate not implemented") +} +func (UnimplementedContactInfoRegistryServer) mustEmbedUnimplementedContactInfoRegistryServer() {} + +// UnsafeContactInfoRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ContactInfoRegistryServer will +// result in compilation errors. +type UnsafeContactInfoRegistryServer interface { + mustEmbedUnimplementedContactInfoRegistryServer() +} + +func RegisterContactInfoRegistryServer(s grpc.ServiceRegistrar, srv ContactInfoRegistryServer) { + s.RegisterService(&ContactInfoRegistry_ServiceDesc, srv) +} + +func _ContactInfoRegistry_RequestValidation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EntityIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactInfoRegistryServer).RequestValidation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ContactInfoRegistry/RequestValidation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactInfoRegistryServer).RequestValidation(ctx, req.(*EntityIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContactInfoRegistry_Validate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ContactInfoValidation) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactInfoRegistryServer).Validate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ContactInfoRegistry/Validate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactInfoRegistryServer).Validate(ctx, req.(*ContactInfoValidation)) + } + return interceptor(ctx, in, info, handler) +} + +// ContactInfoRegistry_ServiceDesc is the grpc.ServiceDesc for ContactInfoRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ContactInfoRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.ContactInfoRegistry", + HandlerType: (*ContactInfoRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "RequestValidation", + Handler: _ContactInfoRegistry_RequestValidation_Handler, + }, + { + MethodName: "Validate", + Handler: _ContactInfoRegistry_Validate_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/contact_info.proto", +} diff --git a/pkg/ttnpb/contact_info_json.pb.go b/pkg/ttnpb/contact_info_json.pb.go index 6069fd5c2d..01e6e8ae79 100644 --- a/pkg/ttnpb/contact_info_json.pb.go +++ b/pkg/ttnpb/contact_info_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/contact_info.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" ) @@ -140,7 +140,7 @@ func (x *ContactInfo) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ValidatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ValidatedAt) + golang.MarshalTimestamp(s, x.ValidatedAt) } } s.WriteObjectEnd() @@ -178,7 +178,7 @@ func (x *ContactInfo) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ValidatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -232,7 +232,7 @@ func (x *ContactInfoValidation) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.CreatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.CreatedAt) + golang.MarshalTimestamp(s, x.CreatedAt) } } if x.ExpiresAt != nil || s.HasField("expires_at") { @@ -241,7 +241,7 @@ func (x *ContactInfoValidation) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ExpiresAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ExpiresAt) + golang.MarshalTimestamp(s, x.ExpiresAt) } } s.WriteObjectEnd() @@ -298,7 +298,7 @@ func (x *ContactInfoValidation) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) x.CreatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -309,7 +309,7 @@ func (x *ContactInfoValidation) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) x.ExpiresAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } diff --git a/pkg/ttnpb/deviceclaimingserver.pb.go b/pkg/ttnpb/deviceclaimingserver.pb.go index eaec977430..fcf075fbfb 100644 --- a/pkg/ttnpb/deviceclaimingserver.pb.go +++ b/pkg/ttnpb/deviceclaimingserver.pb.go @@ -1,39 +1,52 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/deviceclaimingserver.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + structpb "google.golang.org/protobuf/types/known/structpb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type ClaimEndDeviceRequest struct { - // Types that are valid to be assigned to SourceDevice: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to SourceDevice: // *ClaimEndDeviceRequest_AuthenticatedIdentifiers_ // *ClaimEndDeviceRequest_QrCode SourceDevice isClaimEndDeviceRequest_SourceDevice `protobuf_oneof:"source_device"` @@ -58,50 +71,41 @@ type ClaimEndDeviceRequest struct { // Home NetID. TargetNetId []byte `protobuf:"bytes,13,opt,name=target_net_id,json=targetNetId,proto3" json:"target_net_id,omitempty"` // If set, invalidate the authentication code with which the device gets claimed. This prohibits subsequent claiming requests. - InvalidateAuthenticationCode bool `protobuf:"varint,5,opt,name=invalidate_authentication_code,json=invalidateAuthenticationCode,proto3" json:"invalidate_authentication_code,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + InvalidateAuthenticationCode bool `protobuf:"varint,5,opt,name=invalidate_authentication_code,json=invalidateAuthenticationCode,proto3" json:"invalidate_authentication_code,omitempty"` } -func (m *ClaimEndDeviceRequest) Reset() { *m = ClaimEndDeviceRequest{} } -func (m *ClaimEndDeviceRequest) String() string { return proto.CompactTextString(m) } -func (*ClaimEndDeviceRequest) ProtoMessage() {} -func (*ClaimEndDeviceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e8a7f6d184fc3dc3, []int{0} -} -func (m *ClaimEndDeviceRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ClaimEndDeviceRequest.Unmarshal(m, b) -} -func (m *ClaimEndDeviceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ClaimEndDeviceRequest.Marshal(b, m, deterministic) -} -func (m *ClaimEndDeviceRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ClaimEndDeviceRequest.Merge(m, src) -} -func (m *ClaimEndDeviceRequest) XXX_Size() int { - return xxx_messageInfo_ClaimEndDeviceRequest.Size(m) +func (x *ClaimEndDeviceRequest) Reset() { + *x = ClaimEndDeviceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ClaimEndDeviceRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ClaimEndDeviceRequest.DiscardUnknown(m) + +func (x *ClaimEndDeviceRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ClaimEndDeviceRequest proto.InternalMessageInfo +func (*ClaimEndDeviceRequest) ProtoMessage() {} -type isClaimEndDeviceRequest_SourceDevice interface { - isClaimEndDeviceRequest_SourceDevice() +func (x *ClaimEndDeviceRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type ClaimEndDeviceRequest_AuthenticatedIdentifiers_ struct { - AuthenticatedIdentifiers *ClaimEndDeviceRequest_AuthenticatedIdentifiers `protobuf:"bytes,1,opt,name=authenticated_identifiers,json=authenticatedIdentifiers,proto3,oneof" json:"authenticated_identifiers,omitempty"` -} -type ClaimEndDeviceRequest_QrCode struct { - QrCode []byte `protobuf:"bytes,2,opt,name=qr_code,json=qrCode,proto3,oneof" json:"qr_code,omitempty"` +// Deprecated: Use ClaimEndDeviceRequest.ProtoReflect.Descriptor instead. +func (*ClaimEndDeviceRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_deviceclaimingserver_proto_rawDescGZIP(), []int{0} } -func (*ClaimEndDeviceRequest_AuthenticatedIdentifiers_) isClaimEndDeviceRequest_SourceDevice() {} -func (*ClaimEndDeviceRequest_QrCode) isClaimEndDeviceRequest_SourceDevice() {} - func (m *ClaimEndDeviceRequest) GetSourceDevice() isClaimEndDeviceRequest_SourceDevice { if m != nil { return m.SourceDevice @@ -109,394 +113,335 @@ func (m *ClaimEndDeviceRequest) GetSourceDevice() isClaimEndDeviceRequest_Source return nil } -func (m *ClaimEndDeviceRequest) GetAuthenticatedIdentifiers() *ClaimEndDeviceRequest_AuthenticatedIdentifiers { - if x, ok := m.GetSourceDevice().(*ClaimEndDeviceRequest_AuthenticatedIdentifiers_); ok { +func (x *ClaimEndDeviceRequest) GetAuthenticatedIdentifiers() *ClaimEndDeviceRequest_AuthenticatedIdentifiers { + if x, ok := x.GetSourceDevice().(*ClaimEndDeviceRequest_AuthenticatedIdentifiers_); ok { return x.AuthenticatedIdentifiers } return nil } -func (m *ClaimEndDeviceRequest) GetQrCode() []byte { - if x, ok := m.GetSourceDevice().(*ClaimEndDeviceRequest_QrCode); ok { +func (x *ClaimEndDeviceRequest) GetQrCode() []byte { + if x, ok := x.GetSourceDevice().(*ClaimEndDeviceRequest_QrCode); ok { return x.QrCode } return nil } -func (m *ClaimEndDeviceRequest) GetTargetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.TargetApplicationIds +func (x *ClaimEndDeviceRequest) GetTargetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.TargetApplicationIds } return nil } -func (m *ClaimEndDeviceRequest) GetTargetDeviceId() string { - if m != nil { - return m.TargetDeviceId +func (x *ClaimEndDeviceRequest) GetTargetDeviceId() string { + if x != nil { + return x.TargetDeviceId } return "" } -func (m *ClaimEndDeviceRequest) GetTargetNetworkServerAddress() string { - if m != nil { - return m.TargetNetworkServerAddress +func (x *ClaimEndDeviceRequest) GetTargetNetworkServerAddress() string { + if x != nil { + return x.TargetNetworkServerAddress } return "" } -func (m *ClaimEndDeviceRequest) GetTargetNetworkServerKekLabel() string { - if m != nil { - return m.TargetNetworkServerKekLabel +func (x *ClaimEndDeviceRequest) GetTargetNetworkServerKekLabel() string { + if x != nil { + return x.TargetNetworkServerKekLabel } return "" } -func (m *ClaimEndDeviceRequest) GetTargetApplicationServerAddress() string { - if m != nil { - return m.TargetApplicationServerAddress +func (x *ClaimEndDeviceRequest) GetTargetApplicationServerAddress() string { + if x != nil { + return x.TargetApplicationServerAddress } return "" } -func (m *ClaimEndDeviceRequest) GetTargetApplicationServerKekLabel() string { - if m != nil { - return m.TargetApplicationServerKekLabel +func (x *ClaimEndDeviceRequest) GetTargetApplicationServerKekLabel() string { + if x != nil { + return x.TargetApplicationServerKekLabel } return "" } -func (m *ClaimEndDeviceRequest) GetTargetApplicationServerId() string { - if m != nil { - return m.TargetApplicationServerId +func (x *ClaimEndDeviceRequest) GetTargetApplicationServerId() string { + if x != nil { + return x.TargetApplicationServerId } return "" } -func (m *ClaimEndDeviceRequest) GetTargetNetId() []byte { - if m != nil { - return m.TargetNetId +func (x *ClaimEndDeviceRequest) GetTargetNetId() []byte { + if x != nil { + return x.TargetNetId } return nil } -func (m *ClaimEndDeviceRequest) GetInvalidateAuthenticationCode() bool { - if m != nil { - return m.InvalidateAuthenticationCode +func (x *ClaimEndDeviceRequest) GetInvalidateAuthenticationCode() bool { + if x != nil { + return x.InvalidateAuthenticationCode } return false } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*ClaimEndDeviceRequest) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*ClaimEndDeviceRequest_AuthenticatedIdentifiers_)(nil), - (*ClaimEndDeviceRequest_QrCode)(nil), - } +type isClaimEndDeviceRequest_SourceDevice interface { + isClaimEndDeviceRequest_SourceDevice() } -type ClaimEndDeviceRequest_AuthenticatedIdentifiers struct { - // JoinEUI (or AppEUI) of the device to claim. - JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` - // DevEUI of the device to claim. - DevEui []byte `protobuf:"bytes,2,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"` - // Authentication code to prove ownership. - // In the LoRa Alliance TR005 specification, this equals the OwnerToken. - AuthenticationCode string `protobuf:"bytes,3,opt,name=authentication_code,json=authenticationCode,proto3" json:"authentication_code,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type ClaimEndDeviceRequest_AuthenticatedIdentifiers_ struct { + // Authenticated identifiers. + AuthenticatedIdentifiers *ClaimEndDeviceRequest_AuthenticatedIdentifiers `protobuf:"bytes,1,opt,name=authenticated_identifiers,json=authenticatedIdentifiers,proto3,oneof"` } -func (m *ClaimEndDeviceRequest_AuthenticatedIdentifiers) Reset() { - *m = ClaimEndDeviceRequest_AuthenticatedIdentifiers{} -} -func (m *ClaimEndDeviceRequest_AuthenticatedIdentifiers) String() string { - return proto.CompactTextString(m) -} -func (*ClaimEndDeviceRequest_AuthenticatedIdentifiers) ProtoMessage() {} -func (*ClaimEndDeviceRequest_AuthenticatedIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_e8a7f6d184fc3dc3, []int{0, 0} -} -func (m *ClaimEndDeviceRequest_AuthenticatedIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ClaimEndDeviceRequest_AuthenticatedIdentifiers.Unmarshal(m, b) -} -func (m *ClaimEndDeviceRequest_AuthenticatedIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ClaimEndDeviceRequest_AuthenticatedIdentifiers.Marshal(b, m, deterministic) -} -func (m *ClaimEndDeviceRequest_AuthenticatedIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_ClaimEndDeviceRequest_AuthenticatedIdentifiers.Merge(m, src) -} -func (m *ClaimEndDeviceRequest_AuthenticatedIdentifiers) XXX_Size() int { - return xxx_messageInfo_ClaimEndDeviceRequest_AuthenticatedIdentifiers.Size(m) -} -func (m *ClaimEndDeviceRequest_AuthenticatedIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_ClaimEndDeviceRequest_AuthenticatedIdentifiers.DiscardUnknown(m) +type ClaimEndDeviceRequest_QrCode struct { + // Raw QR code contents. + QrCode []byte `protobuf:"bytes,2,opt,name=qr_code,json=qrCode,proto3,oneof"` } -var xxx_messageInfo_ClaimEndDeviceRequest_AuthenticatedIdentifiers proto.InternalMessageInfo +func (*ClaimEndDeviceRequest_AuthenticatedIdentifiers_) isClaimEndDeviceRequest_SourceDevice() {} -func (m *ClaimEndDeviceRequest_AuthenticatedIdentifiers) GetJoinEui() []byte { - if m != nil { - return m.JoinEui - } - return nil +func (*ClaimEndDeviceRequest_QrCode) isClaimEndDeviceRequest_SourceDevice() {} + +type AuthorizeApplicationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + ApiKey string `protobuf:"bytes,2,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` } -func (m *ClaimEndDeviceRequest_AuthenticatedIdentifiers) GetDevEui() []byte { - if m != nil { - return m.DevEui +func (x *AuthorizeApplicationRequest) Reset() { + *x = AuthorizeApplicationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (m *ClaimEndDeviceRequest_AuthenticatedIdentifiers) GetAuthenticationCode() string { - if m != nil { - return m.AuthenticationCode - } - return "" +func (x *AuthorizeApplicationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -type AuthorizeApplicationRequest struct { - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` - ApiKey string `protobuf:"bytes,2,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (*AuthorizeApplicationRequest) ProtoMessage() {} + +func (x *AuthorizeApplicationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *AuthorizeApplicationRequest) Reset() { *m = AuthorizeApplicationRequest{} } -func (m *AuthorizeApplicationRequest) String() string { return proto.CompactTextString(m) } -func (*AuthorizeApplicationRequest) ProtoMessage() {} +// Deprecated: Use AuthorizeApplicationRequest.ProtoReflect.Descriptor instead. func (*AuthorizeApplicationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e8a7f6d184fc3dc3, []int{1} -} -func (m *AuthorizeApplicationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AuthorizeApplicationRequest.Unmarshal(m, b) -} -func (m *AuthorizeApplicationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AuthorizeApplicationRequest.Marshal(b, m, deterministic) -} -func (m *AuthorizeApplicationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthorizeApplicationRequest.Merge(m, src) -} -func (m *AuthorizeApplicationRequest) XXX_Size() int { - return xxx_messageInfo_AuthorizeApplicationRequest.Size(m) -} -func (m *AuthorizeApplicationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthorizeApplicationRequest.DiscardUnknown(m) + return file_lorawan_stack_api_deviceclaimingserver_proto_rawDescGZIP(), []int{1} } -var xxx_messageInfo_AuthorizeApplicationRequest proto.InternalMessageInfo - -func (m *AuthorizeApplicationRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *AuthorizeApplicationRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *AuthorizeApplicationRequest) GetApiKey() string { - if m != nil { - return m.ApiKey +func (x *AuthorizeApplicationRequest) GetApiKey() string { + if x != nil { + return x.ApiKey } return "" } type GetInfoByJoinEUIRequest struct { - JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GetInfoByJoinEUIRequest) Reset() { *m = GetInfoByJoinEUIRequest{} } -func (m *GetInfoByJoinEUIRequest) String() string { return proto.CompactTextString(m) } -func (*GetInfoByJoinEUIRequest) ProtoMessage() {} -func (*GetInfoByJoinEUIRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e8a7f6d184fc3dc3, []int{2} -} -func (m *GetInfoByJoinEUIRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetInfoByJoinEUIRequest.Unmarshal(m, b) -} -func (m *GetInfoByJoinEUIRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetInfoByJoinEUIRequest.Marshal(b, m, deterministic) + JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` } -func (m *GetInfoByJoinEUIRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetInfoByJoinEUIRequest.Merge(m, src) + +func (x *GetInfoByJoinEUIRequest) Reset() { + *x = GetInfoByJoinEUIRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetInfoByJoinEUIRequest) XXX_Size() int { - return xxx_messageInfo_GetInfoByJoinEUIRequest.Size(m) + +func (x *GetInfoByJoinEUIRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetInfoByJoinEUIRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetInfoByJoinEUIRequest.DiscardUnknown(m) + +func (*GetInfoByJoinEUIRequest) ProtoMessage() {} + +func (x *GetInfoByJoinEUIRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetInfoByJoinEUIRequest proto.InternalMessageInfo +// Deprecated: Use GetInfoByJoinEUIRequest.ProtoReflect.Descriptor instead. +func (*GetInfoByJoinEUIRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_deviceclaimingserver_proto_rawDescGZIP(), []int{2} +} -func (m *GetInfoByJoinEUIRequest) GetJoinEui() []byte { - if m != nil { - return m.JoinEui +func (x *GetInfoByJoinEUIRequest) GetJoinEui() []byte { + if x != nil { + return x.JoinEui } return nil } type GetInfoByJoinEUIResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` // If set, this Join EUI is available for claiming on one of the configured Join Servers. - SupportsClaiming bool `protobuf:"varint,2,opt,name=supports_claiming,json=supportsClaiming,proto3" json:"supports_claiming,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + SupportsClaiming bool `protobuf:"varint,2,opt,name=supports_claiming,json=supportsClaiming,proto3" json:"supports_claiming,omitempty"` } -func (m *GetInfoByJoinEUIResponse) Reset() { *m = GetInfoByJoinEUIResponse{} } -func (m *GetInfoByJoinEUIResponse) String() string { return proto.CompactTextString(m) } -func (*GetInfoByJoinEUIResponse) ProtoMessage() {} -func (*GetInfoByJoinEUIResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e8a7f6d184fc3dc3, []int{3} -} -func (m *GetInfoByJoinEUIResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetInfoByJoinEUIResponse.Unmarshal(m, b) -} -func (m *GetInfoByJoinEUIResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetInfoByJoinEUIResponse.Marshal(b, m, deterministic) -} -func (m *GetInfoByJoinEUIResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetInfoByJoinEUIResponse.Merge(m, src) +func (x *GetInfoByJoinEUIResponse) Reset() { + *x = GetInfoByJoinEUIResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetInfoByJoinEUIResponse) XXX_Size() int { - return xxx_messageInfo_GetInfoByJoinEUIResponse.Size(m) + +func (x *GetInfoByJoinEUIResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetInfoByJoinEUIResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetInfoByJoinEUIResponse.DiscardUnknown(m) + +func (*GetInfoByJoinEUIResponse) ProtoMessage() {} + +func (x *GetInfoByJoinEUIResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetInfoByJoinEUIResponse proto.InternalMessageInfo +// Deprecated: Use GetInfoByJoinEUIResponse.ProtoReflect.Descriptor instead. +func (*GetInfoByJoinEUIResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_deviceclaimingserver_proto_rawDescGZIP(), []int{3} +} -func (m *GetInfoByJoinEUIResponse) GetJoinEui() []byte { - if m != nil { - return m.JoinEui +func (x *GetInfoByJoinEUIResponse) GetJoinEui() []byte { + if x != nil { + return x.JoinEui } return nil } -func (m *GetInfoByJoinEUIResponse) GetSupportsClaiming() bool { - if m != nil { - return m.SupportsClaiming +func (x *GetInfoByJoinEUIResponse) GetSupportsClaiming() bool { + if x != nil { + return x.SupportsClaiming } return false } type GetClaimStatusResponse struct { - EndDeviceIds *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` - HomeNetId []byte `protobuf:"bytes,2,opt,name=home_net_id,json=homeNetId,proto3" json:"home_net_id,omitempty"` - HomeNsId []byte `protobuf:"bytes,3,opt,name=home_ns_id,json=homeNsId,proto3" json:"home_ns_id,omitempty"` - VendorSpecific *GetClaimStatusResponse_VendorSpecific `protobuf:"bytes,4,opt,name=vendor_specific,json=vendorSpecific,proto3" json:"vendor_specific,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetClaimStatusResponse) Reset() { *m = GetClaimStatusResponse{} } -func (m *GetClaimStatusResponse) String() string { return proto.CompactTextString(m) } -func (*GetClaimStatusResponse) ProtoMessage() {} -func (*GetClaimStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e8a7f6d184fc3dc3, []int{4} -} -func (m *GetClaimStatusResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetClaimStatusResponse.Unmarshal(m, b) -} -func (m *GetClaimStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetClaimStatusResponse.Marshal(b, m, deterministic) -} -func (m *GetClaimStatusResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetClaimStatusResponse.Merge(m, src) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EndDeviceIds *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` + HomeNetId []byte `protobuf:"bytes,2,opt,name=home_net_id,json=homeNetId,proto3" json:"home_net_id,omitempty"` + HomeNsId []byte `protobuf:"bytes,3,opt,name=home_ns_id,json=homeNsId,proto3" json:"home_ns_id,omitempty"` + VendorSpecific *GetClaimStatusResponse_VendorSpecific `protobuf:"bytes,4,opt,name=vendor_specific,json=vendorSpecific,proto3" json:"vendor_specific,omitempty"` } -func (m *GetClaimStatusResponse) XXX_Size() int { - return xxx_messageInfo_GetClaimStatusResponse.Size(m) + +func (x *GetClaimStatusResponse) Reset() { + *x = GetClaimStatusResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetClaimStatusResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetClaimStatusResponse.DiscardUnknown(m) + +func (x *GetClaimStatusResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_GetClaimStatusResponse proto.InternalMessageInfo +func (*GetClaimStatusResponse) ProtoMessage() {} -func (m *GetClaimStatusResponse) GetEndDeviceIds() *EndDeviceIdentifiers { - if m != nil { - return m.EndDeviceIds +func (x *GetClaimStatusResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *GetClaimStatusResponse) GetHomeNetId() []byte { - if m != nil { - return m.HomeNetId - } - return nil +// Deprecated: Use GetClaimStatusResponse.ProtoReflect.Descriptor instead. +func (*GetClaimStatusResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_deviceclaimingserver_proto_rawDescGZIP(), []int{4} } -func (m *GetClaimStatusResponse) GetHomeNsId() []byte { - if m != nil { - return m.HomeNsId +func (x *GetClaimStatusResponse) GetEndDeviceIds() *EndDeviceIdentifiers { + if x != nil { + return x.EndDeviceIds } return nil } -func (m *GetClaimStatusResponse) GetVendorSpecific() *GetClaimStatusResponse_VendorSpecific { - if m != nil { - return m.VendorSpecific +func (x *GetClaimStatusResponse) GetHomeNetId() []byte { + if x != nil { + return x.HomeNetId } return nil } -type GetClaimStatusResponse_VendorSpecific struct { - OrganizationUniqueIdentifier uint32 `protobuf:"varint,1,opt,name=organization_unique_identifier,json=organizationUniqueIdentifier,proto3" json:"organization_unique_identifier,omitempty"` - // Vendor Specific data in JSON format. - Data *types.Struct `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetClaimStatusResponse_VendorSpecific) Reset() { *m = GetClaimStatusResponse_VendorSpecific{} } -func (m *GetClaimStatusResponse_VendorSpecific) String() string { return proto.CompactTextString(m) } -func (*GetClaimStatusResponse_VendorSpecific) ProtoMessage() {} -func (*GetClaimStatusResponse_VendorSpecific) Descriptor() ([]byte, []int) { - return fileDescriptor_e8a7f6d184fc3dc3, []int{4, 0} -} -func (m *GetClaimStatusResponse_VendorSpecific) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetClaimStatusResponse_VendorSpecific.Unmarshal(m, b) -} -func (m *GetClaimStatusResponse_VendorSpecific) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetClaimStatusResponse_VendorSpecific.Marshal(b, m, deterministic) -} -func (m *GetClaimStatusResponse_VendorSpecific) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetClaimStatusResponse_VendorSpecific.Merge(m, src) -} -func (m *GetClaimStatusResponse_VendorSpecific) XXX_Size() int { - return xxx_messageInfo_GetClaimStatusResponse_VendorSpecific.Size(m) -} -func (m *GetClaimStatusResponse_VendorSpecific) XXX_DiscardUnknown() { - xxx_messageInfo_GetClaimStatusResponse_VendorSpecific.DiscardUnknown(m) -} - -var xxx_messageInfo_GetClaimStatusResponse_VendorSpecific proto.InternalMessageInfo - -func (m *GetClaimStatusResponse_VendorSpecific) GetOrganizationUniqueIdentifier() uint32 { - if m != nil { - return m.OrganizationUniqueIdentifier +func (x *GetClaimStatusResponse) GetHomeNsId() []byte { + if x != nil { + return x.HomeNsId } - return 0 + return nil } -func (m *GetClaimStatusResponse_VendorSpecific) GetData() *types.Struct { - if m != nil { - return m.Data +func (x *GetClaimStatusResponse) GetVendorSpecific() *GetClaimStatusResponse_VendorSpecific { + if x != nil { + return x.VendorSpecific } return nil } type CUPSRedirection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // CUPS URI for LoRa Basics Station CUPS redirection. TargetCupsUri string `protobuf:"bytes,1,opt,name=target_cups_uri,json=targetCupsUri,proto3" json:"target_cups_uri,omitempty"` // The key set in the gateway to authenticate itself. @@ -505,153 +450,110 @@ type CUPSRedirection struct { TargetCupsTrust []byte `protobuf:"bytes,3,opt,name=target_cups_trust,json=targetCupsTrust,proto3" json:"target_cups_trust,omitempty"` // CUPS Credentials for the gateway. // - // Types that are valid to be assigned to GatewayCredentials: + // Types that are assignable to GatewayCredentials: // *CUPSRedirection_ClientTls // *CUPSRedirection_AuthToken - GatewayCredentials isCUPSRedirection_GatewayCredentials `protobuf_oneof:"gateway_credentials"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + GatewayCredentials isCUPSRedirection_GatewayCredentials `protobuf_oneof:"gateway_credentials"` } -func (m *CUPSRedirection) Reset() { *m = CUPSRedirection{} } -func (m *CUPSRedirection) String() string { return proto.CompactTextString(m) } -func (*CUPSRedirection) ProtoMessage() {} -func (*CUPSRedirection) Descriptor() ([]byte, []int) { - return fileDescriptor_e8a7f6d184fc3dc3, []int{5} -} -func (m *CUPSRedirection) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CUPSRedirection.Unmarshal(m, b) -} -func (m *CUPSRedirection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CUPSRedirection.Marshal(b, m, deterministic) -} -func (m *CUPSRedirection) XXX_Merge(src proto.Message) { - xxx_messageInfo_CUPSRedirection.Merge(m, src) -} -func (m *CUPSRedirection) XXX_Size() int { - return xxx_messageInfo_CUPSRedirection.Size(m) +func (x *CUPSRedirection) Reset() { + *x = CUPSRedirection{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CUPSRedirection) XXX_DiscardUnknown() { - xxx_messageInfo_CUPSRedirection.DiscardUnknown(m) + +func (x *CUPSRedirection) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_CUPSRedirection proto.InternalMessageInfo +func (*CUPSRedirection) ProtoMessage() {} -type isCUPSRedirection_GatewayCredentials interface { - isCUPSRedirection_GatewayCredentials() +func (x *CUPSRedirection) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type CUPSRedirection_ClientTls struct { - ClientTls *CUPSRedirection_ClientTLS `protobuf:"bytes,4,opt,name=client_tls,json=clientTls,proto3,oneof" json:"client_tls,omitempty"` -} -type CUPSRedirection_AuthToken struct { - AuthToken string `protobuf:"bytes,5,opt,name=auth_token,json=authToken,proto3,oneof" json:"auth_token,omitempty"` +// Deprecated: Use CUPSRedirection.ProtoReflect.Descriptor instead. +func (*CUPSRedirection) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_deviceclaimingserver_proto_rawDescGZIP(), []int{5} } -func (*CUPSRedirection_ClientTls) isCUPSRedirection_GatewayCredentials() {} -func (*CUPSRedirection_AuthToken) isCUPSRedirection_GatewayCredentials() {} - -func (m *CUPSRedirection) GetGatewayCredentials() isCUPSRedirection_GatewayCredentials { - if m != nil { - return m.GatewayCredentials +func (x *CUPSRedirection) GetTargetCupsUri() string { + if x != nil { + return x.TargetCupsUri } - return nil + return "" } -func (m *CUPSRedirection) GetTargetCupsUri() string { - if m != nil { - return m.TargetCupsUri +func (x *CUPSRedirection) GetCurrentGatewayKey() string { + if x != nil { + return x.CurrentGatewayKey } return "" } -func (m *CUPSRedirection) GetCurrentGatewayKey() string { - if m != nil { - return m.CurrentGatewayKey +func (x *CUPSRedirection) GetTargetCupsTrust() []byte { + if x != nil { + return x.TargetCupsTrust } - return "" + return nil } -func (m *CUPSRedirection) GetTargetCupsTrust() []byte { +func (m *CUPSRedirection) GetGatewayCredentials() isCUPSRedirection_GatewayCredentials { if m != nil { - return m.TargetCupsTrust + return m.GatewayCredentials } return nil } -func (m *CUPSRedirection) GetClientTls() *CUPSRedirection_ClientTLS { - if x, ok := m.GetGatewayCredentials().(*CUPSRedirection_ClientTls); ok { +func (x *CUPSRedirection) GetClientTls() *CUPSRedirection_ClientTLS { + if x, ok := x.GetGatewayCredentials().(*CUPSRedirection_ClientTls); ok { return x.ClientTls } return nil } -func (m *CUPSRedirection) GetAuthToken() string { - if x, ok := m.GetGatewayCredentials().(*CUPSRedirection_AuthToken); ok { +func (x *CUPSRedirection) GetAuthToken() string { + if x, ok := x.GetGatewayCredentials().(*CUPSRedirection_AuthToken); ok { return x.AuthToken } return "" } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*CUPSRedirection) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*CUPSRedirection_ClientTls)(nil), - (*CUPSRedirection_AuthToken)(nil), - } +type isCUPSRedirection_GatewayCredentials interface { + isCUPSRedirection_GatewayCredentials() } -type CUPSRedirection_ClientTLS struct { - // PEM encoded Client Certificate. - Cert []byte `protobuf:"bytes,1,opt,name=cert,proto3" json:"cert,omitempty"` - // PEM encoded Client Private Key. - Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type CUPSRedirection_ClientTls struct { + // TODO: Support mTLS (https://github.com/TheThingsNetwork/lorawan-stack/issues/137) + ClientTls *CUPSRedirection_ClientTLS `protobuf:"bytes,4,opt,name=client_tls,json=clientTls,proto3,oneof"` } -func (m *CUPSRedirection_ClientTLS) Reset() { *m = CUPSRedirection_ClientTLS{} } -func (m *CUPSRedirection_ClientTLS) String() string { return proto.CompactTextString(m) } -func (*CUPSRedirection_ClientTLS) ProtoMessage() {} -func (*CUPSRedirection_ClientTLS) Descriptor() ([]byte, []int) { - return fileDescriptor_e8a7f6d184fc3dc3, []int{5, 0} -} -func (m *CUPSRedirection_ClientTLS) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CUPSRedirection_ClientTLS.Unmarshal(m, b) -} -func (m *CUPSRedirection_ClientTLS) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CUPSRedirection_ClientTLS.Marshal(b, m, deterministic) -} -func (m *CUPSRedirection_ClientTLS) XXX_Merge(src proto.Message) { - xxx_messageInfo_CUPSRedirection_ClientTLS.Merge(m, src) -} -func (m *CUPSRedirection_ClientTLS) XXX_Size() int { - return xxx_messageInfo_CUPSRedirection_ClientTLS.Size(m) -} -func (m *CUPSRedirection_ClientTLS) XXX_DiscardUnknown() { - xxx_messageInfo_CUPSRedirection_ClientTLS.DiscardUnknown(m) +type CUPSRedirection_AuthToken struct { + // The Device Claiming Server will fill this field with a The Things Stack API Key. + AuthToken string `protobuf:"bytes,5,opt,name=auth_token,json=authToken,proto3,oneof"` } -var xxx_messageInfo_CUPSRedirection_ClientTLS proto.InternalMessageInfo - -func (m *CUPSRedirection_ClientTLS) GetCert() []byte { - if m != nil { - return m.Cert - } - return nil -} +func (*CUPSRedirection_ClientTls) isCUPSRedirection_GatewayCredentials() {} -func (m *CUPSRedirection_ClientTLS) GetKey() []byte { - if m != nil { - return m.Key - } - return nil -} +func (*CUPSRedirection_AuthToken) isCUPSRedirection_GatewayCredentials() {} type ClaimGatewayRequest struct { - // Types that are valid to be assigned to SourceGateway: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to SourceGateway: // *ClaimGatewayRequest_AuthenticatedIdentifiers_ // *ClaimGatewayRequest_QrCode SourceGateway isClaimGatewayRequest_SourceGateway `protobuf_oneof:"source_gateway"` @@ -666,50 +568,41 @@ type ClaimGatewayRequest struct { CupsRedirection *CUPSRedirection `protobuf:"bytes,6,opt,name=cups_redirection,json=cupsRedirection,proto3" json:"cups_redirection,omitempty"` // Frequency plan ID of the target gateway. // This equals the first element of the frequency_plan_ids field. - TargetFrequencyPlanId string `protobuf:"bytes,7,opt,name=target_frequency_plan_id,json=targetFrequencyPlanId,proto3" json:"target_frequency_plan_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + TargetFrequencyPlanId string `protobuf:"bytes,7,opt,name=target_frequency_plan_id,json=targetFrequencyPlanId,proto3" json:"target_frequency_plan_id,omitempty"` } -func (m *ClaimGatewayRequest) Reset() { *m = ClaimGatewayRequest{} } -func (m *ClaimGatewayRequest) String() string { return proto.CompactTextString(m) } -func (*ClaimGatewayRequest) ProtoMessage() {} -func (*ClaimGatewayRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e8a7f6d184fc3dc3, []int{6} -} -func (m *ClaimGatewayRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ClaimGatewayRequest.Unmarshal(m, b) -} -func (m *ClaimGatewayRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ClaimGatewayRequest.Marshal(b, m, deterministic) -} -func (m *ClaimGatewayRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ClaimGatewayRequest.Merge(m, src) -} -func (m *ClaimGatewayRequest) XXX_Size() int { - return xxx_messageInfo_ClaimGatewayRequest.Size(m) +func (x *ClaimGatewayRequest) Reset() { + *x = ClaimGatewayRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ClaimGatewayRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ClaimGatewayRequest.DiscardUnknown(m) + +func (x *ClaimGatewayRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ClaimGatewayRequest proto.InternalMessageInfo +func (*ClaimGatewayRequest) ProtoMessage() {} -type isClaimGatewayRequest_SourceGateway interface { - isClaimGatewayRequest_SourceGateway() +func (x *ClaimGatewayRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type ClaimGatewayRequest_AuthenticatedIdentifiers_ struct { - AuthenticatedIdentifiers *ClaimGatewayRequest_AuthenticatedIdentifiers `protobuf:"bytes,1,opt,name=authenticated_identifiers,json=authenticatedIdentifiers,proto3,oneof" json:"authenticated_identifiers,omitempty"` -} -type ClaimGatewayRequest_QrCode struct { - QrCode []byte `protobuf:"bytes,2,opt,name=qr_code,json=qrCode,proto3,oneof" json:"qr_code,omitempty"` +// Deprecated: Use ClaimGatewayRequest.ProtoReflect.Descriptor instead. +func (*ClaimGatewayRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_deviceclaimingserver_proto_rawDescGZIP(), []int{6} } -func (*ClaimGatewayRequest_AuthenticatedIdentifiers_) isClaimGatewayRequest_SourceGateway() {} -func (*ClaimGatewayRequest_QrCode) isClaimGatewayRequest_SourceGateway() {} - func (m *ClaimGatewayRequest) GetSourceGateway() isClaimGatewayRequest_SourceGateway { if m != nil { return m.SourceGateway @@ -717,748 +610,1037 @@ func (m *ClaimGatewayRequest) GetSourceGateway() isClaimGatewayRequest_SourceGat return nil } -func (m *ClaimGatewayRequest) GetAuthenticatedIdentifiers() *ClaimGatewayRequest_AuthenticatedIdentifiers { - if x, ok := m.GetSourceGateway().(*ClaimGatewayRequest_AuthenticatedIdentifiers_); ok { +func (x *ClaimGatewayRequest) GetAuthenticatedIdentifiers() *ClaimGatewayRequest_AuthenticatedIdentifiers { + if x, ok := x.GetSourceGateway().(*ClaimGatewayRequest_AuthenticatedIdentifiers_); ok { return x.AuthenticatedIdentifiers } return nil } -func (m *ClaimGatewayRequest) GetQrCode() []byte { - if x, ok := m.GetSourceGateway().(*ClaimGatewayRequest_QrCode); ok { +func (x *ClaimGatewayRequest) GetQrCode() []byte { + if x, ok := x.GetSourceGateway().(*ClaimGatewayRequest_QrCode); ok { return x.QrCode } return nil } -func (m *ClaimGatewayRequest) GetCollaborator() *OrganizationOrUserIdentifiers { - if m != nil { - return m.Collaborator +func (x *ClaimGatewayRequest) GetCollaborator() *OrganizationOrUserIdentifiers { + if x != nil { + return x.Collaborator } return nil } -func (m *ClaimGatewayRequest) GetTargetGatewayId() string { - if m != nil { - return m.TargetGatewayId +func (x *ClaimGatewayRequest) GetTargetGatewayId() string { + if x != nil { + return x.TargetGatewayId } return "" } -func (m *ClaimGatewayRequest) GetTargetGatewayServerAddress() string { - if m != nil { - return m.TargetGatewayServerAddress +func (x *ClaimGatewayRequest) GetTargetGatewayServerAddress() string { + if x != nil { + return x.TargetGatewayServerAddress } return "" } -func (m *ClaimGatewayRequest) GetCupsRedirection() *CUPSRedirection { - if m != nil { - return m.CupsRedirection +func (x *ClaimGatewayRequest) GetCupsRedirection() *CUPSRedirection { + if x != nil { + return x.CupsRedirection } return nil } -func (m *ClaimGatewayRequest) GetTargetFrequencyPlanId() string { - if m != nil { - return m.TargetFrequencyPlanId +func (x *ClaimGatewayRequest) GetTargetFrequencyPlanId() string { + if x != nil { + return x.TargetFrequencyPlanId } return "" } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*ClaimGatewayRequest) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*ClaimGatewayRequest_AuthenticatedIdentifiers_)(nil), - (*ClaimGatewayRequest_QrCode)(nil), - } +type isClaimGatewayRequest_SourceGateway interface { + isClaimGatewayRequest_SourceGateway() } -type ClaimGatewayRequest_AuthenticatedIdentifiers struct { - GatewayEui []byte `protobuf:"bytes,1,opt,name=gateway_eui,json=gatewayEui,proto3" json:"gateway_eui,omitempty"` - AuthenticationCode []byte `protobuf:"bytes,2,opt,name=authentication_code,json=authenticationCode,proto3" json:"authentication_code,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type ClaimGatewayRequest_AuthenticatedIdentifiers_ struct { + AuthenticatedIdentifiers *ClaimGatewayRequest_AuthenticatedIdentifiers `protobuf:"bytes,1,opt,name=authenticated_identifiers,json=authenticatedIdentifiers,proto3,oneof"` } -func (m *ClaimGatewayRequest_AuthenticatedIdentifiers) Reset() { - *m = ClaimGatewayRequest_AuthenticatedIdentifiers{} -} -func (m *ClaimGatewayRequest_AuthenticatedIdentifiers) String() string { - return proto.CompactTextString(m) -} -func (*ClaimGatewayRequest_AuthenticatedIdentifiers) ProtoMessage() {} -func (*ClaimGatewayRequest_AuthenticatedIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_e8a7f6d184fc3dc3, []int{6, 0} -} -func (m *ClaimGatewayRequest_AuthenticatedIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ClaimGatewayRequest_AuthenticatedIdentifiers.Unmarshal(m, b) -} -func (m *ClaimGatewayRequest_AuthenticatedIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ClaimGatewayRequest_AuthenticatedIdentifiers.Marshal(b, m, deterministic) -} -func (m *ClaimGatewayRequest_AuthenticatedIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_ClaimGatewayRequest_AuthenticatedIdentifiers.Merge(m, src) -} -func (m *ClaimGatewayRequest_AuthenticatedIdentifiers) XXX_Size() int { - return xxx_messageInfo_ClaimGatewayRequest_AuthenticatedIdentifiers.Size(m) -} -func (m *ClaimGatewayRequest_AuthenticatedIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_ClaimGatewayRequest_AuthenticatedIdentifiers.DiscardUnknown(m) +type ClaimGatewayRequest_QrCode struct { + QrCode []byte `protobuf:"bytes,2,opt,name=qr_code,json=qrCode,proto3,oneof"` } -var xxx_messageInfo_ClaimGatewayRequest_AuthenticatedIdentifiers proto.InternalMessageInfo +func (*ClaimGatewayRequest_AuthenticatedIdentifiers_) isClaimGatewayRequest_SourceGateway() {} -func (m *ClaimGatewayRequest_AuthenticatedIdentifiers) GetGatewayEui() []byte { - if m != nil { - return m.GatewayEui - } - return nil +func (*ClaimGatewayRequest_QrCode) isClaimGatewayRequest_SourceGateway() {} + +type AuthorizeGatewayRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` + ApiKey string `protobuf:"bytes,2,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` } -func (m *ClaimGatewayRequest_AuthenticatedIdentifiers) GetAuthenticationCode() []byte { - if m != nil { - return m.AuthenticationCode +func (x *AuthorizeGatewayRequest) Reset() { + *x = AuthorizeGatewayRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -type AuthorizeGatewayRequest struct { - GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` - ApiKey string `protobuf:"bytes,2,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *AuthorizeGatewayRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AuthorizeGatewayRequest) Reset() { *m = AuthorizeGatewayRequest{} } -func (m *AuthorizeGatewayRequest) String() string { return proto.CompactTextString(m) } -func (*AuthorizeGatewayRequest) ProtoMessage() {} -func (*AuthorizeGatewayRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e8a7f6d184fc3dc3, []int{7} -} -func (m *AuthorizeGatewayRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AuthorizeGatewayRequest.Unmarshal(m, b) -} -func (m *AuthorizeGatewayRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AuthorizeGatewayRequest.Marshal(b, m, deterministic) -} -func (m *AuthorizeGatewayRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthorizeGatewayRequest.Merge(m, src) -} -func (m *AuthorizeGatewayRequest) XXX_Size() int { - return xxx_messageInfo_AuthorizeGatewayRequest.Size(m) -} -func (m *AuthorizeGatewayRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AuthorizeGatewayRequest.DiscardUnknown(m) +func (*AuthorizeGatewayRequest) ProtoMessage() {} + +func (x *AuthorizeGatewayRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AuthorizeGatewayRequest proto.InternalMessageInfo +// Deprecated: Use AuthorizeGatewayRequest.ProtoReflect.Descriptor instead. +func (*AuthorizeGatewayRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_deviceclaimingserver_proto_rawDescGZIP(), []int{7} +} -func (m *AuthorizeGatewayRequest) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds +func (x *AuthorizeGatewayRequest) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds } return nil } -func (m *AuthorizeGatewayRequest) GetApiKey() string { - if m != nil { - return m.ApiKey +func (x *AuthorizeGatewayRequest) GetApiKey() string { + if x != nil { + return x.ApiKey } return "" } -func init() { - proto.RegisterType((*ClaimEndDeviceRequest)(nil), "ttn.lorawan.v3.ClaimEndDeviceRequest") - golang_proto.RegisterType((*ClaimEndDeviceRequest)(nil), "ttn.lorawan.v3.ClaimEndDeviceRequest") - proto.RegisterType((*ClaimEndDeviceRequest_AuthenticatedIdentifiers)(nil), "ttn.lorawan.v3.ClaimEndDeviceRequest.AuthenticatedIdentifiers") - golang_proto.RegisterType((*ClaimEndDeviceRequest_AuthenticatedIdentifiers)(nil), "ttn.lorawan.v3.ClaimEndDeviceRequest.AuthenticatedIdentifiers") - proto.RegisterType((*AuthorizeApplicationRequest)(nil), "ttn.lorawan.v3.AuthorizeApplicationRequest") - golang_proto.RegisterType((*AuthorizeApplicationRequest)(nil), "ttn.lorawan.v3.AuthorizeApplicationRequest") - proto.RegisterType((*GetInfoByJoinEUIRequest)(nil), "ttn.lorawan.v3.GetInfoByJoinEUIRequest") - golang_proto.RegisterType((*GetInfoByJoinEUIRequest)(nil), "ttn.lorawan.v3.GetInfoByJoinEUIRequest") - proto.RegisterType((*GetInfoByJoinEUIResponse)(nil), "ttn.lorawan.v3.GetInfoByJoinEUIResponse") - golang_proto.RegisterType((*GetInfoByJoinEUIResponse)(nil), "ttn.lorawan.v3.GetInfoByJoinEUIResponse") - proto.RegisterType((*GetClaimStatusResponse)(nil), "ttn.lorawan.v3.GetClaimStatusResponse") - golang_proto.RegisterType((*GetClaimStatusResponse)(nil), "ttn.lorawan.v3.GetClaimStatusResponse") - proto.RegisterType((*GetClaimStatusResponse_VendorSpecific)(nil), "ttn.lorawan.v3.GetClaimStatusResponse.VendorSpecific") - golang_proto.RegisterType((*GetClaimStatusResponse_VendorSpecific)(nil), "ttn.lorawan.v3.GetClaimStatusResponse.VendorSpecific") - proto.RegisterType((*CUPSRedirection)(nil), "ttn.lorawan.v3.CUPSRedirection") - golang_proto.RegisterType((*CUPSRedirection)(nil), "ttn.lorawan.v3.CUPSRedirection") - proto.RegisterType((*CUPSRedirection_ClientTLS)(nil), "ttn.lorawan.v3.CUPSRedirection.ClientTLS") - golang_proto.RegisterType((*CUPSRedirection_ClientTLS)(nil), "ttn.lorawan.v3.CUPSRedirection.ClientTLS") - proto.RegisterType((*ClaimGatewayRequest)(nil), "ttn.lorawan.v3.ClaimGatewayRequest") - golang_proto.RegisterType((*ClaimGatewayRequest)(nil), "ttn.lorawan.v3.ClaimGatewayRequest") - proto.RegisterType((*ClaimGatewayRequest_AuthenticatedIdentifiers)(nil), "ttn.lorawan.v3.ClaimGatewayRequest.AuthenticatedIdentifiers") - golang_proto.RegisterType((*ClaimGatewayRequest_AuthenticatedIdentifiers)(nil), "ttn.lorawan.v3.ClaimGatewayRequest.AuthenticatedIdentifiers") - proto.RegisterType((*AuthorizeGatewayRequest)(nil), "ttn.lorawan.v3.AuthorizeGatewayRequest") - golang_proto.RegisterType((*AuthorizeGatewayRequest)(nil), "ttn.lorawan.v3.AuthorizeGatewayRequest") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/deviceclaimingserver.proto", fileDescriptor_e8a7f6d184fc3dc3) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/deviceclaimingserver.proto", fileDescriptor_e8a7f6d184fc3dc3) -} - -var fileDescriptor_e8a7f6d184fc3dc3 = []byte{ - // 1994 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0xdd, 0x4f, 0x1b, 0xd9, - 0x15, 0xcf, 0xb5, 0x01, 0x9b, 0x4b, 0x30, 0xce, 0x10, 0x60, 0xe2, 0xd0, 0x84, 0x4c, 0xc8, 0x06, - 0x48, 0x3c, 0x26, 0x46, 0x74, 0x77, 0xe9, 0xb6, 0xc4, 0x03, 0x34, 0x40, 0xf6, 0x4b, 0x03, 0x44, - 0x6d, 0xd8, 0x60, 0x5d, 0x66, 0x2e, 0xf6, 0x2c, 0x66, 0x66, 0x72, 0xef, 0xb5, 0x53, 0x43, 0x50, - 0x51, 0x5a, 0xa9, 0x69, 0x1e, 0x5a, 0x75, 0x5b, 0x55, 0xea, 0x4a, 0x7d, 0xa9, 0x54, 0xa9, 0xda, - 0x87, 0x3e, 0xf5, 0x0f, 0xe8, 0x7b, 0xa5, 0xb6, 0xea, 0x4a, 0x7d, 0xe8, 0x6b, 0xf7, 0xa9, 0xea, - 0x1f, 0xb0, 0xe2, 0xa9, 0xba, 0x77, 0x66, 0xec, 0xf1, 0x57, 0xf1, 0x6e, 0x55, 0x29, 0xd9, 0xb7, - 0x3b, 0xbe, 0xe7, 0x9e, 0xfb, 0x3b, 0x1f, 0xf7, 0x9c, 0xdf, 0x31, 0xbc, 0x5d, 0x72, 0x08, 0x7a, - 0x82, 0xec, 0x34, 0x65, 0xc8, 0xd8, 0xcf, 0x20, 0xd7, 0xca, 0x98, 0xb8, 0x62, 0x19, 0xd8, 0x28, - 0x21, 0xeb, 0xc0, 0xb2, 0x0b, 0x14, 0x93, 0x0a, 0x26, 0xaa, 0x4b, 0x1c, 0xe6, 0x48, 0x09, 0xc6, - 0x6c, 0xd5, 0x3f, 0xa1, 0x56, 0xe6, 0x52, 0xb9, 0x82, 0xc5, 0x8a, 0xe5, 0x5d, 0xd5, 0x70, 0x0e, - 0x32, 0xd8, 0xae, 0x38, 0x55, 0x97, 0x38, 0xdf, 0xab, 0x66, 0x84, 0xb0, 0x91, 0x2e, 0x60, 0x3b, - 0x5d, 0x41, 0x25, 0xcb, 0x44, 0x0c, 0x67, 0x5a, 0x16, 0x9e, 0xca, 0x54, 0x3a, 0xa4, 0xa2, 0xe0, - 0x14, 0x1c, 0xef, 0xf0, 0x6e, 0x79, 0x4f, 0x7c, 0x89, 0x0f, 0xb1, 0xf2, 0xc5, 0xc7, 0x0b, 0x8e, - 0x53, 0x28, 0x61, 0x01, 0x14, 0xd9, 0xb6, 0xc3, 0x10, 0xb3, 0x1c, 0x9b, 0x36, 0xed, 0xd6, 0x74, - 0x50, 0x46, 0xca, 0x06, 0xf3, 0x77, 0x2f, 0x37, 0xef, 0xe2, 0x03, 0x97, 0x55, 0xfd, 0xcd, 0xeb, - 0xad, 0x8e, 0xb0, 0x4c, 0x6c, 0x33, 0x6b, 0xcf, 0xc2, 0x24, 0xd0, 0xbf, 0x14, 0x02, 0xbb, 0x59, - 0xc4, 0x9b, 0x45, 0xee, 0xa0, 0x35, 0xdb, 0x2c, 0x53, 0x46, 0x2c, 0x4c, 0xc3, 0x86, 0x17, 0x9c, - 0xf4, 0x87, 0xd4, 0xb1, 0xdb, 0x80, 0x54, 0x43, 0x52, 0x8e, 0x8b, 0x6d, 0xe4, 0x5a, 0x95, 0x6c, - 0xc6, 0x71, 0x85, 0x4c, 0xab, 0xbc, 0xf2, 0x59, 0x02, 0x8e, 0x2c, 0xf1, 0x68, 0xac, 0xd8, 0xe6, - 0xb2, 0x88, 0x8d, 0x8e, 0x1f, 0x97, 0x31, 0x65, 0xd2, 0x31, 0xbc, 0x84, 0xca, 0xac, 0xc8, 0x51, - 0x1a, 0x88, 0x61, 0x33, 0x1f, 0x42, 0x2c, 0x83, 0x09, 0x30, 0x35, 0x90, 0xfd, 0x96, 0xda, 0x18, - 0x32, 0xb5, 0xad, 0x26, 0x35, 0x17, 0x56, 0xb3, 0x56, 0xd7, 0xb2, 0x7a, 0x4e, 0x97, 0x51, 0x87, - 0x3d, 0xe9, 0x06, 0x8c, 0x3d, 0x26, 0x79, 0xc3, 0x31, 0xb1, 0x1c, 0x99, 0x00, 0x53, 0xe7, 0x35, - 0x78, 0xaa, 0xc5, 0x0e, 0x7b, 0x93, 0xe7, 0xe4, 0x93, 0xf8, 0xea, 0x39, 0xbd, 0xef, 0x31, 0x59, - 0x72, 0x4c, 0x2c, 0xed, 0xc1, 0x51, 0x86, 0x48, 0x01, 0xb3, 0x3c, 0x72, 0xdd, 0x12, 0x57, 0x63, - 0x39, 0x76, 0xde, 0x32, 0xa9, 0x1c, 0x15, 0x10, 0x5f, 0x6b, 0x86, 0x98, 0xab, 0x8b, 0x85, 0xae, - 0xd3, 0xe2, 0xa7, 0x5a, 0xef, 0x0b, 0x10, 0x49, 0x02, 0xfd, 0xa2, 0xa7, 0xaf, 0x41, 0x8e, 0x4a, - 0x9b, 0x30, 0xe9, 0xdf, 0xe3, 0x65, 0x70, 0xde, 0x32, 0xe5, 0x9e, 0x09, 0x30, 0xd5, 0xaf, 0xcd, - 0x9c, 0x6a, 0x37, 0xc9, 0x0d, 0x79, 0x32, 0x7b, 0x6d, 0x67, 0x1b, 0xa5, 0x0f, 0x67, 0xd3, 0x6f, - 0x3e, 0x9a, 0x5a, 0x5c, 0xd8, 0x4e, 0x3f, 0x5a, 0x0c, 0x3e, 0xa7, 0x8f, 0xb2, 0xb7, 0x8f, 0x27, - 0x9f, 0xee, 0x4c, 0xea, 0x09, 0x4f, 0x87, 0xe7, 0x9e, 0x35, 0x53, 0xfa, 0x1b, 0x80, 0x5f, 0xf3, - 0xd5, 0xda, 0x98, 0x3d, 0x71, 0xc8, 0x7e, 0xde, 0x7b, 0x12, 0x79, 0x64, 0x9a, 0x04, 0x53, 0x2a, - 0xc7, 0xc4, 0x1d, 0x3f, 0x01, 0xa7, 0xda, 0x0b, 0x40, 0x7e, 0x04, 0xb2, 0x3f, 0x04, 0x3b, 0x53, - 0x8b, 0x0b, 0xfc, 0x02, 0x94, 0x3e, 0xcc, 0xa5, 0x1f, 0x72, 0xfd, 0x4f, 0x43, 0xeb, 0xfa, 0xf2, - 0x83, 0xf4, 0xa3, 0x99, 0xd0, 0xc6, 0xf4, 0x07, 0xea, 0xf4, 0x0c, 0x3f, 0x97, 0x4b, 0x3f, 0xf4, - 0x71, 0x3d, 0x0d, 0xad, 0xeb, 0x4b, 0x71, 0xae, 0xbe, 0x31, 0x3d, 0xb5, 0xb8, 0xb0, 0xb0, 0xcd, - 0x57, 0x47, 0x77, 0x6e, 0xcf, 0x1f, 0x4f, 0x2f, 0x0a, 0x43, 0x52, 0x1e, 0xea, 0x77, 0x3d, 0xd0, - 0x1b, 0x02, 0x73, 0xce, 0x83, 0x2c, 0xbd, 0x0b, 0xaf, 0xb6, 0xb7, 0x69, 0x1f, 0xef, 0xe7, 0x4b, - 0x68, 0x17, 0x97, 0xe4, 0xb8, 0xb0, 0x8a, 0xfb, 0x9c, 0x44, 0xe5, 0x93, 0xa4, 0x7e, 0xb9, 0x8d, - 0xba, 0xfb, 0x78, 0xff, 0x6d, 0x2e, 0x2c, 0xfd, 0x03, 0xc0, 0x6b, 0x6d, 0x62, 0xdc, 0xe4, 0xa8, - 0xfe, 0x97, 0xd3, 0x51, 0x57, 0x5a, 0xb2, 0xa9, 0xd1, 0x59, 0x0f, 0xe0, 0xf5, 0xce, 0xb6, 0xd5, - 0x1d, 0x06, 0x9b, 0x1c, 0x76, 0xb5, 0x83, 0xda, 0x9a, 0xd3, 0x56, 0xe1, 0x78, 0x67, 0xbd, 0x96, - 0x29, 0x0f, 0x08, 0x85, 0xb1, 0x53, 0xad, 0x87, 0x44, 0x64, 0x53, 0xbf, 0xd4, 0x41, 0xdf, 0x9a, - 0x29, 0xfd, 0x05, 0xc0, 0xc1, 0x7a, 0x3c, 0xf9, 0xd9, 0x41, 0xf1, 0x1e, 0x3f, 0x01, 0x1f, 0xe5, - 0xc6, 0xd6, 0xe3, 0xca, 0xec, 0xec, 0xec, 0xec, 0x9d, 0x39, 0xe5, 0xe3, 0x08, 0x88, 0xfd, 0x26, - 0xd2, 0xc7, 0x6b, 0x95, 0x5d, 0x38, 0xd5, 0xfa, 0x0e, 0x7b, 0x8a, 0x51, 0x17, 0xfc, 0xeb, 0x93, - 0x4b, 0xcf, 0x00, 0x5c, 0x2c, 0x38, 0x2a, 0x2b, 0x62, 0x26, 0x2a, 0x9a, 0xea, 0x67, 0x45, 0xa6, - 0xb1, 0x26, 0x56, 0xe6, 0x32, 0xee, 0x7e, 0x21, 0xc3, 0xaa, 0x2e, 0xa6, 0xea, 0x3b, 0x88, 0xd0, - 0x22, 0x2a, 0xad, 0xae, 0x7c, 0x47, 0xab, 0x32, 0x4c, 0xa5, 0x2f, 0xac, 0x60, 0xcb, 0x3e, 0xf0, - 0x54, 0xcc, 0x09, 0x05, 0xfa, 0x40, 0x2d, 0xc1, 0xd6, 0x4c, 0x69, 0x19, 0x5e, 0xb1, 0xec, 0xa0, - 0x53, 0xe4, 0x43, 0x15, 0x88, 0xbb, 0x48, 0x54, 0x9c, 0xde, 0x09, 0x30, 0x15, 0xd7, 0xc7, 0xeb, - 0x52, 0xb9, 0x06, 0x21, 0x5e, 0x79, 0x52, 0xcf, 0x7b, 0xa0, 0xdc, 0xa9, 0xb2, 0x49, 0x7f, 0x05, - 0x30, 0xfe, 0xa1, 0x63, 0xd9, 0x79, 0x5c, 0xb6, 0x44, 0xb1, 0x3c, 0xaf, 0xfd, 0x01, 0x7c, 0x94, - 0xbb, 0xb6, 0x2e, 0x29, 0xaf, 0xcf, 0x6a, 0x73, 0xcb, 0xf3, 0xaf, 0xaf, 0x2c, 0xcf, 0xce, 0xce, - 0xe6, 0xb4, 0xa5, 0xe5, 0x76, 0x9e, 0x8b, 0xbf, 0x04, 0x9e, 0x7b, 0xc3, 0xf3, 0x5c, 0x8c, 0x9b, - 0xb1, 0x52, 0xb6, 0xa4, 0x3f, 0x03, 0x18, 0x33, 0x71, 0x45, 0x58, 0x14, 0x79, 0x95, 0x2d, 0xea, - 0x33, 0x71, 0x85, 0x1b, 0xb4, 0x0a, 0x87, 0xdb, 0xc5, 0x3e, 0x2a, 0x5e, 0xc6, 0xd8, 0xa9, 0x76, - 0x91, 0x48, 0xd9, 0xe4, 0xce, 0xb6, 0x5f, 0x16, 0x8e, 0xee, 0xdc, 0x9e, 0xcb, 0x1e, 0x4f, 0xea, - 0x12, 0x6a, 0x49, 0x05, 0xed, 0x22, 0x1c, 0xa4, 0x4e, 0x99, 0x18, 0xd8, 0x6f, 0x0e, 0x52, 0xf4, - 0x73, 0x0d, 0xac, 0xf7, 0xc4, 0xfb, 0x92, 0xb1, 0xf5, 0x9e, 0xf8, 0xf9, 0xe4, 0xa0, 0xf2, 0x6b, - 0x00, 0x2f, 0xf3, 0x64, 0x71, 0x88, 0x75, 0x88, 0x43, 0xaf, 0x2c, 0x68, 0xb6, 0xdf, 0x85, 0x43, - 0xcd, 0xfd, 0x0b, 0x7c, 0xc9, 0xfe, 0x95, 0x40, 0x8d, 0x9d, 0xeb, 0x3a, 0x8c, 0x21, 0xd7, 0xca, - 0xef, 0xe3, 0xaa, 0x08, 0x5b, 0xbf, 0x68, 0xa4, 0xa4, 0x37, 0x09, 0xe4, 0x13, 0xa0, 0xf7, 0x21, - 0xd7, 0xba, 0x8f, 0xab, 0xca, 0xbf, 0x01, 0x1c, 0xbb, 0x87, 0xd9, 0x9a, 0xbd, 0xe7, 0x68, 0xd5, - 0x75, 0x1e, 0xf1, 0xad, 0xb5, 0x00, 0xdb, 0x57, 0x2f, 0x97, 0x95, 0x8f, 0x23, 0x50, 0x6e, 0x35, - 0x97, 0xba, 0x8e, 0x4d, 0xf1, 0x57, 0xf1, 0xed, 0xde, 0x82, 0x17, 0x68, 0xd9, 0x75, 0x1d, 0xc2, - 0x68, 0x3e, 0xe0, 0xde, 0x22, 0x1b, 0xe2, 0x7a, 0x32, 0xd8, 0x58, 0xf2, 0x7f, 0x57, 0x3e, 0xef, - 0x85, 0xa3, 0xf7, 0x30, 0x13, 0xdf, 0x1b, 0x0c, 0xb1, 0x32, 0xad, 0xb9, 0x66, 0x13, 0x26, 0xb0, - 0x6d, 0xd6, 0x29, 0x50, 0x90, 0xa5, 0x93, 0xcd, 0x59, 0x5a, 0xe3, 0x80, 0xed, 0x73, 0xf4, 0x3c, - 0xae, 0xef, 0x53, 0xe9, 0x4f, 0x00, 0x0e, 0x14, 0x9d, 0x03, 0x1c, 0xf4, 0x97, 0xc8, 0xab, 0xd7, - 0x5f, 0xfa, 0x39, 0x7e, 0xaf, 0xbb, 0x7c, 0x0a, 0x20, 0xf4, 0xac, 0xa1, 0xdc, 0x98, 0xe8, 0xab, - 0x9c, 0x40, 0x71, 0x61, 0x16, 0x5d, 0x33, 0xa5, 0x1d, 0x38, 0x54, 0xc1, 0xb6, 0xe9, 0x90, 0x3c, - 0x75, 0xb1, 0x61, 0xed, 0x59, 0x86, 0xa0, 0xbf, 0x03, 0xd9, 0xf9, 0xe6, 0xd0, 0xb7, 0x4f, 0x1d, - 0xf5, 0x81, 0x38, 0xbd, 0xe1, 0x1f, 0xd6, 0x13, 0x95, 0x86, 0xef, 0xd4, 0x0f, 0x00, 0x4c, 0x34, - 0x8a, 0xf0, 0x36, 0xed, 0x90, 0x02, 0xb2, 0xad, 0x43, 0xaf, 0x28, 0x96, 0x6d, 0xeb, 0x71, 0x19, - 0x87, 0xc6, 0x10, 0x91, 0x7c, 0x83, 0xfa, 0x78, 0x58, 0x6a, 0x4b, 0x08, 0xd5, 0xb3, 0x4e, 0xba, - 0x05, 0x7b, 0x4c, 0xc4, 0x90, 0x48, 0xaa, 0x81, 0xec, 0x98, 0xea, 0x8d, 0x69, 0x6a, 0x30, 0xa6, - 0xa9, 0x1b, 0x62, 0x88, 0xd3, 0x85, 0x90, 0xf2, 0xe3, 0x28, 0x1c, 0x5a, 0xda, 0x7a, 0x7f, 0x43, - 0xc7, 0xa6, 0x45, 0xb0, 0xc1, 0x15, 0x4a, 0xdf, 0x80, 0x43, 0x3e, 0xfd, 0x31, 0xca, 0x2e, 0xcd, - 0x97, 0x89, 0x57, 0x14, 0xfa, 0xb5, 0xe1, 0x53, 0x2d, 0x49, 0x12, 0xf2, 0x49, 0x24, 0xdb, 0xb7, - 0x53, 0x64, 0xcc, 0xa5, 0xcf, 0x01, 0xd0, 0x7d, 0xaa, 0xb4, 0x54, 0x76, 0xe9, 0x16, 0xb1, 0xa4, - 0x37, 0xe0, 0xb0, 0x51, 0x26, 0x04, 0xdb, 0x2c, 0x5f, 0x40, 0x0c, 0x3f, 0x41, 0xd5, 0x50, 0x21, - 0xae, 0xd3, 0xb9, 0x0b, 0xbe, 0xd0, 0x3d, 0x4f, 0xe6, 0x3e, 0xae, 0x4a, 0x33, 0xf0, 0x42, 0xf8, - 0x5a, 0x46, 0xca, 0x94, 0x79, 0xc9, 0xa4, 0x0f, 0xd5, 0xef, 0xd8, 0xe4, 0x3f, 0x4b, 0xeb, 0x10, - 0x1a, 0x25, 0x8b, 0x5f, 0xc2, 0x4a, 0xd4, 0x8f, 0xcb, 0x74, 0xcb, 0x6c, 0xd6, 0x68, 0x97, 0xba, - 0x24, 0x4e, 0x6c, 0xbe, 0xbd, 0xb1, 0x7a, 0x4e, 0xef, 0xf7, 0x8e, 0x6f, 0x96, 0xa8, 0x34, 0x0d, - 0x21, 0xef, 0x70, 0x79, 0xe6, 0xec, 0x63, 0x5b, 0x10, 0xa1, 0x10, 0x50, 0x2e, 0xca, 0x77, 0x37, - 0xf9, 0x66, 0x6a, 0x05, 0xf6, 0xd7, 0x94, 0x48, 0xe3, 0xb0, 0xc7, 0xc0, 0x84, 0xf9, 0x05, 0x93, - 0x9f, 0x38, 0x8c, 0xca, 0x27, 0x77, 0x75, 0xf1, 0xab, 0x94, 0x82, 0xd1, 0xc0, 0xee, 0xf0, 0x26, - 0xff, 0x51, 0x1b, 0x81, 0xc3, 0x81, 0x6f, 0x0c, 0x82, 0x45, 0xe4, 0x50, 0x89, 0x2a, 0xbf, 0x8a, - 0xc3, 0x61, 0x91, 0x48, 0xbe, 0x53, 0x82, 0x76, 0x74, 0x74, 0xf6, 0x5c, 0xfa, 0x56, 0xdb, 0xb9, - 0xb4, 0x51, 0xcf, 0xff, 0x75, 0x2a, 0xdd, 0x86, 0xe7, 0x0d, 0xa7, 0x54, 0x42, 0xbb, 0x0e, 0x41, - 0xcc, 0x21, 0xfe, 0x2c, 0x9a, 0x6e, 0x86, 0xf5, 0x5e, 0x28, 0x71, 0xdf, 0x23, 0x5b, 0x94, 0xf3, - 0xed, 0xb6, 0xe5, 0x32, 0xac, 0x4c, 0x7a, 0x50, 0xcb, 0x8c, 0xc0, 0x6d, 0x5f, 0x6a, 0x16, 0xf5, - 0xb3, 0xc8, 0xf7, 0x4a, 0xe3, 0x30, 0x1a, 0x28, 0x6e, 0x9a, 0xb1, 0x7a, 0x5f, 0xea, 0x61, 0xd4, - 0xb7, 0xa4, 0x71, 0xbe, 0x5a, 0x87, 0x49, 0xf1, 0x7e, 0x48, 0x3d, 0xf3, 0xe5, 0x3e, 0x11, 0x8d, - 0xab, 0x67, 0x3c, 0x10, 0x7d, 0x88, 0x1f, 0x0c, 0x57, 0x82, 0xbb, 0x50, 0xf6, 0xfd, 0xb3, 0x47, - 0x78, 0x12, 0xd9, 0x46, 0x35, 0xef, 0x96, 0x10, 0xa7, 0x6b, 0xfe, 0x9c, 0xee, 0xcf, 0x53, 0x77, - 0xf5, 0x11, 0x4f, 0xf0, 0xdb, 0x81, 0xdc, 0xfb, 0x25, 0x64, 0xaf, 0x99, 0xa9, 0xdf, 0x47, 0xfe, - 0xcb, 0xcc, 0xf0, 0x77, 0x00, 0x07, 0x02, 0xc7, 0xbf, 0xf2, 0xd4, 0x03, 0xfa, 0x96, 0x70, 0xf6, - 0xf1, 0x66, 0x7b, 0xa2, 0xdd, 0x58, 0x0c, 0x92, 0x6d, 0x99, 0xf5, 0x08, 0x4c, 0xf8, 0xcc, 0xda, - 0xd7, 0x27, 0xa8, 0xb5, 0xf2, 0x02, 0xc0, 0xb1, 0x1a, 0x9d, 0x6e, 0xaa, 0x0f, 0xef, 0xd4, 0xbd, - 0x58, 0x27, 0x28, 0x4a, 0x4b, 0x97, 0x0a, 0xd2, 0xbe, 0xdd, 0x7b, 0x0b, 0xc0, 0x73, 0x72, 0x32, - 0xd1, 0x4c, 0x9f, 0xbd, 0x18, 0x27, 0x6b, 0xdc, 0x39, 0xfb, 0x3c, 0x06, 0xc7, 0x6a, 0x7c, 0x27, - 0x60, 0x51, 0x5e, 0x16, 0x4a, 0x25, 0xd8, 0x2b, 0x7e, 0x91, 0x6e, 0x74, 0xf5, 0x57, 0x59, 0xaa, - 0x2b, 0x22, 0xa5, 0x8c, 0x3e, 0xfb, 0xf4, 0xb3, 0x9f, 0x47, 0x92, 0xca, 0x40, 0x06, 0x9b, 0x06, - 0xcd, 0x08, 0x46, 0xb7, 0x00, 0x66, 0xa4, 0x5f, 0x00, 0x18, 0xdb, 0xb2, 0xc5, 0xa7, 0xd4, 0x95, - 0xa6, 0xd4, 0x68, 0x4b, 0x3f, 0x5c, 0x39, 0x70, 0x59, 0x55, 0xb9, 0x2f, 0x6e, 0x58, 0x99, 0xb9, - 0x1b, 0xba, 0x21, 0x73, 0xd4, 0x34, 0xa2, 0xa8, 0x8d, 0xdf, 0xc7, 0xfe, 0x9f, 0xbb, 0x34, 0x73, - 0x54, 0x23, 0x88, 0xc7, 0x1c, 0xd6, 0x33, 0x00, 0x93, 0xcd, 0x6c, 0x5b, 0xba, 0xd9, 0x86, 0x37, - 0xb4, 0x1b, 0x3f, 0x52, 0x53, 0x67, 0x0b, 0x7a, 0x14, 0x43, 0xb9, 0x2c, 0x40, 0x8f, 0x28, 0xc9, - 0x30, 0x68, 0xcb, 0xde, 0x73, 0x38, 0x88, 0xdf, 0x01, 0x98, 0x68, 0xa4, 0x26, 0x5d, 0xba, 0xe8, - 0xb5, 0xee, 0x08, 0x8e, 0xb2, 0x2a, 0x6e, 0xd7, 0xa4, 0xff, 0xd9, 0x65, 0xd2, 0x6f, 0x01, 0xbc, - 0xd8, 0x6e, 0x58, 0x94, 0x6e, 0xb5, 0x0c, 0x83, 0x9d, 0x47, 0xca, 0x8e, 0xa1, 0xf5, 0x71, 0x2a, - 0xdf, 0xf4, 0x70, 0x86, 0x00, 0xd1, 0xb3, 0xe1, 0xa2, 0xe0, 0x42, 0xee, 0xd2, 0x9f, 0x02, 0x38, - 0xba, 0x65, 0xa3, 0x76, 0x48, 0xbb, 0x1c, 0x5b, 0x3b, 0x82, 0x9c, 0x17, 0x20, 0x33, 0x33, 0xe9, - 0xb3, 0x41, 0x86, 0x40, 0x65, 0x7f, 0x19, 0x85, 0x23, 0xfe, 0xcb, 0x6e, 0x7a, 0x88, 0xc5, 0xe0, - 0x21, 0x5e, 0xef, 0x82, 0x1b, 0xa4, 0xba, 0x28, 0x17, 0xa1, 0x47, 0x58, 0x30, 0x4a, 0xa1, 0x47, - 0xf8, 0x33, 0x00, 0x93, 0xcd, 0xb5, 0xa9, 0x35, 0xdb, 0x3b, 0x54, 0xaf, 0x8e, 0x0e, 0x79, 0x4b, - 0xdc, 0xf6, 0x75, 0xe5, 0x8e, 0x77, 0x9b, 0x5f, 0xa0, 0x68, 0xe6, 0x28, 0x54, 0xeb, 0xd4, 0xfa, - 0xba, 0x29, 0x52, 0xdf, 0x87, 0x52, 0x28, 0x50, 0x01, 0xa8, 0x2e, 0xac, 0xec, 0x88, 0x27, 0x2d, - 0xf0, 0xdc, 0x9c, 0xb9, 0xd1, 0x19, 0x4f, 0x08, 0x83, 0x36, 0xff, 0xc7, 0x7f, 0x5e, 0x01, 0x0f, - 0x33, 0x5f, 0xa0, 0xab, 0x30, 0xdb, 0xdd, 0xdd, 0xed, 0x13, 0xb7, 0xce, 0xfd, 0x27, 0x00, 0x00, - 0xff, 0xff, 0x0a, 0x03, 0x48, 0x11, 0x49, 0x1a, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// EndDeviceClaimingServerClient is the client API for EndDeviceClaimingServer service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type EndDeviceClaimingServerClient interface { - // Claims the end device on a Join Server by claim authentication code or QR code. - Claim(ctx context.Context, in *ClaimEndDeviceRequest, opts ...grpc.CallOption) (*EndDeviceIdentifiers, error) - // Unclaims the end device on a Join Server. - Unclaim(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) - // Return whether claiming is available for a given JoinEUI. - GetInfoByJoinEUI(ctx context.Context, in *GetInfoByJoinEUIRequest, opts ...grpc.CallOption) (*GetInfoByJoinEUIResponse, error) - // Gets the claim status of an end device. - GetClaimStatus(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*GetClaimStatusResponse, error) - // Authorize the End Device Claiming Server to claim devices registered in the given application. The application - // identifiers are the source application, where the devices are registered before they are claimed. - // The API key is used to access the application, find the device, verify the claim request and delete the end device - // from the source application. - AuthorizeApplication(ctx context.Context, in *AuthorizeApplicationRequest, opts ...grpc.CallOption) (*types.Empty, error) - // Unauthorize the End Device Claiming Server to claim devices in the given application. - // This reverts the authorization given with rpc AuthorizeApplication. - UnauthorizeApplication(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) -} +type ClaimEndDeviceRequest_AuthenticatedIdentifiers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -type endDeviceClaimingServerClient struct { - cc *grpc.ClientConn + // JoinEUI (or AppEUI) of the device to claim. + JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` + // DevEUI of the device to claim. + DevEui []byte `protobuf:"bytes,2,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"` + // Authentication code to prove ownership. + // In the LoRa Alliance TR005 specification, this equals the OwnerToken. + AuthenticationCode string `protobuf:"bytes,3,opt,name=authentication_code,json=authenticationCode,proto3" json:"authentication_code,omitempty"` } -func NewEndDeviceClaimingServerClient(cc *grpc.ClientConn) EndDeviceClaimingServerClient { - return &endDeviceClaimingServerClient{cc} +func (x *ClaimEndDeviceRequest_AuthenticatedIdentifiers) Reset() { + *x = ClaimEndDeviceRequest_AuthenticatedIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (c *endDeviceClaimingServerClient) Claim(ctx context.Context, in *ClaimEndDeviceRequest, opts ...grpc.CallOption) (*EndDeviceIdentifiers, error) { - out := new(EndDeviceIdentifiers) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceClaimingServer/Claim", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +func (x *ClaimEndDeviceRequest_AuthenticatedIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (c *endDeviceClaimingServerClient) Unclaim(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceClaimingServer/Unclaim", in, out, opts...) - if err != nil { - return nil, err +func (*ClaimEndDeviceRequest_AuthenticatedIdentifiers) ProtoMessage() {} + +func (x *ClaimEndDeviceRequest_AuthenticatedIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return out, nil + return mi.MessageOf(x) } -func (c *endDeviceClaimingServerClient) GetInfoByJoinEUI(ctx context.Context, in *GetInfoByJoinEUIRequest, opts ...grpc.CallOption) (*GetInfoByJoinEUIResponse, error) { - out := new(GetInfoByJoinEUIResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceClaimingServer/GetInfoByJoinEUI", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// Deprecated: Use ClaimEndDeviceRequest_AuthenticatedIdentifiers.ProtoReflect.Descriptor instead. +func (*ClaimEndDeviceRequest_AuthenticatedIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_deviceclaimingserver_proto_rawDescGZIP(), []int{0, 0} } -func (c *endDeviceClaimingServerClient) GetClaimStatus(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*GetClaimStatusResponse, error) { - out := new(GetClaimStatusResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceClaimingServer/GetClaimStatus", in, out, opts...) - if err != nil { - return nil, err +func (x *ClaimEndDeviceRequest_AuthenticatedIdentifiers) GetJoinEui() []byte { + if x != nil { + return x.JoinEui } - return out, nil + return nil } -func (c *endDeviceClaimingServerClient) AuthorizeApplication(ctx context.Context, in *AuthorizeApplicationRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceClaimingServer/AuthorizeApplication", in, out, opts...) - if err != nil { - return nil, err +func (x *ClaimEndDeviceRequest_AuthenticatedIdentifiers) GetDevEui() []byte { + if x != nil { + return x.DevEui } - return out, nil + return nil } -func (c *endDeviceClaimingServerClient) UnauthorizeApplication(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceClaimingServer/UnauthorizeApplication", in, out, opts...) - if err != nil { - return nil, err +func (x *ClaimEndDeviceRequest_AuthenticatedIdentifiers) GetAuthenticationCode() string { + if x != nil { + return x.AuthenticationCode } - return out, nil + return "" } -// EndDeviceClaimingServerServer is the server API for EndDeviceClaimingServer service. -type EndDeviceClaimingServerServer interface { - // Claims the end device on a Join Server by claim authentication code or QR code. - Claim(context.Context, *ClaimEndDeviceRequest) (*EndDeviceIdentifiers, error) - // Unclaims the end device on a Join Server. - Unclaim(context.Context, *EndDeviceIdentifiers) (*types.Empty, error) - // Return whether claiming is available for a given JoinEUI. - GetInfoByJoinEUI(context.Context, *GetInfoByJoinEUIRequest) (*GetInfoByJoinEUIResponse, error) - // Gets the claim status of an end device. - GetClaimStatus(context.Context, *EndDeviceIdentifiers) (*GetClaimStatusResponse, error) - // Authorize the End Device Claiming Server to claim devices registered in the given application. The application - // identifiers are the source application, where the devices are registered before they are claimed. - // The API key is used to access the application, find the device, verify the claim request and delete the end device - // from the source application. - AuthorizeApplication(context.Context, *AuthorizeApplicationRequest) (*types.Empty, error) - // Unauthorize the End Device Claiming Server to claim devices in the given application. - // This reverts the authorization given with rpc AuthorizeApplication. - UnauthorizeApplication(context.Context, *ApplicationIdentifiers) (*types.Empty, error) -} +type GetClaimStatusResponse_VendorSpecific struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -// UnimplementedEndDeviceClaimingServerServer can be embedded to have forward compatible implementations. -type UnimplementedEndDeviceClaimingServerServer struct { + OrganizationUniqueIdentifier uint32 `protobuf:"varint,1,opt,name=organization_unique_identifier,json=organizationUniqueIdentifier,proto3" json:"organization_unique_identifier,omitempty"` + // Vendor Specific data in JSON format. + Data *structpb.Struct `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` } -func (*UnimplementedEndDeviceClaimingServerServer) Claim(ctx context.Context, req *ClaimEndDeviceRequest) (*EndDeviceIdentifiers, error) { - return nil, status.Errorf(codes.Unimplemented, "method Claim not implemented") -} -func (*UnimplementedEndDeviceClaimingServerServer) Unclaim(ctx context.Context, req *EndDeviceIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Unclaim not implemented") -} -func (*UnimplementedEndDeviceClaimingServerServer) GetInfoByJoinEUI(ctx context.Context, req *GetInfoByJoinEUIRequest) (*GetInfoByJoinEUIResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetInfoByJoinEUI not implemented") -} -func (*UnimplementedEndDeviceClaimingServerServer) GetClaimStatus(ctx context.Context, req *EndDeviceIdentifiers) (*GetClaimStatusResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetClaimStatus not implemented") -} -func (*UnimplementedEndDeviceClaimingServerServer) AuthorizeApplication(ctx context.Context, req *AuthorizeApplicationRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method AuthorizeApplication not implemented") -} -func (*UnimplementedEndDeviceClaimingServerServer) UnauthorizeApplication(ctx context.Context, req *ApplicationIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method UnauthorizeApplication not implemented") +func (x *GetClaimStatusResponse_VendorSpecific) Reset() { + *x = GetClaimStatusResponse_VendorSpecific{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func RegisterEndDeviceClaimingServerServer(s *grpc.Server, srv EndDeviceClaimingServerServer) { - s.RegisterService(&_EndDeviceClaimingServer_serviceDesc, srv) +func (x *GetClaimStatusResponse_VendorSpecific) String() string { + return protoimpl.X.MessageStringOf(x) } -func _EndDeviceClaimingServer_Claim_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ClaimEndDeviceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceClaimingServerServer).Claim(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceClaimingServer/Claim", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceClaimingServerServer).Claim(ctx, req.(*ClaimEndDeviceRequest)) +func (*GetClaimStatusResponse_VendorSpecific) ProtoMessage() {} + +func (x *GetClaimStatusResponse_VendorSpecific) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return interceptor(ctx, in, info, handler) + return mi.MessageOf(x) } -func _EndDeviceClaimingServer_Unclaim_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(EndDeviceIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceClaimingServerServer).Unclaim(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceClaimingServer/Unclaim", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceClaimingServerServer).Unclaim(ctx, req.(*EndDeviceIdentifiers)) - } - return interceptor(ctx, in, info, handler) +// Deprecated: Use GetClaimStatusResponse_VendorSpecific.ProtoReflect.Descriptor instead. +func (*GetClaimStatusResponse_VendorSpecific) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_deviceclaimingserver_proto_rawDescGZIP(), []int{4, 0} } -func _EndDeviceClaimingServer_GetInfoByJoinEUI_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetInfoByJoinEUIRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceClaimingServerServer).GetInfoByJoinEUI(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceClaimingServer/GetInfoByJoinEUI", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceClaimingServerServer).GetInfoByJoinEUI(ctx, req.(*GetInfoByJoinEUIRequest)) +func (x *GetClaimStatusResponse_VendorSpecific) GetOrganizationUniqueIdentifier() uint32 { + if x != nil { + return x.OrganizationUniqueIdentifier } - return interceptor(ctx, in, info, handler) + return 0 } -func _EndDeviceClaimingServer_GetClaimStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(EndDeviceIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceClaimingServerServer).GetClaimStatus(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceClaimingServer/GetClaimStatus", +func (x *GetClaimStatusResponse_VendorSpecific) GetData() *structpb.Struct { + if x != nil { + return x.Data } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceClaimingServerServer).GetClaimStatus(ctx, req.(*EndDeviceIdentifiers)) - } - return interceptor(ctx, in, info, handler) + return nil } -func _EndDeviceClaimingServer_AuthorizeApplication_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthorizeApplicationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceClaimingServerServer).AuthorizeApplication(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceClaimingServer/AuthorizeApplication", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceClaimingServerServer).AuthorizeApplication(ctx, req.(*AuthorizeApplicationRequest)) - } - return interceptor(ctx, in, info, handler) +type CUPSRedirection_ClientTLS struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // PEM encoded Client Certificate. + Cert []byte `protobuf:"bytes,1,opt,name=cert,proto3" json:"cert,omitempty"` + // PEM encoded Client Private Key. + Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` } -func _EndDeviceClaimingServer_UnauthorizeApplication_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ApplicationIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceClaimingServerServer).UnauthorizeApplication(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceClaimingServer/UnauthorizeApplication", +func (x *CUPSRedirection_ClientTLS) Reset() { + *x = CUPSRedirection_ClientTLS{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceClaimingServerServer).UnauthorizeApplication(ctx, req.(*ApplicationIdentifiers)) - } - return interceptor(ctx, in, info, handler) } -var _EndDeviceClaimingServer_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.EndDeviceClaimingServer", - HandlerType: (*EndDeviceClaimingServerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Claim", - Handler: _EndDeviceClaimingServer_Claim_Handler, - }, - { - MethodName: "Unclaim", - Handler: _EndDeviceClaimingServer_Unclaim_Handler, - }, - { - MethodName: "GetInfoByJoinEUI", - Handler: _EndDeviceClaimingServer_GetInfoByJoinEUI_Handler, - }, - { - MethodName: "GetClaimStatus", - Handler: _EndDeviceClaimingServer_GetClaimStatus_Handler, - }, - { - MethodName: "AuthorizeApplication", - Handler: _EndDeviceClaimingServer_AuthorizeApplication_Handler, - }, - { - MethodName: "UnauthorizeApplication", - Handler: _EndDeviceClaimingServer_UnauthorizeApplication_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/deviceclaimingserver.proto", +func (x *CUPSRedirection_ClientTLS) String() string { + return protoimpl.X.MessageStringOf(x) } -// GatewayClaimingServerClient is the client API for GatewayClaimingServer service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type GatewayClaimingServerClient interface { - // Claims a gateway by claim authentication code or QR code and transfers the gateway to the target user. - Claim(ctx context.Context, in *ClaimGatewayRequest, opts ...grpc.CallOption) (*GatewayIdentifiers, error) - // AuthorizeGateway allows a gateway to be claimed. - AuthorizeGateway(ctx context.Context, in *AuthorizeGatewayRequest, opts ...grpc.CallOption) (*types.Empty, error) - // UnauthorizeGateway prevents a gateway from being claimed. - UnauthorizeGateway(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) -} +func (*CUPSRedirection_ClientTLS) ProtoMessage() {} -type gatewayClaimingServerClient struct { - cc *grpc.ClientConn +func (x *CUPSRedirection_ClientTLS) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func NewGatewayClaimingServerClient(cc *grpc.ClientConn) GatewayClaimingServerClient { - return &gatewayClaimingServerClient{cc} +// Deprecated: Use CUPSRedirection_ClientTLS.ProtoReflect.Descriptor instead. +func (*CUPSRedirection_ClientTLS) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_deviceclaimingserver_proto_rawDescGZIP(), []int{5, 0} } -func (c *gatewayClaimingServerClient) Claim(ctx context.Context, in *ClaimGatewayRequest, opts ...grpc.CallOption) (*GatewayIdentifiers, error) { - out := new(GatewayIdentifiers) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayClaimingServer/Claim", in, out, opts...) - if err != nil { - return nil, err +func (x *CUPSRedirection_ClientTLS) GetCert() []byte { + if x != nil { + return x.Cert } - return out, nil + return nil } -func (c *gatewayClaimingServerClient) AuthorizeGateway(ctx context.Context, in *AuthorizeGatewayRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayClaimingServer/AuthorizeGateway", in, out, opts...) - if err != nil { - return nil, err +func (x *CUPSRedirection_ClientTLS) GetKey() []byte { + if x != nil { + return x.Key } - return out, nil + return nil } -func (c *gatewayClaimingServerClient) UnauthorizeGateway(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayClaimingServer/UnauthorizeGateway", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} +type ClaimGatewayRequest_AuthenticatedIdentifiers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -// GatewayClaimingServerServer is the server API for GatewayClaimingServer service. -type GatewayClaimingServerServer interface { - // Claims a gateway by claim authentication code or QR code and transfers the gateway to the target user. - Claim(context.Context, *ClaimGatewayRequest) (*GatewayIdentifiers, error) - // AuthorizeGateway allows a gateway to be claimed. - AuthorizeGateway(context.Context, *AuthorizeGatewayRequest) (*types.Empty, error) - // UnauthorizeGateway prevents a gateway from being claimed. - UnauthorizeGateway(context.Context, *GatewayIdentifiers) (*types.Empty, error) + GatewayEui []byte `protobuf:"bytes,1,opt,name=gateway_eui,json=gatewayEui,proto3" json:"gateway_eui,omitempty"` + AuthenticationCode []byte `protobuf:"bytes,2,opt,name=authentication_code,json=authenticationCode,proto3" json:"authentication_code,omitempty"` } -// UnimplementedGatewayClaimingServerServer can be embedded to have forward compatible implementations. -type UnimplementedGatewayClaimingServerServer struct { +func (x *ClaimGatewayRequest_AuthenticatedIdentifiers) Reset() { + *x = ClaimGatewayRequest_AuthenticatedIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (*UnimplementedGatewayClaimingServerServer) Claim(ctx context.Context, req *ClaimGatewayRequest) (*GatewayIdentifiers, error) { - return nil, status.Errorf(codes.Unimplemented, "method Claim not implemented") +func (x *ClaimGatewayRequest_AuthenticatedIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (*UnimplementedGatewayClaimingServerServer) AuthorizeGateway(ctx context.Context, req *AuthorizeGatewayRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method AuthorizeGateway not implemented") -} -func (*UnimplementedGatewayClaimingServerServer) UnauthorizeGateway(ctx context.Context, req *GatewayIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method UnauthorizeGateway not implemented") + +func (*ClaimGatewayRequest_AuthenticatedIdentifiers) ProtoMessage() {} + +func (x *ClaimGatewayRequest_AuthenticatedIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func RegisterGatewayClaimingServerServer(s *grpc.Server, srv GatewayClaimingServerServer) { - s.RegisterService(&_GatewayClaimingServer_serviceDesc, srv) +// Deprecated: Use ClaimGatewayRequest_AuthenticatedIdentifiers.ProtoReflect.Descriptor instead. +func (*ClaimGatewayRequest_AuthenticatedIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_deviceclaimingserver_proto_rawDescGZIP(), []int{6, 0} } -func _GatewayClaimingServer_Claim_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ClaimGatewayRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayClaimingServerServer).Claim(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayClaimingServer/Claim", +func (x *ClaimGatewayRequest_AuthenticatedIdentifiers) GetGatewayEui() []byte { + if x != nil { + return x.GatewayEui } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayClaimingServerServer).Claim(ctx, req.(*ClaimGatewayRequest)) - } - return interceptor(ctx, in, info, handler) + return nil } -func _GatewayClaimingServer_AuthorizeGateway_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AuthorizeGatewayRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayClaimingServerServer).AuthorizeGateway(ctx, in) +func (x *ClaimGatewayRequest_AuthenticatedIdentifiers) GetAuthenticationCode() []byte { + if x != nil { + return x.AuthenticationCode } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayClaimingServer/AuthorizeGateway", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayClaimingServerServer).AuthorizeGateway(ctx, req.(*AuthorizeGatewayRequest)) - } - return interceptor(ctx, in, info, handler) + return nil } -func _GatewayClaimingServer_UnauthorizeGateway_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GatewayIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayClaimingServerServer).UnauthorizeGateway(ctx, in) +var File_lorawan_stack_api_deviceclaimingserver_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_deviceclaimingserver_proto_rawDesc = []byte{ + 0x0a, 0x2c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x69, + 0x6e, 0x67, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x41, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, + 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, + 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, + 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, + 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xe4, 0x0e, 0x0a, 0x15, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x7d, 0x0a, + 0x19, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x48, 0x00, 0x52, 0x18, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x07, + 0x71, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0a, 0xfa, + 0x42, 0x07, 0x7a, 0x05, 0x10, 0x00, 0x18, 0x80, 0x08, 0x48, 0x00, 0x52, 0x06, 0x71, 0x72, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x66, 0x0a, 0x16, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x14, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x54, 0x0a, 0x10, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, + 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, + 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, + 0x24, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x64, 0x12, 0xd2, 0x01, 0x0a, 0x1d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, + 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, + 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, + 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, + 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, + 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, + 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x1a, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x1f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, + 0x6b, 0x65, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x1b, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4b, 0x65, + 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0xda, 0x01, 0x0a, 0x21, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, + 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, + 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, + 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, + 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, + 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, + 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, + 0x7c, 0x5e, 0x24, 0x52, 0x1e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x56, 0x0a, 0x23, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x5f, 0x6b, 0x65, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x1f, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x4b, 0x65, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x48, 0x0a, 0x1c, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x19, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0xcf, 0x01, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xaa, 0x01, + 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, + 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, + 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x4e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x1e, 0x69, 0x6e, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x1c, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, + 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x1a, 0x88, 0x04, + 0x0a, 0x18, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, + 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, + 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, + 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, + 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, 0xce, 0x01, + 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, + 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, + 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, + 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x12, 0x48, + 0x0a, 0x13, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, + 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, + 0x33, 0x32, 0x7d, 0x24, 0x52, 0x12, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x4a, 0x04, + 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x22, 0x9d, 0x01, 0x0a, 0x1b, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, + 0x80, 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x22, 0xec, 0x01, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, + 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, + 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, + 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, + 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, + 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, + 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x22, 0x9a, 0x02, 0x0a, 0x18, 0x47, 0x65, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, + 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, + 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, + 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, + 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, + 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, + 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x22, 0xf8, 0x05, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0xcb, 0x01, 0x0a, 0x0b, 0x68, 0x6f, 0x6d, 0x65, + 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xaa, 0x01, + 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, + 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, + 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x68, 0x6f, 0x6d, 0x65, + 0x4e, 0x65, 0x74, 0x49, 0x64, 0x12, 0xd3, 0x01, 0x0a, 0x0a, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, + 0x73, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, + 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, + 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, + 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, + 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, + 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x52, 0x08, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x73, 0x49, 0x64, 0x12, 0x5e, 0x0a, 0x0f, 0x76, + 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x65, 0x6e, + 0x64, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x52, 0x0e, 0x76, 0x65, 0x6e, + 0x64, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x1a, 0x83, 0x01, 0x0a, 0x0e, + 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x12, 0x44, + 0x0a, 0x1e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, + 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0x89, 0x03, 0x0a, 0x0f, 0x43, 0x55, 0x50, 0x53, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, + 0x63, 0x75, 0x70, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x13, + 0xfa, 0x42, 0x10, 0x72, 0x0e, 0x18, 0x80, 0x02, 0x32, 0x06, 0x5e, 0x68, 0x74, 0x74, 0x70, 0x73, + 0x88, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x75, 0x70, 0x73, 0x55, + 0x72, 0x69, 0x12, 0x38, 0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x11, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x75, 0x70, 0x73, 0x5f, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, + 0x75, 0x70, 0x73, 0x54, 0x72, 0x75, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x55, + 0x50, 0x53, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x54, 0x6c, 0x73, 0x12, 0x29, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, + 0x80, 0x10, 0x48, 0x00, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, + 0x45, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x12, 0x1c, 0x0a, 0x04, + 0x63, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, + 0x03, 0x18, 0x80, 0x40, 0x52, 0x04, 0x63, 0x65, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, + 0x40, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x99, 0x08, + 0x0a, 0x13, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x7b, 0x0a, 0x19, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x75, + 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x18, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x12, 0x25, 0x0a, 0x07, 0x71, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x7a, 0x05, 0x10, 0x00, 0x18, 0x80, 0x08, 0x48, + 0x00, 0x52, 0x06, 0x71, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x5b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, + 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x56, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x0f, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0xd2, + 0x01, 0x0a, 0x1d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, + 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, + 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, + 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, + 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, + 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, + 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x1a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x4a, 0x0a, 0x10, 0x63, 0x75, 0x70, 0x73, 0x5f, 0x72, 0x65, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x55, 0x50, 0x53, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, + 0x63, 0x75, 0x70, 0x73, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x40, 0x0a, 0x18, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x15, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, + 0x64, 0x1a, 0xae, 0x02, 0x0a, 0x18, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0xd6, + 0x01, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, + 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, + 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, + 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, + 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, + 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x45, 0x75, 0x69, 0x12, 0x39, 0x0a, 0x13, 0x61, 0x75, 0x74, 0x68, 0x65, + 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x12, + 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x64, 0x65, 0x42, 0x15, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x8a, 0x01, 0x0a, 0x17, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x49, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, + 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x32, 0x88, 0x07, 0x0a, 0x17, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x12, 0x6c, 0x0a, 0x05, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x25, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, + 0x69, 0x6d, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, + 0x22, 0x0b, 0x2f, 0x65, 0x64, 0x63, 0x73, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x3a, 0x01, 0x2a, + 0x12, 0x94, 0x01, 0x0a, 0x07, 0x55, 0x6e, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x24, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x45, 0x2a, 0x40, 0x2f, 0x65, 0x64, 0x63, 0x73, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x2f, + 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x82, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x12, 0x27, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, + 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x65, 0x64, 0x63, 0x73, 0x2f, 0x63, + 0x6c, 0x61, 0x69, 0x6d, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x3a, 0x01, 0x2a, 0x12, 0xa8, 0x01, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x12, 0x40, 0x2f, 0x65, 0x64, 0x63, 0x73, 0x2f, 0x63, 0x6c, 0x61, + 0x69, 0x6d, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa5, 0x01, 0x0a, 0x14, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x22, 0x3d, 0x2f, + 0x65, 0x64, 0x63, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x3a, 0x01, 0x2a, 0x12, + 0x8f, 0x01, 0x0a, 0x16, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2f, 0x2a, 0x2d, 0x2f, 0x65, 0x64, 0x63, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x65, 0x32, 0x96, 0x03, 0x0a, 0x15, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6c, 0x61, + 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x68, 0x0a, 0x05, 0x43, + 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x16, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x22, 0x0b, 0x2f, 0x67, 0x63, 0x6c, 0x73, 0x2f, 0x63, 0x6c, 0x61, + 0x69, 0x6d, 0x3a, 0x01, 0x2a, 0x12, 0x91, 0x01, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3c, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x36, 0x22, 0x31, 0x2f, 0x67, 0x63, 0x6c, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x7f, 0x0a, 0x12, 0x55, 0x6e, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, + 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2d, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x27, 0x2a, 0x25, 0x2f, 0x67, 0x63, 0x6c, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, + 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_deviceclaimingserver_proto_rawDescOnce sync.Once + file_lorawan_stack_api_deviceclaimingserver_proto_rawDescData = file_lorawan_stack_api_deviceclaimingserver_proto_rawDesc +) + +func file_lorawan_stack_api_deviceclaimingserver_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_deviceclaimingserver_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_deviceclaimingserver_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_deviceclaimingserver_proto_rawDescData) + }) + return file_lorawan_stack_api_deviceclaimingserver_proto_rawDescData +} + +var file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_lorawan_stack_api_deviceclaimingserver_proto_goTypes = []interface{}{ + (*ClaimEndDeviceRequest)(nil), // 0: ttn.lorawan.v3.ClaimEndDeviceRequest + (*AuthorizeApplicationRequest)(nil), // 1: ttn.lorawan.v3.AuthorizeApplicationRequest + (*GetInfoByJoinEUIRequest)(nil), // 2: ttn.lorawan.v3.GetInfoByJoinEUIRequest + (*GetInfoByJoinEUIResponse)(nil), // 3: ttn.lorawan.v3.GetInfoByJoinEUIResponse + (*GetClaimStatusResponse)(nil), // 4: ttn.lorawan.v3.GetClaimStatusResponse + (*CUPSRedirection)(nil), // 5: ttn.lorawan.v3.CUPSRedirection + (*ClaimGatewayRequest)(nil), // 6: ttn.lorawan.v3.ClaimGatewayRequest + (*AuthorizeGatewayRequest)(nil), // 7: ttn.lorawan.v3.AuthorizeGatewayRequest + (*ClaimEndDeviceRequest_AuthenticatedIdentifiers)(nil), // 8: ttn.lorawan.v3.ClaimEndDeviceRequest.AuthenticatedIdentifiers + (*GetClaimStatusResponse_VendorSpecific)(nil), // 9: ttn.lorawan.v3.GetClaimStatusResponse.VendorSpecific + (*CUPSRedirection_ClientTLS)(nil), // 10: ttn.lorawan.v3.CUPSRedirection.ClientTLS + (*ClaimGatewayRequest_AuthenticatedIdentifiers)(nil), // 11: ttn.lorawan.v3.ClaimGatewayRequest.AuthenticatedIdentifiers + (*ApplicationIdentifiers)(nil), // 12: ttn.lorawan.v3.ApplicationIdentifiers + (*EndDeviceIdentifiers)(nil), // 13: ttn.lorawan.v3.EndDeviceIdentifiers + (*OrganizationOrUserIdentifiers)(nil), // 14: ttn.lorawan.v3.OrganizationOrUserIdentifiers + (*GatewayIdentifiers)(nil), // 15: ttn.lorawan.v3.GatewayIdentifiers + (*structpb.Struct)(nil), // 16: google.protobuf.Struct + (*emptypb.Empty)(nil), // 17: google.protobuf.Empty +} +var file_lorawan_stack_api_deviceclaimingserver_proto_depIdxs = []int32{ + 8, // 0: ttn.lorawan.v3.ClaimEndDeviceRequest.authenticated_identifiers:type_name -> ttn.lorawan.v3.ClaimEndDeviceRequest.AuthenticatedIdentifiers + 12, // 1: ttn.lorawan.v3.ClaimEndDeviceRequest.target_application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 12, // 2: ttn.lorawan.v3.AuthorizeApplicationRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 13, // 3: ttn.lorawan.v3.GetClaimStatusResponse.end_device_ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 9, // 4: ttn.lorawan.v3.GetClaimStatusResponse.vendor_specific:type_name -> ttn.lorawan.v3.GetClaimStatusResponse.VendorSpecific + 10, // 5: ttn.lorawan.v3.CUPSRedirection.client_tls:type_name -> ttn.lorawan.v3.CUPSRedirection.ClientTLS + 11, // 6: ttn.lorawan.v3.ClaimGatewayRequest.authenticated_identifiers:type_name -> ttn.lorawan.v3.ClaimGatewayRequest.AuthenticatedIdentifiers + 14, // 7: ttn.lorawan.v3.ClaimGatewayRequest.collaborator:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 5, // 8: ttn.lorawan.v3.ClaimGatewayRequest.cups_redirection:type_name -> ttn.lorawan.v3.CUPSRedirection + 15, // 9: ttn.lorawan.v3.AuthorizeGatewayRequest.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 16, // 10: ttn.lorawan.v3.GetClaimStatusResponse.VendorSpecific.data:type_name -> google.protobuf.Struct + 0, // 11: ttn.lorawan.v3.EndDeviceClaimingServer.Claim:input_type -> ttn.lorawan.v3.ClaimEndDeviceRequest + 13, // 12: ttn.lorawan.v3.EndDeviceClaimingServer.Unclaim:input_type -> ttn.lorawan.v3.EndDeviceIdentifiers + 2, // 13: ttn.lorawan.v3.EndDeviceClaimingServer.GetInfoByJoinEUI:input_type -> ttn.lorawan.v3.GetInfoByJoinEUIRequest + 13, // 14: ttn.lorawan.v3.EndDeviceClaimingServer.GetClaimStatus:input_type -> ttn.lorawan.v3.EndDeviceIdentifiers + 1, // 15: ttn.lorawan.v3.EndDeviceClaimingServer.AuthorizeApplication:input_type -> ttn.lorawan.v3.AuthorizeApplicationRequest + 12, // 16: ttn.lorawan.v3.EndDeviceClaimingServer.UnauthorizeApplication:input_type -> ttn.lorawan.v3.ApplicationIdentifiers + 6, // 17: ttn.lorawan.v3.GatewayClaimingServer.Claim:input_type -> ttn.lorawan.v3.ClaimGatewayRequest + 7, // 18: ttn.lorawan.v3.GatewayClaimingServer.AuthorizeGateway:input_type -> ttn.lorawan.v3.AuthorizeGatewayRequest + 15, // 19: ttn.lorawan.v3.GatewayClaimingServer.UnauthorizeGateway:input_type -> ttn.lorawan.v3.GatewayIdentifiers + 13, // 20: ttn.lorawan.v3.EndDeviceClaimingServer.Claim:output_type -> ttn.lorawan.v3.EndDeviceIdentifiers + 17, // 21: ttn.lorawan.v3.EndDeviceClaimingServer.Unclaim:output_type -> google.protobuf.Empty + 3, // 22: ttn.lorawan.v3.EndDeviceClaimingServer.GetInfoByJoinEUI:output_type -> ttn.lorawan.v3.GetInfoByJoinEUIResponse + 4, // 23: ttn.lorawan.v3.EndDeviceClaimingServer.GetClaimStatus:output_type -> ttn.lorawan.v3.GetClaimStatusResponse + 17, // 24: ttn.lorawan.v3.EndDeviceClaimingServer.AuthorizeApplication:output_type -> google.protobuf.Empty + 17, // 25: ttn.lorawan.v3.EndDeviceClaimingServer.UnauthorizeApplication:output_type -> google.protobuf.Empty + 15, // 26: ttn.lorawan.v3.GatewayClaimingServer.Claim:output_type -> ttn.lorawan.v3.GatewayIdentifiers + 17, // 27: ttn.lorawan.v3.GatewayClaimingServer.AuthorizeGateway:output_type -> google.protobuf.Empty + 17, // 28: ttn.lorawan.v3.GatewayClaimingServer.UnauthorizeGateway:output_type -> google.protobuf.Empty + 20, // [20:29] is the sub-list for method output_type + 11, // [11:20] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_deviceclaimingserver_proto_init() } +func file_lorawan_stack_api_deviceclaimingserver_proto_init() { + if File_lorawan_stack_api_deviceclaimingserver_proto != nil { + return + } + file_lorawan_stack_api_identifiers_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClaimEndDeviceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AuthorizeApplicationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetInfoByJoinEUIRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetInfoByJoinEUIResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetClaimStatusResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CUPSRedirection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClaimGatewayRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AuthorizeGatewayRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClaimEndDeviceRequest_AuthenticatedIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetClaimStatusResponse_VendorSpecific); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CUPSRedirection_ClientTLS); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClaimGatewayRequest_AuthenticatedIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*ClaimEndDeviceRequest_AuthenticatedIdentifiers_)(nil), + (*ClaimEndDeviceRequest_QrCode)(nil), } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayClaimingServer/UnauthorizeGateway", + file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[5].OneofWrappers = []interface{}{ + (*CUPSRedirection_ClientTls)(nil), + (*CUPSRedirection_AuthToken)(nil), } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayClaimingServerServer).UnauthorizeGateway(ctx, req.(*GatewayIdentifiers)) + file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes[6].OneofWrappers = []interface{}{ + (*ClaimGatewayRequest_AuthenticatedIdentifiers_)(nil), + (*ClaimGatewayRequest_QrCode)(nil), } - return interceptor(ctx, in, info, handler) -} - -var _GatewayClaimingServer_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.GatewayClaimingServer", - HandlerType: (*GatewayClaimingServerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Claim", - Handler: _GatewayClaimingServer_Claim_Handler, - }, - { - MethodName: "AuthorizeGateway", - Handler: _GatewayClaimingServer_AuthorizeGateway_Handler, - }, - { - MethodName: "UnauthorizeGateway", - Handler: _GatewayClaimingServer_UnauthorizeGateway_Handler, + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_deviceclaimingserver_proto_rawDesc, + NumEnums: 0, + NumMessages: 12, + NumExtensions: 0, + NumServices: 2, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/deviceclaimingserver.proto", + GoTypes: file_lorawan_stack_api_deviceclaimingserver_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_deviceclaimingserver_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_deviceclaimingserver_proto_msgTypes, + }.Build() + File_lorawan_stack_api_deviceclaimingserver_proto = out.File + file_lorawan_stack_api_deviceclaimingserver_proto_rawDesc = nil + file_lorawan_stack_api_deviceclaimingserver_proto_goTypes = nil + file_lorawan_stack_api_deviceclaimingserver_proto_depIdxs = nil } diff --git a/pkg/ttnpb/deviceclaimingserver.pb.gw.go b/pkg/ttnpb/deviceclaimingserver.pb.gw.go index 4d6ec2c409..e37c49503b 100644 --- a/pkg/ttnpb/deviceclaimingserver.pb.gw.go +++ b/pkg/ttnpb/deviceclaimingserver.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join func request_EndDeviceClaimingServer_Claim_0(ctx context.Context, marshaler runtime.Marshaler, client EndDeviceClaimingServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -92,7 +90,6 @@ func request_EndDeviceClaimingServer_Unclaim_0(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -103,7 +100,6 @@ func request_EndDeviceClaimingServer_Unclaim_0(ctx context.Context, marshaler ru } protoReq.DeviceId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "device_id", err) } @@ -138,7 +134,6 @@ func local_request_EndDeviceClaimingServer_Unclaim_0(ctx context.Context, marsha } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -149,7 +144,6 @@ func local_request_EndDeviceClaimingServer_Unclaim_0(ctx context.Context, marsha } protoReq.DeviceId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "device_id", err) } @@ -214,7 +208,6 @@ func request_EndDeviceClaimingServer_GetClaimStatus_0(ctx context.Context, marsh } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -225,7 +218,6 @@ func request_EndDeviceClaimingServer_GetClaimStatus_0(ctx context.Context, marsh } protoReq.DeviceId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "device_id", err) } @@ -259,7 +251,6 @@ func local_request_EndDeviceClaimingServer_GetClaimStatus_0(ctx context.Context, } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -270,7 +261,6 @@ func local_request_EndDeviceClaimingServer_GetClaimStatus_0(ctx context.Context, } protoReq.DeviceId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "device_id", err) } @@ -312,7 +302,6 @@ func request_EndDeviceClaimingServer_AuthorizeApplication_0(ctx context.Context, } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -347,7 +336,6 @@ func local_request_EndDeviceClaimingServer_AuthorizeApplication_0(ctx context.Co } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -374,7 +362,6 @@ func request_EndDeviceClaimingServer_UnauthorizeApplication_0(ctx context.Contex } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -401,7 +388,6 @@ func local_request_EndDeviceClaimingServer_UnauthorizeApplication_0(ctx context. } protoReq.ApplicationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_id", err) } @@ -470,7 +456,6 @@ func request_GatewayClaimingServer_AuthorizeGateway_0(ctx context.Context, marsh } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -505,7 +490,6 @@ func local_request_GatewayClaimingServer_AuthorizeGateway_0(ctx context.Context, } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -536,7 +520,6 @@ func request_GatewayClaimingServer_UnauthorizeGateway_0(ctx context.Context, mar } protoReq.GatewayId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_id", err) } @@ -570,7 +553,6 @@ func local_request_GatewayClaimingServer_UnauthorizeGateway_0(ctx context.Contex } protoReq.GatewayId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_id", err) } @@ -599,20 +581,22 @@ func RegisterEndDeviceClaimingServerHandlerServer(ctx context.Context, mux *runt var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceClaimingServer/Claim", runtime.WithHTTPPathPattern("/edcs/claim")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceClaimingServer_Claim_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceClaimingServer_Claim_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceClaimingServer_Claim_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceClaimingServer_Claim_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -622,20 +606,22 @@ func RegisterEndDeviceClaimingServerHandlerServer(ctx context.Context, mux *runt var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceClaimingServer/Unclaim", runtime.WithHTTPPathPattern("/edcs/claim/{application_ids.application_id}/devices/{device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceClaimingServer_Unclaim_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceClaimingServer_Unclaim_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceClaimingServer_Unclaim_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceClaimingServer_Unclaim_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -645,20 +631,22 @@ func RegisterEndDeviceClaimingServerHandlerServer(ctx context.Context, mux *runt var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceClaimingServer/GetInfoByJoinEUI", runtime.WithHTTPPathPattern("/edcs/claim/info")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceClaimingServer_GetInfoByJoinEUI_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceClaimingServer_GetInfoByJoinEUI_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceClaimingServer_GetInfoByJoinEUI_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceClaimingServer_GetInfoByJoinEUI_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -668,20 +656,22 @@ func RegisterEndDeviceClaimingServerHandlerServer(ctx context.Context, mux *runt var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceClaimingServer/GetClaimStatus", runtime.WithHTTPPathPattern("/edcs/claim/{application_ids.application_id}/devices/{device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceClaimingServer_GetClaimStatus_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceClaimingServer_GetClaimStatus_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceClaimingServer_GetClaimStatus_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceClaimingServer_GetClaimStatus_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -691,20 +681,22 @@ func RegisterEndDeviceClaimingServerHandlerServer(ctx context.Context, mux *runt var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceClaimingServer/AuthorizeApplication", runtime.WithHTTPPathPattern("/edcs/applications/{application_ids.application_id}/authorize")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceClaimingServer_AuthorizeApplication_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceClaimingServer_AuthorizeApplication_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceClaimingServer_AuthorizeApplication_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceClaimingServer_AuthorizeApplication_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -714,20 +706,22 @@ func RegisterEndDeviceClaimingServerHandlerServer(ctx context.Context, mux *runt var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceClaimingServer/UnauthorizeApplication", runtime.WithHTTPPathPattern("/edcs/applications/{application_id}/authorize")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceClaimingServer_UnauthorizeApplication_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceClaimingServer_UnauthorizeApplication_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceClaimingServer_UnauthorizeApplication_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceClaimingServer_UnauthorizeApplication_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -746,20 +740,22 @@ func RegisterGatewayClaimingServerHandlerServer(ctx context.Context, mux *runtim var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayClaimingServer/Claim", runtime.WithHTTPPathPattern("/gcls/claim")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayClaimingServer_Claim_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayClaimingServer_Claim_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayClaimingServer_Claim_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayClaimingServer_Claim_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -769,20 +765,22 @@ func RegisterGatewayClaimingServerHandlerServer(ctx context.Context, mux *runtim var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayClaimingServer/AuthorizeGateway", runtime.WithHTTPPathPattern("/gcls/gateways/{gateway_ids.gateway_id}/authorize")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayClaimingServer_AuthorizeGateway_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayClaimingServer_AuthorizeGateway_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayClaimingServer_AuthorizeGateway_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayClaimingServer_AuthorizeGateway_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -792,20 +790,22 @@ func RegisterGatewayClaimingServerHandlerServer(ctx context.Context, mux *runtim var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayClaimingServer/UnauthorizeGateway", runtime.WithHTTPPathPattern("/gcls/gateways/{gateway_id}/authorize")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayClaimingServer_UnauthorizeGateway_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayClaimingServer_UnauthorizeGateway_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayClaimingServer_UnauthorizeGateway_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayClaimingServer_UnauthorizeGateway_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -854,19 +854,21 @@ func RegisterEndDeviceClaimingServerHandlerClient(ctx context.Context, mux *runt ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceClaimingServer/Claim", runtime.WithHTTPPathPattern("/edcs/claim")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceClaimingServer_Claim_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceClaimingServer_Claim_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceClaimingServer_Claim_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceClaimingServer_Claim_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -874,19 +876,21 @@ func RegisterEndDeviceClaimingServerHandlerClient(ctx context.Context, mux *runt ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceClaimingServer/Unclaim", runtime.WithHTTPPathPattern("/edcs/claim/{application_ids.application_id}/devices/{device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceClaimingServer_Unclaim_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceClaimingServer_Unclaim_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceClaimingServer_Unclaim_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceClaimingServer_Unclaim_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -894,19 +898,21 @@ func RegisterEndDeviceClaimingServerHandlerClient(ctx context.Context, mux *runt ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceClaimingServer/GetInfoByJoinEUI", runtime.WithHTTPPathPattern("/edcs/claim/info")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceClaimingServer_GetInfoByJoinEUI_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceClaimingServer_GetInfoByJoinEUI_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceClaimingServer_GetInfoByJoinEUI_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceClaimingServer_GetInfoByJoinEUI_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -914,19 +920,21 @@ func RegisterEndDeviceClaimingServerHandlerClient(ctx context.Context, mux *runt ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceClaimingServer/GetClaimStatus", runtime.WithHTTPPathPattern("/edcs/claim/{application_ids.application_id}/devices/{device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceClaimingServer_GetClaimStatus_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceClaimingServer_GetClaimStatus_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceClaimingServer_GetClaimStatus_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceClaimingServer_GetClaimStatus_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -934,19 +942,21 @@ func RegisterEndDeviceClaimingServerHandlerClient(ctx context.Context, mux *runt ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceClaimingServer/AuthorizeApplication", runtime.WithHTTPPathPattern("/edcs/applications/{application_ids.application_id}/authorize")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceClaimingServer_AuthorizeApplication_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceClaimingServer_AuthorizeApplication_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceClaimingServer_AuthorizeApplication_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceClaimingServer_AuthorizeApplication_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -954,19 +964,21 @@ func RegisterEndDeviceClaimingServerHandlerClient(ctx context.Context, mux *runt ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceClaimingServer/UnauthorizeApplication", runtime.WithHTTPPathPattern("/edcs/applications/{application_id}/authorize")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceClaimingServer_UnauthorizeApplication_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceClaimingServer_UnauthorizeApplication_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceClaimingServer_UnauthorizeApplication_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceClaimingServer_UnauthorizeApplication_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -974,17 +986,17 @@ func RegisterEndDeviceClaimingServerHandlerClient(ctx context.Context, mux *runt } var ( - pattern_EndDeviceClaimingServer_Claim_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"edcs", "claim"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceClaimingServer_Claim_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"edcs", "claim"}, "")) - pattern_EndDeviceClaimingServer_Unclaim_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"edcs", "claim", "application_ids.application_id", "devices", "device_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceClaimingServer_Unclaim_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"edcs", "claim", "application_ids.application_id", "devices", "device_id"}, "")) - pattern_EndDeviceClaimingServer_GetInfoByJoinEUI_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"edcs", "claim", "info"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceClaimingServer_GetInfoByJoinEUI_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"edcs", "claim", "info"}, "")) - pattern_EndDeviceClaimingServer_GetClaimStatus_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"edcs", "claim", "application_ids.application_id", "devices", "device_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceClaimingServer_GetClaimStatus_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"edcs", "claim", "application_ids.application_id", "devices", "device_id"}, "")) - pattern_EndDeviceClaimingServer_AuthorizeApplication_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"edcs", "applications", "application_ids.application_id", "authorize"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceClaimingServer_AuthorizeApplication_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"edcs", "applications", "application_ids.application_id", "authorize"}, "")) - pattern_EndDeviceClaimingServer_UnauthorizeApplication_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"edcs", "applications", "application_id", "authorize"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceClaimingServer_UnauthorizeApplication_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"edcs", "applications", "application_id", "authorize"}, "")) ) var ( @@ -1043,19 +1055,21 @@ func RegisterGatewayClaimingServerHandlerClient(ctx context.Context, mux *runtim ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayClaimingServer/Claim", runtime.WithHTTPPathPattern("/gcls/claim")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayClaimingServer_Claim_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayClaimingServer_Claim_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayClaimingServer_Claim_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayClaimingServer_Claim_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1063,19 +1077,21 @@ func RegisterGatewayClaimingServerHandlerClient(ctx context.Context, mux *runtim ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayClaimingServer/AuthorizeGateway", runtime.WithHTTPPathPattern("/gcls/gateways/{gateway_ids.gateway_id}/authorize")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayClaimingServer_AuthorizeGateway_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayClaimingServer_AuthorizeGateway_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayClaimingServer_AuthorizeGateway_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayClaimingServer_AuthorizeGateway_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1083,19 +1099,21 @@ func RegisterGatewayClaimingServerHandlerClient(ctx context.Context, mux *runtim ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayClaimingServer/UnauthorizeGateway", runtime.WithHTTPPathPattern("/gcls/gateways/{gateway_id}/authorize")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayClaimingServer_UnauthorizeGateway_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayClaimingServer_UnauthorizeGateway_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayClaimingServer_UnauthorizeGateway_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayClaimingServer_UnauthorizeGateway_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1103,11 +1121,11 @@ func RegisterGatewayClaimingServerHandlerClient(ctx context.Context, mux *runtim } var ( - pattern_GatewayClaimingServer_Claim_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"gcls", "claim"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayClaimingServer_Claim_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"gcls", "claim"}, "")) - pattern_GatewayClaimingServer_AuthorizeGateway_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"gcls", "gateways", "gateway_ids.gateway_id", "authorize"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayClaimingServer_AuthorizeGateway_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"gcls", "gateways", "gateway_ids.gateway_id", "authorize"}, "")) - pattern_GatewayClaimingServer_UnauthorizeGateway_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"gcls", "gateways", "gateway_id", "authorize"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayClaimingServer_UnauthorizeGateway_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"gcls", "gateways", "gateway_id", "authorize"}, "")) ) var ( diff --git a/pkg/ttnpb/deviceclaimingserver.pb.validate.go b/pkg/ttnpb/deviceclaimingserver.pb.validate.go index 5819ca002a..6991ac78df 100644 --- a/pkg/ttnpb/deviceclaimingserver.pb.validate.go +++ b/pkg/ttnpb/deviceclaimingserver.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _deviceclaimingserver_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on ClaimEndDeviceRequest with the // rules defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/deviceclaimingserver_grpc.pb.go b/pkg/ttnpb/deviceclaimingserver_grpc.pb.go new file mode 100644 index 0000000000..42d9844299 --- /dev/null +++ b/pkg/ttnpb/deviceclaimingserver_grpc.pb.go @@ -0,0 +1,471 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/deviceclaimingserver.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// EndDeviceClaimingServerClient is the client API for EndDeviceClaimingServer service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type EndDeviceClaimingServerClient interface { + // Claims the end device on a Join Server by claim authentication code or QR code. + Claim(ctx context.Context, in *ClaimEndDeviceRequest, opts ...grpc.CallOption) (*EndDeviceIdentifiers, error) + // Unclaims the end device on a Join Server. + Unclaim(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Return whether claiming is available for a given JoinEUI. + GetInfoByJoinEUI(ctx context.Context, in *GetInfoByJoinEUIRequest, opts ...grpc.CallOption) (*GetInfoByJoinEUIResponse, error) + // Gets the claim status of an end device. + GetClaimStatus(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*GetClaimStatusResponse, error) + // Authorize the End Device Claiming Server to claim devices registered in the given application. The application + // identifiers are the source application, where the devices are registered before they are claimed. + // The API key is used to access the application, find the device, verify the claim request and delete the end device + // from the source application. + AuthorizeApplication(ctx context.Context, in *AuthorizeApplicationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Unauthorize the End Device Claiming Server to claim devices in the given application. + // This reverts the authorization given with rpc AuthorizeApplication. + UnauthorizeApplication(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type endDeviceClaimingServerClient struct { + cc grpc.ClientConnInterface +} + +func NewEndDeviceClaimingServerClient(cc grpc.ClientConnInterface) EndDeviceClaimingServerClient { + return &endDeviceClaimingServerClient{cc} +} + +func (c *endDeviceClaimingServerClient) Claim(ctx context.Context, in *ClaimEndDeviceRequest, opts ...grpc.CallOption) (*EndDeviceIdentifiers, error) { + out := new(EndDeviceIdentifiers) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceClaimingServer/Claim", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *endDeviceClaimingServerClient) Unclaim(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceClaimingServer/Unclaim", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *endDeviceClaimingServerClient) GetInfoByJoinEUI(ctx context.Context, in *GetInfoByJoinEUIRequest, opts ...grpc.CallOption) (*GetInfoByJoinEUIResponse, error) { + out := new(GetInfoByJoinEUIResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceClaimingServer/GetInfoByJoinEUI", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *endDeviceClaimingServerClient) GetClaimStatus(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*GetClaimStatusResponse, error) { + out := new(GetClaimStatusResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceClaimingServer/GetClaimStatus", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *endDeviceClaimingServerClient) AuthorizeApplication(ctx context.Context, in *AuthorizeApplicationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceClaimingServer/AuthorizeApplication", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *endDeviceClaimingServerClient) UnauthorizeApplication(ctx context.Context, in *ApplicationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceClaimingServer/UnauthorizeApplication", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// EndDeviceClaimingServerServer is the server API for EndDeviceClaimingServer service. +// All implementations must embed UnimplementedEndDeviceClaimingServerServer +// for forward compatibility +type EndDeviceClaimingServerServer interface { + // Claims the end device on a Join Server by claim authentication code or QR code. + Claim(context.Context, *ClaimEndDeviceRequest) (*EndDeviceIdentifiers, error) + // Unclaims the end device on a Join Server. + Unclaim(context.Context, *EndDeviceIdentifiers) (*emptypb.Empty, error) + // Return whether claiming is available for a given JoinEUI. + GetInfoByJoinEUI(context.Context, *GetInfoByJoinEUIRequest) (*GetInfoByJoinEUIResponse, error) + // Gets the claim status of an end device. + GetClaimStatus(context.Context, *EndDeviceIdentifiers) (*GetClaimStatusResponse, error) + // Authorize the End Device Claiming Server to claim devices registered in the given application. The application + // identifiers are the source application, where the devices are registered before they are claimed. + // The API key is used to access the application, find the device, verify the claim request and delete the end device + // from the source application. + AuthorizeApplication(context.Context, *AuthorizeApplicationRequest) (*emptypb.Empty, error) + // Unauthorize the End Device Claiming Server to claim devices in the given application. + // This reverts the authorization given with rpc AuthorizeApplication. + UnauthorizeApplication(context.Context, *ApplicationIdentifiers) (*emptypb.Empty, error) + mustEmbedUnimplementedEndDeviceClaimingServerServer() +} + +// UnimplementedEndDeviceClaimingServerServer must be embedded to have forward compatible implementations. +type UnimplementedEndDeviceClaimingServerServer struct { +} + +func (UnimplementedEndDeviceClaimingServerServer) Claim(context.Context, *ClaimEndDeviceRequest) (*EndDeviceIdentifiers, error) { + return nil, status.Errorf(codes.Unimplemented, "method Claim not implemented") +} +func (UnimplementedEndDeviceClaimingServerServer) Unclaim(context.Context, *EndDeviceIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Unclaim not implemented") +} +func (UnimplementedEndDeviceClaimingServerServer) GetInfoByJoinEUI(context.Context, *GetInfoByJoinEUIRequest) (*GetInfoByJoinEUIResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetInfoByJoinEUI not implemented") +} +func (UnimplementedEndDeviceClaimingServerServer) GetClaimStatus(context.Context, *EndDeviceIdentifiers) (*GetClaimStatusResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetClaimStatus not implemented") +} +func (UnimplementedEndDeviceClaimingServerServer) AuthorizeApplication(context.Context, *AuthorizeApplicationRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method AuthorizeApplication not implemented") +} +func (UnimplementedEndDeviceClaimingServerServer) UnauthorizeApplication(context.Context, *ApplicationIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method UnauthorizeApplication not implemented") +} +func (UnimplementedEndDeviceClaimingServerServer) mustEmbedUnimplementedEndDeviceClaimingServerServer() { +} + +// UnsafeEndDeviceClaimingServerServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to EndDeviceClaimingServerServer will +// result in compilation errors. +type UnsafeEndDeviceClaimingServerServer interface { + mustEmbedUnimplementedEndDeviceClaimingServerServer() +} + +func RegisterEndDeviceClaimingServerServer(s grpc.ServiceRegistrar, srv EndDeviceClaimingServerServer) { + s.RegisterService(&EndDeviceClaimingServer_ServiceDesc, srv) +} + +func _EndDeviceClaimingServer_Claim_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ClaimEndDeviceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceClaimingServerServer).Claim(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceClaimingServer/Claim", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceClaimingServerServer).Claim(ctx, req.(*ClaimEndDeviceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EndDeviceClaimingServer_Unclaim_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EndDeviceIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceClaimingServerServer).Unclaim(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceClaimingServer/Unclaim", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceClaimingServerServer).Unclaim(ctx, req.(*EndDeviceIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _EndDeviceClaimingServer_GetInfoByJoinEUI_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetInfoByJoinEUIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceClaimingServerServer).GetInfoByJoinEUI(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceClaimingServer/GetInfoByJoinEUI", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceClaimingServerServer).GetInfoByJoinEUI(ctx, req.(*GetInfoByJoinEUIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EndDeviceClaimingServer_GetClaimStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EndDeviceIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceClaimingServerServer).GetClaimStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceClaimingServer/GetClaimStatus", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceClaimingServerServer).GetClaimStatus(ctx, req.(*EndDeviceIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _EndDeviceClaimingServer_AuthorizeApplication_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthorizeApplicationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceClaimingServerServer).AuthorizeApplication(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceClaimingServer/AuthorizeApplication", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceClaimingServerServer).AuthorizeApplication(ctx, req.(*AuthorizeApplicationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EndDeviceClaimingServer_UnauthorizeApplication_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ApplicationIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceClaimingServerServer).UnauthorizeApplication(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceClaimingServer/UnauthorizeApplication", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceClaimingServerServer).UnauthorizeApplication(ctx, req.(*ApplicationIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// EndDeviceClaimingServer_ServiceDesc is the grpc.ServiceDesc for EndDeviceClaimingServer service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var EndDeviceClaimingServer_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.EndDeviceClaimingServer", + HandlerType: (*EndDeviceClaimingServerServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Claim", + Handler: _EndDeviceClaimingServer_Claim_Handler, + }, + { + MethodName: "Unclaim", + Handler: _EndDeviceClaimingServer_Unclaim_Handler, + }, + { + MethodName: "GetInfoByJoinEUI", + Handler: _EndDeviceClaimingServer_GetInfoByJoinEUI_Handler, + }, + { + MethodName: "GetClaimStatus", + Handler: _EndDeviceClaimingServer_GetClaimStatus_Handler, + }, + { + MethodName: "AuthorizeApplication", + Handler: _EndDeviceClaimingServer_AuthorizeApplication_Handler, + }, + { + MethodName: "UnauthorizeApplication", + Handler: _EndDeviceClaimingServer_UnauthorizeApplication_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/deviceclaimingserver.proto", +} + +// GatewayClaimingServerClient is the client API for GatewayClaimingServer service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type GatewayClaimingServerClient interface { + // Claims a gateway by claim authentication code or QR code and transfers the gateway to the target user. + Claim(ctx context.Context, in *ClaimGatewayRequest, opts ...grpc.CallOption) (*GatewayIdentifiers, error) + // AuthorizeGateway allows a gateway to be claimed. + AuthorizeGateway(ctx context.Context, in *AuthorizeGatewayRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // UnauthorizeGateway prevents a gateway from being claimed. + UnauthorizeGateway(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type gatewayClaimingServerClient struct { + cc grpc.ClientConnInterface +} + +func NewGatewayClaimingServerClient(cc grpc.ClientConnInterface) GatewayClaimingServerClient { + return &gatewayClaimingServerClient{cc} +} + +func (c *gatewayClaimingServerClient) Claim(ctx context.Context, in *ClaimGatewayRequest, opts ...grpc.CallOption) (*GatewayIdentifiers, error) { + out := new(GatewayIdentifiers) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayClaimingServer/Claim", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayClaimingServerClient) AuthorizeGateway(ctx context.Context, in *AuthorizeGatewayRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayClaimingServer/AuthorizeGateway", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayClaimingServerClient) UnauthorizeGateway(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayClaimingServer/UnauthorizeGateway", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// GatewayClaimingServerServer is the server API for GatewayClaimingServer service. +// All implementations must embed UnimplementedGatewayClaimingServerServer +// for forward compatibility +type GatewayClaimingServerServer interface { + // Claims a gateway by claim authentication code or QR code and transfers the gateway to the target user. + Claim(context.Context, *ClaimGatewayRequest) (*GatewayIdentifiers, error) + // AuthorizeGateway allows a gateway to be claimed. + AuthorizeGateway(context.Context, *AuthorizeGatewayRequest) (*emptypb.Empty, error) + // UnauthorizeGateway prevents a gateway from being claimed. + UnauthorizeGateway(context.Context, *GatewayIdentifiers) (*emptypb.Empty, error) + mustEmbedUnimplementedGatewayClaimingServerServer() +} + +// UnimplementedGatewayClaimingServerServer must be embedded to have forward compatible implementations. +type UnimplementedGatewayClaimingServerServer struct { +} + +func (UnimplementedGatewayClaimingServerServer) Claim(context.Context, *ClaimGatewayRequest) (*GatewayIdentifiers, error) { + return nil, status.Errorf(codes.Unimplemented, "method Claim not implemented") +} +func (UnimplementedGatewayClaimingServerServer) AuthorizeGateway(context.Context, *AuthorizeGatewayRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method AuthorizeGateway not implemented") +} +func (UnimplementedGatewayClaimingServerServer) UnauthorizeGateway(context.Context, *GatewayIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method UnauthorizeGateway not implemented") +} +func (UnimplementedGatewayClaimingServerServer) mustEmbedUnimplementedGatewayClaimingServerServer() {} + +// UnsafeGatewayClaimingServerServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to GatewayClaimingServerServer will +// result in compilation errors. +type UnsafeGatewayClaimingServerServer interface { + mustEmbedUnimplementedGatewayClaimingServerServer() +} + +func RegisterGatewayClaimingServerServer(s grpc.ServiceRegistrar, srv GatewayClaimingServerServer) { + s.RegisterService(&GatewayClaimingServer_ServiceDesc, srv) +} + +func _GatewayClaimingServer_Claim_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ClaimGatewayRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayClaimingServerServer).Claim(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayClaimingServer/Claim", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayClaimingServerServer).Claim(ctx, req.(*ClaimGatewayRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayClaimingServer_AuthorizeGateway_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AuthorizeGatewayRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayClaimingServerServer).AuthorizeGateway(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayClaimingServer/AuthorizeGateway", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayClaimingServerServer).AuthorizeGateway(ctx, req.(*AuthorizeGatewayRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayClaimingServer_UnauthorizeGateway_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GatewayIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayClaimingServerServer).UnauthorizeGateway(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayClaimingServer/UnauthorizeGateway", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayClaimingServerServer).UnauthorizeGateway(ctx, req.(*GatewayIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// GatewayClaimingServer_ServiceDesc is the grpc.ServiceDesc for GatewayClaimingServer service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var GatewayClaimingServer_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.GatewayClaimingServer", + HandlerType: (*GatewayClaimingServerServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Claim", + Handler: _GatewayClaimingServer_Claim_Handler, + }, + { + MethodName: "AuthorizeGateway", + Handler: _GatewayClaimingServer_AuthorizeGateway_Handler, + }, + { + MethodName: "UnauthorizeGateway", + Handler: _GatewayClaimingServer_UnauthorizeGateway_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/deviceclaimingserver.proto", +} diff --git a/pkg/ttnpb/deviceclaimingserver_json.pb.go b/pkg/ttnpb/deviceclaimingserver_json.pb.go index a76cb43363..cd740fa2fc 100644 --- a/pkg/ttnpb/deviceclaimingserver_json.pb.go +++ b/pkg/ttnpb/deviceclaimingserver_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/deviceclaimingserver.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" types "go.thethings.network/lorawan-stack/v3/pkg/types" ) @@ -94,7 +94,7 @@ func (x *ClaimEndDeviceRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("target_application_ids") // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.TargetApplicationIds) + golang.MarshalMessage(s, x.TargetApplicationIds) } if x.TargetDeviceId != "" || s.HasField("target_device_id") { s.WriteMoreIf(&wroteField) @@ -175,7 +175,7 @@ func (x *ClaimEndDeviceRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) } // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. var v ApplicationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.TargetApplicationIds = &v case "target_device_id", "targetDeviceId": s.AddField("target_device_id") @@ -329,7 +329,7 @@ func (x *GetClaimStatusResponse) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("vendor_specific") // NOTE: GetClaimStatusResponse_VendorSpecific does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.VendorSpecific) + golang.MarshalMessage(s, x.VendorSpecific) } s.WriteObjectEnd() } @@ -369,7 +369,7 @@ func (x *GetClaimStatusResponse) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState } // NOTE: GetClaimStatusResponse_VendorSpecific does not seem to implement UnmarshalProtoJSON. var v GetClaimStatusResponse_VendorSpecific - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.VendorSpecific = &v } }) @@ -454,7 +454,7 @@ func (x *ClaimGatewayRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("collaborator") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Collaborator) + golang.MarshalMessage(s, x.Collaborator) } if x.TargetGatewayId != "" || s.HasField("target_gateway_id") { s.WriteMoreIf(&wroteField) @@ -470,7 +470,7 @@ func (x *ClaimGatewayRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("cups_redirection") // NOTE: CUPSRedirection does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.CupsRedirection) + golang.MarshalMessage(s, x.CupsRedirection) } if x.TargetFrequencyPlanId != "" || s.HasField("target_frequency_plan_id") { s.WriteMoreIf(&wroteField) @@ -516,7 +516,7 @@ func (x *ClaimGatewayRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Collaborator = &v case "target_gateway_id", "targetGatewayId": s.AddField("target_gateway_id") @@ -532,7 +532,7 @@ func (x *ClaimGatewayRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: CUPSRedirection does not seem to implement UnmarshalProtoJSON. var v CUPSRedirection - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.CupsRedirection = &v case "target_frequency_plan_id", "targetFrequencyPlanId": s.AddField("target_frequency_plan_id") diff --git a/pkg/ttnpb/devicerepository.pb.go b/pkg/ttnpb/devicerepository.pb.go index e68793a6c4..72f5a9d2ed 100644 --- a/pkg/ttnpb/devicerepository.pb.go +++ b/pkg/ttnpb/devicerepository.pb.go @@ -1,35 +1,45 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2020 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/devicerepository.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + structpb "google.golang.org/protobuf/types/known/structpb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type KeyProvisioning int32 @@ -44,26 +54,47 @@ const ( KeyProvisioning_KEY_PROVISIONING_MANIFEST KeyProvisioning = 3 ) -var KeyProvisioning_name = map[int32]string{ - 0: "KEY_PROVISIONING_UNKNOWN", - 1: "KEY_PROVISIONING_CUSTOM", - 2: "KEY_PROVISIONING_JOIN_SERVER", - 3: "KEY_PROVISIONING_MANIFEST", -} +// Enum value maps for KeyProvisioning. +var ( + KeyProvisioning_name = map[int32]string{ + 0: "KEY_PROVISIONING_UNKNOWN", + 1: "KEY_PROVISIONING_CUSTOM", + 2: "KEY_PROVISIONING_JOIN_SERVER", + 3: "KEY_PROVISIONING_MANIFEST", + } + KeyProvisioning_value = map[string]int32{ + "KEY_PROVISIONING_UNKNOWN": 0, + "KEY_PROVISIONING_CUSTOM": 1, + "KEY_PROVISIONING_JOIN_SERVER": 2, + "KEY_PROVISIONING_MANIFEST": 3, + } +) -var KeyProvisioning_value = map[string]int32{ - "KEY_PROVISIONING_UNKNOWN": 0, - "KEY_PROVISIONING_CUSTOM": 1, - "KEY_PROVISIONING_JOIN_SERVER": 2, - "KEY_PROVISIONING_MANIFEST": 3, +func (x KeyProvisioning) Enum() *KeyProvisioning { + p := new(KeyProvisioning) + *p = x + return p } func (x KeyProvisioning) String() string { - return proto.EnumName(KeyProvisioning_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (KeyProvisioning) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_devicerepository_proto_enumTypes[0].Descriptor() +} + +func (KeyProvisioning) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_devicerepository_proto_enumTypes[0] +} + +func (x KeyProvisioning) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use KeyProvisioning.Descriptor instead. func (KeyProvisioning) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{0} + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{0} } type KeySecurity int32 @@ -79,29 +110,54 @@ const ( KeySecurity_KEY_SECURITY_SECURE_ELEMENT KeySecurity = 3 ) -var KeySecurity_name = map[int32]string{ - 0: "KEY_SECURITY_UNKNOWN", - 1: "KEY_SECURITY_NONE", - 2: "KEY_SECURITY_READ_PROTECTED", - 3: "KEY_SECURITY_SECURE_ELEMENT", -} +// Enum value maps for KeySecurity. +var ( + KeySecurity_name = map[int32]string{ + 0: "KEY_SECURITY_UNKNOWN", + 1: "KEY_SECURITY_NONE", + 2: "KEY_SECURITY_READ_PROTECTED", + 3: "KEY_SECURITY_SECURE_ELEMENT", + } + KeySecurity_value = map[string]int32{ + "KEY_SECURITY_UNKNOWN": 0, + "KEY_SECURITY_NONE": 1, + "KEY_SECURITY_READ_PROTECTED": 2, + "KEY_SECURITY_SECURE_ELEMENT": 3, + } +) -var KeySecurity_value = map[string]int32{ - "KEY_SECURITY_UNKNOWN": 0, - "KEY_SECURITY_NONE": 1, - "KEY_SECURITY_READ_PROTECTED": 2, - "KEY_SECURITY_SECURE_ELEMENT": 3, +func (x KeySecurity) Enum() *KeySecurity { + p := new(KeySecurity) + *p = x + return p } func (x KeySecurity) String() string { - return proto.EnumName(KeySecurity_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (KeySecurity) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_devicerepository_proto_enumTypes[1].Descriptor() +} + +func (KeySecurity) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_devicerepository_proto_enumTypes[1] } +func (x KeySecurity) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use KeySecurity.Descriptor instead. func (KeySecurity) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{1} + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{1} } type EndDeviceBrand struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Brand identifier, as specified in the Device Repository. BrandId string `protobuf:"bytes,1,opt,name=brand_id,json=brandId,proto3" json:"brand_id,omitempty"` // Brand name. @@ -117,93 +173,102 @@ type EndDeviceBrand struct { // Contact email address. Email string `protobuf:"bytes,7,opt,name=email,proto3" json:"email,omitempty"` // Path to brand logo. - Logo string `protobuf:"bytes,8,opt,name=logo,proto3" json:"logo,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Logo string `protobuf:"bytes,8,opt,name=logo,proto3" json:"logo,omitempty"` } -func (m *EndDeviceBrand) Reset() { *m = EndDeviceBrand{} } -func (m *EndDeviceBrand) String() string { return proto.CompactTextString(m) } -func (*EndDeviceBrand) ProtoMessage() {} -func (*EndDeviceBrand) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{0} -} -func (m *EndDeviceBrand) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceBrand.Unmarshal(m, b) -} -func (m *EndDeviceBrand) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceBrand.Marshal(b, m, deterministic) -} -func (m *EndDeviceBrand) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceBrand.Merge(m, src) +func (x *EndDeviceBrand) Reset() { + *x = EndDeviceBrand{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDeviceBrand) XXX_Size() int { - return xxx_messageInfo_EndDeviceBrand.Size(m) + +func (x *EndDeviceBrand) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *EndDeviceBrand) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceBrand.DiscardUnknown(m) + +func (*EndDeviceBrand) ProtoMessage() {} + +func (x *EndDeviceBrand) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_EndDeviceBrand proto.InternalMessageInfo +// Deprecated: Use EndDeviceBrand.ProtoReflect.Descriptor instead. +func (*EndDeviceBrand) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{0} +} -func (m *EndDeviceBrand) GetBrandId() string { - if m != nil { - return m.BrandId +func (x *EndDeviceBrand) GetBrandId() string { + if x != nil { + return x.BrandId } return "" } -func (m *EndDeviceBrand) GetName() string { - if m != nil { - return m.Name +func (x *EndDeviceBrand) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *EndDeviceBrand) GetPrivateEnterpriseNumber() uint32 { - if m != nil { - return m.PrivateEnterpriseNumber +func (x *EndDeviceBrand) GetPrivateEnterpriseNumber() uint32 { + if x != nil { + return x.PrivateEnterpriseNumber } return 0 } -func (m *EndDeviceBrand) GetOrganizationUniqueIdentifiers() []string { - if m != nil { - return m.OrganizationUniqueIdentifiers +func (x *EndDeviceBrand) GetOrganizationUniqueIdentifiers() []string { + if x != nil { + return x.OrganizationUniqueIdentifiers } return nil } -func (m *EndDeviceBrand) GetLoraAllianceVendorId() uint32 { - if m != nil { - return m.LoraAllianceVendorId +func (x *EndDeviceBrand) GetLoraAllianceVendorId() uint32 { + if x != nil { + return x.LoraAllianceVendorId } return 0 } -func (m *EndDeviceBrand) GetWebsite() string { - if m != nil { - return m.Website +func (x *EndDeviceBrand) GetWebsite() string { + if x != nil { + return x.Website } return "" } -func (m *EndDeviceBrand) GetEmail() string { - if m != nil { - return m.Email +func (x *EndDeviceBrand) GetEmail() string { + if x != nil { + return x.Email } return "" } -func (m *EndDeviceBrand) GetLogo() string { - if m != nil { - return m.Logo +func (x *EndDeviceBrand) GetLogo() string { + if x != nil { + return x.Logo } return "" } type EndDeviceModel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Brand identifier, as defined in the Device Repository. BrandId string `protobuf:"bytes,1,opt,name=brand_id,json=brandId,proto3" json:"brand_id,omitempty"` // Model identifier, as defined in the Device Repository. @@ -221,7 +286,7 @@ type EndDeviceModel struct { // Device dimensions. Dimensions *EndDeviceModel_Dimensions `protobuf:"bytes,8,opt,name=dimensions,proto3" json:"dimensions,omitempty"` // Device weight (gram). - Weight *types.FloatValue `protobuf:"bytes,9,opt,name=weight,proto3" json:"weight,omitempty"` + Weight *wrapperspb.FloatValue `protobuf:"bytes,9,opt,name=weight,proto3" json:"weight,omitempty"` // Device battery information. Battery *EndDeviceModel_Battery `protobuf:"bytes,10,opt,name=battery,proto3" json:"battery,omitempty"` // Device operating conditions. @@ -245,2370 +310,3244 @@ type EndDeviceModel struct { // List of standards the device is compliant with. Compliances *EndDeviceModel_Compliances `protobuf:"bytes,20,opt,name=compliances,proto3" json:"compliances,omitempty"` // List of any additional radios included in the device. - AdditionalRadios []string `protobuf:"bytes,21,rep,name=additional_radios,json=additionalRadios,proto3" json:"additional_radios,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + AdditionalRadios []string `protobuf:"bytes,21,rep,name=additional_radios,json=additionalRadios,proto3" json:"additional_radios,omitempty"` } -func (m *EndDeviceModel) Reset() { *m = EndDeviceModel{} } -func (m *EndDeviceModel) String() string { return proto.CompactTextString(m) } -func (*EndDeviceModel) ProtoMessage() {} -func (*EndDeviceModel) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{1} -} -func (m *EndDeviceModel) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceModel.Unmarshal(m, b) -} -func (m *EndDeviceModel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceModel.Marshal(b, m, deterministic) -} -func (m *EndDeviceModel) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceModel.Merge(m, src) +func (x *EndDeviceModel) Reset() { + *x = EndDeviceModel{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDeviceModel) XXX_Size() int { - return xxx_messageInfo_EndDeviceModel.Size(m) + +func (x *EndDeviceModel) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *EndDeviceModel) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceModel.DiscardUnknown(m) + +func (*EndDeviceModel) ProtoMessage() {} + +func (x *EndDeviceModel) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_EndDeviceModel proto.InternalMessageInfo +// Deprecated: Use EndDeviceModel.ProtoReflect.Descriptor instead. +func (*EndDeviceModel) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{1} +} -func (m *EndDeviceModel) GetBrandId() string { - if m != nil { - return m.BrandId +func (x *EndDeviceModel) GetBrandId() string { + if x != nil { + return x.BrandId } return "" } -func (m *EndDeviceModel) GetModelId() string { - if m != nil { - return m.ModelId +func (x *EndDeviceModel) GetModelId() string { + if x != nil { + return x.ModelId } return "" } -func (m *EndDeviceModel) GetName() string { - if m != nil { - return m.Name +func (x *EndDeviceModel) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *EndDeviceModel) GetDescription() string { - if m != nil { - return m.Description +func (x *EndDeviceModel) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *EndDeviceModel) GetHardwareVersions() []*EndDeviceModel_HardwareVersion { - if m != nil { - return m.HardwareVersions +func (x *EndDeviceModel) GetHardwareVersions() []*EndDeviceModel_HardwareVersion { + if x != nil { + return x.HardwareVersions } return nil } -func (m *EndDeviceModel) GetFirmwareVersions() []*EndDeviceModel_FirmwareVersion { - if m != nil { - return m.FirmwareVersions +func (x *EndDeviceModel) GetFirmwareVersions() []*EndDeviceModel_FirmwareVersion { + if x != nil { + return x.FirmwareVersions } return nil } -func (m *EndDeviceModel) GetSensors() []string { - if m != nil { - return m.Sensors +func (x *EndDeviceModel) GetSensors() []string { + if x != nil { + return x.Sensors } return nil } -func (m *EndDeviceModel) GetDimensions() *EndDeviceModel_Dimensions { - if m != nil { - return m.Dimensions +func (x *EndDeviceModel) GetDimensions() *EndDeviceModel_Dimensions { + if x != nil { + return x.Dimensions } return nil } -func (m *EndDeviceModel) GetWeight() *types.FloatValue { - if m != nil { - return m.Weight +func (x *EndDeviceModel) GetWeight() *wrapperspb.FloatValue { + if x != nil { + return x.Weight } return nil } -func (m *EndDeviceModel) GetBattery() *EndDeviceModel_Battery { - if m != nil { - return m.Battery +func (x *EndDeviceModel) GetBattery() *EndDeviceModel_Battery { + if x != nil { + return x.Battery } return nil } -func (m *EndDeviceModel) GetOperatingConditions() *EndDeviceModel_OperatingConditions { - if m != nil { - return m.OperatingConditions +func (x *EndDeviceModel) GetOperatingConditions() *EndDeviceModel_OperatingConditions { + if x != nil { + return x.OperatingConditions } return nil } -func (m *EndDeviceModel) GetIpCode() string { - if m != nil { - return m.IpCode +func (x *EndDeviceModel) GetIpCode() string { + if x != nil { + return x.IpCode } return "" } -func (m *EndDeviceModel) GetKeyProvisioning() []KeyProvisioning { - if m != nil { - return m.KeyProvisioning +func (x *EndDeviceModel) GetKeyProvisioning() []KeyProvisioning { + if x != nil { + return x.KeyProvisioning } return nil } -func (m *EndDeviceModel) GetKeySecurity() KeySecurity { - if m != nil { - return m.KeySecurity +func (x *EndDeviceModel) GetKeySecurity() KeySecurity { + if x != nil { + return x.KeySecurity } return KeySecurity_KEY_SECURITY_UNKNOWN } -func (m *EndDeviceModel) GetPhotos() *EndDeviceModel_Photos { - if m != nil { - return m.Photos +func (x *EndDeviceModel) GetPhotos() *EndDeviceModel_Photos { + if x != nil { + return x.Photos } return nil } -func (m *EndDeviceModel) GetVideos() *EndDeviceModel_Videos { - if m != nil { - return m.Videos +func (x *EndDeviceModel) GetVideos() *EndDeviceModel_Videos { + if x != nil { + return x.Videos } return nil } -func (m *EndDeviceModel) GetProductUrl() string { - if m != nil { - return m.ProductUrl +func (x *EndDeviceModel) GetProductUrl() string { + if x != nil { + return x.ProductUrl } return "" } -func (m *EndDeviceModel) GetDatasheetUrl() string { - if m != nil { - return m.DatasheetUrl +func (x *EndDeviceModel) GetDatasheetUrl() string { + if x != nil { + return x.DatasheetUrl } return "" } -func (m *EndDeviceModel) GetResellers() []*EndDeviceModel_Reseller { - if m != nil { - return m.Resellers +func (x *EndDeviceModel) GetResellers() []*EndDeviceModel_Reseller { + if x != nil { + return x.Resellers } return nil } -func (m *EndDeviceModel) GetCompliances() *EndDeviceModel_Compliances { - if m != nil { - return m.Compliances +func (x *EndDeviceModel) GetCompliances() *EndDeviceModel_Compliances { + if x != nil { + return x.Compliances } return nil } -func (m *EndDeviceModel) GetAdditionalRadios() []string { - if m != nil { - return m.AdditionalRadios +func (x *EndDeviceModel) GetAdditionalRadios() []string { + if x != nil { + return x.AdditionalRadios } return nil } -type EndDeviceModel_HardwareVersion struct { - // Hardware version string. - Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` - // Numberic hardware revision number. - Numeric uint32 `protobuf:"varint,2,opt,name=numeric,proto3" json:"numeric,omitempty"` - // Hardware part number. - PartNumber string `protobuf:"bytes,3,opt,name=part_number,json=partNumber,proto3" json:"part_number,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type GetEndDeviceBrandRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *EndDeviceModel_HardwareVersion) Reset() { *m = EndDeviceModel_HardwareVersion{} } -func (m *EndDeviceModel_HardwareVersion) String() string { return proto.CompactTextString(m) } -func (*EndDeviceModel_HardwareVersion) ProtoMessage() {} -func (*EndDeviceModel_HardwareVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{1, 0} -} -func (m *EndDeviceModel_HardwareVersion) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceModel_HardwareVersion.Unmarshal(m, b) -} -func (m *EndDeviceModel_HardwareVersion) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceModel_HardwareVersion.Marshal(b, m, deterministic) -} -func (m *EndDeviceModel_HardwareVersion) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceModel_HardwareVersion.Merge(m, src) + // Application identifiers. + // + // Deprecated: Do not use. + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + // Brand identifier, as defined in the Device Repository. + BrandId string `protobuf:"bytes,2,opt,name=brand_id,json=brandId,proto3" json:"brand_id,omitempty"` + // Field mask paths. + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *EndDeviceModel_HardwareVersion) XXX_Size() int { - return xxx_messageInfo_EndDeviceModel_HardwareVersion.Size(m) + +func (x *GetEndDeviceBrandRequest) Reset() { + *x = GetEndDeviceBrandRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDeviceModel_HardwareVersion) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceModel_HardwareVersion.DiscardUnknown(m) + +func (x *GetEndDeviceBrandRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_EndDeviceModel_HardwareVersion proto.InternalMessageInfo +func (*GetEndDeviceBrandRequest) ProtoMessage() {} -func (m *EndDeviceModel_HardwareVersion) GetVersion() string { - if m != nil { - return m.Version +func (x *GetEndDeviceBrandRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) +} + +// Deprecated: Use GetEndDeviceBrandRequest.ProtoReflect.Descriptor instead. +func (*GetEndDeviceBrandRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{2} } -func (m *EndDeviceModel_HardwareVersion) GetNumeric() uint32 { - if m != nil { - return m.Numeric +// Deprecated: Do not use. +func (x *GetEndDeviceBrandRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } - return 0 + return nil } -func (m *EndDeviceModel_HardwareVersion) GetPartNumber() string { - if m != nil { - return m.PartNumber +func (x *GetEndDeviceBrandRequest) GetBrandId() string { + if x != nil { + return x.BrandId } return "" } -type EndDeviceModel_FirmwareVersion struct { - // Firmware version string. - Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` - // Numeric firmware revision number. - Numeric uint32 `protobuf:"varint,2,opt,name=numeric,proto3" json:"numeric,omitempty"` - // Hardware versions supported by this firmware version. - SupportedHardwareVersions []string `protobuf:"bytes,3,rep,name=supported_hardware_versions,json=supportedHardwareVersions,proto3" json:"supported_hardware_versions,omitempty"` - // Device profiles for each supported region (band). - Profiles map[string]*EndDeviceModel_FirmwareVersion_Profile `protobuf:"bytes,4,rep,name=profiles,proto3" json:"profiles,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *GetEndDeviceBrandRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask + } + return nil } -func (m *EndDeviceModel_FirmwareVersion) Reset() { *m = EndDeviceModel_FirmwareVersion{} } -func (m *EndDeviceModel_FirmwareVersion) String() string { return proto.CompactTextString(m) } -func (*EndDeviceModel_FirmwareVersion) ProtoMessage() {} -func (*EndDeviceModel_FirmwareVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{1, 1} -} -func (m *EndDeviceModel_FirmwareVersion) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceModel_FirmwareVersion.Unmarshal(m, b) -} -func (m *EndDeviceModel_FirmwareVersion) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceModel_FirmwareVersion.Marshal(b, m, deterministic) -} -func (m *EndDeviceModel_FirmwareVersion) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceModel_FirmwareVersion.Merge(m, src) +type ListEndDeviceBrandsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Application identifiers. + // + // Deprecated: Do not use. + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + // Limit the number of results per page. + Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + // Page number for pagination. 0 is interpreted as 1. + Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` + // Order (for pagination) + OrderBy string `protobuf:"bytes,4,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` + // Search for brands matching a query string. + Search string `protobuf:"bytes,5,opt,name=search,proto3" json:"search,omitempty"` + // Field mask paths. + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,6,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *EndDeviceModel_FirmwareVersion) XXX_Size() int { - return xxx_messageInfo_EndDeviceModel_FirmwareVersion.Size(m) + +func (x *ListEndDeviceBrandsRequest) Reset() { + *x = ListEndDeviceBrandsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDeviceModel_FirmwareVersion) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceModel_FirmwareVersion.DiscardUnknown(m) + +func (x *ListEndDeviceBrandsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_EndDeviceModel_FirmwareVersion proto.InternalMessageInfo +func (*ListEndDeviceBrandsRequest) ProtoMessage() {} -func (m *EndDeviceModel_FirmwareVersion) GetVersion() string { - if m != nil { - return m.Version +func (x *ListEndDeviceBrandsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (m *EndDeviceModel_FirmwareVersion) GetNumeric() uint32 { - if m != nil { - return m.Numeric - } - return 0 +// Deprecated: Use ListEndDeviceBrandsRequest.ProtoReflect.Descriptor instead. +func (*ListEndDeviceBrandsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{3} } -func (m *EndDeviceModel_FirmwareVersion) GetSupportedHardwareVersions() []string { - if m != nil { - return m.SupportedHardwareVersions +// Deprecated: Do not use. +func (x *ListEndDeviceBrandsRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *EndDeviceModel_FirmwareVersion) GetProfiles() map[string]*EndDeviceModel_FirmwareVersion_Profile { - if m != nil { - return m.Profiles +func (x *ListEndDeviceBrandsRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } - return nil -} - -type EndDeviceModel_FirmwareVersion_Profile struct { - // Vendor ID of the profile, as defined in the Device Repository. - // If this value is set, the profile is loaded from this vendor's folder. - // If this value is not set, the profile is loaded from the current (end device's) vendor. - VendorId string `protobuf:"bytes,4,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"` - // Profile identifier, as defined in the Device Repository. - ProfileId string `protobuf:"bytes,1,opt,name=profile_id,json=profileId,proto3" json:"profile_id,omitempty"` - // Whether the device is LoRaWAN certified. - LorawanCertified bool `protobuf:"varint,2,opt,name=lorawan_certified,json=lorawanCertified,proto3" json:"lorawan_certified,omitempty"` - // Payload formatter codec identifier, as defined in the Device Repository. - CodecId string `protobuf:"bytes,3,opt,name=codec_id,json=codecId,proto3" json:"codec_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + return 0 } -func (m *EndDeviceModel_FirmwareVersion_Profile) Reset() { - *m = EndDeviceModel_FirmwareVersion_Profile{} -} -func (m *EndDeviceModel_FirmwareVersion_Profile) String() string { return proto.CompactTextString(m) } -func (*EndDeviceModel_FirmwareVersion_Profile) ProtoMessage() {} -func (*EndDeviceModel_FirmwareVersion_Profile) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{1, 1, 0} -} -func (m *EndDeviceModel_FirmwareVersion_Profile) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceModel_FirmwareVersion_Profile.Unmarshal(m, b) -} -func (m *EndDeviceModel_FirmwareVersion_Profile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceModel_FirmwareVersion_Profile.Marshal(b, m, deterministic) -} -func (m *EndDeviceModel_FirmwareVersion_Profile) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceModel_FirmwareVersion_Profile.Merge(m, src) -} -func (m *EndDeviceModel_FirmwareVersion_Profile) XXX_Size() int { - return xxx_messageInfo_EndDeviceModel_FirmwareVersion_Profile.Size(m) -} -func (m *EndDeviceModel_FirmwareVersion_Profile) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceModel_FirmwareVersion_Profile.DiscardUnknown(m) +func (x *ListEndDeviceBrandsRequest) GetPage() uint32 { + if x != nil { + return x.Page + } + return 0 } -var xxx_messageInfo_EndDeviceModel_FirmwareVersion_Profile proto.InternalMessageInfo - -func (m *EndDeviceModel_FirmwareVersion_Profile) GetVendorId() string { - if m != nil { - return m.VendorId +func (x *ListEndDeviceBrandsRequest) GetOrderBy() string { + if x != nil { + return x.OrderBy } return "" } -func (m *EndDeviceModel_FirmwareVersion_Profile) GetProfileId() string { - if m != nil { - return m.ProfileId +func (x *ListEndDeviceBrandsRequest) GetSearch() string { + if x != nil { + return x.Search } return "" } -func (m *EndDeviceModel_FirmwareVersion_Profile) GetLorawanCertified() bool { - if m != nil { - return m.LorawanCertified +func (x *ListEndDeviceBrandsRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } - return false + return nil } -func (m *EndDeviceModel_FirmwareVersion_Profile) GetCodecId() string { - if m != nil { - return m.CodecId - } - return "" -} +type GetEndDeviceModelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -type EndDeviceModel_Dimensions struct { - // Device width (mm). - Width *types.FloatValue `protobuf:"bytes,1,opt,name=width,proto3" json:"width,omitempty"` - // Device height (mm). - Height *types.FloatValue `protobuf:"bytes,2,opt,name=height,proto3" json:"height,omitempty"` - // Device diameter (mm). - Diameter *types.FloatValue `protobuf:"bytes,3,opt,name=diameter,proto3" json:"diameter,omitempty"` - // Device length (mm). - Length *types.FloatValue `protobuf:"bytes,4,opt,name=length,proto3" json:"length,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // Application identifiers. + // + // Deprecated: Do not use. + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + // Brand identifier, as defined in the Device Repository. + BrandId string `protobuf:"bytes,2,opt,name=brand_id,json=brandId,proto3" json:"brand_id,omitempty"` + // Model identifier, as defined in the Device Repository. + ModelId string `protobuf:"bytes,3,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"` + // Field mask paths. + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,4,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *EndDeviceModel_Dimensions) Reset() { *m = EndDeviceModel_Dimensions{} } -func (m *EndDeviceModel_Dimensions) String() string { return proto.CompactTextString(m) } -func (*EndDeviceModel_Dimensions) ProtoMessage() {} -func (*EndDeviceModel_Dimensions) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{1, 2} -} -func (m *EndDeviceModel_Dimensions) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceModel_Dimensions.Unmarshal(m, b) -} -func (m *EndDeviceModel_Dimensions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceModel_Dimensions.Marshal(b, m, deterministic) -} -func (m *EndDeviceModel_Dimensions) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceModel_Dimensions.Merge(m, src) +func (x *GetEndDeviceModelRequest) Reset() { + *x = GetEndDeviceModelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDeviceModel_Dimensions) XXX_Size() int { - return xxx_messageInfo_EndDeviceModel_Dimensions.Size(m) + +func (x *GetEndDeviceModelRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *EndDeviceModel_Dimensions) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceModel_Dimensions.DiscardUnknown(m) + +func (*GetEndDeviceModelRequest) ProtoMessage() {} + +func (x *GetEndDeviceModelRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_EndDeviceModel_Dimensions proto.InternalMessageInfo +// Deprecated: Use GetEndDeviceModelRequest.ProtoReflect.Descriptor instead. +func (*GetEndDeviceModelRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{4} +} -func (m *EndDeviceModel_Dimensions) GetWidth() *types.FloatValue { - if m != nil { - return m.Width +// Deprecated: Do not use. +func (x *GetEndDeviceModelRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *EndDeviceModel_Dimensions) GetHeight() *types.FloatValue { - if m != nil { - return m.Height +func (x *GetEndDeviceModelRequest) GetBrandId() string { + if x != nil { + return x.BrandId } - return nil + return "" } -func (m *EndDeviceModel_Dimensions) GetDiameter() *types.FloatValue { - if m != nil { - return m.Diameter +func (x *GetEndDeviceModelRequest) GetModelId() string { + if x != nil { + return x.ModelId } - return nil + return "" } -func (m *EndDeviceModel_Dimensions) GetLength() *types.FloatValue { - if m != nil { - return m.Length +func (x *GetEndDeviceModelRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -type EndDeviceModel_Battery struct { - // Whether the device battery can be replaced. - Replaceable *types.BoolValue `protobuf:"bytes,1,opt,name=replaceable,proto3" json:"replaceable,omitempty"` - // Battery type. - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type ListEndDeviceModelsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *EndDeviceModel_Battery) Reset() { *m = EndDeviceModel_Battery{} } -func (m *EndDeviceModel_Battery) String() string { return proto.CompactTextString(m) } -func (*EndDeviceModel_Battery) ProtoMessage() {} -func (*EndDeviceModel_Battery) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{1, 3} -} -func (m *EndDeviceModel_Battery) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceModel_Battery.Unmarshal(m, b) -} -func (m *EndDeviceModel_Battery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceModel_Battery.Marshal(b, m, deterministic) + // Application identifiers. + // + // Deprecated: Do not use. + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + // List end devices from a specific brand. + BrandId string `protobuf:"bytes,2,opt,name=brand_id,json=brandId,proto3" json:"brand_id,omitempty"` + // Limit the number of results per page. + Limit uint32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` + // Page number for pagination. 0 is interpreted as 1. + Page uint32 `protobuf:"varint,4,opt,name=page,proto3" json:"page,omitempty"` + // Order end devices + OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` + // List end devices matching a query string. + Search string `protobuf:"bytes,6,opt,name=search,proto3" json:"search,omitempty"` + // Field mask paths. + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,7,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *EndDeviceModel_Battery) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceModel_Battery.Merge(m, src) + +func (x *ListEndDeviceModelsRequest) Reset() { + *x = ListEndDeviceModelsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDeviceModel_Battery) XXX_Size() int { - return xxx_messageInfo_EndDeviceModel_Battery.Size(m) + +func (x *ListEndDeviceModelsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *EndDeviceModel_Battery) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceModel_Battery.DiscardUnknown(m) + +func (*ListEndDeviceModelsRequest) ProtoMessage() {} + +func (x *ListEndDeviceModelsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_EndDeviceModel_Battery proto.InternalMessageInfo +// Deprecated: Use ListEndDeviceModelsRequest.ProtoReflect.Descriptor instead. +func (*ListEndDeviceModelsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{5} +} -func (m *EndDeviceModel_Battery) GetReplaceable() *types.BoolValue { - if m != nil { - return m.Replaceable +// Deprecated: Do not use. +func (x *ListEndDeviceModelsRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *EndDeviceModel_Battery) GetType() string { - if m != nil { - return m.Type +func (x *ListEndDeviceModelsRequest) GetBrandId() string { + if x != nil { + return x.BrandId } return "" } -type EndDeviceModel_OperatingConditions struct { - // Temperature operating conditions (Celsius). - Temperature *EndDeviceModel_OperatingConditions_Limits `protobuf:"bytes,1,opt,name=temperature,proto3" json:"temperature,omitempty"` - // Relative humidity operating conditions (Fraction, in range [0, 1]). - RelativeHumidity *EndDeviceModel_OperatingConditions_Limits `protobuf:"bytes,2,opt,name=relative_humidity,json=relativeHumidity,proto3" json:"relative_humidity,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *ListEndDeviceModelsRequest) GetLimit() uint32 { + if x != nil { + return x.Limit + } + return 0 } -func (m *EndDeviceModel_OperatingConditions) Reset() { *m = EndDeviceModel_OperatingConditions{} } -func (m *EndDeviceModel_OperatingConditions) String() string { return proto.CompactTextString(m) } -func (*EndDeviceModel_OperatingConditions) ProtoMessage() {} -func (*EndDeviceModel_OperatingConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{1, 4} -} -func (m *EndDeviceModel_OperatingConditions) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceModel_OperatingConditions.Unmarshal(m, b) -} -func (m *EndDeviceModel_OperatingConditions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceModel_OperatingConditions.Marshal(b, m, deterministic) -} -func (m *EndDeviceModel_OperatingConditions) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceModel_OperatingConditions.Merge(m, src) -} -func (m *EndDeviceModel_OperatingConditions) XXX_Size() int { - return xxx_messageInfo_EndDeviceModel_OperatingConditions.Size(m) -} -func (m *EndDeviceModel_OperatingConditions) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceModel_OperatingConditions.DiscardUnknown(m) +func (x *ListEndDeviceModelsRequest) GetPage() uint32 { + if x != nil { + return x.Page + } + return 0 } -var xxx_messageInfo_EndDeviceModel_OperatingConditions proto.InternalMessageInfo +func (x *ListEndDeviceModelsRequest) GetOrderBy() string { + if x != nil { + return x.OrderBy + } + return "" +} -func (m *EndDeviceModel_OperatingConditions) GetTemperature() *EndDeviceModel_OperatingConditions_Limits { - if m != nil { - return m.Temperature +func (x *ListEndDeviceModelsRequest) GetSearch() string { + if x != nil { + return x.Search } - return nil + return "" } -func (m *EndDeviceModel_OperatingConditions) GetRelativeHumidity() *EndDeviceModel_OperatingConditions_Limits { - if m != nil { - return m.RelativeHumidity +func (x *ListEndDeviceModelsRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -type EndDeviceModel_OperatingConditions_Limits struct { - // Min value of operating conditions range. - Min *types.FloatValue `protobuf:"bytes,1,opt,name=min,proto3" json:"min,omitempty"` - // Max value of operating conditions range. - Max *types.FloatValue `protobuf:"bytes,2,opt,name=max,proto3" json:"max,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type GetTemplateRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *EndDeviceModel_OperatingConditions_Limits) Reset() { - *m = EndDeviceModel_OperatingConditions_Limits{} -} -func (m *EndDeviceModel_OperatingConditions_Limits) String() string { - return proto.CompactTextString(m) -} -func (*EndDeviceModel_OperatingConditions_Limits) ProtoMessage() {} -func (*EndDeviceModel_OperatingConditions_Limits) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{1, 4, 0} -} -func (m *EndDeviceModel_OperatingConditions_Limits) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceModel_OperatingConditions_Limits.Unmarshal(m, b) -} -func (m *EndDeviceModel_OperatingConditions_Limits) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceModel_OperatingConditions_Limits.Marshal(b, m, deterministic) + // Application identifiers. + // + // Deprecated: Do not use. + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + // End device version information. + // Use either EndDeviceVersionIdentifiers or EndDeviceProfileIdentifiers. + VersionIds *EndDeviceVersionIdentifiers `protobuf:"bytes,2,opt,name=version_ids,json=versionIds,proto3" json:"version_ids,omitempty"` + // End device profile identifiers. + EndDeviceProfileIds *GetTemplateRequest_EndDeviceProfileIdentifiers `protobuf:"bytes,3,opt,name=end_device_profile_ids,json=endDeviceProfileIds,proto3" json:"end_device_profile_ids,omitempty"` } -func (m *EndDeviceModel_OperatingConditions_Limits) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceModel_OperatingConditions_Limits.Merge(m, src) + +func (x *GetTemplateRequest) Reset() { + *x = GetTemplateRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDeviceModel_OperatingConditions_Limits) XXX_Size() int { - return xxx_messageInfo_EndDeviceModel_OperatingConditions_Limits.Size(m) + +func (x *GetTemplateRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *EndDeviceModel_OperatingConditions_Limits) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceModel_OperatingConditions_Limits.DiscardUnknown(m) + +func (*GetTemplateRequest) ProtoMessage() {} + +func (x *GetTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_EndDeviceModel_OperatingConditions_Limits proto.InternalMessageInfo +// Deprecated: Use GetTemplateRequest.ProtoReflect.Descriptor instead. +func (*GetTemplateRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{6} +} -func (m *EndDeviceModel_OperatingConditions_Limits) GetMin() *types.FloatValue { - if m != nil { - return m.Min +// Deprecated: Do not use. +func (x *GetTemplateRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *EndDeviceModel_OperatingConditions_Limits) GetMax() *types.FloatValue { - if m != nil { - return m.Max +func (x *GetTemplateRequest) GetVersionIds() *EndDeviceVersionIdentifiers { + if x != nil { + return x.VersionIds } return nil } -type EndDeviceModel_Photos struct { - // Main device photo. - Main string `protobuf:"bytes,1,opt,name=main,proto3" json:"main,omitempty"` - // List of other device photos. - Other []string `protobuf:"bytes,2,rep,name=other,proto3" json:"other,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *GetTemplateRequest) GetEndDeviceProfileIds() *GetTemplateRequest_EndDeviceProfileIdentifiers { + if x != nil { + return x.EndDeviceProfileIds + } + return nil } -func (m *EndDeviceModel_Photos) Reset() { *m = EndDeviceModel_Photos{} } -func (m *EndDeviceModel_Photos) String() string { return proto.CompactTextString(m) } -func (*EndDeviceModel_Photos) ProtoMessage() {} -func (*EndDeviceModel_Photos) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{1, 5} +type GetPayloadFormatterRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Application identifiers. + // + // Deprecated: Do not use. + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + // End device version information. + VersionIds *EndDeviceVersionIdentifiers `protobuf:"bytes,2,opt,name=version_ids,json=versionIds,proto3" json:"version_ids,omitempty"` + // Field mask paths. + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *EndDeviceModel_Photos) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceModel_Photos.Unmarshal(m, b) + +func (x *GetPayloadFormatterRequest) Reset() { + *x = GetPayloadFormatterRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDeviceModel_Photos) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceModel_Photos.Marshal(b, m, deterministic) -} -func (m *EndDeviceModel_Photos) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceModel_Photos.Merge(m, src) -} -func (m *EndDeviceModel_Photos) XXX_Size() int { - return xxx_messageInfo_EndDeviceModel_Photos.Size(m) -} -func (m *EndDeviceModel_Photos) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceModel_Photos.DiscardUnknown(m) + +func (x *GetPayloadFormatterRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_EndDeviceModel_Photos proto.InternalMessageInfo +func (*GetPayloadFormatterRequest) ProtoMessage() {} -func (m *EndDeviceModel_Photos) GetMain() string { - if m != nil { - return m.Main +func (x *GetPayloadFormatterRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (m *EndDeviceModel_Photos) GetOther() []string { - if m != nil { - return m.Other +// Deprecated: Use GetPayloadFormatterRequest.ProtoReflect.Descriptor instead. +func (*GetPayloadFormatterRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{7} +} + +// Deprecated: Do not use. +func (x *GetPayloadFormatterRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -type EndDeviceModel_Videos struct { - // Link to main device video. - Main string `protobuf:"bytes,1,opt,name=main,proto3" json:"main,omitempty"` - // Links to other device videos. - Other []string `protobuf:"bytes,2,rep,name=other,proto3" json:"other,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *GetPayloadFormatterRequest) GetVersionIds() *EndDeviceVersionIdentifiers { + if x != nil { + return x.VersionIds + } + return nil } -func (m *EndDeviceModel_Videos) Reset() { *m = EndDeviceModel_Videos{} } -func (m *EndDeviceModel_Videos) String() string { return proto.CompactTextString(m) } -func (*EndDeviceModel_Videos) ProtoMessage() {} -func (*EndDeviceModel_Videos) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{1, 6} -} -func (m *EndDeviceModel_Videos) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceModel_Videos.Unmarshal(m, b) -} -func (m *EndDeviceModel_Videos) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceModel_Videos.Marshal(b, m, deterministic) +func (x *GetPayloadFormatterRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask + } + return nil } -func (m *EndDeviceModel_Videos) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceModel_Videos.Merge(m, src) + +type ListEndDeviceBrandsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Brands []*EndDeviceBrand `protobuf:"bytes,1,rep,name=brands,proto3" json:"brands,omitempty"` } -func (m *EndDeviceModel_Videos) XXX_Size() int { - return xxx_messageInfo_EndDeviceModel_Videos.Size(m) + +func (x *ListEndDeviceBrandsResponse) Reset() { + *x = ListEndDeviceBrandsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDeviceModel_Videos) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceModel_Videos.DiscardUnknown(m) + +func (x *ListEndDeviceBrandsResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_EndDeviceModel_Videos proto.InternalMessageInfo +func (*ListEndDeviceBrandsResponse) ProtoMessage() {} -func (m *EndDeviceModel_Videos) GetMain() string { - if m != nil { - return m.Main +func (x *ListEndDeviceBrandsResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) +} + +// Deprecated: Use ListEndDeviceBrandsResponse.ProtoReflect.Descriptor instead. +func (*ListEndDeviceBrandsResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{8} } -func (m *EndDeviceModel_Videos) GetOther() []string { - if m != nil { - return m.Other +func (x *ListEndDeviceBrandsResponse) GetBrands() []*EndDeviceBrand { + if x != nil { + return x.Brands } return nil } -type EndDeviceModel_Reseller struct { - // Reseller name. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Reseller regions. - Region []string `protobuf:"bytes,2,rep,name=region,proto3" json:"region,omitempty"` - // Reseller URL. - Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type ListEndDeviceModelsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *EndDeviceModel_Reseller) Reset() { *m = EndDeviceModel_Reseller{} } -func (m *EndDeviceModel_Reseller) String() string { return proto.CompactTextString(m) } -func (*EndDeviceModel_Reseller) ProtoMessage() {} -func (*EndDeviceModel_Reseller) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{1, 7} + Models []*EndDeviceModel `protobuf:"bytes,1,rep,name=models,proto3" json:"models,omitempty"` } -func (m *EndDeviceModel_Reseller) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceModel_Reseller.Unmarshal(m, b) -} -func (m *EndDeviceModel_Reseller) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceModel_Reseller.Marshal(b, m, deterministic) -} -func (m *EndDeviceModel_Reseller) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceModel_Reseller.Merge(m, src) -} -func (m *EndDeviceModel_Reseller) XXX_Size() int { - return xxx_messageInfo_EndDeviceModel_Reseller.Size(m) + +func (x *ListEndDeviceModelsResponse) Reset() { + *x = ListEndDeviceModelsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDeviceModel_Reseller) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceModel_Reseller.DiscardUnknown(m) + +func (x *ListEndDeviceModelsResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_EndDeviceModel_Reseller proto.InternalMessageInfo +func (*ListEndDeviceModelsResponse) ProtoMessage() {} -func (m *EndDeviceModel_Reseller) GetName() string { - if m != nil { - return m.Name +func (x *ListEndDeviceModelsResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (m *EndDeviceModel_Reseller) GetRegion() []string { - if m != nil { - return m.Region - } - return nil +// Deprecated: Use ListEndDeviceModelsResponse.ProtoReflect.Descriptor instead. +func (*ListEndDeviceModelsResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{9} } -func (m *EndDeviceModel_Reseller) GetUrl() string { - if m != nil { - return m.Url +func (x *ListEndDeviceModelsResponse) GetModels() []*EndDeviceModel { + if x != nil { + return x.Models } - return "" + return nil } -type EndDeviceModel_Compliances struct { - // List of safety standards the device is compliant with. - Safety []*EndDeviceModel_Compliances_Compliance `protobuf:"bytes,1,rep,name=safety,proto3" json:"safety,omitempty"` - // List of radio equipment standards the device is compliant with. - RadioEquipment []*EndDeviceModel_Compliances_Compliance `protobuf:"bytes,2,rep,name=radio_equipment,json=radioEquipment,proto3" json:"radio_equipment,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type EncodedMessagePayload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *EndDeviceModel_Compliances) Reset() { *m = EndDeviceModel_Compliances{} } -func (m *EndDeviceModel_Compliances) String() string { return proto.CompactTextString(m) } -func (*EndDeviceModel_Compliances) ProtoMessage() {} -func (*EndDeviceModel_Compliances) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{1, 8} -} -func (m *EndDeviceModel_Compliances) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceModel_Compliances.Unmarshal(m, b) + FPort uint32 `protobuf:"varint,1,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` + FrmPayload []byte `protobuf:"bytes,2,opt,name=frm_payload,json=frmPayload,proto3" json:"frm_payload,omitempty"` + Warnings []string `protobuf:"bytes,3,rep,name=warnings,proto3" json:"warnings,omitempty"` + Errors []string `protobuf:"bytes,4,rep,name=errors,proto3" json:"errors,omitempty"` } -func (m *EndDeviceModel_Compliances) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceModel_Compliances.Marshal(b, m, deterministic) + +func (x *EncodedMessagePayload) Reset() { + *x = EncodedMessagePayload{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDeviceModel_Compliances) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceModel_Compliances.Merge(m, src) + +func (x *EncodedMessagePayload) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *EndDeviceModel_Compliances) XXX_Size() int { - return xxx_messageInfo_EndDeviceModel_Compliances.Size(m) + +func (*EncodedMessagePayload) ProtoMessage() {} + +func (x *EncodedMessagePayload) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *EndDeviceModel_Compliances) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceModel_Compliances.DiscardUnknown(m) + +// Deprecated: Use EncodedMessagePayload.ProtoReflect.Descriptor instead. +func (*EncodedMessagePayload) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{10} } -var xxx_messageInfo_EndDeviceModel_Compliances proto.InternalMessageInfo +func (x *EncodedMessagePayload) GetFPort() uint32 { + if x != nil { + return x.FPort + } + return 0 +} -func (m *EndDeviceModel_Compliances) GetSafety() []*EndDeviceModel_Compliances_Compliance { - if m != nil { - return m.Safety +func (x *EncodedMessagePayload) GetFrmPayload() []byte { + if x != nil { + return x.FrmPayload } return nil } -func (m *EndDeviceModel_Compliances) GetRadioEquipment() []*EndDeviceModel_Compliances_Compliance { - if m != nil { - return m.RadioEquipment +func (x *EncodedMessagePayload) GetWarnings() []string { + if x != nil { + return x.Warnings } return nil } -type EndDeviceModel_Compliances_Compliance struct { - Body string `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"` - Norm string `protobuf:"bytes,2,opt,name=norm,proto3" json:"norm,omitempty"` - Standard string `protobuf:"bytes,3,opt,name=standard,proto3" json:"standard,omitempty"` - Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *EndDeviceModel_Compliances_Compliance) Reset() { *m = EndDeviceModel_Compliances_Compliance{} } -func (m *EndDeviceModel_Compliances_Compliance) String() string { return proto.CompactTextString(m) } -func (*EndDeviceModel_Compliances_Compliance) ProtoMessage() {} -func (*EndDeviceModel_Compliances_Compliance) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{1, 8, 0} -} -func (m *EndDeviceModel_Compliances_Compliance) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceModel_Compliances_Compliance.Unmarshal(m, b) -} -func (m *EndDeviceModel_Compliances_Compliance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceModel_Compliances_Compliance.Marshal(b, m, deterministic) -} -func (m *EndDeviceModel_Compliances_Compliance) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceModel_Compliances_Compliance.Merge(m, src) -} -func (m *EndDeviceModel_Compliances_Compliance) XXX_Size() int { - return xxx_messageInfo_EndDeviceModel_Compliances_Compliance.Size(m) -} -func (m *EndDeviceModel_Compliances_Compliance) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceModel_Compliances_Compliance.DiscardUnknown(m) +func (x *EncodedMessagePayload) GetErrors() []string { + if x != nil { + return x.Errors + } + return nil } -var xxx_messageInfo_EndDeviceModel_Compliances_Compliance proto.InternalMessageInfo +type DecodedMessagePayload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *EndDeviceModel_Compliances_Compliance) GetBody() string { - if m != nil { - return m.Body - } - return "" + Data *structpb.Struct `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + Warnings []string `protobuf:"bytes,2,rep,name=warnings,proto3" json:"warnings,omitempty"` + Errors []string `protobuf:"bytes,3,rep,name=errors,proto3" json:"errors,omitempty"` } -func (m *EndDeviceModel_Compliances_Compliance) GetNorm() string { - if m != nil { - return m.Norm +func (x *DecodedMessagePayload) Reset() { + *x = DecodedMessagePayload{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (m *EndDeviceModel_Compliances_Compliance) GetStandard() string { - if m != nil { - return m.Standard - } - return "" +func (x *DecodedMessagePayload) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *EndDeviceModel_Compliances_Compliance) GetVersion() string { - if m != nil { - return m.Version - } - return "" -} +func (*DecodedMessagePayload) ProtoMessage() {} -type GetEndDeviceBrandRequest struct { - // Application identifiers. - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` // Deprecated: Do not use. - // Brand identifier, as defined in the Device Repository. - BrandId string `protobuf:"bytes,2,opt,name=brand_id,json=brandId,proto3" json:"brand_id,omitempty"` - // Field mask paths. - FieldMask *types.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *DecodedMessagePayload) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *GetEndDeviceBrandRequest) Reset() { *m = GetEndDeviceBrandRequest{} } -func (m *GetEndDeviceBrandRequest) String() string { return proto.CompactTextString(m) } -func (*GetEndDeviceBrandRequest) ProtoMessage() {} -func (*GetEndDeviceBrandRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{2} -} -func (m *GetEndDeviceBrandRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetEndDeviceBrandRequest.Unmarshal(m, b) -} -func (m *GetEndDeviceBrandRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetEndDeviceBrandRequest.Marshal(b, m, deterministic) -} -func (m *GetEndDeviceBrandRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetEndDeviceBrandRequest.Merge(m, src) -} -func (m *GetEndDeviceBrandRequest) XXX_Size() int { - return xxx_messageInfo_GetEndDeviceBrandRequest.Size(m) -} -func (m *GetEndDeviceBrandRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetEndDeviceBrandRequest.DiscardUnknown(m) +// Deprecated: Use DecodedMessagePayload.ProtoReflect.Descriptor instead. +func (*DecodedMessagePayload) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{11} } -var xxx_messageInfo_GetEndDeviceBrandRequest proto.InternalMessageInfo - -// Deprecated: Do not use. -func (m *GetEndDeviceBrandRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *DecodedMessagePayload) GetData() *structpb.Struct { + if x != nil { + return x.Data } return nil } -func (m *GetEndDeviceBrandRequest) GetBrandId() string { - if m != nil { - return m.BrandId +func (x *DecodedMessagePayload) GetWarnings() []string { + if x != nil { + return x.Warnings } - return "" + return nil } -func (m *GetEndDeviceBrandRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *DecodedMessagePayload) GetErrors() []string { + if x != nil { + return x.Errors } return nil } -type ListEndDeviceBrandsRequest struct { - // Application identifiers. - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` // Deprecated: Do not use. - // Limit the number of results per page. - Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` - // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` - // Order (for pagination) - OrderBy string `protobuf:"bytes,4,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` - // Search for brands matching a query string. - Search string `protobuf:"bytes,5,opt,name=search,proto3" json:"search,omitempty"` - // Field mask paths. - FieldMask *types.FieldMask `protobuf:"bytes,6,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type MessagePayloadDecoder struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ListEndDeviceBrandsRequest) Reset() { *m = ListEndDeviceBrandsRequest{} } -func (m *ListEndDeviceBrandsRequest) String() string { return proto.CompactTextString(m) } -func (*ListEndDeviceBrandsRequest) ProtoMessage() {} -func (*ListEndDeviceBrandsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{3} -} -func (m *ListEndDeviceBrandsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListEndDeviceBrandsRequest.Unmarshal(m, b) -} -func (m *ListEndDeviceBrandsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListEndDeviceBrandsRequest.Marshal(b, m, deterministic) -} -func (m *ListEndDeviceBrandsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListEndDeviceBrandsRequest.Merge(m, src) + // Payload formatter type. + Formatter PayloadFormatter `protobuf:"varint,1,opt,name=formatter,proto3,enum=ttn.lorawan.v3.PayloadFormatter" json:"formatter,omitempty"` + // Parameter for the formatter, must be set together. + FormatterParameter string `protobuf:"bytes,2,opt,name=formatter_parameter,json=formatterParameter,proto3" json:"formatter_parameter,omitempty"` + CodecId string `protobuf:"bytes,3,opt,name=codec_id,json=codecId,proto3" json:"codec_id,omitempty"` + Examples []*MessagePayloadDecoder_Example `protobuf:"bytes,4,rep,name=examples,proto3" json:"examples,omitempty"` } -func (m *ListEndDeviceBrandsRequest) XXX_Size() int { - return xxx_messageInfo_ListEndDeviceBrandsRequest.Size(m) + +func (x *MessagePayloadDecoder) Reset() { + *x = MessagePayloadDecoder{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListEndDeviceBrandsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListEndDeviceBrandsRequest.DiscardUnknown(m) + +func (x *MessagePayloadDecoder) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ListEndDeviceBrandsRequest proto.InternalMessageInfo +func (*MessagePayloadDecoder) ProtoMessage() {} -// Deprecated: Do not use. -func (m *ListEndDeviceBrandsRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *MessagePayloadDecoder) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *ListEndDeviceBrandsRequest) GetLimit() uint32 { - if m != nil { - return m.Limit - } - return 0 +// Deprecated: Use MessagePayloadDecoder.ProtoReflect.Descriptor instead. +func (*MessagePayloadDecoder) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{12} } -func (m *ListEndDeviceBrandsRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *MessagePayloadDecoder) GetFormatter() PayloadFormatter { + if x != nil { + return x.Formatter } - return 0 + return PayloadFormatter_FORMATTER_NONE } -func (m *ListEndDeviceBrandsRequest) GetOrderBy() string { - if m != nil { - return m.OrderBy +func (x *MessagePayloadDecoder) GetFormatterParameter() string { + if x != nil { + return x.FormatterParameter } return "" } -func (m *ListEndDeviceBrandsRequest) GetSearch() string { - if m != nil { - return m.Search +func (x *MessagePayloadDecoder) GetCodecId() string { + if x != nil { + return x.CodecId } return "" } -func (m *ListEndDeviceBrandsRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *MessagePayloadDecoder) GetExamples() []*MessagePayloadDecoder_Example { + if x != nil { + return x.Examples } return nil } -type GetEndDeviceModelRequest struct { - // Application identifiers. - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` // Deprecated: Do not use. - // Brand identifier, as defined in the Device Repository. - BrandId string `protobuf:"bytes,2,opt,name=brand_id,json=brandId,proto3" json:"brand_id,omitempty"` - // Model identifier, as defined in the Device Repository. - ModelId string `protobuf:"bytes,3,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"` - // Field mask paths. - FieldMask *types.FieldMask `protobuf:"bytes,4,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type MessagePayloadEncoder struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GetEndDeviceModelRequest) Reset() { *m = GetEndDeviceModelRequest{} } -func (m *GetEndDeviceModelRequest) String() string { return proto.CompactTextString(m) } -func (*GetEndDeviceModelRequest) ProtoMessage() {} -func (*GetEndDeviceModelRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{4} -} -func (m *GetEndDeviceModelRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetEndDeviceModelRequest.Unmarshal(m, b) -} -func (m *GetEndDeviceModelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetEndDeviceModelRequest.Marshal(b, m, deterministic) + // Payload formatter type. + Formatter PayloadFormatter `protobuf:"varint,1,opt,name=formatter,proto3,enum=ttn.lorawan.v3.PayloadFormatter" json:"formatter,omitempty"` + // Parameter for the formatter, must be set together. + FormatterParameter string `protobuf:"bytes,2,opt,name=formatter_parameter,json=formatterParameter,proto3" json:"formatter_parameter,omitempty"` + CodecId string `protobuf:"bytes,3,opt,name=codec_id,json=codecId,proto3" json:"codec_id,omitempty"` + Examples []*MessagePayloadEncoder_Example `protobuf:"bytes,4,rep,name=examples,proto3" json:"examples,omitempty"` } -func (m *GetEndDeviceModelRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetEndDeviceModelRequest.Merge(m, src) + +func (x *MessagePayloadEncoder) Reset() { + *x = MessagePayloadEncoder{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetEndDeviceModelRequest) XXX_Size() int { - return xxx_messageInfo_GetEndDeviceModelRequest.Size(m) + +func (x *MessagePayloadEncoder) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetEndDeviceModelRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetEndDeviceModelRequest.DiscardUnknown(m) + +func (*MessagePayloadEncoder) ProtoMessage() {} + +func (x *MessagePayloadEncoder) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetEndDeviceModelRequest proto.InternalMessageInfo +// Deprecated: Use MessagePayloadEncoder.ProtoReflect.Descriptor instead. +func (*MessagePayloadEncoder) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{13} +} -// Deprecated: Do not use. -func (m *GetEndDeviceModelRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *MessagePayloadEncoder) GetFormatter() PayloadFormatter { + if x != nil { + return x.Formatter } - return nil + return PayloadFormatter_FORMATTER_NONE } -func (m *GetEndDeviceModelRequest) GetBrandId() string { - if m != nil { - return m.BrandId +func (x *MessagePayloadEncoder) GetFormatterParameter() string { + if x != nil { + return x.FormatterParameter } return "" } -func (m *GetEndDeviceModelRequest) GetModelId() string { - if m != nil { - return m.ModelId +func (x *MessagePayloadEncoder) GetCodecId() string { + if x != nil { + return x.CodecId } return "" } -func (m *GetEndDeviceModelRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *MessagePayloadEncoder) GetExamples() []*MessagePayloadEncoder_Example { + if x != nil { + return x.Examples } return nil } -type ListEndDeviceModelsRequest struct { - // Application identifiers. - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` // Deprecated: Do not use. - // List end devices from a specific brand. - BrandId string `protobuf:"bytes,2,opt,name=brand_id,json=brandId,proto3" json:"brand_id,omitempty"` - // Limit the number of results per page. - Limit uint32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` - // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,4,opt,name=page,proto3" json:"page,omitempty"` - // Order end devices - OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` - // List end devices matching a query string. - Search string `protobuf:"bytes,6,opt,name=search,proto3" json:"search,omitempty"` - // Field mask paths. - FieldMask *types.FieldMask `protobuf:"bytes,7,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type EndDeviceModel_HardwareVersion struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ListEndDeviceModelsRequest) Reset() { *m = ListEndDeviceModelsRequest{} } -func (m *ListEndDeviceModelsRequest) String() string { return proto.CompactTextString(m) } -func (*ListEndDeviceModelsRequest) ProtoMessage() {} -func (*ListEndDeviceModelsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{5} -} -func (m *ListEndDeviceModelsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListEndDeviceModelsRequest.Unmarshal(m, b) -} -func (m *ListEndDeviceModelsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListEndDeviceModelsRequest.Marshal(b, m, deterministic) -} -func (m *ListEndDeviceModelsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListEndDeviceModelsRequest.Merge(m, src) + // Hardware version string. + Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + // Numberic hardware revision number. + Numeric uint32 `protobuf:"varint,2,opt,name=numeric,proto3" json:"numeric,omitempty"` + // Hardware part number. + PartNumber string `protobuf:"bytes,3,opt,name=part_number,json=partNumber,proto3" json:"part_number,omitempty"` } -func (m *ListEndDeviceModelsRequest) XXX_Size() int { - return xxx_messageInfo_ListEndDeviceModelsRequest.Size(m) + +func (x *EndDeviceModel_HardwareVersion) Reset() { + *x = EndDeviceModel_HardwareVersion{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListEndDeviceModelsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListEndDeviceModelsRequest.DiscardUnknown(m) + +func (x *EndDeviceModel_HardwareVersion) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ListEndDeviceModelsRequest proto.InternalMessageInfo +func (*EndDeviceModel_HardwareVersion) ProtoMessage() {} -// Deprecated: Do not use. -func (m *ListEndDeviceModelsRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *EndDeviceModel_HardwareVersion) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *ListEndDeviceModelsRequest) GetBrandId() string { - if m != nil { - return m.BrandId - } - return "" +// Deprecated: Use EndDeviceModel_HardwareVersion.ProtoReflect.Descriptor instead. +func (*EndDeviceModel_HardwareVersion) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{1, 0} } -func (m *ListEndDeviceModelsRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *EndDeviceModel_HardwareVersion) GetVersion() string { + if x != nil { + return x.Version } - return 0 + return "" } -func (m *ListEndDeviceModelsRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *EndDeviceModel_HardwareVersion) GetNumeric() uint32 { + if x != nil { + return x.Numeric } return 0 } -func (m *ListEndDeviceModelsRequest) GetOrderBy() string { - if m != nil { - return m.OrderBy +func (x *EndDeviceModel_HardwareVersion) GetPartNumber() string { + if x != nil { + return x.PartNumber } return "" } -func (m *ListEndDeviceModelsRequest) GetSearch() string { - if m != nil { - return m.Search - } - return "" +type EndDeviceModel_FirmwareVersion struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Firmware version string. + Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + // Numeric firmware revision number. + Numeric uint32 `protobuf:"varint,2,opt,name=numeric,proto3" json:"numeric,omitempty"` + // Hardware versions supported by this firmware version. + SupportedHardwareVersions []string `protobuf:"bytes,3,rep,name=supported_hardware_versions,json=supportedHardwareVersions,proto3" json:"supported_hardware_versions,omitempty"` + // Device profiles for each supported region (band). + Profiles map[string]*EndDeviceModel_FirmwareVersion_Profile `protobuf:"bytes,4,rep,name=profiles,proto3" json:"profiles,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *ListEndDeviceModelsRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *EndDeviceModel_FirmwareVersion) Reset() { + *x = EndDeviceModel_FirmwareVersion{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -type GetTemplateRequest struct { - // Application identifiers. - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` // Deprecated: Do not use. - // End device version information. - // Use either EndDeviceVersionIdentifiers or EndDeviceProfileIdentifiers. - VersionIds *EndDeviceVersionIdentifiers `protobuf:"bytes,2,opt,name=version_ids,json=versionIds,proto3" json:"version_ids,omitempty"` - // End device profile identifiers. - EndDeviceProfileIds *GetTemplateRequest_EndDeviceProfileIdentifiers `protobuf:"bytes,3,opt,name=end_device_profile_ids,json=endDeviceProfileIds,proto3" json:"end_device_profile_ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *EndDeviceModel_FirmwareVersion) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetTemplateRequest) Reset() { *m = GetTemplateRequest{} } -func (m *GetTemplateRequest) String() string { return proto.CompactTextString(m) } -func (*GetTemplateRequest) ProtoMessage() {} -func (*GetTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{6} -} -func (m *GetTemplateRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetTemplateRequest.Unmarshal(m, b) -} -func (m *GetTemplateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetTemplateRequest.Marshal(b, m, deterministic) -} -func (m *GetTemplateRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetTemplateRequest.Merge(m, src) -} -func (m *GetTemplateRequest) XXX_Size() int { - return xxx_messageInfo_GetTemplateRequest.Size(m) +func (*EndDeviceModel_FirmwareVersion) ProtoMessage() {} + +func (x *EndDeviceModel_FirmwareVersion) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *GetTemplateRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetTemplateRequest.DiscardUnknown(m) + +// Deprecated: Use EndDeviceModel_FirmwareVersion.ProtoReflect.Descriptor instead. +func (*EndDeviceModel_FirmwareVersion) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{1, 1} } -var xxx_messageInfo_GetTemplateRequest proto.InternalMessageInfo +func (x *EndDeviceModel_FirmwareVersion) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} -// Deprecated: Do not use. -func (m *GetTemplateRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *EndDeviceModel_FirmwareVersion) GetNumeric() uint32 { + if x != nil { + return x.Numeric } - return nil + return 0 } -func (m *GetTemplateRequest) GetVersionIds() *EndDeviceVersionIdentifiers { - if m != nil { - return m.VersionIds +func (x *EndDeviceModel_FirmwareVersion) GetSupportedHardwareVersions() []string { + if x != nil { + return x.SupportedHardwareVersions } return nil } -func (m *GetTemplateRequest) GetEndDeviceProfileIds() *GetTemplateRequest_EndDeviceProfileIdentifiers { - if m != nil { - return m.EndDeviceProfileIds +func (x *EndDeviceModel_FirmwareVersion) GetProfiles() map[string]*EndDeviceModel_FirmwareVersion_Profile { + if x != nil { + return x.Profiles } return nil } -// Identifiers to uniquely identify a LoRaWAN end device profile. -type GetTemplateRequest_EndDeviceProfileIdentifiers struct { - // VendorID managed by the LoRa Alliance, as defined in TR005. - VendorId uint32 `protobuf:"varint,1,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"` - // ID of the LoRaWAN end device profile assigned by the vendor. - VendorProfileId uint32 `protobuf:"varint,2,opt,name=vendor_profile_id,json=vendorProfileId,proto3" json:"vendor_profile_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type EndDeviceModel_Dimensions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GetTemplateRequest_EndDeviceProfileIdentifiers) Reset() { - *m = GetTemplateRequest_EndDeviceProfileIdentifiers{} -} -func (m *GetTemplateRequest_EndDeviceProfileIdentifiers) String() string { - return proto.CompactTextString(m) -} -func (*GetTemplateRequest_EndDeviceProfileIdentifiers) ProtoMessage() {} -func (*GetTemplateRequest_EndDeviceProfileIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{6, 0} -} -func (m *GetTemplateRequest_EndDeviceProfileIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetTemplateRequest_EndDeviceProfileIdentifiers.Unmarshal(m, b) -} -func (m *GetTemplateRequest_EndDeviceProfileIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetTemplateRequest_EndDeviceProfileIdentifiers.Marshal(b, m, deterministic) -} -func (m *GetTemplateRequest_EndDeviceProfileIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetTemplateRequest_EndDeviceProfileIdentifiers.Merge(m, src) -} -func (m *GetTemplateRequest_EndDeviceProfileIdentifiers) XXX_Size() int { - return xxx_messageInfo_GetTemplateRequest_EndDeviceProfileIdentifiers.Size(m) -} -func (m *GetTemplateRequest_EndDeviceProfileIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_GetTemplateRequest_EndDeviceProfileIdentifiers.DiscardUnknown(m) + // Device width (mm). + Width *wrapperspb.FloatValue `protobuf:"bytes,1,opt,name=width,proto3" json:"width,omitempty"` + // Device height (mm). + Height *wrapperspb.FloatValue `protobuf:"bytes,2,opt,name=height,proto3" json:"height,omitempty"` + // Device diameter (mm). + Diameter *wrapperspb.FloatValue `protobuf:"bytes,3,opt,name=diameter,proto3" json:"diameter,omitempty"` + // Device length (mm). + Length *wrapperspb.FloatValue `protobuf:"bytes,4,opt,name=length,proto3" json:"length,omitempty"` } -var xxx_messageInfo_GetTemplateRequest_EndDeviceProfileIdentifiers proto.InternalMessageInfo - -func (m *GetTemplateRequest_EndDeviceProfileIdentifiers) GetVendorId() uint32 { - if m != nil { - return m.VendorId +func (x *EndDeviceModel_Dimensions) Reset() { + *x = EndDeviceModel_Dimensions{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (m *GetTemplateRequest_EndDeviceProfileIdentifiers) GetVendorProfileId() uint32 { - if m != nil { - return m.VendorProfileId - } - return 0 +func (x *EndDeviceModel_Dimensions) String() string { + return protoimpl.X.MessageStringOf(x) } -type GetPayloadFormatterRequest struct { - // Application identifiers. - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` // Deprecated: Do not use. - // End device version information. - VersionIds *EndDeviceVersionIdentifiers `protobuf:"bytes,2,opt,name=version_ids,json=versionIds,proto3" json:"version_ids,omitempty"` - // Field mask paths. - FieldMask *types.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +func (*EndDeviceModel_Dimensions) ProtoMessage() {} -func (m *GetPayloadFormatterRequest) Reset() { *m = GetPayloadFormatterRequest{} } -func (m *GetPayloadFormatterRequest) String() string { return proto.CompactTextString(m) } -func (*GetPayloadFormatterRequest) ProtoMessage() {} -func (*GetPayloadFormatterRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{7} -} -func (m *GetPayloadFormatterRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetPayloadFormatterRequest.Unmarshal(m, b) -} -func (m *GetPayloadFormatterRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetPayloadFormatterRequest.Marshal(b, m, deterministic) -} -func (m *GetPayloadFormatterRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetPayloadFormatterRequest.Merge(m, src) -} -func (m *GetPayloadFormatterRequest) XXX_Size() int { - return xxx_messageInfo_GetPayloadFormatterRequest.Size(m) -} -func (m *GetPayloadFormatterRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetPayloadFormatterRequest.DiscardUnknown(m) +func (x *EndDeviceModel_Dimensions) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetPayloadFormatterRequest proto.InternalMessageInfo +// Deprecated: Use EndDeviceModel_Dimensions.ProtoReflect.Descriptor instead. +func (*EndDeviceModel_Dimensions) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{1, 2} +} -// Deprecated: Do not use. -func (m *GetPayloadFormatterRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *EndDeviceModel_Dimensions) GetWidth() *wrapperspb.FloatValue { + if x != nil { + return x.Width } return nil } -func (m *GetPayloadFormatterRequest) GetVersionIds() *EndDeviceVersionIdentifiers { - if m != nil { - return m.VersionIds +func (x *EndDeviceModel_Dimensions) GetHeight() *wrapperspb.FloatValue { + if x != nil { + return x.Height } return nil } -func (m *GetPayloadFormatterRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *EndDeviceModel_Dimensions) GetDiameter() *wrapperspb.FloatValue { + if x != nil { + return x.Diameter } return nil } -type ListEndDeviceBrandsResponse struct { - Brands []*EndDeviceBrand `protobuf:"bytes,1,rep,name=brands,proto3" json:"brands,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *EndDeviceModel_Dimensions) GetLength() *wrapperspb.FloatValue { + if x != nil { + return x.Length + } + return nil } -func (m *ListEndDeviceBrandsResponse) Reset() { *m = ListEndDeviceBrandsResponse{} } -func (m *ListEndDeviceBrandsResponse) String() string { return proto.CompactTextString(m) } -func (*ListEndDeviceBrandsResponse) ProtoMessage() {} -func (*ListEndDeviceBrandsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{8} -} -func (m *ListEndDeviceBrandsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListEndDeviceBrandsResponse.Unmarshal(m, b) -} -func (m *ListEndDeviceBrandsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListEndDeviceBrandsResponse.Marshal(b, m, deterministic) -} -func (m *ListEndDeviceBrandsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListEndDeviceBrandsResponse.Merge(m, src) +type EndDeviceModel_Battery struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Whether the device battery can be replaced. + Replaceable *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=replaceable,proto3" json:"replaceable,omitempty"` + // Battery type. + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` } -func (m *ListEndDeviceBrandsResponse) XXX_Size() int { - return xxx_messageInfo_ListEndDeviceBrandsResponse.Size(m) + +func (x *EndDeviceModel_Battery) Reset() { + *x = EndDeviceModel_Battery{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListEndDeviceBrandsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListEndDeviceBrandsResponse.DiscardUnknown(m) + +func (x *EndDeviceModel_Battery) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ListEndDeviceBrandsResponse proto.InternalMessageInfo +func (*EndDeviceModel_Battery) ProtoMessage() {} -func (m *ListEndDeviceBrandsResponse) GetBrands() []*EndDeviceBrand { - if m != nil { - return m.Brands +func (x *EndDeviceModel_Battery) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type ListEndDeviceModelsResponse struct { - Models []*EndDeviceModel `protobuf:"bytes,1,rep,name=models,proto3" json:"models,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use EndDeviceModel_Battery.ProtoReflect.Descriptor instead. +func (*EndDeviceModel_Battery) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{1, 3} } -func (m *ListEndDeviceModelsResponse) Reset() { *m = ListEndDeviceModelsResponse{} } -func (m *ListEndDeviceModelsResponse) String() string { return proto.CompactTextString(m) } -func (*ListEndDeviceModelsResponse) ProtoMessage() {} -func (*ListEndDeviceModelsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{9} -} -func (m *ListEndDeviceModelsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListEndDeviceModelsResponse.Unmarshal(m, b) +func (x *EndDeviceModel_Battery) GetReplaceable() *wrapperspb.BoolValue { + if x != nil { + return x.Replaceable + } + return nil } -func (m *ListEndDeviceModelsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListEndDeviceModelsResponse.Marshal(b, m, deterministic) + +func (x *EndDeviceModel_Battery) GetType() string { + if x != nil { + return x.Type + } + return "" } -func (m *ListEndDeviceModelsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListEndDeviceModelsResponse.Merge(m, src) + +type EndDeviceModel_OperatingConditions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Temperature operating conditions (Celsius). + Temperature *EndDeviceModel_OperatingConditions_Limits `protobuf:"bytes,1,opt,name=temperature,proto3" json:"temperature,omitempty"` + // Relative humidity operating conditions (Fraction, in range [0, 1]). + RelativeHumidity *EndDeviceModel_OperatingConditions_Limits `protobuf:"bytes,2,opt,name=relative_humidity,json=relativeHumidity,proto3" json:"relative_humidity,omitempty"` } -func (m *ListEndDeviceModelsResponse) XXX_Size() int { - return xxx_messageInfo_ListEndDeviceModelsResponse.Size(m) + +func (x *EndDeviceModel_OperatingConditions) Reset() { + *x = EndDeviceModel_OperatingConditions{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListEndDeviceModelsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListEndDeviceModelsResponse.DiscardUnknown(m) + +func (x *EndDeviceModel_OperatingConditions) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ListEndDeviceModelsResponse proto.InternalMessageInfo +func (*EndDeviceModel_OperatingConditions) ProtoMessage() {} -func (m *ListEndDeviceModelsResponse) GetModels() []*EndDeviceModel { - if m != nil { - return m.Models +func (x *EndDeviceModel_OperatingConditions) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type EncodedMessagePayload struct { - FPort uint32 `protobuf:"varint,1,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` - FrmPayload []byte `protobuf:"bytes,2,opt,name=frm_payload,json=frmPayload,proto3" json:"frm_payload,omitempty"` - Warnings []string `protobuf:"bytes,3,rep,name=warnings,proto3" json:"warnings,omitempty"` - Errors []string `protobuf:"bytes,4,rep,name=errors,proto3" json:"errors,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *EncodedMessagePayload) Reset() { *m = EncodedMessagePayload{} } -func (m *EncodedMessagePayload) String() string { return proto.CompactTextString(m) } -func (*EncodedMessagePayload) ProtoMessage() {} -func (*EncodedMessagePayload) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{10} +// Deprecated: Use EndDeviceModel_OperatingConditions.ProtoReflect.Descriptor instead. +func (*EndDeviceModel_OperatingConditions) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{1, 4} } -func (m *EncodedMessagePayload) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EncodedMessagePayload.Unmarshal(m, b) + +func (x *EndDeviceModel_OperatingConditions) GetTemperature() *EndDeviceModel_OperatingConditions_Limits { + if x != nil { + return x.Temperature + } + return nil } -func (m *EncodedMessagePayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EncodedMessagePayload.Marshal(b, m, deterministic) + +func (x *EndDeviceModel_OperatingConditions) GetRelativeHumidity() *EndDeviceModel_OperatingConditions_Limits { + if x != nil { + return x.RelativeHumidity + } + return nil } -func (m *EncodedMessagePayload) XXX_Merge(src proto.Message) { - xxx_messageInfo_EncodedMessagePayload.Merge(m, src) + +type EndDeviceModel_Photos struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Main device photo. + Main string `protobuf:"bytes,1,opt,name=main,proto3" json:"main,omitempty"` + // List of other device photos. + Other []string `protobuf:"bytes,2,rep,name=other,proto3" json:"other,omitempty"` } -func (m *EncodedMessagePayload) XXX_Size() int { - return xxx_messageInfo_EncodedMessagePayload.Size(m) + +func (x *EndDeviceModel_Photos) Reset() { + *x = EndDeviceModel_Photos{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EncodedMessagePayload) XXX_DiscardUnknown() { - xxx_messageInfo_EncodedMessagePayload.DiscardUnknown(m) + +func (x *EndDeviceModel_Photos) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_EncodedMessagePayload proto.InternalMessageInfo +func (*EndDeviceModel_Photos) ProtoMessage() {} -func (m *EncodedMessagePayload) GetFPort() uint32 { - if m != nil { - return m.FPort +func (x *EndDeviceModel_Photos) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (m *EncodedMessagePayload) GetFrmPayload() []byte { - if m != nil { - return m.FrmPayload - } - return nil +// Deprecated: Use EndDeviceModel_Photos.ProtoReflect.Descriptor instead. +func (*EndDeviceModel_Photos) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{1, 5} } -func (m *EncodedMessagePayload) GetWarnings() []string { - if m != nil { - return m.Warnings +func (x *EndDeviceModel_Photos) GetMain() string { + if x != nil { + return x.Main } - return nil + return "" } -func (m *EncodedMessagePayload) GetErrors() []string { - if m != nil { - return m.Errors +func (x *EndDeviceModel_Photos) GetOther() []string { + if x != nil { + return x.Other } return nil } -type DecodedMessagePayload struct { - Data *types.Struct `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` - Warnings []string `protobuf:"bytes,2,rep,name=warnings,proto3" json:"warnings,omitempty"` - Errors []string `protobuf:"bytes,3,rep,name=errors,proto3" json:"errors,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type EndDeviceModel_Videos struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *DecodedMessagePayload) Reset() { *m = DecodedMessagePayload{} } -func (m *DecodedMessagePayload) String() string { return proto.CompactTextString(m) } -func (*DecodedMessagePayload) ProtoMessage() {} -func (*DecodedMessagePayload) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{11} -} -func (m *DecodedMessagePayload) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DecodedMessagePayload.Unmarshal(m, b) -} -func (m *DecodedMessagePayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DecodedMessagePayload.Marshal(b, m, deterministic) -} -func (m *DecodedMessagePayload) XXX_Merge(src proto.Message) { - xxx_messageInfo_DecodedMessagePayload.Merge(m, src) + // Link to main device video. + Main string `protobuf:"bytes,1,opt,name=main,proto3" json:"main,omitempty"` + // Links to other device videos. + Other []string `protobuf:"bytes,2,rep,name=other,proto3" json:"other,omitempty"` } -func (m *DecodedMessagePayload) XXX_Size() int { - return xxx_messageInfo_DecodedMessagePayload.Size(m) + +func (x *EndDeviceModel_Videos) Reset() { + *x = EndDeviceModel_Videos{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DecodedMessagePayload) XXX_DiscardUnknown() { - xxx_messageInfo_DecodedMessagePayload.DiscardUnknown(m) + +func (x *EndDeviceModel_Videos) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_DecodedMessagePayload proto.InternalMessageInfo +func (*EndDeviceModel_Videos) ProtoMessage() {} -func (m *DecodedMessagePayload) GetData() *types.Struct { - if m != nil { - return m.Data +func (x *EndDeviceModel_Videos) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) +} + +// Deprecated: Use EndDeviceModel_Videos.ProtoReflect.Descriptor instead. +func (*EndDeviceModel_Videos) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{1, 6} } -func (m *DecodedMessagePayload) GetWarnings() []string { - if m != nil { - return m.Warnings +func (x *EndDeviceModel_Videos) GetMain() string { + if x != nil { + return x.Main } - return nil + return "" } -func (m *DecodedMessagePayload) GetErrors() []string { - if m != nil { - return m.Errors +func (x *EndDeviceModel_Videos) GetOther() []string { + if x != nil { + return x.Other } return nil } -type MessagePayloadDecoder struct { - // Payload formatter type. - Formatter PayloadFormatter `protobuf:"varint,1,opt,name=formatter,proto3,enum=ttn.lorawan.v3.PayloadFormatter" json:"formatter,omitempty"` - // Parameter for the formatter, must be set together. - FormatterParameter string `protobuf:"bytes,2,opt,name=formatter_parameter,json=formatterParameter,proto3" json:"formatter_parameter,omitempty"` - CodecId string `protobuf:"bytes,3,opt,name=codec_id,json=codecId,proto3" json:"codec_id,omitempty"` - Examples []*MessagePayloadDecoder_Example `protobuf:"bytes,4,rep,name=examples,proto3" json:"examples,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type EndDeviceModel_Reseller struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MessagePayloadDecoder) Reset() { *m = MessagePayloadDecoder{} } -func (m *MessagePayloadDecoder) String() string { return proto.CompactTextString(m) } -func (*MessagePayloadDecoder) ProtoMessage() {} -func (*MessagePayloadDecoder) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{12} -} -func (m *MessagePayloadDecoder) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MessagePayloadDecoder.Unmarshal(m, b) -} -func (m *MessagePayloadDecoder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MessagePayloadDecoder.Marshal(b, m, deterministic) -} -func (m *MessagePayloadDecoder) XXX_Merge(src proto.Message) { - xxx_messageInfo_MessagePayloadDecoder.Merge(m, src) + // Reseller name. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Reseller regions. + Region []string `protobuf:"bytes,2,rep,name=region,proto3" json:"region,omitempty"` + // Reseller URL. + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` } -func (m *MessagePayloadDecoder) XXX_Size() int { - return xxx_messageInfo_MessagePayloadDecoder.Size(m) + +func (x *EndDeviceModel_Reseller) Reset() { + *x = EndDeviceModel_Reseller{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MessagePayloadDecoder) XXX_DiscardUnknown() { - xxx_messageInfo_MessagePayloadDecoder.DiscardUnknown(m) + +func (x *EndDeviceModel_Reseller) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MessagePayloadDecoder proto.InternalMessageInfo +func (*EndDeviceModel_Reseller) ProtoMessage() {} -func (m *MessagePayloadDecoder) GetFormatter() PayloadFormatter { - if m != nil { - return m.Formatter +func (x *EndDeviceModel_Reseller) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return PayloadFormatter_FORMATTER_NONE + return mi.MessageOf(x) } -func (m *MessagePayloadDecoder) GetFormatterParameter() string { - if m != nil { - return m.FormatterParameter - } - return "" +// Deprecated: Use EndDeviceModel_Reseller.ProtoReflect.Descriptor instead. +func (*EndDeviceModel_Reseller) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{1, 7} } -func (m *MessagePayloadDecoder) GetCodecId() string { - if m != nil { - return m.CodecId +func (x *EndDeviceModel_Reseller) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *MessagePayloadDecoder) GetExamples() []*MessagePayloadDecoder_Example { - if m != nil { - return m.Examples +func (x *EndDeviceModel_Reseller) GetRegion() []string { + if x != nil { + return x.Region } return nil } -type MessagePayloadDecoder_Example struct { - Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` - Input *EncodedMessagePayload `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` - Output *DecodedMessagePayload `protobuf:"bytes,3,opt,name=output,proto3" json:"output,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *EndDeviceModel_Reseller) GetUrl() string { + if x != nil { + return x.Url + } + return "" } -func (m *MessagePayloadDecoder_Example) Reset() { *m = MessagePayloadDecoder_Example{} } -func (m *MessagePayloadDecoder_Example) String() string { return proto.CompactTextString(m) } -func (*MessagePayloadDecoder_Example) ProtoMessage() {} -func (*MessagePayloadDecoder_Example) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{12, 0} -} -func (m *MessagePayloadDecoder_Example) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MessagePayloadDecoder_Example.Unmarshal(m, b) -} -func (m *MessagePayloadDecoder_Example) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MessagePayloadDecoder_Example.Marshal(b, m, deterministic) -} -func (m *MessagePayloadDecoder_Example) XXX_Merge(src proto.Message) { - xxx_messageInfo_MessagePayloadDecoder_Example.Merge(m, src) +type EndDeviceModel_Compliances struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of safety standards the device is compliant with. + Safety []*EndDeviceModel_Compliances_Compliance `protobuf:"bytes,1,rep,name=safety,proto3" json:"safety,omitempty"` + // List of radio equipment standards the device is compliant with. + RadioEquipment []*EndDeviceModel_Compliances_Compliance `protobuf:"bytes,2,rep,name=radio_equipment,json=radioEquipment,proto3" json:"radio_equipment,omitempty"` } -func (m *MessagePayloadDecoder_Example) XXX_Size() int { - return xxx_messageInfo_MessagePayloadDecoder_Example.Size(m) + +func (x *EndDeviceModel_Compliances) Reset() { + *x = EndDeviceModel_Compliances{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MessagePayloadDecoder_Example) XXX_DiscardUnknown() { - xxx_messageInfo_MessagePayloadDecoder_Example.DiscardUnknown(m) + +func (x *EndDeviceModel_Compliances) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MessagePayloadDecoder_Example proto.InternalMessageInfo +func (*EndDeviceModel_Compliances) ProtoMessage() {} -func (m *MessagePayloadDecoder_Example) GetDescription() string { - if m != nil { - return m.Description +func (x *EndDeviceModel_Compliances) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) +} + +// Deprecated: Use EndDeviceModel_Compliances.ProtoReflect.Descriptor instead. +func (*EndDeviceModel_Compliances) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{1, 8} } -func (m *MessagePayloadDecoder_Example) GetInput() *EncodedMessagePayload { - if m != nil { - return m.Input +func (x *EndDeviceModel_Compliances) GetSafety() []*EndDeviceModel_Compliances_Compliance { + if x != nil { + return x.Safety } return nil } -func (m *MessagePayloadDecoder_Example) GetOutput() *DecodedMessagePayload { - if m != nil { - return m.Output +func (x *EndDeviceModel_Compliances) GetRadioEquipment() []*EndDeviceModel_Compliances_Compliance { + if x != nil { + return x.RadioEquipment } return nil } -type MessagePayloadEncoder struct { - // Payload formatter type. - Formatter PayloadFormatter `protobuf:"varint,1,opt,name=formatter,proto3,enum=ttn.lorawan.v3.PayloadFormatter" json:"formatter,omitempty"` - // Parameter for the formatter, must be set together. - FormatterParameter string `protobuf:"bytes,2,opt,name=formatter_parameter,json=formatterParameter,proto3" json:"formatter_parameter,omitempty"` - CodecId string `protobuf:"bytes,3,opt,name=codec_id,json=codecId,proto3" json:"codec_id,omitempty"` - Examples []*MessagePayloadEncoder_Example `protobuf:"bytes,4,rep,name=examples,proto3" json:"examples,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type EndDeviceModel_FirmwareVersion_Profile struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MessagePayloadEncoder) Reset() { *m = MessagePayloadEncoder{} } -func (m *MessagePayloadEncoder) String() string { return proto.CompactTextString(m) } -func (*MessagePayloadEncoder) ProtoMessage() {} -func (*MessagePayloadEncoder) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{13} -} -func (m *MessagePayloadEncoder) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MessagePayloadEncoder.Unmarshal(m, b) -} -func (m *MessagePayloadEncoder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MessagePayloadEncoder.Marshal(b, m, deterministic) -} -func (m *MessagePayloadEncoder) XXX_Merge(src proto.Message) { - xxx_messageInfo_MessagePayloadEncoder.Merge(m, src) + // Vendor ID of the profile, as defined in the Device Repository. + // If this value is set, the profile is loaded from this vendor's folder. + // If this value is not set, the profile is loaded from the current (end device's) vendor. + VendorId string `protobuf:"bytes,4,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"` + // Profile identifier, as defined in the Device Repository. + ProfileId string `protobuf:"bytes,1,opt,name=profile_id,json=profileId,proto3" json:"profile_id,omitempty"` + // Whether the device is LoRaWAN certified. + LorawanCertified bool `protobuf:"varint,2,opt,name=lorawan_certified,json=lorawanCertified,proto3" json:"lorawan_certified,omitempty"` + // Payload formatter codec identifier, as defined in the Device Repository. + CodecId string `protobuf:"bytes,3,opt,name=codec_id,json=codecId,proto3" json:"codec_id,omitempty"` } -func (m *MessagePayloadEncoder) XXX_Size() int { - return xxx_messageInfo_MessagePayloadEncoder.Size(m) + +func (x *EndDeviceModel_FirmwareVersion_Profile) Reset() { + *x = EndDeviceModel_FirmwareVersion_Profile{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MessagePayloadEncoder) XXX_DiscardUnknown() { - xxx_messageInfo_MessagePayloadEncoder.DiscardUnknown(m) + +func (x *EndDeviceModel_FirmwareVersion_Profile) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MessagePayloadEncoder proto.InternalMessageInfo +func (*EndDeviceModel_FirmwareVersion_Profile) ProtoMessage() {} -func (m *MessagePayloadEncoder) GetFormatter() PayloadFormatter { - if m != nil { - return m.Formatter +func (x *EndDeviceModel_FirmwareVersion_Profile) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return PayloadFormatter_FORMATTER_NONE + return mi.MessageOf(x) } -func (m *MessagePayloadEncoder) GetFormatterParameter() string { - if m != nil { - return m.FormatterParameter +// Deprecated: Use EndDeviceModel_FirmwareVersion_Profile.ProtoReflect.Descriptor instead. +func (*EndDeviceModel_FirmwareVersion_Profile) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{1, 1, 0} +} + +func (x *EndDeviceModel_FirmwareVersion_Profile) GetVendorId() string { + if x != nil { + return x.VendorId } return "" } -func (m *MessagePayloadEncoder) GetCodecId() string { - if m != nil { - return m.CodecId +func (x *EndDeviceModel_FirmwareVersion_Profile) GetProfileId() string { + if x != nil { + return x.ProfileId } return "" } -func (m *MessagePayloadEncoder) GetExamples() []*MessagePayloadEncoder_Example { - if m != nil { - return m.Examples +func (x *EndDeviceModel_FirmwareVersion_Profile) GetLorawanCertified() bool { + if x != nil { + return x.LorawanCertified } - return nil + return false } -type MessagePayloadEncoder_Example struct { - Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` - Input *DecodedMessagePayload `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` - Output *EncodedMessagePayload `protobuf:"bytes,3,opt,name=output,proto3" json:"output,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *EndDeviceModel_FirmwareVersion_Profile) GetCodecId() string { + if x != nil { + return x.CodecId + } + return "" } -func (m *MessagePayloadEncoder_Example) Reset() { *m = MessagePayloadEncoder_Example{} } -func (m *MessagePayloadEncoder_Example) String() string { return proto.CompactTextString(m) } -func (*MessagePayloadEncoder_Example) ProtoMessage() {} -func (*MessagePayloadEncoder_Example) Descriptor() ([]byte, []int) { - return fileDescriptor_c0145ad4e3f42c22, []int{13, 0} -} -func (m *MessagePayloadEncoder_Example) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MessagePayloadEncoder_Example.Unmarshal(m, b) -} -func (m *MessagePayloadEncoder_Example) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MessagePayloadEncoder_Example.Marshal(b, m, deterministic) -} -func (m *MessagePayloadEncoder_Example) XXX_Merge(src proto.Message) { - xxx_messageInfo_MessagePayloadEncoder_Example.Merge(m, src) +type EndDeviceModel_OperatingConditions_Limits struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Min value of operating conditions range. + Min *wrapperspb.FloatValue `protobuf:"bytes,1,opt,name=min,proto3" json:"min,omitempty"` + // Max value of operating conditions range. + Max *wrapperspb.FloatValue `protobuf:"bytes,2,opt,name=max,proto3" json:"max,omitempty"` } -func (m *MessagePayloadEncoder_Example) XXX_Size() int { - return xxx_messageInfo_MessagePayloadEncoder_Example.Size(m) + +func (x *EndDeviceModel_OperatingConditions_Limits) Reset() { + *x = EndDeviceModel_OperatingConditions_Limits{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MessagePayloadEncoder_Example) XXX_DiscardUnknown() { - xxx_messageInfo_MessagePayloadEncoder_Example.DiscardUnknown(m) + +func (x *EndDeviceModel_OperatingConditions_Limits) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MessagePayloadEncoder_Example proto.InternalMessageInfo +func (*EndDeviceModel_OperatingConditions_Limits) ProtoMessage() {} -func (m *MessagePayloadEncoder_Example) GetDescription() string { - if m != nil { - return m.Description +func (x *EndDeviceModel_OperatingConditions_Limits) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) +} + +// Deprecated: Use EndDeviceModel_OperatingConditions_Limits.ProtoReflect.Descriptor instead. +func (*EndDeviceModel_OperatingConditions_Limits) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{1, 4, 0} } -func (m *MessagePayloadEncoder_Example) GetInput() *DecodedMessagePayload { - if m != nil { - return m.Input +func (x *EndDeviceModel_OperatingConditions_Limits) GetMin() *wrapperspb.FloatValue { + if x != nil { + return x.Min } return nil } -func (m *MessagePayloadEncoder_Example) GetOutput() *EncodedMessagePayload { - if m != nil { - return m.Output +func (x *EndDeviceModel_OperatingConditions_Limits) GetMax() *wrapperspb.FloatValue { + if x != nil { + return x.Max } return nil } -func init() { - proto.RegisterEnum("ttn.lorawan.v3.KeyProvisioning", KeyProvisioning_name, KeyProvisioning_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.KeyProvisioning", KeyProvisioning_name, KeyProvisioning_value) - proto.RegisterEnum("ttn.lorawan.v3.KeySecurity", KeySecurity_name, KeySecurity_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.KeySecurity", KeySecurity_name, KeySecurity_value) - proto.RegisterType((*EndDeviceBrand)(nil), "ttn.lorawan.v3.EndDeviceBrand") - golang_proto.RegisterType((*EndDeviceBrand)(nil), "ttn.lorawan.v3.EndDeviceBrand") - proto.RegisterType((*EndDeviceModel)(nil), "ttn.lorawan.v3.EndDeviceModel") - golang_proto.RegisterType((*EndDeviceModel)(nil), "ttn.lorawan.v3.EndDeviceModel") - proto.RegisterType((*EndDeviceModel_HardwareVersion)(nil), "ttn.lorawan.v3.EndDeviceModel.HardwareVersion") - golang_proto.RegisterType((*EndDeviceModel_HardwareVersion)(nil), "ttn.lorawan.v3.EndDeviceModel.HardwareVersion") - proto.RegisterType((*EndDeviceModel_FirmwareVersion)(nil), "ttn.lorawan.v3.EndDeviceModel.FirmwareVersion") - golang_proto.RegisterType((*EndDeviceModel_FirmwareVersion)(nil), "ttn.lorawan.v3.EndDeviceModel.FirmwareVersion") - proto.RegisterMapType((map[string]*EndDeviceModel_FirmwareVersion_Profile)(nil), "ttn.lorawan.v3.EndDeviceModel.FirmwareVersion.ProfilesEntry") - golang_proto.RegisterMapType((map[string]*EndDeviceModel_FirmwareVersion_Profile)(nil), "ttn.lorawan.v3.EndDeviceModel.FirmwareVersion.ProfilesEntry") - proto.RegisterType((*EndDeviceModel_FirmwareVersion_Profile)(nil), "ttn.lorawan.v3.EndDeviceModel.FirmwareVersion.Profile") - golang_proto.RegisterType((*EndDeviceModel_FirmwareVersion_Profile)(nil), "ttn.lorawan.v3.EndDeviceModel.FirmwareVersion.Profile") - proto.RegisterType((*EndDeviceModel_Dimensions)(nil), "ttn.lorawan.v3.EndDeviceModel.Dimensions") - golang_proto.RegisterType((*EndDeviceModel_Dimensions)(nil), "ttn.lorawan.v3.EndDeviceModel.Dimensions") - proto.RegisterType((*EndDeviceModel_Battery)(nil), "ttn.lorawan.v3.EndDeviceModel.Battery") - golang_proto.RegisterType((*EndDeviceModel_Battery)(nil), "ttn.lorawan.v3.EndDeviceModel.Battery") - proto.RegisterType((*EndDeviceModel_OperatingConditions)(nil), "ttn.lorawan.v3.EndDeviceModel.OperatingConditions") - golang_proto.RegisterType((*EndDeviceModel_OperatingConditions)(nil), "ttn.lorawan.v3.EndDeviceModel.OperatingConditions") - proto.RegisterType((*EndDeviceModel_OperatingConditions_Limits)(nil), "ttn.lorawan.v3.EndDeviceModel.OperatingConditions.Limits") - golang_proto.RegisterType((*EndDeviceModel_OperatingConditions_Limits)(nil), "ttn.lorawan.v3.EndDeviceModel.OperatingConditions.Limits") - proto.RegisterType((*EndDeviceModel_Photos)(nil), "ttn.lorawan.v3.EndDeviceModel.Photos") - golang_proto.RegisterType((*EndDeviceModel_Photos)(nil), "ttn.lorawan.v3.EndDeviceModel.Photos") - proto.RegisterType((*EndDeviceModel_Videos)(nil), "ttn.lorawan.v3.EndDeviceModel.Videos") - golang_proto.RegisterType((*EndDeviceModel_Videos)(nil), "ttn.lorawan.v3.EndDeviceModel.Videos") - proto.RegisterType((*EndDeviceModel_Reseller)(nil), "ttn.lorawan.v3.EndDeviceModel.Reseller") - golang_proto.RegisterType((*EndDeviceModel_Reseller)(nil), "ttn.lorawan.v3.EndDeviceModel.Reseller") - proto.RegisterType((*EndDeviceModel_Compliances)(nil), "ttn.lorawan.v3.EndDeviceModel.Compliances") - golang_proto.RegisterType((*EndDeviceModel_Compliances)(nil), "ttn.lorawan.v3.EndDeviceModel.Compliances") - proto.RegisterType((*EndDeviceModel_Compliances_Compliance)(nil), "ttn.lorawan.v3.EndDeviceModel.Compliances.Compliance") - golang_proto.RegisterType((*EndDeviceModel_Compliances_Compliance)(nil), "ttn.lorawan.v3.EndDeviceModel.Compliances.Compliance") - proto.RegisterType((*GetEndDeviceBrandRequest)(nil), "ttn.lorawan.v3.GetEndDeviceBrandRequest") - golang_proto.RegisterType((*GetEndDeviceBrandRequest)(nil), "ttn.lorawan.v3.GetEndDeviceBrandRequest") - proto.RegisterType((*ListEndDeviceBrandsRequest)(nil), "ttn.lorawan.v3.ListEndDeviceBrandsRequest") - golang_proto.RegisterType((*ListEndDeviceBrandsRequest)(nil), "ttn.lorawan.v3.ListEndDeviceBrandsRequest") - proto.RegisterType((*GetEndDeviceModelRequest)(nil), "ttn.lorawan.v3.GetEndDeviceModelRequest") - golang_proto.RegisterType((*GetEndDeviceModelRequest)(nil), "ttn.lorawan.v3.GetEndDeviceModelRequest") - proto.RegisterType((*ListEndDeviceModelsRequest)(nil), "ttn.lorawan.v3.ListEndDeviceModelsRequest") - golang_proto.RegisterType((*ListEndDeviceModelsRequest)(nil), "ttn.lorawan.v3.ListEndDeviceModelsRequest") - proto.RegisterType((*GetTemplateRequest)(nil), "ttn.lorawan.v3.GetTemplateRequest") - golang_proto.RegisterType((*GetTemplateRequest)(nil), "ttn.lorawan.v3.GetTemplateRequest") - proto.RegisterType((*GetTemplateRequest_EndDeviceProfileIdentifiers)(nil), "ttn.lorawan.v3.GetTemplateRequest.EndDeviceProfileIdentifiers") - golang_proto.RegisterType((*GetTemplateRequest_EndDeviceProfileIdentifiers)(nil), "ttn.lorawan.v3.GetTemplateRequest.EndDeviceProfileIdentifiers") - proto.RegisterType((*GetPayloadFormatterRequest)(nil), "ttn.lorawan.v3.GetPayloadFormatterRequest") - golang_proto.RegisterType((*GetPayloadFormatterRequest)(nil), "ttn.lorawan.v3.GetPayloadFormatterRequest") - proto.RegisterType((*ListEndDeviceBrandsResponse)(nil), "ttn.lorawan.v3.ListEndDeviceBrandsResponse") - golang_proto.RegisterType((*ListEndDeviceBrandsResponse)(nil), "ttn.lorawan.v3.ListEndDeviceBrandsResponse") - proto.RegisterType((*ListEndDeviceModelsResponse)(nil), "ttn.lorawan.v3.ListEndDeviceModelsResponse") - golang_proto.RegisterType((*ListEndDeviceModelsResponse)(nil), "ttn.lorawan.v3.ListEndDeviceModelsResponse") - proto.RegisterType((*EncodedMessagePayload)(nil), "ttn.lorawan.v3.EncodedMessagePayload") - golang_proto.RegisterType((*EncodedMessagePayload)(nil), "ttn.lorawan.v3.EncodedMessagePayload") - proto.RegisterType((*DecodedMessagePayload)(nil), "ttn.lorawan.v3.DecodedMessagePayload") - golang_proto.RegisterType((*DecodedMessagePayload)(nil), "ttn.lorawan.v3.DecodedMessagePayload") - proto.RegisterType((*MessagePayloadDecoder)(nil), "ttn.lorawan.v3.MessagePayloadDecoder") - golang_proto.RegisterType((*MessagePayloadDecoder)(nil), "ttn.lorawan.v3.MessagePayloadDecoder") - proto.RegisterType((*MessagePayloadDecoder_Example)(nil), "ttn.lorawan.v3.MessagePayloadDecoder.Example") - golang_proto.RegisterType((*MessagePayloadDecoder_Example)(nil), "ttn.lorawan.v3.MessagePayloadDecoder.Example") - proto.RegisterType((*MessagePayloadEncoder)(nil), "ttn.lorawan.v3.MessagePayloadEncoder") - golang_proto.RegisterType((*MessagePayloadEncoder)(nil), "ttn.lorawan.v3.MessagePayloadEncoder") - proto.RegisterType((*MessagePayloadEncoder_Example)(nil), "ttn.lorawan.v3.MessagePayloadEncoder.Example") - golang_proto.RegisterType((*MessagePayloadEncoder_Example)(nil), "ttn.lorawan.v3.MessagePayloadEncoder.Example") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/devicerepository.proto", fileDescriptor_c0145ad4e3f42c22) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/devicerepository.proto", fileDescriptor_c0145ad4e3f42c22) -} - -var fileDescriptor_c0145ad4e3f42c22 = []byte{ - // 3338 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3a, 0x5d, 0x6c, 0xdb, 0xd6, - 0xb9, 0xa5, 0x64, 0x4b, 0xf2, 0x51, 0x6c, 0xcb, 0x27, 0x4e, 0x43, 0x33, 0x6d, 0xe2, 0xea, 0x3a, - 0x89, 0x64, 0x57, 0x52, 0xae, 0x72, 0xd3, 0x36, 0x6e, 0x53, 0x35, 0x74, 0x94, 0xc4, 0x4d, 0xe2, - 0x18, 0xb4, 0x9d, 0xde, 0xc4, 0x8a, 0x75, 0x69, 0xf1, 0x48, 0x62, 0x2c, 0x91, 0xec, 0x21, 0x25, - 0xd5, 0x4d, 0xf2, 0xd2, 0xa7, 0x7b, 0x81, 0x8b, 0x61, 0xcb, 0x5e, 0x36, 0xa0, 0x7b, 0xdb, 0x80, - 0x21, 0xc3, 0x06, 0x6c, 0x40, 0xf7, 0x30, 0x6c, 0xdd, 0x56, 0x60, 0x58, 0xb1, 0x61, 0x40, 0xb1, - 0x6e, 0x18, 0x36, 0xa0, 0xc3, 0xb0, 0x0e, 0xd8, 0x96, 0x01, 0x7b, 0x18, 0xf6, 0xa4, 0x97, 0x0d, - 0xe7, 0xf0, 0x90, 0xa2, 0x7e, 0x1c, 0xd9, 0x6e, 0xd2, 0x36, 0xdb, 0x83, 0xe1, 0xc3, 0xf3, 0xfd, - 0x9c, 0xef, 0x8f, 0xdf, 0xcf, 0xa1, 0x40, 0xac, 0xa2, 0x63, 0xb9, 0x21, 0x6b, 0x09, 0xd3, 0x92, - 0x0b, 0x1b, 0x29, 0xd9, 0x50, 0x53, 0x0a, 0xaa, 0xab, 0x05, 0x84, 0x91, 0xa1, 0x9b, 0xaa, 0xa5, - 0xe3, 0xcd, 0xa4, 0x81, 0x75, 0x4b, 0x87, 0x23, 0x96, 0xa5, 0x25, 0x19, 0x76, 0xb2, 0x7e, 0x5c, - 0x38, 0x5d, 0x52, 0xad, 0x72, 0x6d, 0x3d, 0x59, 0xd0, 0xab, 0x29, 0xa4, 0xd5, 0xf5, 0x4d, 0x03, - 0xeb, 0xaf, 0x6d, 0xa6, 0x28, 0x72, 0x21, 0x51, 0x42, 0x5a, 0xa2, 0x2e, 0x57, 0x54, 0x45, 0xb6, - 0x50, 0xaa, 0x6b, 0x61, 0xb3, 0x14, 0x12, 0x1e, 0x16, 0x25, 0xbd, 0xa4, 0xdb, 0xc4, 0xeb, 0xb5, - 0x22, 0x7d, 0xa2, 0x0f, 0x74, 0xc5, 0xd0, 0xe7, 0x3c, 0xe8, 0xcb, 0x65, 0xb4, 0x5c, 0x56, 0xb5, - 0x92, 0x39, 0xaf, 0x29, 0x35, 0xd3, 0xc2, 0x2a, 0x32, 0xbd, 0x47, 0x97, 0xf4, 0xc4, 0x0d, 0x53, - 0xd7, 0x52, 0xb2, 0xa6, 0xe9, 0x96, 0x6c, 0xa9, 0xba, 0x66, 0x32, 0x26, 0x4f, 0x94, 0x74, 0xbd, - 0x54, 0x41, 0x54, 0xd3, 0x6e, 0xe8, 0x24, 0x83, 0xba, 0x82, 0x14, 0x55, 0x54, 0x51, 0xf2, 0x55, - 0xd9, 0xdc, 0xe8, 0xa0, 0x77, 0x31, 0x4c, 0x0b, 0xd7, 0x0a, 0x16, 0x83, 0x1e, 0xec, 0x84, 0x36, - 0xb0, 0x6c, 0x18, 0x08, 0x3b, 0xfc, 0xa3, 0xdd, 0xe6, 0x46, 0x9a, 0x92, 0xb7, 0x4d, 0xee, 0xc8, - 0xd0, 0x8d, 0x53, 0x45, 0xa6, 0x29, 0x97, 0x90, 0xc3, 0xe5, 0x3f, 0xba, 0x31, 0x54, 0x05, 0x69, - 0x96, 0x5a, 0x54, 0xdd, 0xa3, 0xa2, 0x3f, 0xf7, 0x83, 0x91, 0xac, 0xa6, 0x9c, 0xa1, 0xac, 0x45, - 0x2c, 0x6b, 0x0a, 0x14, 0x41, 0x68, 0x9d, 0x2c, 0xf2, 0xaa, 0xc2, 0x73, 0x93, 0x5c, 0x6c, 0x48, - 0x3c, 0xda, 0x14, 0xa7, 0x70, 0x94, 0x9f, 0x4a, 0x1f, 0x5c, 0x5b, 0x95, 0x13, 0xaf, 0x1f, 0x4b, - 0x9c, 0xbc, 0x1e, 0xcb, 0xcc, 0xae, 0x26, 0xae, 0x67, 0x9c, 0xc7, 0xf8, 0xcd, 0xf4, 0xd3, 0xb7, - 0xa7, 0xa4, 0x20, 0x25, 0x9c, 0x57, 0x20, 0x04, 0x03, 0x9a, 0x5c, 0x45, 0xbc, 0x8f, 0xd0, 0x4b, - 0x74, 0x0d, 0x67, 0xc1, 0x84, 0x81, 0xd5, 0xba, 0x6c, 0xa1, 0x3c, 0xd2, 0x2c, 0x84, 0x0d, 0xac, - 0x9a, 0x28, 0xaf, 0xd5, 0xaa, 0xeb, 0x08, 0xf3, 0xfe, 0x49, 0x2e, 0x36, 0x2c, 0xed, 0x67, 0x08, - 0x59, 0x17, 0xbe, 0x40, 0xc1, 0x30, 0x0f, 0x0e, 0xe9, 0xb8, 0x24, 0x6b, 0xea, 0xeb, 0xd4, 0x11, - 0xf9, 0x9a, 0xa6, 0xbe, 0x5a, 0x43, 0x79, 0x8f, 0x3e, 0xfc, 0xc0, 0xa4, 0x3f, 0x36, 0x24, 0xee, - 0x6f, 0x8a, 0xe3, 0x77, 0xb8, 0xb1, 0xe8, 0x28, 0x1e, 0x4e, 0x87, 0x57, 0x8f, 0x25, 0x4e, 0x9e, - 0x4e, 0x9c, 0xbd, 0x7e, 0xf3, 0x99, 0xdb, 0xd2, 0x93, 0x5e, 0xfa, 0x15, 0x4a, 0x3e, 0xdf, 0xa2, - 0x86, 0x27, 0xc0, 0x7e, 0x62, 0xae, 0xbc, 0x5c, 0xa9, 0xa8, 0xb2, 0x56, 0x40, 0xf9, 0x3a, 0xd2, - 0x14, 0x1d, 0x13, 0x1b, 0x0c, 0x52, 0xd1, 0xc6, 0x09, 0xf8, 0x34, 0x83, 0x5e, 0xa1, 0xc0, 0x79, - 0x05, 0x1e, 0x06, 0xc1, 0x06, 0x5a, 0x37, 0x55, 0x0b, 0xf1, 0x01, 0x6a, 0xaa, 0x70, 0x53, 0x0c, - 0xe1, 0xc0, 0xff, 0x72, 0xdc, 0x7b, 0x1c, 0x27, 0x39, 0x30, 0x38, 0x09, 0x06, 0x51, 0x55, 0x56, - 0x2b, 0x7c, 0x90, 0x22, 0x81, 0xa6, 0x18, 0xc4, 0x83, 0xff, 0x43, 0x71, 0x6c, 0x00, 0xbc, 0x00, - 0x06, 0x2a, 0x7a, 0x49, 0xe7, 0x43, 0x14, 0xe1, 0xd9, 0xa6, 0xf8, 0x5f, 0x38, 0x9d, 0x3e, 0xb6, - 0x36, 0x75, 0x6b, 0x2d, 0x16, 0x63, 0x46, 0x4e, 0x5c, 0x9f, 0xc9, 0xa5, 0xe2, 0x33, 0xf1, 0x8c, - 0xb3, 0x91, 0x27, 0x3b, 0xc9, 0xf8, 0x4c, 0xcc, 0xd0, 0x4a, 0xb7, 0xcc, 0x7a, 0x29, 0x3e, 0x25, - 0x51, 0x26, 0xd1, 0x9f, 0x3e, 0xe9, 0x71, 0xea, 0x25, 0x5d, 0x41, 0x95, 0x07, 0xe2, 0x54, 0x11, - 0x84, 0xaa, 0x84, 0x19, 0xe1, 0xe1, 0xdb, 0x21, 0x0f, 0x4a, 0xe8, 0x09, 0x0c, 0xbf, 0x27, 0x30, - 0x26, 0x41, 0x58, 0x41, 0x66, 0x01, 0xab, 0x06, 0xf1, 0x0d, 0x3f, 0x40, 0x41, 0xde, 0x2d, 0xb8, - 0x0a, 0xc6, 0xca, 0x32, 0x56, 0x1a, 0x32, 0x26, 0x8e, 0xc1, 0x26, 0x79, 0x17, 0xf9, 0xc1, 0x49, - 0x7f, 0x2c, 0x9c, 0x4e, 0x26, 0xdb, 0x33, 0x4e, 0xb2, 0x5d, 0xf1, 0xe4, 0x79, 0x46, 0x77, 0xc5, - 0x26, 0x93, 0x22, 0xe5, 0xf6, 0x0d, 0x93, 0x30, 0x2f, 0xaa, 0xb8, 0xda, 0xce, 0x3c, 0xb0, 0x2d, - 0xe6, 0x67, 0x19, 0x9d, 0xcb, 0xbc, 0xd8, 0xbe, 0x61, 0xc2, 0x28, 0x08, 0x9a, 0x48, 0x33, 0x75, - 0x6c, 0xf2, 0x41, 0x1a, 0xa0, 0xa1, 0xa6, 0x38, 0x78, 0x87, 0xf3, 0xf1, 0x9c, 0xe4, 0x00, 0xe0, - 0x3c, 0x00, 0x8a, 0x5a, 0x45, 0x9a, 0x7d, 0x32, 0x89, 0x80, 0x70, 0x3a, 0xde, 0xe7, 0xe4, 0x33, - 0x2e, 0x81, 0xe4, 0x21, 0x86, 0xc7, 0x41, 0xa0, 0x81, 0xd4, 0x52, 0xd9, 0xe2, 0x87, 0x28, 0x9b, - 0x03, 0x49, 0x3b, 0xd5, 0x24, 0x9d, 0x54, 0x93, 0x3c, 0x5b, 0xd1, 0x65, 0xeb, 0x8a, 0x5c, 0xa9, - 0x21, 0x89, 0xa1, 0xc2, 0x97, 0x40, 0x70, 0x5d, 0xb6, 0x2c, 0x84, 0x37, 0x79, 0x40, 0xa9, 0x8e, - 0xf4, 0x39, 0x5c, 0xb4, 0xb1, 0x25, 0x87, 0x0c, 0x22, 0x30, 0xae, 0x1b, 0x08, 0xcb, 0x96, 0xaa, - 0x95, 0xf2, 0x05, 0x5d, 0x53, 0x54, 0x9a, 0x2e, 0xf9, 0x30, 0x65, 0x97, 0xee, 0xc3, 0xee, 0xb2, - 0x43, 0x3a, 0xe7, 0x52, 0x4a, 0x7b, 0xf5, 0xee, 0x4d, 0xb8, 0x1f, 0x04, 0x55, 0x23, 0x5f, 0xd0, - 0x15, 0xc4, 0xef, 0xa1, 0x41, 0x12, 0x50, 0x8d, 0x39, 0x5d, 0x41, 0x70, 0x15, 0x44, 0x36, 0xd0, - 0x66, 0xde, 0xc0, 0x7a, 0x5d, 0x25, 0x86, 0x50, 0xb5, 0x12, 0x3f, 0x3c, 0xe9, 0x8f, 0x8d, 0xa4, - 0x0f, 0x75, 0x9e, 0x7d, 0x01, 0x6d, 0x2e, 0x7a, 0xd0, 0xc4, 0xd1, 0xa6, 0xb8, 0xe7, 0x0e, 0x37, - 0xc4, 0x73, 0xd1, 0xc1, 0x37, 0x38, 0x5f, 0x84, 0x93, 0x46, 0x37, 0xda, 0x31, 0xe0, 0x79, 0xb0, - 0x87, 0x30, 0x37, 0x51, 0xa1, 0x86, 0x55, 0x6b, 0x93, 0x1f, 0x99, 0xe4, 0x62, 0x23, 0xe9, 0x03, - 0x3d, 0x18, 0x2f, 0x31, 0x14, 0xea, 0x64, 0x9b, 0x5b, 0x78, 0xa3, 0xb5, 0x0d, 0x4f, 0x81, 0x80, - 0x51, 0xd6, 0x2d, 0xdd, 0xe4, 0x47, 0xa9, 0x61, 0x0e, 0xf7, 0x31, 0xcc, 0x22, 0x45, 0x96, 0x18, - 0x11, 0x21, 0xaf, 0xab, 0x0a, 0xd2, 0x4d, 0x3e, 0xb2, 0x2d, 0xf2, 0x2b, 0x14, 0x59, 0x62, 0x44, - 0xf0, 0x69, 0x10, 0x36, 0xb0, 0xae, 0xd4, 0x0a, 0x56, 0xbe, 0x86, 0x2b, 0xfc, 0x58, 0x77, 0xbe, - 0x02, 0x0c, 0xbe, 0x82, 0x2b, 0xf0, 0x18, 0x18, 0x56, 0x64, 0x4b, 0x36, 0xcb, 0x08, 0xd9, 0xf8, - 0xb0, 0x1b, 0x7f, 0x8f, 0x8b, 0x41, 0x28, 0xb2, 0x60, 0x08, 0x23, 0x13, 0x55, 0x2a, 0x24, 0x1b, - 0xef, 0xa5, 0xef, 0xcf, 0xd1, 0x3e, 0x12, 0x4a, 0x0c, 0x5f, 0x6a, 0x51, 0xc2, 0x8b, 0x20, 0x5c, - 0xd0, 0xab, 0x86, 0x9d, 0x68, 0x4d, 0x7e, 0x9c, 0xaa, 0x3a, 0xdd, 0x87, 0xd1, 0x5c, 0x8b, 0x42, - 0xf2, 0x92, 0xc3, 0x13, 0x60, 0x4c, 0x56, 0xec, 0xf8, 0x91, 0x2b, 0x79, 0x2c, 0x2b, 0xaa, 0x6e, - 0xf2, 0xfb, 0x3a, 0xde, 0xc4, 0x48, 0x0b, 0x45, 0xa2, 0x18, 0x42, 0x11, 0x8c, 0x76, 0x24, 0x0e, - 0xc8, 0x83, 0x20, 0xcb, 0x0e, 0x76, 0x02, 0x95, 0x9c, 0x47, 0x02, 0xd1, 0x6a, 0x55, 0x84, 0xd5, - 0x02, 0x4d, 0x8b, 0xc3, 0x92, 0xf3, 0x08, 0x0f, 0x81, 0xb0, 0x21, 0x63, 0xcb, 0x5b, 0xe4, 0x86, - 0x24, 0x40, 0xb6, 0xec, 0xba, 0x26, 0xfc, 0x6d, 0x00, 0x8c, 0x76, 0x24, 0x91, 0x5d, 0x1d, 0x74, - 0x1e, 0x1c, 0x30, 0x6b, 0x86, 0xa1, 0x63, 0x0b, 0x29, 0xf9, 0xee, 0x54, 0xe9, 0xef, 0x50, 0x78, - 0xc2, 0x45, 0x3e, 0xdf, 0x99, 0x0d, 0xff, 0x1b, 0x84, 0x0c, 0xac, 0x17, 0xd5, 0x0a, 0xb2, 0x4b, - 0x6a, 0x38, 0xfd, 0xc2, 0xce, 0x92, 0x60, 0x72, 0x91, 0x91, 0x67, 0x35, 0x0b, 0x6f, 0x4a, 0x2e, - 0x37, 0xe1, 0x73, 0x3e, 0x10, 0x64, 0x30, 0x78, 0x0e, 0x0c, 0xb5, 0x0a, 0x2c, 0x4d, 0xf8, 0xe2, - 0x74, 0x53, 0x3c, 0x8a, 0x0f, 0xf3, 0x53, 0xe9, 0xa7, 0x48, 0xd5, 0xbb, 0x7f, 0x39, 0x09, 0xd5, - 0x9d, 0x02, 0x3c, 0x0f, 0x00, 0x3b, 0xa0, 0x55, 0xd9, 0x76, 0xc2, 0x69, 0x88, 0x51, 0xcf, 0x2b, - 0x70, 0x06, 0x8c, 0x31, 0x25, 0xf3, 0x05, 0x84, 0x69, 0x63, 0x60, 0xd7, 0xb9, 0x90, 0x14, 0x61, - 0x80, 0x39, 0x67, 0x1f, 0x66, 0x41, 0x88, 0xe4, 0xa1, 0x02, 0x39, 0xd5, 0xbf, 0xe3, 0x53, 0x83, - 0x94, 0x76, 0x5e, 0x11, 0x4c, 0x30, 0xdc, 0x66, 0x2e, 0x18, 0x01, 0xfe, 0x0d, 0xb4, 0xc9, 0x1c, - 0x4f, 0x96, 0xf0, 0x22, 0x18, 0xac, 0x93, 0x74, 0x4d, 0x45, 0x09, 0xa7, 0x9f, 0xd9, 0x9d, 0x37, - 0x24, 0x9b, 0xc9, 0xac, 0xef, 0x39, 0x4e, 0xf8, 0x3d, 0x07, 0x40, 0xab, 0x7e, 0xc0, 0xff, 0x04, - 0x83, 0x0d, 0x55, 0xb1, 0xca, 0xf4, 0xd0, 0x3e, 0x25, 0xc3, 0xc6, 0x24, 0x65, 0xa6, 0x6c, 0x97, - 0x19, 0xdf, 0x36, 0xca, 0x8c, 0x8d, 0x0a, 0x9f, 0x05, 0x21, 0x45, 0x95, 0xab, 0xc8, 0x62, 0x6f, - 0x42, 0x1f, 0x32, 0x17, 0x99, 0x9c, 0x56, 0x41, 0x5a, 0xc9, 0x2a, 0xd3, 0x48, 0xe9, 0x77, 0x9a, - 0x8d, 0x2a, 0xac, 0x82, 0x20, 0x2b, 0x53, 0xf0, 0x05, 0x10, 0xc6, 0xc8, 0xa8, 0xc8, 0x05, 0x24, - 0xaf, 0x57, 0x10, 0x53, 0x53, 0xe8, 0x62, 0x22, 0xea, 0x7a, 0xc5, 0xe6, 0xe1, 0x45, 0x27, 0x1d, - 0x8b, 0xb5, 0x69, 0xb8, 0xad, 0x2c, 0x59, 0x0b, 0xef, 0xf8, 0xc0, 0xde, 0x1e, 0x55, 0x0b, 0xae, - 0x82, 0xb0, 0x85, 0xaa, 0x14, 0x50, 0xc3, 0xce, 0x49, 0x27, 0x77, 0x5e, 0xfe, 0x92, 0x17, 0xd5, - 0xaa, 0x6a, 0x99, 0x92, 0x97, 0x1b, 0x2c, 0x82, 0x31, 0x8c, 0x2a, 0xb2, 0xa5, 0xd6, 0x51, 0xbe, - 0x5c, 0xab, 0xaa, 0x0a, 0x29, 0x46, 0xbe, 0x8f, 0x7a, 0x44, 0xc4, 0xe1, 0x79, 0x9e, 0xb1, 0x14, - 0x8a, 0x20, 0x60, 0xc3, 0x60, 0x02, 0xf8, 0xab, 0xaa, 0xb6, 0x9d, 0xb8, 0x20, 0x78, 0x14, 0x5d, - 0x7e, 0x6d, 0x3b, 0x21, 0x41, 0xf0, 0x84, 0xb7, 0x38, 0x10, 0xb0, 0x2b, 0x1c, 0x5c, 0x04, 0x03, - 0x55, 0x99, 0x9d, 0x34, 0x24, 0xbe, 0xd0, 0x14, 0x4f, 0xe2, 0x67, 0xd3, 0x27, 0x76, 0xd0, 0xfd, - 0xde, 0x30, 0xc8, 0x1f, 0xa2, 0x2d, 0x30, 0xe1, 0x04, 0xaf, 0x82, 0x41, 0xdd, 0x2a, 0x23, 0xcc, - 0xfb, 0x68, 0xea, 0x9b, 0x6b, 0x8a, 0x2f, 0xdd, 0xe1, 0x4e, 0xf1, 0x5c, 0xf4, 0x23, 0x70, 0xb6, - 0x39, 0x0a, 0x7f, 0xf1, 0x83, 0x80, 0x5d, 0x5a, 0xe1, 0x9f, 0xb9, 0x36, 0xc1, 0x7f, 0xc1, 0x35, - 0xc5, 0xf7, 0x38, 0xfc, 0x33, 0x2e, 0xfd, 0x13, 0x6e, 0x2d, 0x96, 0x99, 0x2d, 0x5b, 0x96, 0x61, - 0x66, 0x66, 0x73, 0xa9, 0x5c, 0x2a, 0x96, 0x99, 0x6d, 0x34, 0x1a, 0xb9, 0x64, 0x3c, 0xb3, 0xa9, - 0xd7, 0xac, 0x5a, 0x2c, 0x33, 0xbb, 0x8e, 0x72, 0x64, 0x46, 0xcd, 0xa5, 0x1a, 0xb2, 0x55, 0x28, - 0xe7, 0x32, 0xf5, 0x53, 0xb7, 0x72, 0xc9, 0x75, 0x94, 0x4b, 0xc5, 0x49, 0xce, 0xc8, 0x35, 0x72, - 0x89, 0xfc, 0xf5, 0x69, 0xb2, 0x3e, 0x12, 0x93, 0xab, 0xc6, 0xf3, 0xf1, 0x0c, 0xd9, 0xcb, 0x9c, - 0xba, 0x3e, 0x1d, 0xcf, 0xc4, 0x89, 0xf8, 0x5b, 0xb0, 0xaf, 0xab, 0x55, 0xa4, 0x33, 0xce, 0xb1, - 0xcc, 0x6c, 0xa1, 0x2c, 0x6b, 0x1a, 0xaa, 0x98, 0xf4, 0x21, 0xd7, 0x20, 0x9a, 0x66, 0x6e, 0x95, - 0xb0, 0x5e, 0x33, 0xc8, 0xd6, 0xea, 0x5a, 0x2e, 0x75, 0x7d, 0x3a, 0x9e, 0x4b, 0xd9, 0x2d, 0x42, - 0x2e, 0x75, 0x8b, 0x1c, 0x98, 0x53, 0x66, 0xc8, 0xbf, 0x5b, 0xb9, 0x54, 0x2e, 0x13, 0x77, 0x2d, - 0xfa, 0x77, 0xae, 0xdd, 0xa4, 0x1f, 0x70, 0x4d, 0xf1, 0xd7, 0xdc, 0x1d, 0xee, 0x97, 0x1c, 0xcf, - 0x45, 0xff, 0x05, 0xb5, 0x66, 0xde, 0x5e, 0x01, 0x21, 0xa7, 0x4b, 0x71, 0x87, 0x17, 0xce, 0x33, - 0xbc, 0x3c, 0x0e, 0x02, 0x18, 0x95, 0x48, 0xb1, 0xa6, 0x66, 0x91, 0xd8, 0x13, 0x7c, 0x12, 0xf8, - 0x49, 0xd7, 0xe4, 0xef, 0xee, 0x9a, 0xc8, 0xbe, 0xf0, 0x55, 0x1f, 0x08, 0x7b, 0x9a, 0x16, 0x78, - 0x09, 0x04, 0x4c, 0xb9, 0x88, 0x2c, 0x92, 0xfa, 0x49, 0xd1, 0x3d, 0xb1, 0xfd, 0x86, 0xc7, 0xb3, - 0x96, 0x18, 0x13, 0xb8, 0x06, 0x46, 0x69, 0xaf, 0x93, 0x47, 0xaf, 0xd6, 0x54, 0xa3, 0x8a, 0x34, - 0x8b, 0x8a, 0xb7, 0x6b, 0xbe, 0x23, 0x94, 0x5b, 0xd6, 0x61, 0x26, 0xdc, 0x00, 0xa0, 0x05, 0x25, - 0x76, 0x59, 0xd7, 0x15, 0xa7, 0x6a, 0xd1, 0x35, 0xb5, 0x95, 0x8e, 0xab, 0xee, 0x0d, 0x80, 0x8e, - 0xab, 0x50, 0x00, 0x21, 0xd3, 0x92, 0x35, 0x45, 0xc6, 0xac, 0x68, 0x4a, 0xee, 0xb3, 0xb7, 0xeb, - 0x19, 0x68, 0xeb, 0x7a, 0xa2, 0x7f, 0xe5, 0x00, 0x7f, 0x0e, 0x59, 0xed, 0xb7, 0x14, 0x12, 0x7a, - 0xb5, 0x86, 0x4c, 0x0b, 0x2e, 0x81, 0x51, 0xd9, 0x30, 0x2a, 0x6a, 0xc1, 0xbe, 0x17, 0x50, 0x15, - 0x93, 0xa5, 0xab, 0xae, 0x19, 0xe6, 0x74, 0x0b, 0xcd, 0x33, 0xf8, 0x8b, 0xa4, 0x1d, 0x1a, 0x91, - 0xbd, 0x30, 0xb3, 0x6d, 0x58, 0xf6, 0xed, 0x72, 0x58, 0x3e, 0x09, 0x40, 0xeb, 0x56, 0x88, 0xd5, - 0xbb, 0xee, 0x9a, 0x73, 0x96, 0xa0, 0x5c, 0x92, 0xcd, 0x0d, 0x69, 0xa8, 0xe8, 0x2c, 0xa3, 0x3f, - 0xf6, 0x01, 0xe1, 0xa2, 0x6a, 0x76, 0x68, 0x6c, 0x3e, 0x54, 0x95, 0x0f, 0x82, 0xc1, 0x0a, 0x49, - 0xfa, 0x76, 0x63, 0x49, 0x5b, 0xc5, 0x69, 0x3f, 0xff, 0xa7, 0xa0, 0x64, 0x6f, 0x13, 0x77, 0x1a, - 0x72, 0x09, 0xb1, 0x7b, 0x1a, 0xba, 0x86, 0x67, 0x40, 0x48, 0xc7, 0x0a, 0xc2, 0xf9, 0xf5, 0x4d, - 0xd6, 0xc3, 0xc5, 0x9b, 0xe2, 0x11, 0x3c, 0x25, 0x3d, 0x26, 0xb9, 0xf6, 0x93, 0x86, 0x12, 0xee, - 0x92, 0xbe, 0x30, 0xd2, 0x60, 0x82, 0xfe, 0x0b, 0x52, 0x52, 0x71, 0x13, 0x1e, 0x02, 0x01, 0x13, - 0xc9, 0xb8, 0x50, 0xa6, 0x17, 0x2d, 0x43, 0x62, 0xb0, 0x29, 0x0e, 0x60, 0x1f, 0xaf, 0x48, 0x6c, - 0xbb, 0xc3, 0x92, 0x81, 0x9d, 0x58, 0xf2, 0x5b, 0xbe, 0xf6, 0xd0, 0xa1, 0x31, 0xfe, 0xa9, 0x0f, - 0x1d, 0xef, 0x3d, 0x8b, 0x7f, 0x97, 0xf7, 0x2c, 0xed, 0x46, 0x1b, 0xd8, 0x89, 0xd1, 0xbe, 0xec, - 0xef, 0x08, 0x3f, 0x6a, 0xb5, 0x87, 0x1b, 0x7e, 0x67, 0xbb, 0xcc, 0x36, 0xd3, 0x14, 0x63, 0xf8, - 0x08, 0x3f, 0x95, 0x8e, 0xae, 0xc5, 0xee, 0xa7, 0xf3, 0xad, 0x78, 0xc6, 0x63, 0x3a, 0x37, 0x8c, - 0xfd, 0xf7, 0x0f, 0xe3, 0x01, 0x4f, 0x18, 0x5f, 0xf5, 0x84, 0xb1, 0x1d, 0x82, 0x2f, 0x36, 0xc5, - 0xe7, 0xf1, 0xc9, 0xad, 0xc2, 0xd8, 0x75, 0x8e, 0x34, 0x94, 0x70, 0x97, 0xfd, 0x62, 0x3b, 0xb0, - 0x9d, 0xd8, 0x0e, 0xee, 0xc4, 0x4d, 0x5f, 0xf2, 0x03, 0x78, 0x0e, 0x59, 0xcb, 0xa8, 0x6a, 0x54, - 0x64, 0x0b, 0x3d, 0x54, 0xf7, 0x5c, 0x04, 0x61, 0x96, 0x8d, 0x29, 0x43, 0xbb, 0xc3, 0x9b, 0xd9, - 0xb2, 0x94, 0xb0, 0xd9, 0xc3, 0xc3, 0x55, 0x02, 0x75, 0x67, 0xcf, 0x84, 0x26, 0x78, 0xbc, 0x75, - 0x9d, 0x9d, 0x6f, 0x8d, 0x6f, 0x26, 0x4b, 0x93, 0x2f, 0x76, 0x32, 0xee, 0x56, 0xb3, 0x75, 0xd6, - 0xa2, 0x33, 0xbf, 0xb5, 0xce, 0xda, 0x8b, 0xba, 0x80, 0xa6, 0xa0, 0x83, 0x03, 0xf7, 0xa1, 0x81, - 0x53, 0xde, 0x81, 0x94, 0xa3, 0xc1, 0x43, 0x9c, 0x35, 0xed, 0x8b, 0x71, 0x9e, 0x69, 0x73, 0x1a, - 0x8c, 0x31, 0x2c, 0xcf, 0xd0, 0x69, 0x8f, 0xe2, 0xa3, 0x36, 0xc0, 0x65, 0x1d, 0x6d, 0x72, 0x40, - 0x38, 0x87, 0xac, 0x45, 0x79, 0xb3, 0xa2, 0xcb, 0xca, 0x59, 0x1d, 0x57, 0xe9, 0x38, 0xf2, 0x08, - 0xf9, 0xe9, 0x23, 0x94, 0xb0, 0x15, 0x70, 0xa0, 0x67, 0x05, 0x33, 0x0d, 0x5d, 0x33, 0x11, 0x7c, - 0x06, 0x04, 0xe8, 0xeb, 0x64, 0xb2, 0x6e, 0xe7, 0xe0, 0x96, 0x22, 0xda, 0xc5, 0x9e, 0x61, 0x77, - 0xb1, 0x75, 0x32, 0x53, 0x8b, 0x2d, 0x7d, 0x21, 0xfb, 0xb3, 0xb5, 0x0b, 0x01, 0xc3, 0x8e, 0x7e, - 0x9d, 0x03, 0xfb, 0xb2, 0x1a, 0x99, 0xc9, 0x95, 0x4b, 0xf6, 0x37, 0x14, 0xe6, 0x35, 0xf2, 0x02, - 0x17, 0xf3, 0x86, 0x8e, 0x2d, 0x16, 0x13, 0x2c, 0xa1, 0xfc, 0x83, 0x93, 0x06, 0x8b, 0x8b, 0x3a, - 0xb6, 0xe0, 0x21, 0x10, 0x2e, 0xe2, 0x6a, 0xde, 0xb0, 0xf1, 0xa9, 0xc5, 0xf7, 0x48, 0xa0, 0x88, - 0xab, 0x0e, 0x87, 0x69, 0x10, 0x6a, 0xc8, 0x58, 0x53, 0xb5, 0x92, 0x73, 0x0d, 0x33, 0xd2, 0x14, - 0xc3, 0x77, 0xb8, 0x50, 0x04, 0x44, 0xed, 0x5c, 0xe0, 0xc2, 0xe1, 0x11, 0x10, 0x40, 0x18, 0xeb, - 0xee, 0xc7, 0x8c, 0x4e, 0x4c, 0x06, 0x8d, 0x7e, 0x81, 0x03, 0xfb, 0xce, 0xa0, 0x5e, 0xf2, 0xce, - 0x80, 0x01, 0x45, 0xb6, 0x64, 0x16, 0x4a, 0xfb, 0xbb, 0x9c, 0xb5, 0x44, 0x3f, 0x43, 0x49, 0x14, - 0xa9, 0x4d, 0x34, 0xdf, 0xb6, 0x45, 0xf3, 0xdf, 0x57, 0xb4, 0x0f, 0xfd, 0x60, 0x5f, 0xbb, 0x4c, - 0xb6, 0xa0, 0x18, 0x9e, 0x07, 0x43, 0x45, 0xe7, 0x25, 0xa0, 0xf2, 0x8d, 0xa4, 0x27, 0x3b, 0xfd, - 0xd3, 0xf9, 0xb2, 0x78, 0x2e, 0x52, 0x5b, 0xc4, 0x30, 0x05, 0xf6, 0xba, 0x0f, 0x79, 0x43, 0xc6, - 0xec, 0x4e, 0xc1, 0xee, 0x34, 0xa1, 0x0b, 0x5a, 0x74, 0x20, 0xa4, 0xba, 0x74, 0x5c, 0xd6, 0xec, - 0xac, 0xba, 0xb0, 0xdb, 0x1a, 0xb8, 0x04, 0x42, 0xe8, 0x35, 0xb9, 0x6a, 0xb4, 0xee, 0xc6, 0x12, - 0x9d, 0x1a, 0xf4, 0xd4, 0x3d, 0x99, 0xb5, 0xa9, 0x9c, 0x1b, 0xb8, 0xc8, 0xb8, 0xe4, 0x32, 0x12, - 0xbe, 0xc9, 0x81, 0x20, 0x83, 0xc3, 0xe9, 0xf6, 0x2f, 0x21, 0xf6, 0x54, 0x49, 0x88, 0xb0, 0x9f, - 0x7f, 0x97, 0x6b, 0xff, 0x26, 0xf2, 0x3c, 0x18, 0x54, 0x35, 0xa3, 0xe6, 0x5c, 0xc1, 0xf4, 0xb8, - 0x0c, 0xee, 0x11, 0x20, 0x92, 0x4d, 0x03, 0x4f, 0x81, 0x80, 0x5e, 0xb3, 0x08, 0xb5, 0xbf, 0x37, - 0x75, 0xcf, 0xf0, 0x92, 0x18, 0x51, 0x0f, 0x2f, 0xdb, 0xa7, 0xfd, 0x7b, 0x7a, 0x99, 0xe9, 0xfe, - 0x89, 0x78, 0xb9, 0xb7, 0x9f, 0xb6, 0xeb, 0xe5, 0xde, 0x31, 0xc2, 0x88, 0xa6, 0xff, 0xc8, 0x81, - 0xd1, 0x8e, 0xcf, 0x25, 0x70, 0x06, 0xf0, 0x17, 0xb2, 0x57, 0xf3, 0x8b, 0xd2, 0xe5, 0x2b, 0xf3, - 0x4b, 0xf3, 0x97, 0x17, 0xe6, 0x17, 0xce, 0xe5, 0x57, 0x16, 0x2e, 0x2c, 0x5c, 0x7e, 0x65, 0x21, - 0xf2, 0x98, 0x30, 0x7c, 0xef, 0xee, 0xc4, 0x10, 0x08, 0xd6, 0xb4, 0x0d, 0x4d, 0x6f, 0x68, 0x30, - 0x0e, 0xf6, 0x77, 0x21, 0xcf, 0xad, 0x2c, 0x2d, 0x5f, 0xbe, 0x14, 0xe1, 0x84, 0x3d, 0xf7, 0xee, - 0x4e, 0x84, 0x40, 0xa0, 0x50, 0x33, 0x2d, 0xbd, 0x0a, 0x8f, 0x83, 0x27, 0xba, 0x50, 0x5f, 0xbe, - 0x3c, 0xbf, 0x90, 0x5f, 0xca, 0x4a, 0x57, 0xb2, 0x52, 0xc4, 0x27, 0x8c, 0xdd, 0xbb, 0x3b, 0x31, - 0x0c, 0xc2, 0x37, 0x74, 0x55, 0x9b, 0x34, 0x11, 0xae, 0x23, 0x0c, 0x13, 0x60, 0xa2, 0x8b, 0xe8, - 0xd2, 0xe9, 0x85, 0xf9, 0xb3, 0xd9, 0xa5, 0xe5, 0x88, 0x5f, 0x18, 0xb9, 0x77, 0x77, 0x02, 0x80, - 0x50, 0x55, 0xd6, 0xd4, 0x22, 0x32, 0x2d, 0x81, 0xbf, 0x77, 0x77, 0x62, 0x9c, 0xe7, 0xa6, 0x23, - 0x9d, 0x44, 0xd3, 0x1f, 0x70, 0x20, 0xec, 0xf9, 0x7e, 0x03, 0x8f, 0x82, 0x71, 0x82, 0xb3, 0x94, - 0x9d, 0x5b, 0x91, 0xe6, 0x97, 0xaf, 0x6e, 0xad, 0xe1, 0x53, 0x60, 0xac, 0x0d, 0x71, 0xe1, 0xf2, - 0x42, 0x36, 0xc2, 0x09, 0xe0, 0xde, 0xdd, 0x89, 0x00, 0x19, 0x80, 0x35, 0x04, 0x4f, 0x80, 0x03, - 0x6d, 0x28, 0x52, 0xf6, 0xf4, 0x19, 0x72, 0xfa, 0x72, 0x76, 0x6e, 0x39, 0x7b, 0x26, 0xe2, 0x13, - 0xc6, 0xef, 0xdd, 0x9d, 0x88, 0x80, 0x11, 0x8c, 0x64, 0x65, 0x92, 0x24, 0x6a, 0x54, 0xb0, 0x90, - 0xd2, 0x45, 0x46, 0x17, 0xd9, 0x7c, 0xf6, 0x62, 0xf6, 0x52, 0x76, 0x81, 0x68, 0xc7, 0xc8, 0xe8, - 0x67, 0x29, 0x34, 0x89, 0x2a, 0x88, 0x0e, 0xe6, 0x74, 0x97, 0xe7, 0xa6, 0xf7, 0x78, 0x89, 0xd3, - 0xff, 0xbf, 0x1f, 0x44, 0xec, 0xc2, 0x27, 0xb9, 0x3f, 0xd8, 0x80, 0x6f, 0x71, 0x00, 0x90, 0x6a, - 0x6a, 0xd7, 0x66, 0xd8, 0xf5, 0x89, 0x65, 0xeb, 0x11, 0x54, 0x98, 0xd9, 0x16, 0xae, 0x5d, 0x95, - 0xa3, 0x0b, 0x6f, 0xbc, 0xff, 0x87, 0xcf, 0xfb, 0xce, 0x43, 0x90, 0x52, 0x70, 0xca, 0x2e, 0xe4, - 0xd7, 0x66, 0xe1, 0x73, 0xe4, 0xc9, 0xd3, 0xbe, 0x98, 0xa9, 0x9b, 0x1d, 0xfd, 0x50, 0xb2, 0xfd, - 0xf9, 0x36, 0xa3, 0x85, 0xdf, 0xe1, 0x40, 0xe8, 0x1c, 0xb2, 0xc5, 0x86, 0xb1, 0x1e, 0xbd, 0x62, - 0xcf, 0x9b, 0x02, 0xa1, 0x4f, 0x8f, 0x11, 0x55, 0xa8, 0x98, 0x6b, 0x70, 0x5f, 0x4b, 0xcc, 0xd4, - 0x4d, 0xa7, 0xe9, 0xbf, 0x7d, 0x2d, 0x0b, 0xe7, 0x76, 0x2b, 0xb1, 0x87, 0x0d, 0xfc, 0x8a, 0xcf, - 0x36, 0xba, 0xdd, 0xb9, 0xf4, 0x31, 0x7a, 0xdb, 0xe0, 0xd5, 0xc7, 0xe8, 0xed, 0xad, 0x50, 0xf4, - 0x7b, 0x1c, 0x55, 0xe7, 0xdb, 0x9c, 0x6d, 0x76, 0xbb, 0xd1, 0xb9, 0x76, 0x10, 0x3e, 0xd1, 0x53, - 0x3b, 0x07, 0xbe, 0x2b, 0xb7, 0x30, 0xda, 0x8b, 0xf0, 0xe5, 0x07, 0x60, 0x20, 0xc6, 0x0d, 0xfe, - 0xce, 0x76, 0xb2, 0xfd, 0xe3, 0x85, 0xfb, 0x3a, 0xd9, 0x3b, 0xd3, 0x0b, 0x7d, 0x3a, 0xbe, 0xe8, - 0xff, 0xd9, 0x66, 0x79, 0x83, 0x83, 0x47, 0xef, 0x67, 0x88, 0xd4, 0x4d, 0x67, 0xb0, 0xbb, 0x7d, - 0xed, 0x15, 0xb8, 0xf2, 0xe0, 0xf4, 0xf2, 0x30, 0x86, 0x6f, 0x0e, 0x82, 0xb0, 0x67, 0xb2, 0x81, - 0xd1, 0xfe, 0x63, 0x8f, 0xf0, 0xd4, 0x96, 0xfa, 0x39, 0x98, 0xd1, 0x1f, 0x0d, 0x50, 0x15, 0xdf, - 0x1e, 0x80, 0xb7, 0xbd, 0x2a, 0x7a, 0xe6, 0x82, 0x64, 0xb7, 0x54, 0x5e, 0xa8, 0x2b, 0x61, 0xfb, - 0x76, 0xe7, 0x6f, 0x24, 0x3a, 0xc0, 0xeb, 0x0e, 0x4b, 0x8b, 0x09, 0x72, 0xad, 0x0a, 0x37, 0x88, - 0x00, 0xf6, 0x5c, 0x64, 0xa6, 0x6e, 0xf6, 0x9e, 0xf9, 0x92, 0xee, 0xd8, 0x75, 0x3b, 0xe5, 0x7c, - 0x2a, 0xec, 0x87, 0xdb, 0xda, 0xf2, 0x1c, 0xf7, 0x0d, 0x0e, 0x7e, 0x8d, 0xdb, 0xbd, 0xa7, 0x3e, - 0x7e, 0xfb, 0xbc, 0xc9, 0xc1, 0x2f, 0xee, 0x42, 0xe0, 0x8f, 0xc9, 0x9e, 0xf0, 0x1d, 0x3f, 0x88, - 0x9c, 0x43, 0xd6, 0x8a, 0x51, 0x51, 0xb5, 0x0d, 0xa7, 0x89, 0x9f, 0xee, 0x11, 0xa3, 0x5b, 0x4c, - 0xb8, 0xc2, 0xe1, 0x6d, 0xf5, 0xc6, 0xd1, 0xdf, 0xf8, 0x68, 0xbc, 0xbe, 0xef, 0x83, 0x9f, 0xe1, - 0x3e, 0x91, 0x80, 0x75, 0x5b, 0x49, 0x33, 0x55, 0xa3, 0xca, 0xa6, 0x14, 0x5b, 0xb4, 0x6b, 0xdf, - 0xe7, 0xe0, 0x77, 0x1f, 0x85, 0x90, 0xda, 0x52, 0x03, 0xf8, 0xae, 0x7d, 0x49, 0x74, 0x46, 0x6f, - 0x68, 0x0f, 0xd9, 0x8d, 0xbf, 0xb5, 0xdd, 0xf8, 0x2b, 0x1f, 0xfc, 0xec, 0x27, 0xee, 0x46, 0x85, - 0xa9, 0xeb, 0x3a, 0xf2, 0x87, 0x1c, 0x7c, 0xfb, 0x11, 0x73, 0x64, 0xa7, 0x0e, 0x9d, 0xae, 0x74, - 0x06, 0xae, 0x07, 0xe8, 0x4a, 0xc6, 0xf2, 0xd3, 0xe9, 0x4a, 0xa4, 0x3d, 0xfa, 0xae, 0x64, 0x3a, - 0x88, 0x27, 0x7e, 0xf0, 0xe1, 0x41, 0xee, 0x5a, 0xaa, 0xa4, 0x27, 0xad, 0x32, 0xb2, 0xe8, 0x0f, - 0x94, 0x93, 0x1a, 0xb2, 0x1a, 0x3a, 0xde, 0x48, 0xb5, 0xff, 0x68, 0xb7, 0x7e, 0x3c, 0x65, 0x6c, - 0x94, 0x52, 0x96, 0xa5, 0x19, 0xeb, 0xeb, 0x01, 0x7a, 0x8d, 0x73, 0xfc, 0x9f, 0x01, 0x00, 0x00, - 0xff, 0xff, 0x88, 0xea, 0x7c, 0xec, 0x8e, 0x2d, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// DeviceRepositoryClient is the client API for DeviceRepository service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type DeviceRepositoryClient interface { - ListBrands(ctx context.Context, in *ListEndDeviceBrandsRequest, opts ...grpc.CallOption) (*ListEndDeviceBrandsResponse, error) - GetBrand(ctx context.Context, in *GetEndDeviceBrandRequest, opts ...grpc.CallOption) (*EndDeviceBrand, error) - ListModels(ctx context.Context, in *ListEndDeviceModelsRequest, opts ...grpc.CallOption) (*ListEndDeviceModelsResponse, error) - GetModel(ctx context.Context, in *GetEndDeviceModelRequest, opts ...grpc.CallOption) (*EndDeviceModel, error) - GetTemplate(ctx context.Context, in *GetTemplateRequest, opts ...grpc.CallOption) (*EndDeviceTemplate, error) - GetUplinkDecoder(ctx context.Context, in *GetPayloadFormatterRequest, opts ...grpc.CallOption) (*MessagePayloadDecoder, error) - GetDownlinkDecoder(ctx context.Context, in *GetPayloadFormatterRequest, opts ...grpc.CallOption) (*MessagePayloadDecoder, error) - GetDownlinkEncoder(ctx context.Context, in *GetPayloadFormatterRequest, opts ...grpc.CallOption) (*MessagePayloadEncoder, error) +type EndDeviceModel_Compliances_Compliance struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Body string `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"` + Norm string `protobuf:"bytes,2,opt,name=norm,proto3" json:"norm,omitempty"` + Standard string `protobuf:"bytes,3,opt,name=standard,proto3" json:"standard,omitempty"` + Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` } -type deviceRepositoryClient struct { - cc *grpc.ClientConn +func (x *EndDeviceModel_Compliances_Compliance) Reset() { + *x = EndDeviceModel_Compliances_Compliance{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func NewDeviceRepositoryClient(cc *grpc.ClientConn) DeviceRepositoryClient { - return &deviceRepositoryClient{cc} +func (x *EndDeviceModel_Compliances_Compliance) String() string { + return protoimpl.X.MessageStringOf(x) } -func (c *deviceRepositoryClient) ListBrands(ctx context.Context, in *ListEndDeviceBrandsRequest, opts ...grpc.CallOption) (*ListEndDeviceBrandsResponse, error) { - out := new(ListEndDeviceBrandsResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.DeviceRepository/ListBrands", in, out, opts...) - if err != nil { - return nil, err +func (*EndDeviceModel_Compliances_Compliance) ProtoMessage() {} + +func (x *EndDeviceModel_Compliances_Compliance) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return out, nil + return mi.MessageOf(x) } -func (c *deviceRepositoryClient) GetBrand(ctx context.Context, in *GetEndDeviceBrandRequest, opts ...grpc.CallOption) (*EndDeviceBrand, error) { - out := new(EndDeviceBrand) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.DeviceRepository/GetBrand", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// Deprecated: Use EndDeviceModel_Compliances_Compliance.ProtoReflect.Descriptor instead. +func (*EndDeviceModel_Compliances_Compliance) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{1, 8, 0} } -func (c *deviceRepositoryClient) ListModels(ctx context.Context, in *ListEndDeviceModelsRequest, opts ...grpc.CallOption) (*ListEndDeviceModelsResponse, error) { - out := new(ListEndDeviceModelsResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.DeviceRepository/ListModels", in, out, opts...) - if err != nil { - return nil, err +func (x *EndDeviceModel_Compliances_Compliance) GetBody() string { + if x != nil { + return x.Body } - return out, nil + return "" } -func (c *deviceRepositoryClient) GetModel(ctx context.Context, in *GetEndDeviceModelRequest, opts ...grpc.CallOption) (*EndDeviceModel, error) { - out := new(EndDeviceModel) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.DeviceRepository/GetModel", in, out, opts...) - if err != nil { - return nil, err +func (x *EndDeviceModel_Compliances_Compliance) GetNorm() string { + if x != nil { + return x.Norm } - return out, nil + return "" } -func (c *deviceRepositoryClient) GetTemplate(ctx context.Context, in *GetTemplateRequest, opts ...grpc.CallOption) (*EndDeviceTemplate, error) { - out := new(EndDeviceTemplate) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.DeviceRepository/GetTemplate", in, out, opts...) - if err != nil { - return nil, err +func (x *EndDeviceModel_Compliances_Compliance) GetStandard() string { + if x != nil { + return x.Standard } - return out, nil + return "" } -func (c *deviceRepositoryClient) GetUplinkDecoder(ctx context.Context, in *GetPayloadFormatterRequest, opts ...grpc.CallOption) (*MessagePayloadDecoder, error) { - out := new(MessagePayloadDecoder) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.DeviceRepository/GetUplinkDecoder", in, out, opts...) - if err != nil { - return nil, err +func (x *EndDeviceModel_Compliances_Compliance) GetVersion() string { + if x != nil { + return x.Version } - return out, nil + return "" } -func (c *deviceRepositoryClient) GetDownlinkDecoder(ctx context.Context, in *GetPayloadFormatterRequest, opts ...grpc.CallOption) (*MessagePayloadDecoder, error) { - out := new(MessagePayloadDecoder) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.DeviceRepository/GetDownlinkDecoder", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// Identifiers to uniquely identify a LoRaWAN end device profile. +type GetTemplateRequest_EndDeviceProfileIdentifiers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // VendorID managed by the LoRa Alliance, as defined in TR005. + VendorId uint32 `protobuf:"varint,1,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"` + // ID of the LoRaWAN end device profile assigned by the vendor. + VendorProfileId uint32 `protobuf:"varint,2,opt,name=vendor_profile_id,json=vendorProfileId,proto3" json:"vendor_profile_id,omitempty"` } -func (c *deviceRepositoryClient) GetDownlinkEncoder(ctx context.Context, in *GetPayloadFormatterRequest, opts ...grpc.CallOption) (*MessagePayloadEncoder, error) { - out := new(MessagePayloadEncoder) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.DeviceRepository/GetDownlinkEncoder", in, out, opts...) - if err != nil { - return nil, err +func (x *GetTemplateRequest_EndDeviceProfileIdentifiers) Reset() { + *x = GetTemplateRequest_EndDeviceProfileIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return out, nil } -// DeviceRepositoryServer is the server API for DeviceRepository service. -type DeviceRepositoryServer interface { - ListBrands(context.Context, *ListEndDeviceBrandsRequest) (*ListEndDeviceBrandsResponse, error) - GetBrand(context.Context, *GetEndDeviceBrandRequest) (*EndDeviceBrand, error) - ListModels(context.Context, *ListEndDeviceModelsRequest) (*ListEndDeviceModelsResponse, error) - GetModel(context.Context, *GetEndDeviceModelRequest) (*EndDeviceModel, error) - GetTemplate(context.Context, *GetTemplateRequest) (*EndDeviceTemplate, error) - GetUplinkDecoder(context.Context, *GetPayloadFormatterRequest) (*MessagePayloadDecoder, error) - GetDownlinkDecoder(context.Context, *GetPayloadFormatterRequest) (*MessagePayloadDecoder, error) - GetDownlinkEncoder(context.Context, *GetPayloadFormatterRequest) (*MessagePayloadEncoder, error) +func (x *GetTemplateRequest_EndDeviceProfileIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -// UnimplementedDeviceRepositoryServer can be embedded to have forward compatible implementations. -type UnimplementedDeviceRepositoryServer struct { -} +func (*GetTemplateRequest_EndDeviceProfileIdentifiers) ProtoMessage() {} -func (*UnimplementedDeviceRepositoryServer) ListBrands(ctx context.Context, req *ListEndDeviceBrandsRequest) (*ListEndDeviceBrandsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBrands not implemented") +func (x *GetTemplateRequest_EndDeviceProfileIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (*UnimplementedDeviceRepositoryServer) GetBrand(ctx context.Context, req *GetEndDeviceBrandRequest) (*EndDeviceBrand, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetBrand not implemented") + +// Deprecated: Use GetTemplateRequest_EndDeviceProfileIdentifiers.ProtoReflect.Descriptor instead. +func (*GetTemplateRequest_EndDeviceProfileIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{6, 0} } -func (*UnimplementedDeviceRepositoryServer) ListModels(ctx context.Context, req *ListEndDeviceModelsRequest) (*ListEndDeviceModelsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListModels not implemented") + +func (x *GetTemplateRequest_EndDeviceProfileIdentifiers) GetVendorId() uint32 { + if x != nil { + return x.VendorId + } + return 0 } -func (*UnimplementedDeviceRepositoryServer) GetModel(ctx context.Context, req *GetEndDeviceModelRequest) (*EndDeviceModel, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetModel not implemented") + +func (x *GetTemplateRequest_EndDeviceProfileIdentifiers) GetVendorProfileId() uint32 { + if x != nil { + return x.VendorProfileId + } + return 0 } -func (*UnimplementedDeviceRepositoryServer) GetTemplate(ctx context.Context, req *GetTemplateRequest) (*EndDeviceTemplate, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetTemplate not implemented") + +type MessagePayloadDecoder_Example struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` + Input *EncodedMessagePayload `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` + Output *DecodedMessagePayload `protobuf:"bytes,3,opt,name=output,proto3" json:"output,omitempty"` } -func (*UnimplementedDeviceRepositoryServer) GetUplinkDecoder(ctx context.Context, req *GetPayloadFormatterRequest) (*MessagePayloadDecoder, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetUplinkDecoder not implemented") + +func (x *MessagePayloadDecoder_Example) Reset() { + *x = MessagePayloadDecoder_Example{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (*UnimplementedDeviceRepositoryServer) GetDownlinkDecoder(ctx context.Context, req *GetPayloadFormatterRequest) (*MessagePayloadDecoder, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetDownlinkDecoder not implemented") + +func (x *MessagePayloadDecoder_Example) String() string { + return protoimpl.X.MessageStringOf(x) } -func (*UnimplementedDeviceRepositoryServer) GetDownlinkEncoder(ctx context.Context, req *GetPayloadFormatterRequest) (*MessagePayloadEncoder, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetDownlinkEncoder not implemented") + +func (*MessagePayloadDecoder_Example) ProtoMessage() {} + +func (x *MessagePayloadDecoder_Example) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func RegisterDeviceRepositoryServer(s *grpc.Server, srv DeviceRepositoryServer) { - s.RegisterService(&_DeviceRepository_serviceDesc, srv) +// Deprecated: Use MessagePayloadDecoder_Example.ProtoReflect.Descriptor instead. +func (*MessagePayloadDecoder_Example) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{12, 0} } -func _DeviceRepository_ListBrands_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListEndDeviceBrandsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceRepositoryServer).ListBrands(ctx, in) +func (x *MessagePayloadDecoder_Example) GetDescription() string { + if x != nil { + return x.Description } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.DeviceRepository/ListBrands", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceRepositoryServer).ListBrands(ctx, req.(*ListEndDeviceBrandsRequest)) - } - return interceptor(ctx, in, info, handler) + return "" } -func _DeviceRepository_GetBrand_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetEndDeviceBrandRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceRepositoryServer).GetBrand(ctx, in) +func (x *MessagePayloadDecoder_Example) GetInput() *EncodedMessagePayload { + if x != nil { + return x.Input } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.DeviceRepository/GetBrand", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceRepositoryServer).GetBrand(ctx, req.(*GetEndDeviceBrandRequest)) - } - return interceptor(ctx, in, info, handler) + return nil } -func _DeviceRepository_ListModels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListEndDeviceModelsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceRepositoryServer).ListModels(ctx, in) +func (x *MessagePayloadDecoder_Example) GetOutput() *DecodedMessagePayload { + if x != nil { + return x.Output } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.DeviceRepository/ListModels", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceRepositoryServer).ListModels(ctx, req.(*ListEndDeviceModelsRequest)) - } - return interceptor(ctx, in, info, handler) + return nil } -func _DeviceRepository_GetModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetEndDeviceModelRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceRepositoryServer).GetModel(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.DeviceRepository/GetModel", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceRepositoryServer).GetModel(ctx, req.(*GetEndDeviceModelRequest)) - } - return interceptor(ctx, in, info, handler) +type MessagePayloadEncoder_Example struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` + Input *DecodedMessagePayload `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` + Output *EncodedMessagePayload `protobuf:"bytes,3,opt,name=output,proto3" json:"output,omitempty"` } -func _DeviceRepository_GetTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTemplateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceRepositoryServer).GetTemplate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.DeviceRepository/GetTemplate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceRepositoryServer).GetTemplate(ctx, req.(*GetTemplateRequest)) +func (x *MessagePayloadEncoder_Example) Reset() { + *x = MessagePayloadEncoder_Example{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return interceptor(ctx, in, info, handler) } -func _DeviceRepository_GetUplinkDecoder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetPayloadFormatterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceRepositoryServer).GetUplinkDecoder(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.DeviceRepository/GetUplinkDecoder", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceRepositoryServer).GetUplinkDecoder(ctx, req.(*GetPayloadFormatterRequest)) - } - return interceptor(ctx, in, info, handler) +func (x *MessagePayloadEncoder_Example) String() string { + return protoimpl.X.MessageStringOf(x) } -func _DeviceRepository_GetDownlinkDecoder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetPayloadFormatterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceRepositoryServer).GetDownlinkDecoder(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.DeviceRepository/GetDownlinkDecoder", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceRepositoryServer).GetDownlinkDecoder(ctx, req.(*GetPayloadFormatterRequest)) +func (*MessagePayloadEncoder_Example) ProtoMessage() {} + +func (x *MessagePayloadEncoder_Example) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_devicerepository_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return interceptor(ctx, in, info, handler) + return mi.MessageOf(x) } -func _DeviceRepository_GetDownlinkEncoder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetPayloadFormatterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceRepositoryServer).GetDownlinkEncoder(ctx, in) +// Deprecated: Use MessagePayloadEncoder_Example.ProtoReflect.Descriptor instead. +func (*MessagePayloadEncoder_Example) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_devicerepository_proto_rawDescGZIP(), []int{13, 0} +} + +func (x *MessagePayloadEncoder_Example) GetDescription() string { + if x != nil { + return x.Description } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.DeviceRepository/GetDownlinkEncoder", + return "" +} + +func (x *MessagePayloadEncoder_Example) GetInput() *DecodedMessagePayload { + if x != nil { + return x.Input } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceRepositoryServer).GetDownlinkEncoder(ctx, req.(*GetPayloadFormatterRequest)) + return nil +} + +func (x *MessagePayloadEncoder_Example) GetOutput() *EncodedMessagePayload { + if x != nil { + return x.Output } - return interceptor(ctx, in, info, handler) + return nil } -var _DeviceRepository_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.DeviceRepository", - HandlerType: (*DeviceRepositoryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListBrands", - Handler: _DeviceRepository_ListBrands_Handler, - }, - { - MethodName: "GetBrand", - Handler: _DeviceRepository_GetBrand_Handler, - }, - { - MethodName: "ListModels", - Handler: _DeviceRepository_ListModels_Handler, - }, - { - MethodName: "GetModel", - Handler: _DeviceRepository_GetModel_Handler, - }, - { - MethodName: "GetTemplate", - Handler: _DeviceRepository_GetTemplate_Handler, - }, - { - MethodName: "GetUplinkDecoder", - Handler: _DeviceRepository_GetUplinkDecoder_Handler, - }, - { - MethodName: "GetDownlinkDecoder", - Handler: _DeviceRepository_GetDownlinkDecoder_Handler, - }, - { - MethodName: "GetDownlinkEncoder", - Handler: _DeviceRepository_GetDownlinkEncoder_Handler, +var File_lorawan_stack_api_devicerepository_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_devicerepository_proto_rawDesc = []byte{ + 0x0a, 0x28, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd2, 0x03, 0x0a, 0x0e, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x42, 0x0a, + 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, + 0x5f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x17, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x5f, 0x0a, 0x1f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x92, + 0x01, 0x11, 0x22, 0x0f, 0x72, 0x0d, 0x32, 0x0b, 0x5b, 0x30, 0x2d, 0x39, 0x41, 0x2d, 0x46, 0x5d, + 0x7b, 0x36, 0x7d, 0x52, 0x1d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x6c, 0x6f, 0x72, 0x61, 0x5f, 0x61, 0x6c, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x14, 0x6c, 0x6f, 0x72, 0x61, 0x41, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x07, 0x77, 0x65, 0x62, + 0x73, 0x69, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, + 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, + 0x12, 0x20, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x60, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x12, 0x4b, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x37, 0xfa, 0x42, 0x34, 0x72, 0x32, 0x32, 0x30, 0x5e, 0x24, 0x7c, 0x5e, 0x28, 0x28, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5d, 0x2b, 0x5c, 0x2f, 0x29, 0x2b, 0x29, 0x3f, 0x28, + 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x5c, 0x2e, 0x29, 0x2b, 0x28, + 0x70, 0x6e, 0x67, 0x7c, 0x73, 0x76, 0x67, 0x29, 0x24, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x22, + 0xcb, 0x1d, 0x0a, 0x0e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x12, 0x42, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, + 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x62, + 0x72, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, + 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, + 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, + 0x24, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x5b, 0x0a, 0x11, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x48, 0x61, 0x72, 0x64, + 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x68, 0x61, 0x72, + 0x64, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5b, 0x0a, + 0x11, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, + 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, + 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, 0x07, 0x73, 0x65, + 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x92, 0x01, 0x02, 0x18, 0x01, 0x52, 0x07, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x49, + 0x0a, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x64, + 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x77, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x40, + 0x0a, 0x07, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, + 0x42, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x52, 0x07, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, + 0x12, 0x65, 0x0a, 0x14, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x70, 0x5f, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x70, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x5b, 0x0a, 0x10, 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x42, 0x0f, 0xfa, 0x42, 0x0c, + 0x92, 0x01, 0x09, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6b, 0x65, + 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x48, 0x0a, + 0x0c, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x6b, 0x65, 0x79, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x68, 0x6f, 0x74, 0x6f, + 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x52, 0x06, + 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x12, 0x3d, 0x0a, 0x06, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x52, 0x06, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x73, 0x12, 0x2c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, + 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x55, 0x72, 0x6c, 0x12, 0x30, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x73, 0x68, 0x65, 0x65, 0x74, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, + 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x73, 0x68, 0x65, + 0x65, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x45, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, + 0x72, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, + 0x72, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x4c, 0x0a, 0x0b, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x0b, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x11, 0x61, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x73, 0x18, + 0x15, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x18, 0x01, 0x52, + 0x10, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, 0x6f, + 0x73, 0x1a, 0x66, 0x0a, 0x0f, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, + 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x07, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, + 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0xf2, 0x04, 0x0a, 0x0f, 0x46, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x65, 0x72, + 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, + 0x63, 0x12, 0x48, 0x0a, 0x1b, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x68, + 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x18, 0x01, + 0x52, 0x19, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x48, 0x61, 0x72, 0x64, 0x77, + 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x46, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x91, 0x02, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x12, 0x47, 0x0a, 0x09, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, + 0x24, 0x7c, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, + 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, + 0x52, 0x08, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x0a, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, + 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, 0x24, 0x7c, 0x5e, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x10, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x12, 0x45, 0x0a, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, + 0x24, 0x7c, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, + 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, + 0x52, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x49, 0x64, 0x1a, 0x73, 0x0a, 0x0d, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x46, 0x69, 0x72, 0x6d, + 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xe2, + 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, + 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, + 0x12, 0x33, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x0a, 0x08, 0x64, 0x69, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x64, 0x69, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x33, + 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x1a, 0x5b, 0x0a, 0x07, 0x42, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x3c, + 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x1a, 0xc2, 0x02, 0x0a, 0x13, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5b, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x66, 0x0a, 0x11, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x68, 0x75, 0x6d, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x39, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x10, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x76, 0x65, 0x48, 0x75, 0x6d, 0x69, 0x64, 0x69, 0x74, 0x79, 0x1a, 0x66, 0x0a, + 0x06, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x2d, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x03, 0x6d, 0x61, 0x78, 0x1a, 0xb5, 0x01, 0x0a, 0x06, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x73, + 0x12, 0x50, 0x0a, 0x04, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, + 0xfa, 0x42, 0x39, 0x72, 0x37, 0x32, 0x35, 0x5e, 0x24, 0x7c, 0x5e, 0x28, 0x28, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5d, 0x2b, 0x5c, 0x2f, 0x29, 0x2b, 0x29, 0x3f, 0x28, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x5c, 0x2e, 0x29, 0x2b, 0x28, 0x70, 0x6e, + 0x67, 0x7c, 0x6a, 0x70, 0x67, 0x7c, 0x6a, 0x70, 0x65, 0x67, 0x29, 0x24, 0x52, 0x04, 0x6d, 0x61, + 0x69, 0x6e, 0x12, 0x59, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x42, 0x43, 0xfa, 0x42, 0x40, 0x92, 0x01, 0x3d, 0x18, 0x01, 0x22, 0x39, 0x72, 0x37, 0x32, + 0x35, 0x5e, 0x24, 0x7c, 0x5e, 0x28, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5d, + 0x2b, 0x5c, 0x2f, 0x29, 0x2b, 0x29, 0x3f, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, + 0x2d, 0x5d, 0x2b, 0x5c, 0x2e, 0x29, 0x2b, 0x28, 0x70, 0x6e, 0x67, 0x7c, 0x6a, 0x70, 0x67, 0x7c, + 0x6a, 0x70, 0x65, 0x67, 0x29, 0x24, 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x1a, 0xeb, 0x03, + 0x0a, 0x06, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x12, 0xe9, 0x01, 0x0a, 0x04, 0x6d, 0x61, 0x69, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0xd4, 0x01, 0xfa, 0x42, 0xd0, 0x01, 0x72, 0xcd, + 0x01, 0x32, 0xca, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3f, 0x3a, 0x5c, + 0x2f, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x77, 0x77, 0x77, 0x5c, 0x2e, 0x29, 0x3f, 0x79, 0x6f, 0x75, + 0x74, 0x75, 0x28, 0x3f, 0x3a, 0x62, 0x65, 0x5c, 0x2e, 0x63, 0x6f, 0x6d, 0x5c, 0x2f, 0x77, 0x61, + 0x74, 0x63, 0x68, 0x5c, 0x3f, 0x76, 0x3d, 0x7c, 0x5c, 0x2e, 0x62, 0x65, 0x5c, 0x2f, 0x29, 0x28, + 0x3f, 0x3a, 0x5b, 0x5c, 0x77, 0x5c, 0x2d, 0x5f, 0x5d, 0x2a, 0x29, 0x28, 0x3f, 0x3a, 0x26, 0x28, + 0x61, 0x6d, 0x70, 0x3b, 0x29, 0x3f, 0x5b, 0x5c, 0x77, 0x5c, 0x3f, 0x3d, 0x5d, 0x2a, 0x29, 0x3f, + 0x29, 0x24, 0x7c, 0x5e, 0x28, 0x3f, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3f, 0x3a, 0x5c, 0x2f, + 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x77, 0x77, 0x77, 0x5c, 0x2e, 0x29, 0x3f, 0x76, 0x69, 0x6d, 0x65, + 0x6f, 0x5c, 0x2e, 0x63, 0x6f, 0x6d, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x73, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x5c, 0x77, 0x2b, 0x5c, 0x2f, 0x29, 0x3f, 0x7c, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x5c, 0x2f, 0x28, 0x5b, 0x5e, 0x5c, 0x2f, 0x5d, 0x2a, 0x29, + 0x5c, 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x5c, 0x2f, 0x7c, 0x29, 0x28, 0x3f, 0x3a, 0x5c, + 0x64, 0x2b, 0x29, 0x28, 0x3f, 0x3a, 0x7c, 0x5c, 0x2f, 0x5c, 0x3f, 0x29, 0x29, 0x24, 0x52, 0x04, + 0x6d, 0x61, 0x69, 0x6e, 0x12, 0xf4, 0x01, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x42, 0xdd, 0x01, 0xfa, 0x42, 0xd9, 0x01, 0x92, 0x01, 0xd5, 0x01, 0x18, + 0x01, 0x22, 0xd0, 0x01, 0x72, 0xcd, 0x01, 0x32, 0xca, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3f, 0x3a, 0x5c, 0x2f, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x77, 0x77, 0x77, 0x5c, + 0x2e, 0x29, 0x3f, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x28, 0x3f, 0x3a, 0x62, 0x65, 0x5c, 0x2e, 0x63, + 0x6f, 0x6d, 0x5c, 0x2f, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5c, 0x3f, 0x76, 0x3d, 0x7c, 0x5c, 0x2e, + 0x62, 0x65, 0x5c, 0x2f, 0x29, 0x28, 0x3f, 0x3a, 0x5b, 0x5c, 0x77, 0x5c, 0x2d, 0x5f, 0x5d, 0x2a, + 0x29, 0x28, 0x3f, 0x3a, 0x26, 0x28, 0x61, 0x6d, 0x70, 0x3b, 0x29, 0x3f, 0x5b, 0x5c, 0x77, 0x5c, + 0x3f, 0x3d, 0x5d, 0x2a, 0x29, 0x3f, 0x29, 0x24, 0x7c, 0x5e, 0x28, 0x3f, 0x3a, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3f, 0x3a, 0x5c, 0x2f, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x77, 0x77, 0x77, 0x5c, 0x2e, + 0x29, 0x3f, 0x76, 0x69, 0x6d, 0x65, 0x6f, 0x5c, 0x2e, 0x63, 0x6f, 0x6d, 0x5c, 0x2f, 0x28, 0x3f, + 0x3a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x5c, 0x77, + 0x2b, 0x5c, 0x2f, 0x29, 0x3f, 0x7c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x5c, 0x2f, 0x28, 0x5b, + 0x5e, 0x5c, 0x2f, 0x5d, 0x2a, 0x29, 0x5c, 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x5c, 0x2f, + 0x7c, 0x29, 0x28, 0x3f, 0x3a, 0x5c, 0x64, 0x2b, 0x29, 0x28, 0x3f, 0x3a, 0x7c, 0x5c, 0x2f, 0x5c, + 0x3f, 0x29, 0x29, 0x24, 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x1a, 0x55, 0x0a, 0x08, 0x52, + 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x1a, 0xa8, 0x02, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x06, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x73, 0x61, 0x66, 0x65, 0x74, + 0x79, 0x12, 0x5e, 0x0a, 0x0f, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x5f, 0x65, 0x71, 0x75, 0x69, 0x70, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, + 0x69, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x52, 0x0e, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, + 0x74, 0x1a, 0x6a, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, + 0x6f, 0x64, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x6e, 0x64, + 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x61, 0x6e, 0x64, + 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xee, 0x01, + 0x0a, 0x18, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, + 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, + 0x42, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x62, 0x72, 0x61, 0x6e, + 0x64, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xc7, + 0x02, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x42, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, + 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x02, + 0x18, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, + 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xfa, 0x42, 0x26, 0x72, 0x24, 0x52, + 0x00, 0x52, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x52, 0x09, 0x2d, 0x62, 0x72, + 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, + 0x61, 0x6d, 0x65, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x1f, 0x0a, 0x06, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x39, 0x0a, + 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xb2, 0x02, 0x0a, 0x18, 0x47, 0x65, 0x74, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x08, 0x62, 0x72, + 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, + 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, + 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x42, + 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xa4, 0x03, + 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x73, 0x12, 0x46, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x2b, 0xfa, 0x42, 0x28, 0x72, 0x26, 0x18, 0x24, 0x32, 0x22, 0x5e, 0x28, + 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x7c, 0x29, 0x3f, 0x24, + 0x52, 0x07, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, + 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x59, 0x0a, + 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x3e, 0xfa, 0x42, 0x3b, 0x72, 0x39, 0x52, 0x00, 0x52, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, + 0x69, 0x64, 0x52, 0x09, 0x2d, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x52, 0x08, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x52, 0x09, 0x2d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, + 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, + 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, + 0x64, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x9d, 0x03, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, + 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x73, + 0x0a, 0x16, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x13, + 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x49, 0x64, 0x73, 0x1a, 0x6f, 0x0a, 0x1b, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x12, 0x24, 0x0a, 0x09, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x28, 0x01, 0x52, 0x08, + 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x65, 0x6e, 0x64, + 0x6f, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x49, 0x64, 0x22, 0xfa, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x22, 0x55, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x36, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, + 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x22, 0x55, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x22, + 0xad, 0x01, 0x0a, 0x15, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1f, 0x0a, 0x06, 0x66, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, + 0x18, 0xff, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, + 0x6d, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0a, 0x66, 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2a, 0x0a, 0x08, 0x77, + 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, + 0x42, 0x0b, 0x92, 0x01, 0x08, 0x10, 0x0a, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x08, 0x77, + 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x10, + 0x0a, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, + 0x98, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, + 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, + 0x10, 0x0a, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x10, 0x0a, 0x22, 0x04, 0x72, 0x02, + 0x18, 0x64, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0xe3, 0x03, 0x0a, 0x15, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x63, + 0x6f, 0x64, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x12, 0x2f, + 0x0a, 0x13, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, + 0x46, 0x0a, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x2b, 0xfa, 0x42, 0x28, 0x72, 0x26, 0x18, 0x24, 0x32, 0x22, 0x5e, 0x28, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x7c, 0x29, 0x3f, 0x24, 0x52, 0x07, + 0x63, 0x6f, 0x64, 0x65, 0x63, 0x49, 0x64, 0x12, 0x53, 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, + 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, + 0x10, 0x14, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x1a, 0xb1, 0x01, 0x0a, + 0x07, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x22, 0xe3, 0x03, 0x0a, 0x15, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x09, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x13, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x12, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xfa, 0x42, 0x28, 0x72, 0x26, 0x18, 0x24, + 0x32, 0x22, 0x5e, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, + 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, + 0x7c, 0x29, 0x3f, 0x24, 0x52, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x49, 0x64, 0x12, 0x53, 0x0a, + 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, + 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x14, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x73, 0x1a, 0xb1, 0x01, 0x0a, 0x07, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x2a, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x05, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, + 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x06, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2a, 0xe7, 0x01, 0x0a, 0x0f, 0x4b, 0x65, 0x79, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x2b, 0x0a, 0x18, 0x4b, 0x45, + 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x0a, 0x07, + 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x29, 0x0a, 0x17, 0x4b, 0x45, 0x59, 0x5f, 0x50, + 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x55, 0x53, 0x54, + 0x4f, 0x4d, 0x10, 0x01, 0x1a, 0x0c, 0xea, 0xaa, 0x19, 0x08, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x12, 0x33, 0x0a, 0x1c, 0x4b, 0x45, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, + 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x53, 0x45, 0x52, 0x56, + 0x45, 0x52, 0x10, 0x02, 0x1a, 0x11, 0xea, 0xaa, 0x19, 0x0d, 0x0a, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, + 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x19, 0x4b, 0x45, 0x59, 0x5f, 0x50, + 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x41, 0x4e, 0x49, + 0x46, 0x45, 0x53, 0x54, 0x10, 0x03, 0x1a, 0x0e, 0xea, 0xaa, 0x19, 0x0a, 0x0a, 0x08, 0x6d, 0x61, + 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x1a, 0x18, 0xea, 0xaa, 0x19, 0x14, 0x18, 0x01, 0x2a, 0x10, + 0x4b, 0x45, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x47, + 0x2a, 0xdd, 0x01, 0x0a, 0x0b, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x12, 0x27, 0x0a, 0x14, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, + 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, + 0x0a, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x21, 0x0a, 0x11, 0x4b, 0x45, 0x59, + 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, + 0x1a, 0x0a, 0xea, 0xaa, 0x19, 0x06, 0x0a, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x12, 0x35, 0x0a, 0x1b, + 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x41, + 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x02, 0x1a, 0x14, 0xea, + 0xaa, 0x19, 0x10, 0x0a, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x1b, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, + 0x49, 0x54, 0x59, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x45, 0x4c, 0x45, 0x4d, 0x45, + 0x4e, 0x54, 0x10, 0x03, 0x1a, 0x14, 0xea, 0xaa, 0x19, 0x10, 0x0a, 0x0e, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x65, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x14, 0xea, 0xaa, 0x19, 0x10, + 0x18, 0x01, 0x2a, 0x0c, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, + 0x32, 0x8c, 0x17, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0xb5, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, + 0x61, 0x6e, 0x64, 0x73, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, + 0x72, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x12, 0x0a, 0x2f, 0x64, 0x72, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, + 0x73, 0x5a, 0x3a, 0x12, 0x38, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x12, 0xba, 0x01, + 0x0a, 0x08, 0x47, 0x65, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, + 0x72, 0x61, 0x6e, 0x64, 0x22, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5e, 0x12, 0x15, 0x2f, 0x64, + 0x72, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, + 0x69, 0x64, 0x7d, 0x5a, 0x45, 0x12, 0x43, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, + 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa5, 0x02, 0x0a, 0x0a, 0x4c, + 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xbd, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb6, 0x01, 0x12, 0x0a, 0x2f, 0x64, + 0x72, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x5a, 0x1e, 0x12, 0x1c, 0x2f, 0x64, 0x72, 0x2f, + 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x5a, 0x3a, 0x12, 0x38, 0x2f, 0x64, 0x72, 0x2f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x73, 0x5a, 0x4c, 0x12, 0x4a, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, + 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x73, 0x12, 0xe0, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, + 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x89, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x82, 0x01, 0x12, 0x27, 0x2f, 0x64, 0x72, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, + 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x73, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x5a, 0x57, 0x12, 0x55, + 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9c, 0x05, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0xc5, 0x04, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0xbe, 0x04, 0x12, 0x7d, 0x2f, 0x64, 0x72, 0x2f, 0x62, 0x72, 0x61, 0x6e, + 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, + 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, + 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5a, 0x6d, 0x12, 0x6b, 0x2f, 0x64, 0x72, 0x2f, 0x76, 0x65, 0x6e, + 0x64, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x65, 0x6e, + 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5a, 0xae, 0x01, 0x12, 0xab, 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, + 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, + 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, + 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5a, 0x9c, 0x01, 0x12, 0x99, 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x76, 0x65, 0x6e, + 0x64, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x65, 0x6e, + 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x12, 0xc2, 0x03, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x55, 0x70, 0x6c, 0x69, + 0x6e, 0x6b, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x22, 0xda, 0x02, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0xd3, 0x02, 0x12, 0x8e, 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x62, 0x72, 0x61, + 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x2f, + 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x5a, 0xbf, 0x01, 0x12, 0xbc, 0x01, 0x2f, 0x64, 0x72, + 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, + 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x75, 0x70, 0x6c, 0x69, 0x6e, + 0x6b, 0x2f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0xc8, 0x03, 0x0a, 0x12, 0x47, 0x65, + 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, + 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x63, 0x6f, + 0x64, 0x65, 0x72, 0x22, 0xde, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd7, 0x02, 0x12, 0x90, 0x01, + 0x2f, 0x64, 0x72, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, + 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x2f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, + 0x5a, 0xc1, 0x01, 0x12, 0xbe, 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x72, 0x61, 0x6e, + 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, + 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x73, 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x2f, 0x64, 0x65, 0x63, + 0x6f, 0x64, 0x65, 0x72, 0x12, 0xc8, 0x03, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x44, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x22, 0xde, + 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd7, 0x02, 0x12, 0x90, 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x62, + 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x5a, 0xc1, 0x01, 0x12, 0xbe, + 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, + 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x42, + 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, + 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_devicerepository_proto_rawDescOnce sync.Once + file_lorawan_stack_api_devicerepository_proto_rawDescData = file_lorawan_stack_api_devicerepository_proto_rawDesc +) + +func file_lorawan_stack_api_devicerepository_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_devicerepository_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_devicerepository_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_devicerepository_proto_rawDescData) + }) + return file_lorawan_stack_api_devicerepository_proto_rawDescData +} + +var file_lorawan_stack_api_devicerepository_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_lorawan_stack_api_devicerepository_proto_msgTypes = make([]protoimpl.MessageInfo, 30) +var file_lorawan_stack_api_devicerepository_proto_goTypes = []interface{}{ + (KeyProvisioning)(0), // 0: ttn.lorawan.v3.KeyProvisioning + (KeySecurity)(0), // 1: ttn.lorawan.v3.KeySecurity + (*EndDeviceBrand)(nil), // 2: ttn.lorawan.v3.EndDeviceBrand + (*EndDeviceModel)(nil), // 3: ttn.lorawan.v3.EndDeviceModel + (*GetEndDeviceBrandRequest)(nil), // 4: ttn.lorawan.v3.GetEndDeviceBrandRequest + (*ListEndDeviceBrandsRequest)(nil), // 5: ttn.lorawan.v3.ListEndDeviceBrandsRequest + (*GetEndDeviceModelRequest)(nil), // 6: ttn.lorawan.v3.GetEndDeviceModelRequest + (*ListEndDeviceModelsRequest)(nil), // 7: ttn.lorawan.v3.ListEndDeviceModelsRequest + (*GetTemplateRequest)(nil), // 8: ttn.lorawan.v3.GetTemplateRequest + (*GetPayloadFormatterRequest)(nil), // 9: ttn.lorawan.v3.GetPayloadFormatterRequest + (*ListEndDeviceBrandsResponse)(nil), // 10: ttn.lorawan.v3.ListEndDeviceBrandsResponse + (*ListEndDeviceModelsResponse)(nil), // 11: ttn.lorawan.v3.ListEndDeviceModelsResponse + (*EncodedMessagePayload)(nil), // 12: ttn.lorawan.v3.EncodedMessagePayload + (*DecodedMessagePayload)(nil), // 13: ttn.lorawan.v3.DecodedMessagePayload + (*MessagePayloadDecoder)(nil), // 14: ttn.lorawan.v3.MessagePayloadDecoder + (*MessagePayloadEncoder)(nil), // 15: ttn.lorawan.v3.MessagePayloadEncoder + (*EndDeviceModel_HardwareVersion)(nil), // 16: ttn.lorawan.v3.EndDeviceModel.HardwareVersion + (*EndDeviceModel_FirmwareVersion)(nil), // 17: ttn.lorawan.v3.EndDeviceModel.FirmwareVersion + (*EndDeviceModel_Dimensions)(nil), // 18: ttn.lorawan.v3.EndDeviceModel.Dimensions + (*EndDeviceModel_Battery)(nil), // 19: ttn.lorawan.v3.EndDeviceModel.Battery + (*EndDeviceModel_OperatingConditions)(nil), // 20: ttn.lorawan.v3.EndDeviceModel.OperatingConditions + (*EndDeviceModel_Photos)(nil), // 21: ttn.lorawan.v3.EndDeviceModel.Photos + (*EndDeviceModel_Videos)(nil), // 22: ttn.lorawan.v3.EndDeviceModel.Videos + (*EndDeviceModel_Reseller)(nil), // 23: ttn.lorawan.v3.EndDeviceModel.Reseller + (*EndDeviceModel_Compliances)(nil), // 24: ttn.lorawan.v3.EndDeviceModel.Compliances + (*EndDeviceModel_FirmwareVersion_Profile)(nil), // 25: ttn.lorawan.v3.EndDeviceModel.FirmwareVersion.Profile + nil, // 26: ttn.lorawan.v3.EndDeviceModel.FirmwareVersion.ProfilesEntry + (*EndDeviceModel_OperatingConditions_Limits)(nil), // 27: ttn.lorawan.v3.EndDeviceModel.OperatingConditions.Limits + (*EndDeviceModel_Compliances_Compliance)(nil), // 28: ttn.lorawan.v3.EndDeviceModel.Compliances.Compliance + (*GetTemplateRequest_EndDeviceProfileIdentifiers)(nil), // 29: ttn.lorawan.v3.GetTemplateRequest.EndDeviceProfileIdentifiers + (*MessagePayloadDecoder_Example)(nil), // 30: ttn.lorawan.v3.MessagePayloadDecoder.Example + (*MessagePayloadEncoder_Example)(nil), // 31: ttn.lorawan.v3.MessagePayloadEncoder.Example + (*wrapperspb.FloatValue)(nil), // 32: google.protobuf.FloatValue + (*ApplicationIdentifiers)(nil), // 33: ttn.lorawan.v3.ApplicationIdentifiers + (*fieldmaskpb.FieldMask)(nil), // 34: google.protobuf.FieldMask + (*EndDeviceVersionIdentifiers)(nil), // 35: ttn.lorawan.v3.EndDeviceVersionIdentifiers + (*structpb.Struct)(nil), // 36: google.protobuf.Struct + (PayloadFormatter)(0), // 37: ttn.lorawan.v3.PayloadFormatter + (*wrapperspb.BoolValue)(nil), // 38: google.protobuf.BoolValue + (*EndDeviceTemplate)(nil), // 39: ttn.lorawan.v3.EndDeviceTemplate +} +var file_lorawan_stack_api_devicerepository_proto_depIdxs = []int32{ + 16, // 0: ttn.lorawan.v3.EndDeviceModel.hardware_versions:type_name -> ttn.lorawan.v3.EndDeviceModel.HardwareVersion + 17, // 1: ttn.lorawan.v3.EndDeviceModel.firmware_versions:type_name -> ttn.lorawan.v3.EndDeviceModel.FirmwareVersion + 18, // 2: ttn.lorawan.v3.EndDeviceModel.dimensions:type_name -> ttn.lorawan.v3.EndDeviceModel.Dimensions + 32, // 3: ttn.lorawan.v3.EndDeviceModel.weight:type_name -> google.protobuf.FloatValue + 19, // 4: ttn.lorawan.v3.EndDeviceModel.battery:type_name -> ttn.lorawan.v3.EndDeviceModel.Battery + 20, // 5: ttn.lorawan.v3.EndDeviceModel.operating_conditions:type_name -> ttn.lorawan.v3.EndDeviceModel.OperatingConditions + 0, // 6: ttn.lorawan.v3.EndDeviceModel.key_provisioning:type_name -> ttn.lorawan.v3.KeyProvisioning + 1, // 7: ttn.lorawan.v3.EndDeviceModel.key_security:type_name -> ttn.lorawan.v3.KeySecurity + 21, // 8: ttn.lorawan.v3.EndDeviceModel.photos:type_name -> ttn.lorawan.v3.EndDeviceModel.Photos + 22, // 9: ttn.lorawan.v3.EndDeviceModel.videos:type_name -> ttn.lorawan.v3.EndDeviceModel.Videos + 23, // 10: ttn.lorawan.v3.EndDeviceModel.resellers:type_name -> ttn.lorawan.v3.EndDeviceModel.Reseller + 24, // 11: ttn.lorawan.v3.EndDeviceModel.compliances:type_name -> ttn.lorawan.v3.EndDeviceModel.Compliances + 33, // 12: ttn.lorawan.v3.GetEndDeviceBrandRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 34, // 13: ttn.lorawan.v3.GetEndDeviceBrandRequest.field_mask:type_name -> google.protobuf.FieldMask + 33, // 14: ttn.lorawan.v3.ListEndDeviceBrandsRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 34, // 15: ttn.lorawan.v3.ListEndDeviceBrandsRequest.field_mask:type_name -> google.protobuf.FieldMask + 33, // 16: ttn.lorawan.v3.GetEndDeviceModelRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 34, // 17: ttn.lorawan.v3.GetEndDeviceModelRequest.field_mask:type_name -> google.protobuf.FieldMask + 33, // 18: ttn.lorawan.v3.ListEndDeviceModelsRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 34, // 19: ttn.lorawan.v3.ListEndDeviceModelsRequest.field_mask:type_name -> google.protobuf.FieldMask + 33, // 20: ttn.lorawan.v3.GetTemplateRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 35, // 21: ttn.lorawan.v3.GetTemplateRequest.version_ids:type_name -> ttn.lorawan.v3.EndDeviceVersionIdentifiers + 29, // 22: ttn.lorawan.v3.GetTemplateRequest.end_device_profile_ids:type_name -> ttn.lorawan.v3.GetTemplateRequest.EndDeviceProfileIdentifiers + 33, // 23: ttn.lorawan.v3.GetPayloadFormatterRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 35, // 24: ttn.lorawan.v3.GetPayloadFormatterRequest.version_ids:type_name -> ttn.lorawan.v3.EndDeviceVersionIdentifiers + 34, // 25: ttn.lorawan.v3.GetPayloadFormatterRequest.field_mask:type_name -> google.protobuf.FieldMask + 2, // 26: ttn.lorawan.v3.ListEndDeviceBrandsResponse.brands:type_name -> ttn.lorawan.v3.EndDeviceBrand + 3, // 27: ttn.lorawan.v3.ListEndDeviceModelsResponse.models:type_name -> ttn.lorawan.v3.EndDeviceModel + 36, // 28: ttn.lorawan.v3.DecodedMessagePayload.data:type_name -> google.protobuf.Struct + 37, // 29: ttn.lorawan.v3.MessagePayloadDecoder.formatter:type_name -> ttn.lorawan.v3.PayloadFormatter + 30, // 30: ttn.lorawan.v3.MessagePayloadDecoder.examples:type_name -> ttn.lorawan.v3.MessagePayloadDecoder.Example + 37, // 31: ttn.lorawan.v3.MessagePayloadEncoder.formatter:type_name -> ttn.lorawan.v3.PayloadFormatter + 31, // 32: ttn.lorawan.v3.MessagePayloadEncoder.examples:type_name -> ttn.lorawan.v3.MessagePayloadEncoder.Example + 26, // 33: ttn.lorawan.v3.EndDeviceModel.FirmwareVersion.profiles:type_name -> ttn.lorawan.v3.EndDeviceModel.FirmwareVersion.ProfilesEntry + 32, // 34: ttn.lorawan.v3.EndDeviceModel.Dimensions.width:type_name -> google.protobuf.FloatValue + 32, // 35: ttn.lorawan.v3.EndDeviceModel.Dimensions.height:type_name -> google.protobuf.FloatValue + 32, // 36: ttn.lorawan.v3.EndDeviceModel.Dimensions.diameter:type_name -> google.protobuf.FloatValue + 32, // 37: ttn.lorawan.v3.EndDeviceModel.Dimensions.length:type_name -> google.protobuf.FloatValue + 38, // 38: ttn.lorawan.v3.EndDeviceModel.Battery.replaceable:type_name -> google.protobuf.BoolValue + 27, // 39: ttn.lorawan.v3.EndDeviceModel.OperatingConditions.temperature:type_name -> ttn.lorawan.v3.EndDeviceModel.OperatingConditions.Limits + 27, // 40: ttn.lorawan.v3.EndDeviceModel.OperatingConditions.relative_humidity:type_name -> ttn.lorawan.v3.EndDeviceModel.OperatingConditions.Limits + 28, // 41: ttn.lorawan.v3.EndDeviceModel.Compliances.safety:type_name -> ttn.lorawan.v3.EndDeviceModel.Compliances.Compliance + 28, // 42: ttn.lorawan.v3.EndDeviceModel.Compliances.radio_equipment:type_name -> ttn.lorawan.v3.EndDeviceModel.Compliances.Compliance + 25, // 43: ttn.lorawan.v3.EndDeviceModel.FirmwareVersion.ProfilesEntry.value:type_name -> ttn.lorawan.v3.EndDeviceModel.FirmwareVersion.Profile + 32, // 44: ttn.lorawan.v3.EndDeviceModel.OperatingConditions.Limits.min:type_name -> google.protobuf.FloatValue + 32, // 45: ttn.lorawan.v3.EndDeviceModel.OperatingConditions.Limits.max:type_name -> google.protobuf.FloatValue + 12, // 46: ttn.lorawan.v3.MessagePayloadDecoder.Example.input:type_name -> ttn.lorawan.v3.EncodedMessagePayload + 13, // 47: ttn.lorawan.v3.MessagePayloadDecoder.Example.output:type_name -> ttn.lorawan.v3.DecodedMessagePayload + 13, // 48: ttn.lorawan.v3.MessagePayloadEncoder.Example.input:type_name -> ttn.lorawan.v3.DecodedMessagePayload + 12, // 49: ttn.lorawan.v3.MessagePayloadEncoder.Example.output:type_name -> ttn.lorawan.v3.EncodedMessagePayload + 5, // 50: ttn.lorawan.v3.DeviceRepository.ListBrands:input_type -> ttn.lorawan.v3.ListEndDeviceBrandsRequest + 4, // 51: ttn.lorawan.v3.DeviceRepository.GetBrand:input_type -> ttn.lorawan.v3.GetEndDeviceBrandRequest + 7, // 52: ttn.lorawan.v3.DeviceRepository.ListModels:input_type -> ttn.lorawan.v3.ListEndDeviceModelsRequest + 6, // 53: ttn.lorawan.v3.DeviceRepository.GetModel:input_type -> ttn.lorawan.v3.GetEndDeviceModelRequest + 8, // 54: ttn.lorawan.v3.DeviceRepository.GetTemplate:input_type -> ttn.lorawan.v3.GetTemplateRequest + 9, // 55: ttn.lorawan.v3.DeviceRepository.GetUplinkDecoder:input_type -> ttn.lorawan.v3.GetPayloadFormatterRequest + 9, // 56: ttn.lorawan.v3.DeviceRepository.GetDownlinkDecoder:input_type -> ttn.lorawan.v3.GetPayloadFormatterRequest + 9, // 57: ttn.lorawan.v3.DeviceRepository.GetDownlinkEncoder:input_type -> ttn.lorawan.v3.GetPayloadFormatterRequest + 10, // 58: ttn.lorawan.v3.DeviceRepository.ListBrands:output_type -> ttn.lorawan.v3.ListEndDeviceBrandsResponse + 2, // 59: ttn.lorawan.v3.DeviceRepository.GetBrand:output_type -> ttn.lorawan.v3.EndDeviceBrand + 11, // 60: ttn.lorawan.v3.DeviceRepository.ListModels:output_type -> ttn.lorawan.v3.ListEndDeviceModelsResponse + 3, // 61: ttn.lorawan.v3.DeviceRepository.GetModel:output_type -> ttn.lorawan.v3.EndDeviceModel + 39, // 62: ttn.lorawan.v3.DeviceRepository.GetTemplate:output_type -> ttn.lorawan.v3.EndDeviceTemplate + 14, // 63: ttn.lorawan.v3.DeviceRepository.GetUplinkDecoder:output_type -> ttn.lorawan.v3.MessagePayloadDecoder + 14, // 64: ttn.lorawan.v3.DeviceRepository.GetDownlinkDecoder:output_type -> ttn.lorawan.v3.MessagePayloadDecoder + 15, // 65: ttn.lorawan.v3.DeviceRepository.GetDownlinkEncoder:output_type -> ttn.lorawan.v3.MessagePayloadEncoder + 58, // [58:66] is the sub-list for method output_type + 50, // [50:58] is the sub-list for method input_type + 50, // [50:50] is the sub-list for extension type_name + 50, // [50:50] is the sub-list for extension extendee + 0, // [0:50] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_devicerepository_proto_init() } +func file_lorawan_stack_api_devicerepository_proto_init() { + if File_lorawan_stack_api_devicerepository_proto != nil { + return + } + file_lorawan_stack_api_end_device_proto_init() + file_lorawan_stack_api_messages_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_devicerepository_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceBrand); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceModel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetEndDeviceBrandRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListEndDeviceBrandsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetEndDeviceModelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListEndDeviceModelsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTemplateRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPayloadFormatterRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListEndDeviceBrandsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListEndDeviceModelsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EncodedMessagePayload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DecodedMessagePayload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessagePayloadDecoder); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessagePayloadEncoder); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceModel_HardwareVersion); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceModel_FirmwareVersion); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceModel_Dimensions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceModel_Battery); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceModel_OperatingConditions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceModel_Photos); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceModel_Videos); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceModel_Reseller); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceModel_Compliances); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceModel_FirmwareVersion_Profile); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceModel_OperatingConditions_Limits); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceModel_Compliances_Compliance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTemplateRequest_EndDeviceProfileIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessagePayloadDecoder_Example); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_devicerepository_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessagePayloadEncoder_Example); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_devicerepository_proto_rawDesc, + NumEnums: 2, + NumMessages: 30, + NumExtensions: 0, + NumServices: 1, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/devicerepository.proto", + GoTypes: file_lorawan_stack_api_devicerepository_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_devicerepository_proto_depIdxs, + EnumInfos: file_lorawan_stack_api_devicerepository_proto_enumTypes, + MessageInfos: file_lorawan_stack_api_devicerepository_proto_msgTypes, + }.Build() + File_lorawan_stack_api_devicerepository_proto = out.File + file_lorawan_stack_api_devicerepository_proto_rawDesc = nil + file_lorawan_stack_api_devicerepository_proto_goTypes = nil + file_lorawan_stack_api_devicerepository_proto_depIdxs = nil } diff --git a/pkg/ttnpb/devicerepository.pb.gw.go b/pkg/ttnpb/devicerepository.pb.gw.go index 4f20de8a59..737bb2b552 100644 --- a/pkg/ttnpb/devicerepository.pb.gw.go +++ b/pkg/ttnpb/devicerepository.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join var ( @@ -90,7 +88,6 @@ func request_DeviceRepository_ListBrands_1(ctx context.Context, marshaler runtim } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -124,7 +121,6 @@ func local_request_DeviceRepository_ListBrands_1(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -162,7 +158,6 @@ func request_DeviceRepository_GetBrand_0(ctx context.Context, marshaler runtime. } protoReq.BrandId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "brand_id", err) } @@ -196,7 +191,6 @@ func local_request_DeviceRepository_GetBrand_0(ctx context.Context, marshaler ru } protoReq.BrandId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "brand_id", err) } @@ -234,7 +228,6 @@ func request_DeviceRepository_GetBrand_1(ctx context.Context, marshaler runtime. } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -245,7 +238,6 @@ func request_DeviceRepository_GetBrand_1(ctx context.Context, marshaler runtime. } protoReq.BrandId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "brand_id", err) } @@ -279,7 +271,6 @@ func local_request_DeviceRepository_GetBrand_1(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -290,7 +281,6 @@ func local_request_DeviceRepository_GetBrand_1(ctx context.Context, marshaler ru } protoReq.BrandId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "brand_id", err) } @@ -364,7 +354,6 @@ func request_DeviceRepository_ListModels_1(ctx context.Context, marshaler runtim } protoReq.BrandId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "brand_id", err) } @@ -398,7 +387,6 @@ func local_request_DeviceRepository_ListModels_1(ctx context.Context, marshaler } protoReq.BrandId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "brand_id", err) } @@ -436,7 +424,6 @@ func request_DeviceRepository_ListModels_2(ctx context.Context, marshaler runtim } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -470,7 +457,6 @@ func local_request_DeviceRepository_ListModels_2(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -508,7 +494,6 @@ func request_DeviceRepository_ListModels_3(ctx context.Context, marshaler runtim } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -519,7 +504,6 @@ func request_DeviceRepository_ListModels_3(ctx context.Context, marshaler runtim } protoReq.BrandId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "brand_id", err) } @@ -553,7 +537,6 @@ func local_request_DeviceRepository_ListModels_3(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -564,7 +547,6 @@ func local_request_DeviceRepository_ListModels_3(ctx context.Context, marshaler } protoReq.BrandId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "brand_id", err) } @@ -602,7 +584,6 @@ func request_DeviceRepository_GetModel_0(ctx context.Context, marshaler runtime. } protoReq.BrandId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "brand_id", err) } @@ -613,7 +594,6 @@ func request_DeviceRepository_GetModel_0(ctx context.Context, marshaler runtime. } protoReq.ModelId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "model_id", err) } @@ -647,7 +627,6 @@ func local_request_DeviceRepository_GetModel_0(ctx context.Context, marshaler ru } protoReq.BrandId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "brand_id", err) } @@ -658,7 +637,6 @@ func local_request_DeviceRepository_GetModel_0(ctx context.Context, marshaler ru } protoReq.ModelId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "model_id", err) } @@ -696,7 +674,6 @@ func request_DeviceRepository_GetModel_1(ctx context.Context, marshaler runtime. } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -707,7 +684,6 @@ func request_DeviceRepository_GetModel_1(ctx context.Context, marshaler runtime. } protoReq.BrandId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "brand_id", err) } @@ -718,7 +694,6 @@ func request_DeviceRepository_GetModel_1(ctx context.Context, marshaler runtime. } protoReq.ModelId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "model_id", err) } @@ -752,7 +727,6 @@ func local_request_DeviceRepository_GetModel_1(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -763,7 +737,6 @@ func local_request_DeviceRepository_GetModel_1(ctx context.Context, marshaler ru } protoReq.BrandId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "brand_id", err) } @@ -774,7 +747,6 @@ func local_request_DeviceRepository_GetModel_1(ctx context.Context, marshaler ru } protoReq.ModelId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "model_id", err) } @@ -812,7 +784,6 @@ func request_DeviceRepository_GetTemplate_0(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.brand_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.brand_id", err) } @@ -823,7 +794,6 @@ func request_DeviceRepository_GetTemplate_0(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.model_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.model_id", err) } @@ -834,7 +804,6 @@ func request_DeviceRepository_GetTemplate_0(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.firmware_version", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.firmware_version", err) } @@ -845,7 +814,6 @@ func request_DeviceRepository_GetTemplate_0(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.band_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.band_id", err) } @@ -879,7 +847,6 @@ func local_request_DeviceRepository_GetTemplate_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.brand_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.brand_id", err) } @@ -890,7 +857,6 @@ func local_request_DeviceRepository_GetTemplate_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.model_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.model_id", err) } @@ -901,7 +867,6 @@ func local_request_DeviceRepository_GetTemplate_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.firmware_version", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.firmware_version", err) } @@ -912,7 +877,6 @@ func local_request_DeviceRepository_GetTemplate_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.band_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.band_id", err) } @@ -950,7 +914,6 @@ func request_DeviceRepository_GetTemplate_1(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_profile_ids.vendor_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_profile_ids.vendor_id", err) } @@ -961,7 +924,6 @@ func request_DeviceRepository_GetTemplate_1(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_profile_ids.vendor_profile_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_profile_ids.vendor_profile_id", err) } @@ -995,7 +957,6 @@ func local_request_DeviceRepository_GetTemplate_1(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_profile_ids.vendor_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_profile_ids.vendor_id", err) } @@ -1006,7 +967,6 @@ func local_request_DeviceRepository_GetTemplate_1(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_profile_ids.vendor_profile_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_profile_ids.vendor_profile_id", err) } @@ -1044,7 +1004,6 @@ func request_DeviceRepository_GetTemplate_2(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1055,7 +1014,6 @@ func request_DeviceRepository_GetTemplate_2(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.brand_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.brand_id", err) } @@ -1066,7 +1024,6 @@ func request_DeviceRepository_GetTemplate_2(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.model_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.model_id", err) } @@ -1077,7 +1034,6 @@ func request_DeviceRepository_GetTemplate_2(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.firmware_version", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.firmware_version", err) } @@ -1088,7 +1044,6 @@ func request_DeviceRepository_GetTemplate_2(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.band_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.band_id", err) } @@ -1122,7 +1077,6 @@ func local_request_DeviceRepository_GetTemplate_2(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1133,7 +1087,6 @@ func local_request_DeviceRepository_GetTemplate_2(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.brand_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.brand_id", err) } @@ -1144,7 +1097,6 @@ func local_request_DeviceRepository_GetTemplate_2(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.model_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.model_id", err) } @@ -1155,7 +1107,6 @@ func local_request_DeviceRepository_GetTemplate_2(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.firmware_version", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.firmware_version", err) } @@ -1166,7 +1117,6 @@ func local_request_DeviceRepository_GetTemplate_2(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.band_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.band_id", err) } @@ -1204,7 +1154,6 @@ func request_DeviceRepository_GetTemplate_3(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1215,7 +1164,6 @@ func request_DeviceRepository_GetTemplate_3(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_profile_ids.vendor_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_profile_ids.vendor_id", err) } @@ -1226,7 +1174,6 @@ func request_DeviceRepository_GetTemplate_3(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_profile_ids.vendor_profile_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_profile_ids.vendor_profile_id", err) } @@ -1260,7 +1207,6 @@ func local_request_DeviceRepository_GetTemplate_3(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1271,7 +1217,6 @@ func local_request_DeviceRepository_GetTemplate_3(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_profile_ids.vendor_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_profile_ids.vendor_id", err) } @@ -1282,7 +1227,6 @@ func local_request_DeviceRepository_GetTemplate_3(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_profile_ids.vendor_profile_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_profile_ids.vendor_profile_id", err) } @@ -1320,7 +1264,6 @@ func request_DeviceRepository_GetUplinkDecoder_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.brand_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.brand_id", err) } @@ -1331,7 +1274,6 @@ func request_DeviceRepository_GetUplinkDecoder_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.model_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.model_id", err) } @@ -1342,7 +1284,6 @@ func request_DeviceRepository_GetUplinkDecoder_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.firmware_version", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.firmware_version", err) } @@ -1353,7 +1294,6 @@ func request_DeviceRepository_GetUplinkDecoder_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.band_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.band_id", err) } @@ -1387,7 +1327,6 @@ func local_request_DeviceRepository_GetUplinkDecoder_0(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.brand_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.brand_id", err) } @@ -1398,7 +1337,6 @@ func local_request_DeviceRepository_GetUplinkDecoder_0(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.model_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.model_id", err) } @@ -1409,7 +1347,6 @@ func local_request_DeviceRepository_GetUplinkDecoder_0(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.firmware_version", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.firmware_version", err) } @@ -1420,7 +1357,6 @@ func local_request_DeviceRepository_GetUplinkDecoder_0(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.band_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.band_id", err) } @@ -1458,7 +1394,6 @@ func request_DeviceRepository_GetUplinkDecoder_1(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1469,7 +1404,6 @@ func request_DeviceRepository_GetUplinkDecoder_1(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.brand_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.brand_id", err) } @@ -1480,7 +1414,6 @@ func request_DeviceRepository_GetUplinkDecoder_1(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.model_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.model_id", err) } @@ -1491,7 +1424,6 @@ func request_DeviceRepository_GetUplinkDecoder_1(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.firmware_version", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.firmware_version", err) } @@ -1502,7 +1434,6 @@ func request_DeviceRepository_GetUplinkDecoder_1(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.band_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.band_id", err) } @@ -1536,7 +1467,6 @@ func local_request_DeviceRepository_GetUplinkDecoder_1(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1547,7 +1477,6 @@ func local_request_DeviceRepository_GetUplinkDecoder_1(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.brand_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.brand_id", err) } @@ -1558,7 +1487,6 @@ func local_request_DeviceRepository_GetUplinkDecoder_1(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.model_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.model_id", err) } @@ -1569,7 +1497,6 @@ func local_request_DeviceRepository_GetUplinkDecoder_1(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.firmware_version", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.firmware_version", err) } @@ -1580,7 +1507,6 @@ func local_request_DeviceRepository_GetUplinkDecoder_1(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.band_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.band_id", err) } @@ -1618,7 +1544,6 @@ func request_DeviceRepository_GetDownlinkDecoder_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.brand_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.brand_id", err) } @@ -1629,7 +1554,6 @@ func request_DeviceRepository_GetDownlinkDecoder_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.model_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.model_id", err) } @@ -1640,7 +1564,6 @@ func request_DeviceRepository_GetDownlinkDecoder_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.firmware_version", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.firmware_version", err) } @@ -1651,7 +1574,6 @@ func request_DeviceRepository_GetDownlinkDecoder_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.band_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.band_id", err) } @@ -1685,7 +1607,6 @@ func local_request_DeviceRepository_GetDownlinkDecoder_0(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.brand_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.brand_id", err) } @@ -1696,7 +1617,6 @@ func local_request_DeviceRepository_GetDownlinkDecoder_0(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.model_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.model_id", err) } @@ -1707,7 +1627,6 @@ func local_request_DeviceRepository_GetDownlinkDecoder_0(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.firmware_version", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.firmware_version", err) } @@ -1718,7 +1637,6 @@ func local_request_DeviceRepository_GetDownlinkDecoder_0(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.band_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.band_id", err) } @@ -1756,7 +1674,6 @@ func request_DeviceRepository_GetDownlinkDecoder_1(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1767,7 +1684,6 @@ func request_DeviceRepository_GetDownlinkDecoder_1(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.brand_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.brand_id", err) } @@ -1778,7 +1694,6 @@ func request_DeviceRepository_GetDownlinkDecoder_1(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.model_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.model_id", err) } @@ -1789,7 +1704,6 @@ func request_DeviceRepository_GetDownlinkDecoder_1(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.firmware_version", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.firmware_version", err) } @@ -1800,7 +1714,6 @@ func request_DeviceRepository_GetDownlinkDecoder_1(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.band_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.band_id", err) } @@ -1834,7 +1747,6 @@ func local_request_DeviceRepository_GetDownlinkDecoder_1(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -1845,7 +1757,6 @@ func local_request_DeviceRepository_GetDownlinkDecoder_1(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.brand_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.brand_id", err) } @@ -1856,7 +1767,6 @@ func local_request_DeviceRepository_GetDownlinkDecoder_1(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.model_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.model_id", err) } @@ -1867,7 +1777,6 @@ func local_request_DeviceRepository_GetDownlinkDecoder_1(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.firmware_version", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.firmware_version", err) } @@ -1878,7 +1787,6 @@ func local_request_DeviceRepository_GetDownlinkDecoder_1(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.band_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.band_id", err) } @@ -1916,7 +1824,6 @@ func request_DeviceRepository_GetDownlinkEncoder_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.brand_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.brand_id", err) } @@ -1927,7 +1834,6 @@ func request_DeviceRepository_GetDownlinkEncoder_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.model_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.model_id", err) } @@ -1938,7 +1844,6 @@ func request_DeviceRepository_GetDownlinkEncoder_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.firmware_version", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.firmware_version", err) } @@ -1949,7 +1854,6 @@ func request_DeviceRepository_GetDownlinkEncoder_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.band_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.band_id", err) } @@ -1983,7 +1887,6 @@ func local_request_DeviceRepository_GetDownlinkEncoder_0(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.brand_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.brand_id", err) } @@ -1994,7 +1897,6 @@ func local_request_DeviceRepository_GetDownlinkEncoder_0(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.model_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.model_id", err) } @@ -2005,7 +1907,6 @@ func local_request_DeviceRepository_GetDownlinkEncoder_0(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.firmware_version", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.firmware_version", err) } @@ -2016,7 +1917,6 @@ func local_request_DeviceRepository_GetDownlinkEncoder_0(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.band_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.band_id", err) } @@ -2054,7 +1954,6 @@ func request_DeviceRepository_GetDownlinkEncoder_1(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -2065,7 +1964,6 @@ func request_DeviceRepository_GetDownlinkEncoder_1(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.brand_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.brand_id", err) } @@ -2076,7 +1974,6 @@ func request_DeviceRepository_GetDownlinkEncoder_1(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.model_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.model_id", err) } @@ -2087,7 +1984,6 @@ func request_DeviceRepository_GetDownlinkEncoder_1(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.firmware_version", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.firmware_version", err) } @@ -2098,7 +1994,6 @@ func request_DeviceRepository_GetDownlinkEncoder_1(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.band_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.band_id", err) } @@ -2132,7 +2027,6 @@ func local_request_DeviceRepository_GetDownlinkEncoder_1(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -2143,7 +2037,6 @@ func local_request_DeviceRepository_GetDownlinkEncoder_1(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.brand_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.brand_id", err) } @@ -2154,7 +2047,6 @@ func local_request_DeviceRepository_GetDownlinkEncoder_1(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.model_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.model_id", err) } @@ -2165,7 +2057,6 @@ func local_request_DeviceRepository_GetDownlinkEncoder_1(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.firmware_version", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.firmware_version", err) } @@ -2176,7 +2067,6 @@ func local_request_DeviceRepository_GetDownlinkEncoder_1(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "version_ids.band_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "version_ids.band_id", err) } @@ -2205,20 +2095,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/ListBrands", runtime.WithHTTPPathPattern("/dr/brands")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_ListBrands_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_ListBrands_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_ListBrands_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_ListBrands_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2228,20 +2120,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/ListBrands", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/brands")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_ListBrands_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_ListBrands_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_ListBrands_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_ListBrands_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2251,20 +2145,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetBrand", runtime.WithHTTPPathPattern("/dr/brands/{brand_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_GetBrand_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_GetBrand_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetBrand_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetBrand_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2274,20 +2170,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetBrand", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/brands/{brand_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_GetBrand_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_GetBrand_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetBrand_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetBrand_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2297,20 +2195,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/ListModels", runtime.WithHTTPPathPattern("/dr/models")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_ListModels_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_ListModels_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_ListModels_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_ListModels_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2320,20 +2220,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/ListModels", runtime.WithHTTPPathPattern("/dr/brands/{brand_id}/models")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_ListModels_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_ListModels_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_ListModels_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_ListModels_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2343,20 +2245,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/ListModels", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/models")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_ListModels_2(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_ListModels_2(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_ListModels_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_ListModels_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2366,20 +2270,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/ListModels", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/brands/{brand_id}/models")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_ListModels_3(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_ListModels_3(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_ListModels_3(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_ListModels_3(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2389,20 +2295,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetModel", runtime.WithHTTPPathPattern("/dr/brands/{brand_id}/models/{model_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_GetModel_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_GetModel_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetModel_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetModel_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2412,20 +2320,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetModel", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/brands/{brand_id}/models/{model_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_GetModel_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_GetModel_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetModel_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetModel_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2435,20 +2345,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetTemplate", runtime.WithHTTPPathPattern("/dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/template")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_GetTemplate_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_GetTemplate_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetTemplate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetTemplate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2458,20 +2370,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetTemplate", runtime.WithHTTPPathPattern("/dr/vendors/{end_device_profile_ids.vendor_id}/profiles/{end_device_profile_ids.vendor_profile_id}/template")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_GetTemplate_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_GetTemplate_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetTemplate_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetTemplate_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2481,20 +2395,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetTemplate", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/template")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_GetTemplate_2(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_GetTemplate_2(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetTemplate_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetTemplate_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2504,20 +2420,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetTemplate", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/vendors/{end_device_profile_ids.vendor_id}/profiles/{end_device_profile_ids.vendor_profile_id}/template")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_GetTemplate_3(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_GetTemplate_3(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetTemplate_3(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetTemplate_3(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2527,20 +2445,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetUplinkDecoder", runtime.WithHTTPPathPattern("/dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/uplink/decoder")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_GetUplinkDecoder_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_GetUplinkDecoder_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetUplinkDecoder_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetUplinkDecoder_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2550,20 +2470,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetUplinkDecoder", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/uplink/decoder")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_GetUplinkDecoder_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_GetUplinkDecoder_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetUplinkDecoder_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetUplinkDecoder_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2573,20 +2495,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetDownlinkDecoder", runtime.WithHTTPPathPattern("/dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/decoder")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_GetDownlinkDecoder_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_GetDownlinkDecoder_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetDownlinkDecoder_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetDownlinkDecoder_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2596,20 +2520,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetDownlinkDecoder", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/decoder")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_GetDownlinkDecoder_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_GetDownlinkDecoder_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetDownlinkDecoder_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetDownlinkDecoder_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2619,20 +2545,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetDownlinkEncoder", runtime.WithHTTPPathPattern("/dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/encoder")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_GetDownlinkEncoder_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_GetDownlinkEncoder_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetDownlinkEncoder_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetDownlinkEncoder_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2642,20 +2570,22 @@ func RegisterDeviceRepositoryHandlerServer(ctx context.Context, mux *runtime.Ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetDownlinkEncoder", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/encoder")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_DeviceRepository_GetDownlinkEncoder_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_DeviceRepository_GetDownlinkEncoder_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetDownlinkEncoder_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetDownlinkEncoder_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2704,19 +2634,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/ListBrands", runtime.WithHTTPPathPattern("/dr/brands")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_ListBrands_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_ListBrands_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_ListBrands_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_ListBrands_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2724,19 +2656,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/ListBrands", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/brands")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_ListBrands_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_ListBrands_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_ListBrands_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_ListBrands_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2744,19 +2678,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetBrand", runtime.WithHTTPPathPattern("/dr/brands/{brand_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_GetBrand_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_GetBrand_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetBrand_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetBrand_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2764,19 +2700,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetBrand", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/brands/{brand_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_GetBrand_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_GetBrand_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetBrand_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetBrand_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2784,19 +2722,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/ListModels", runtime.WithHTTPPathPattern("/dr/models")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_ListModels_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_ListModels_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_ListModels_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_ListModels_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2804,19 +2744,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/ListModels", runtime.WithHTTPPathPattern("/dr/brands/{brand_id}/models")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_ListModels_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_ListModels_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_ListModels_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_ListModels_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2824,19 +2766,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/ListModels", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/models")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_ListModels_2(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_ListModels_2(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_ListModels_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_ListModels_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2844,19 +2788,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/ListModels", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/brands/{brand_id}/models")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_ListModels_3(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_ListModels_3(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_ListModels_3(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_ListModels_3(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2864,19 +2810,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetModel", runtime.WithHTTPPathPattern("/dr/brands/{brand_id}/models/{model_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_GetModel_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_GetModel_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetModel_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetModel_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2884,19 +2832,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetModel", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/brands/{brand_id}/models/{model_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_GetModel_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_GetModel_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetModel_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetModel_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2904,19 +2854,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetTemplate", runtime.WithHTTPPathPattern("/dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/template")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_GetTemplate_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_GetTemplate_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetTemplate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetTemplate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2924,19 +2876,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetTemplate", runtime.WithHTTPPathPattern("/dr/vendors/{end_device_profile_ids.vendor_id}/profiles/{end_device_profile_ids.vendor_profile_id}/template")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_GetTemplate_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_GetTemplate_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetTemplate_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetTemplate_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2944,19 +2898,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetTemplate", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/template")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_GetTemplate_2(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_GetTemplate_2(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetTemplate_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetTemplate_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2964,19 +2920,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetTemplate", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/vendors/{end_device_profile_ids.vendor_id}/profiles/{end_device_profile_ids.vendor_profile_id}/template")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_GetTemplate_3(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_GetTemplate_3(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetTemplate_3(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetTemplate_3(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2984,19 +2942,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetUplinkDecoder", runtime.WithHTTPPathPattern("/dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/uplink/decoder")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_GetUplinkDecoder_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_GetUplinkDecoder_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetUplinkDecoder_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetUplinkDecoder_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3004,19 +2964,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetUplinkDecoder", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/uplink/decoder")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_GetUplinkDecoder_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_GetUplinkDecoder_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetUplinkDecoder_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetUplinkDecoder_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3024,19 +2986,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetDownlinkDecoder", runtime.WithHTTPPathPattern("/dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/decoder")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_GetDownlinkDecoder_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_GetDownlinkDecoder_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetDownlinkDecoder_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetDownlinkDecoder_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3044,19 +3008,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetDownlinkDecoder", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/decoder")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_GetDownlinkDecoder_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_GetDownlinkDecoder_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetDownlinkDecoder_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetDownlinkDecoder_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3064,19 +3030,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetDownlinkEncoder", runtime.WithHTTPPathPattern("/dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/encoder")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_GetDownlinkEncoder_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_GetDownlinkEncoder_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetDownlinkEncoder_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetDownlinkEncoder_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3084,19 +3052,21 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.DeviceRepository/GetDownlinkEncoder", runtime.WithHTTPPathPattern("/dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/encoder")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_DeviceRepository_GetDownlinkEncoder_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_DeviceRepository_GetDownlinkEncoder_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_DeviceRepository_GetDownlinkEncoder_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_DeviceRepository_GetDownlinkEncoder_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3104,45 +3074,45 @@ func RegisterDeviceRepositoryHandlerClient(ctx context.Context, mux *runtime.Ser } var ( - pattern_DeviceRepository_ListBrands_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"dr", "brands"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_ListBrands_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"dr", "brands"}, "")) - pattern_DeviceRepository_ListBrands_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"dr", "applications", "application_ids.application_id", "brands"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_ListBrands_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"dr", "applications", "application_ids.application_id", "brands"}, "")) - pattern_DeviceRepository_GetBrand_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"dr", "brands", "brand_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_GetBrand_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"dr", "brands", "brand_id"}, "")) - pattern_DeviceRepository_GetBrand_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"dr", "applications", "application_ids.application_id", "brands", "brand_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_GetBrand_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"dr", "applications", "application_ids.application_id", "brands", "brand_id"}, "")) - pattern_DeviceRepository_ListModels_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"dr", "models"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_ListModels_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"dr", "models"}, "")) - pattern_DeviceRepository_ListModels_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"dr", "brands", "brand_id", "models"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_ListModels_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"dr", "brands", "brand_id", "models"}, "")) - pattern_DeviceRepository_ListModels_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"dr", "applications", "application_ids.application_id", "models"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_ListModels_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"dr", "applications", "application_ids.application_id", "models"}, "")) - pattern_DeviceRepository_ListModels_3 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"dr", "applications", "application_ids.application_id", "brands", "brand_id", "models"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_ListModels_3 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"dr", "applications", "application_ids.application_id", "brands", "brand_id", "models"}, "")) - pattern_DeviceRepository_GetModel_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"dr", "brands", "brand_id", "models", "model_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_GetModel_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"dr", "brands", "brand_id", "models", "model_id"}, "")) - pattern_DeviceRepository_GetModel_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6}, []string{"dr", "applications", "application_ids.application_id", "brands", "brand_id", "models", "model_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_GetModel_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6}, []string{"dr", "applications", "application_ids.application_id", "brands", "brand_id", "models", "model_id"}, "")) - pattern_DeviceRepository_GetTemplate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 2, 7}, []string{"dr", "brands", "version_ids.brand_id", "models", "version_ids.model_id", "version_ids.firmware_version", "version_ids.band_id", "template"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_GetTemplate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 2, 7}, []string{"dr", "brands", "version_ids.brand_id", "models", "version_ids.model_id", "version_ids.firmware_version", "version_ids.band_id", "template"}, "")) - pattern_DeviceRepository_GetTemplate_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"dr", "vendors", "end_device_profile_ids.vendor_id", "profiles", "end_device_profile_ids.vendor_profile_id", "template"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_GetTemplate_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"dr", "vendors", "end_device_profile_ids.vendor_id", "profiles", "end_device_profile_ids.vendor_profile_id", "template"}, "")) - pattern_DeviceRepository_GetTemplate_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 2, 9}, []string{"dr", "applications", "application_ids.application_id", "brands", "version_ids.brand_id", "models", "version_ids.model_id", "version_ids.firmware_version", "version_ids.band_id", "template"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_GetTemplate_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 2, 9}, []string{"dr", "applications", "application_ids.application_id", "brands", "version_ids.brand_id", "models", "version_ids.model_id", "version_ids.firmware_version", "version_ids.band_id", "template"}, "")) - pattern_DeviceRepository_GetTemplate_3 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7}, []string{"dr", "applications", "application_ids.application_id", "vendors", "end_device_profile_ids.vendor_id", "profiles", "end_device_profile_ids.vendor_profile_id", "template"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_GetTemplate_3 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7}, []string{"dr", "applications", "application_ids.application_id", "vendors", "end_device_profile_ids.vendor_id", "profiles", "end_device_profile_ids.vendor_profile_id", "template"}, "")) - pattern_DeviceRepository_GetUplinkDecoder_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 2, 7, 2, 8, 2, 9}, []string{"dr", "brands", "version_ids.brand_id", "models", "version_ids.model_id", "version_ids.firmware_version", "version_ids.band_id", "formatters", "uplink", "decoder"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_GetUplinkDecoder_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 2, 7, 2, 8, 2, 9}, []string{"dr", "brands", "version_ids.brand_id", "models", "version_ids.model_id", "version_ids.firmware_version", "version_ids.band_id", "formatters", "uplink", "decoder"}, "")) - pattern_DeviceRepository_GetUplinkDecoder_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 2, 9, 2, 10, 2, 11}, []string{"dr", "applications", "application_ids.application_id", "brands", "version_ids.brand_id", "models", "version_ids.model_id", "version_ids.firmware_version", "version_ids.band_id", "formatters", "uplink", "decoder"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_GetUplinkDecoder_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 2, 9, 2, 10, 2, 11}, []string{"dr", "applications", "application_ids.application_id", "brands", "version_ids.brand_id", "models", "version_ids.model_id", "version_ids.firmware_version", "version_ids.band_id", "formatters", "uplink", "decoder"}, "")) - pattern_DeviceRepository_GetDownlinkDecoder_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 2, 7, 2, 8, 2, 9}, []string{"dr", "brands", "version_ids.brand_id", "models", "version_ids.model_id", "version_ids.firmware_version", "version_ids.band_id", "formatters", "downlink", "decoder"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_GetDownlinkDecoder_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 2, 7, 2, 8, 2, 9}, []string{"dr", "brands", "version_ids.brand_id", "models", "version_ids.model_id", "version_ids.firmware_version", "version_ids.band_id", "formatters", "downlink", "decoder"}, "")) - pattern_DeviceRepository_GetDownlinkDecoder_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 2, 9, 2, 10, 2, 11}, []string{"dr", "applications", "application_ids.application_id", "brands", "version_ids.brand_id", "models", "version_ids.model_id", "version_ids.firmware_version", "version_ids.band_id", "formatters", "downlink", "decoder"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_GetDownlinkDecoder_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 2, 9, 2, 10, 2, 11}, []string{"dr", "applications", "application_ids.application_id", "brands", "version_ids.brand_id", "models", "version_ids.model_id", "version_ids.firmware_version", "version_ids.band_id", "formatters", "downlink", "decoder"}, "")) - pattern_DeviceRepository_GetDownlinkEncoder_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 2, 7, 2, 8, 2, 9}, []string{"dr", "brands", "version_ids.brand_id", "models", "version_ids.model_id", "version_ids.firmware_version", "version_ids.band_id", "formatters", "downlink", "encoder"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_GetDownlinkEncoder_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6, 2, 7, 2, 8, 2, 9}, []string{"dr", "brands", "version_ids.brand_id", "models", "version_ids.model_id", "version_ids.firmware_version", "version_ids.band_id", "formatters", "downlink", "encoder"}, "")) - pattern_DeviceRepository_GetDownlinkEncoder_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 2, 9, 2, 10, 2, 11}, []string{"dr", "applications", "application_ids.application_id", "brands", "version_ids.brand_id", "models", "version_ids.model_id", "version_ids.firmware_version", "version_ids.band_id", "formatters", "downlink", "encoder"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_DeviceRepository_GetDownlinkEncoder_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 2, 9, 2, 10, 2, 11}, []string{"dr", "applications", "application_ids.application_id", "brands", "version_ids.brand_id", "models", "version_ids.model_id", "version_ids.firmware_version", "version_ids.band_id", "formatters", "downlink", "encoder"}, "")) ) var ( diff --git a/pkg/ttnpb/devicerepository.pb.setters.fm.go b/pkg/ttnpb/devicerepository.pb.setters.fm.go index 0d123d3a76..95080c51ac 100644 --- a/pkg/ttnpb/devicerepository.pb.setters.fm.go +++ b/pkg/ttnpb/devicerepository.pb.setters.fm.go @@ -274,8 +274,7 @@ func (dst *EndDeviceModel) SetFields(src *EndDeviceModel, paths ...string) error if src != nil { dst.KeySecurity = src.KeySecurity } else { - var zero KeySecurity - dst.KeySecurity = zero + dst.KeySecurity = 0 } case "photos": if len(subs) > 0 { @@ -990,8 +989,7 @@ func (dst *MessagePayloadDecoder) SetFields(src *MessagePayloadDecoder, paths .. if src != nil { dst.Formatter = src.Formatter } else { - var zero PayloadFormatter - dst.Formatter = zero + dst.Formatter = 0 } case "formatter_parameter": if len(subs) > 0 { @@ -1040,8 +1038,7 @@ func (dst *MessagePayloadEncoder) SetFields(src *MessagePayloadEncoder, paths .. if src != nil { dst.Formatter = src.Formatter } else { - var zero PayloadFormatter - dst.Formatter = zero + dst.Formatter = 0 } case "formatter_parameter": if len(subs) > 0 { diff --git a/pkg/ttnpb/devicerepository.pb.validate.go b/pkg/ttnpb/devicerepository.pb.validate.go index 7f30e33ce4..61b279fe56 100644 --- a/pkg/ttnpb/devicerepository.pb.validate.go +++ b/pkg/ttnpb/devicerepository.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _devicerepository_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on EndDeviceBrand with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/devicerepository_grpc.pb.go b/pkg/ttnpb/devicerepository_grpc.pb.go new file mode 100644 index 0000000000..722a3e5ccc --- /dev/null +++ b/pkg/ttnpb/devicerepository_grpc.pb.go @@ -0,0 +1,357 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/devicerepository.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// DeviceRepositoryClient is the client API for DeviceRepository service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type DeviceRepositoryClient interface { + ListBrands(ctx context.Context, in *ListEndDeviceBrandsRequest, opts ...grpc.CallOption) (*ListEndDeviceBrandsResponse, error) + GetBrand(ctx context.Context, in *GetEndDeviceBrandRequest, opts ...grpc.CallOption) (*EndDeviceBrand, error) + ListModels(ctx context.Context, in *ListEndDeviceModelsRequest, opts ...grpc.CallOption) (*ListEndDeviceModelsResponse, error) + GetModel(ctx context.Context, in *GetEndDeviceModelRequest, opts ...grpc.CallOption) (*EndDeviceModel, error) + GetTemplate(ctx context.Context, in *GetTemplateRequest, opts ...grpc.CallOption) (*EndDeviceTemplate, error) + GetUplinkDecoder(ctx context.Context, in *GetPayloadFormatterRequest, opts ...grpc.CallOption) (*MessagePayloadDecoder, error) + GetDownlinkDecoder(ctx context.Context, in *GetPayloadFormatterRequest, opts ...grpc.CallOption) (*MessagePayloadDecoder, error) + GetDownlinkEncoder(ctx context.Context, in *GetPayloadFormatterRequest, opts ...grpc.CallOption) (*MessagePayloadEncoder, error) +} + +type deviceRepositoryClient struct { + cc grpc.ClientConnInterface +} + +func NewDeviceRepositoryClient(cc grpc.ClientConnInterface) DeviceRepositoryClient { + return &deviceRepositoryClient{cc} +} + +func (c *deviceRepositoryClient) ListBrands(ctx context.Context, in *ListEndDeviceBrandsRequest, opts ...grpc.CallOption) (*ListEndDeviceBrandsResponse, error) { + out := new(ListEndDeviceBrandsResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.DeviceRepository/ListBrands", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *deviceRepositoryClient) GetBrand(ctx context.Context, in *GetEndDeviceBrandRequest, opts ...grpc.CallOption) (*EndDeviceBrand, error) { + out := new(EndDeviceBrand) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.DeviceRepository/GetBrand", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *deviceRepositoryClient) ListModels(ctx context.Context, in *ListEndDeviceModelsRequest, opts ...grpc.CallOption) (*ListEndDeviceModelsResponse, error) { + out := new(ListEndDeviceModelsResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.DeviceRepository/ListModels", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *deviceRepositoryClient) GetModel(ctx context.Context, in *GetEndDeviceModelRequest, opts ...grpc.CallOption) (*EndDeviceModel, error) { + out := new(EndDeviceModel) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.DeviceRepository/GetModel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *deviceRepositoryClient) GetTemplate(ctx context.Context, in *GetTemplateRequest, opts ...grpc.CallOption) (*EndDeviceTemplate, error) { + out := new(EndDeviceTemplate) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.DeviceRepository/GetTemplate", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *deviceRepositoryClient) GetUplinkDecoder(ctx context.Context, in *GetPayloadFormatterRequest, opts ...grpc.CallOption) (*MessagePayloadDecoder, error) { + out := new(MessagePayloadDecoder) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.DeviceRepository/GetUplinkDecoder", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *deviceRepositoryClient) GetDownlinkDecoder(ctx context.Context, in *GetPayloadFormatterRequest, opts ...grpc.CallOption) (*MessagePayloadDecoder, error) { + out := new(MessagePayloadDecoder) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.DeviceRepository/GetDownlinkDecoder", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *deviceRepositoryClient) GetDownlinkEncoder(ctx context.Context, in *GetPayloadFormatterRequest, opts ...grpc.CallOption) (*MessagePayloadEncoder, error) { + out := new(MessagePayloadEncoder) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.DeviceRepository/GetDownlinkEncoder", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// DeviceRepositoryServer is the server API for DeviceRepository service. +// All implementations must embed UnimplementedDeviceRepositoryServer +// for forward compatibility +type DeviceRepositoryServer interface { + ListBrands(context.Context, *ListEndDeviceBrandsRequest) (*ListEndDeviceBrandsResponse, error) + GetBrand(context.Context, *GetEndDeviceBrandRequest) (*EndDeviceBrand, error) + ListModels(context.Context, *ListEndDeviceModelsRequest) (*ListEndDeviceModelsResponse, error) + GetModel(context.Context, *GetEndDeviceModelRequest) (*EndDeviceModel, error) + GetTemplate(context.Context, *GetTemplateRequest) (*EndDeviceTemplate, error) + GetUplinkDecoder(context.Context, *GetPayloadFormatterRequest) (*MessagePayloadDecoder, error) + GetDownlinkDecoder(context.Context, *GetPayloadFormatterRequest) (*MessagePayloadDecoder, error) + GetDownlinkEncoder(context.Context, *GetPayloadFormatterRequest) (*MessagePayloadEncoder, error) + mustEmbedUnimplementedDeviceRepositoryServer() +} + +// UnimplementedDeviceRepositoryServer must be embedded to have forward compatible implementations. +type UnimplementedDeviceRepositoryServer struct { +} + +func (UnimplementedDeviceRepositoryServer) ListBrands(context.Context, *ListEndDeviceBrandsRequest) (*ListEndDeviceBrandsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListBrands not implemented") +} +func (UnimplementedDeviceRepositoryServer) GetBrand(context.Context, *GetEndDeviceBrandRequest) (*EndDeviceBrand, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetBrand not implemented") +} +func (UnimplementedDeviceRepositoryServer) ListModels(context.Context, *ListEndDeviceModelsRequest) (*ListEndDeviceModelsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListModels not implemented") +} +func (UnimplementedDeviceRepositoryServer) GetModel(context.Context, *GetEndDeviceModelRequest) (*EndDeviceModel, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetModel not implemented") +} +func (UnimplementedDeviceRepositoryServer) GetTemplate(context.Context, *GetTemplateRequest) (*EndDeviceTemplate, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTemplate not implemented") +} +func (UnimplementedDeviceRepositoryServer) GetUplinkDecoder(context.Context, *GetPayloadFormatterRequest) (*MessagePayloadDecoder, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetUplinkDecoder not implemented") +} +func (UnimplementedDeviceRepositoryServer) GetDownlinkDecoder(context.Context, *GetPayloadFormatterRequest) (*MessagePayloadDecoder, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDownlinkDecoder not implemented") +} +func (UnimplementedDeviceRepositoryServer) GetDownlinkEncoder(context.Context, *GetPayloadFormatterRequest) (*MessagePayloadEncoder, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDownlinkEncoder not implemented") +} +func (UnimplementedDeviceRepositoryServer) mustEmbedUnimplementedDeviceRepositoryServer() {} + +// UnsafeDeviceRepositoryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to DeviceRepositoryServer will +// result in compilation errors. +type UnsafeDeviceRepositoryServer interface { + mustEmbedUnimplementedDeviceRepositoryServer() +} + +func RegisterDeviceRepositoryServer(s grpc.ServiceRegistrar, srv DeviceRepositoryServer) { + s.RegisterService(&DeviceRepository_ServiceDesc, srv) +} + +func _DeviceRepository_ListBrands_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListEndDeviceBrandsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeviceRepositoryServer).ListBrands(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.DeviceRepository/ListBrands", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeviceRepositoryServer).ListBrands(ctx, req.(*ListEndDeviceBrandsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DeviceRepository_GetBrand_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetEndDeviceBrandRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeviceRepositoryServer).GetBrand(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.DeviceRepository/GetBrand", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeviceRepositoryServer).GetBrand(ctx, req.(*GetEndDeviceBrandRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DeviceRepository_ListModels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListEndDeviceModelsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeviceRepositoryServer).ListModels(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.DeviceRepository/ListModels", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeviceRepositoryServer).ListModels(ctx, req.(*ListEndDeviceModelsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DeviceRepository_GetModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetEndDeviceModelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeviceRepositoryServer).GetModel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.DeviceRepository/GetModel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeviceRepositoryServer).GetModel(ctx, req.(*GetEndDeviceModelRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DeviceRepository_GetTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTemplateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeviceRepositoryServer).GetTemplate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.DeviceRepository/GetTemplate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeviceRepositoryServer).GetTemplate(ctx, req.(*GetTemplateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DeviceRepository_GetUplinkDecoder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPayloadFormatterRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeviceRepositoryServer).GetUplinkDecoder(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.DeviceRepository/GetUplinkDecoder", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeviceRepositoryServer).GetUplinkDecoder(ctx, req.(*GetPayloadFormatterRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DeviceRepository_GetDownlinkDecoder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPayloadFormatterRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeviceRepositoryServer).GetDownlinkDecoder(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.DeviceRepository/GetDownlinkDecoder", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeviceRepositoryServer).GetDownlinkDecoder(ctx, req.(*GetPayloadFormatterRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DeviceRepository_GetDownlinkEncoder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPayloadFormatterRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeviceRepositoryServer).GetDownlinkEncoder(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.DeviceRepository/GetDownlinkEncoder", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeviceRepositoryServer).GetDownlinkEncoder(ctx, req.(*GetPayloadFormatterRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// DeviceRepository_ServiceDesc is the grpc.ServiceDesc for DeviceRepository service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var DeviceRepository_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.DeviceRepository", + HandlerType: (*DeviceRepositoryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListBrands", + Handler: _DeviceRepository_ListBrands_Handler, + }, + { + MethodName: "GetBrand", + Handler: _DeviceRepository_GetBrand_Handler, + }, + { + MethodName: "ListModels", + Handler: _DeviceRepository_ListModels_Handler, + }, + { + MethodName: "GetModel", + Handler: _DeviceRepository_GetModel_Handler, + }, + { + MethodName: "GetTemplate", + Handler: _DeviceRepository_GetTemplate_Handler, + }, + { + MethodName: "GetUplinkDecoder", + Handler: _DeviceRepository_GetUplinkDecoder_Handler, + }, + { + MethodName: "GetDownlinkDecoder", + Handler: _DeviceRepository_GetDownlinkDecoder_Handler, + }, + { + MethodName: "GetDownlinkEncoder", + Handler: _DeviceRepository_GetDownlinkEncoder_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/devicerepository.proto", +} diff --git a/pkg/ttnpb/devicerepository_json.pb.go b/pkg/ttnpb/devicerepository_json.pb.go index 3765b8c370..acd5fb38a1 100644 --- a/pkg/ttnpb/devicerepository_json.pb.go +++ b/pkg/ttnpb/devicerepository_json.pb.go @@ -1,15 +1,15 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/devicerepository.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" - types "github.com/gogo/protobuf/types" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) // KeyProvisioning_customname contains custom string values that override KeyProvisioning_name. @@ -168,7 +168,7 @@ func (x *EndDeviceModel) MarshalProtoJSON(s *jsonplugin.MarshalState) { for _, element := range x.HardwareVersions { s.WriteMoreIf(&wroteElement) // NOTE: EndDeviceModel_HardwareVersion does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, element) + golang.MarshalMessage(s, element) } s.WriteArrayEnd() } @@ -180,7 +180,7 @@ func (x *EndDeviceModel) MarshalProtoJSON(s *jsonplugin.MarshalState) { for _, element := range x.FirmwareVersions { s.WriteMoreIf(&wroteElement) // NOTE: EndDeviceModel_FirmwareVersion does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, element) + golang.MarshalMessage(s, element) } s.WriteArrayEnd() } @@ -193,7 +193,7 @@ func (x *EndDeviceModel) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("dimensions") // NOTE: EndDeviceModel_Dimensions does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Dimensions) + golang.MarshalMessage(s, x.Dimensions) } if x.Weight != nil || s.HasField("weight") { s.WriteMoreIf(&wroteField) @@ -208,13 +208,13 @@ func (x *EndDeviceModel) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("battery") // NOTE: EndDeviceModel_Battery does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Battery) + golang.MarshalMessage(s, x.Battery) } if x.OperatingConditions != nil || s.HasField("operating_conditions") { s.WriteMoreIf(&wroteField) s.WriteObjectField("operating_conditions") // NOTE: EndDeviceModel_OperatingConditions does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.OperatingConditions) + golang.MarshalMessage(s, x.OperatingConditions) } if x.IpCode != "" || s.HasField("ip_code") { s.WriteMoreIf(&wroteField) @@ -241,13 +241,13 @@ func (x *EndDeviceModel) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("photos") // NOTE: EndDeviceModel_Photos does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Photos) + golang.MarshalMessage(s, x.Photos) } if x.Videos != nil || s.HasField("videos") { s.WriteMoreIf(&wroteField) s.WriteObjectField("videos") // NOTE: EndDeviceModel_Videos does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Videos) + golang.MarshalMessage(s, x.Videos) } if x.ProductUrl != "" || s.HasField("product_url") { s.WriteMoreIf(&wroteField) @@ -267,7 +267,7 @@ func (x *EndDeviceModel) MarshalProtoJSON(s *jsonplugin.MarshalState) { for _, element := range x.Resellers { s.WriteMoreIf(&wroteElement) // NOTE: EndDeviceModel_Reseller does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, element) + golang.MarshalMessage(s, element) } s.WriteArrayEnd() } @@ -275,7 +275,7 @@ func (x *EndDeviceModel) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("compliances") // NOTE: EndDeviceModel_Compliances does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Compliances) + golang.MarshalMessage(s, x.Compliances) } if len(x.AdditionalRadios) > 0 || s.HasField("additional_radios") { s.WriteMoreIf(&wroteField) @@ -320,7 +320,7 @@ func (x *EndDeviceModel) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { s.ReadArray(func() { // NOTE: EndDeviceModel_HardwareVersion does not seem to implement UnmarshalProtoJSON. var v EndDeviceModel_HardwareVersion - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.HardwareVersions = append(x.HardwareVersions, &v) }) case "firmware_versions", "firmwareVersions": @@ -332,7 +332,7 @@ func (x *EndDeviceModel) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { s.ReadArray(func() { // NOTE: EndDeviceModel_FirmwareVersion does not seem to implement UnmarshalProtoJSON. var v EndDeviceModel_FirmwareVersion - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.FirmwareVersions = append(x.FirmwareVersions, &v) }) case "sensors": @@ -350,7 +350,7 @@ func (x *EndDeviceModel) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: EndDeviceModel_Dimensions does not seem to implement UnmarshalProtoJSON. var v EndDeviceModel_Dimensions - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Dimensions = &v case "weight": s.AddField("weight") @@ -362,7 +362,7 @@ func (x *EndDeviceModel) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { if s.Err() != nil { return } - x.Weight = &types.FloatValue{Value: v} + x.Weight = &wrapperspb.FloatValue{Value: v} case "battery": s.AddField("battery") if s.ReadNil() { @@ -371,7 +371,7 @@ func (x *EndDeviceModel) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: EndDeviceModel_Battery does not seem to implement UnmarshalProtoJSON. var v EndDeviceModel_Battery - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Battery = &v case "operating_conditions", "operatingConditions": s.AddField("operating_conditions") @@ -381,7 +381,7 @@ func (x *EndDeviceModel) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: EndDeviceModel_OperatingConditions does not seem to implement UnmarshalProtoJSON. var v EndDeviceModel_OperatingConditions - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.OperatingConditions = &v case "ip_code", "ipCode": s.AddField("ip_code") @@ -408,7 +408,7 @@ func (x *EndDeviceModel) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: EndDeviceModel_Photos does not seem to implement UnmarshalProtoJSON. var v EndDeviceModel_Photos - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Photos = &v case "videos": s.AddField("videos") @@ -418,7 +418,7 @@ func (x *EndDeviceModel) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: EndDeviceModel_Videos does not seem to implement UnmarshalProtoJSON. var v EndDeviceModel_Videos - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Videos = &v case "product_url", "productUrl": s.AddField("product_url") @@ -435,7 +435,7 @@ func (x *EndDeviceModel) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { s.ReadArray(func() { // NOTE: EndDeviceModel_Reseller does not seem to implement UnmarshalProtoJSON. var v EndDeviceModel_Reseller - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Resellers = append(x.Resellers, &v) }) case "compliances": @@ -446,7 +446,7 @@ func (x *EndDeviceModel) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: EndDeviceModel_Compliances does not seem to implement UnmarshalProtoJSON. var v EndDeviceModel_Compliances - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Compliances = &v case "additional_radios", "additionalRadios": s.AddField("additional_radios") @@ -464,6 +464,468 @@ func (x *EndDeviceModel) UnmarshalJSON(b []byte) error { return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) } +// MarshalProtoJSON marshals the GetEndDeviceBrandRequest message to JSON. +func (x *GetEndDeviceBrandRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.ApplicationIds != nil || s.HasField("application_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("application_ids") + // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.ApplicationIds) + } + if x.BrandId != "" || s.HasField("brand_id") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("brand_id") + s.WriteString(x.BrandId) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the GetEndDeviceBrandRequest to JSON. +func (x *GetEndDeviceBrandRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the GetEndDeviceBrandRequest message from JSON. +func (x *GetEndDeviceBrandRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "application_ids", "applicationIds": + s.AddField("application_ids") + if s.ReadNil() { + x.ApplicationIds = nil + return + } + // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationIdentifiers + golang.UnmarshalMessage(s, &v) + x.ApplicationIds = &v + case "brand_id", "brandId": + s.AddField("brand_id") + x.BrandId = s.ReadString() + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the GetEndDeviceBrandRequest from JSON. +func (x *GetEndDeviceBrandRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the ListEndDeviceBrandsRequest message to JSON. +func (x *ListEndDeviceBrandsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.ApplicationIds != nil || s.HasField("application_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("application_ids") + // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.ApplicationIds) + } + if x.Limit != 0 || s.HasField("limit") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("limit") + s.WriteUint32(x.Limit) + } + if x.Page != 0 || s.HasField("page") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("page") + s.WriteUint32(x.Page) + } + if x.OrderBy != "" || s.HasField("order_by") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("order_by") + s.WriteString(x.OrderBy) + } + if x.Search != "" || s.HasField("search") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("search") + s.WriteString(x.Search) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the ListEndDeviceBrandsRequest to JSON. +func (x *ListEndDeviceBrandsRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the ListEndDeviceBrandsRequest message from JSON. +func (x *ListEndDeviceBrandsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "application_ids", "applicationIds": + s.AddField("application_ids") + if s.ReadNil() { + x.ApplicationIds = nil + return + } + // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationIdentifiers + golang.UnmarshalMessage(s, &v) + x.ApplicationIds = &v + case "limit": + s.AddField("limit") + x.Limit = s.ReadUint32() + case "page": + s.AddField("page") + x.Page = s.ReadUint32() + case "order_by", "orderBy": + s.AddField("order_by") + x.OrderBy = s.ReadString() + case "search": + s.AddField("search") + x.Search = s.ReadString() + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the ListEndDeviceBrandsRequest from JSON. +func (x *ListEndDeviceBrandsRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the GetEndDeviceModelRequest message to JSON. +func (x *GetEndDeviceModelRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.ApplicationIds != nil || s.HasField("application_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("application_ids") + // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.ApplicationIds) + } + if x.BrandId != "" || s.HasField("brand_id") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("brand_id") + s.WriteString(x.BrandId) + } + if x.ModelId != "" || s.HasField("model_id") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("model_id") + s.WriteString(x.ModelId) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the GetEndDeviceModelRequest to JSON. +func (x *GetEndDeviceModelRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the GetEndDeviceModelRequest message from JSON. +func (x *GetEndDeviceModelRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "application_ids", "applicationIds": + s.AddField("application_ids") + if s.ReadNil() { + x.ApplicationIds = nil + return + } + // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationIdentifiers + golang.UnmarshalMessage(s, &v) + x.ApplicationIds = &v + case "brand_id", "brandId": + s.AddField("brand_id") + x.BrandId = s.ReadString() + case "model_id", "modelId": + s.AddField("model_id") + x.ModelId = s.ReadString() + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the GetEndDeviceModelRequest from JSON. +func (x *GetEndDeviceModelRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the ListEndDeviceModelsRequest message to JSON. +func (x *ListEndDeviceModelsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.ApplicationIds != nil || s.HasField("application_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("application_ids") + // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.ApplicationIds) + } + if x.BrandId != "" || s.HasField("brand_id") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("brand_id") + s.WriteString(x.BrandId) + } + if x.Limit != 0 || s.HasField("limit") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("limit") + s.WriteUint32(x.Limit) + } + if x.Page != 0 || s.HasField("page") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("page") + s.WriteUint32(x.Page) + } + if x.OrderBy != "" || s.HasField("order_by") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("order_by") + s.WriteString(x.OrderBy) + } + if x.Search != "" || s.HasField("search") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("search") + s.WriteString(x.Search) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the ListEndDeviceModelsRequest to JSON. +func (x *ListEndDeviceModelsRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the ListEndDeviceModelsRequest message from JSON. +func (x *ListEndDeviceModelsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "application_ids", "applicationIds": + s.AddField("application_ids") + if s.ReadNil() { + x.ApplicationIds = nil + return + } + // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationIdentifiers + golang.UnmarshalMessage(s, &v) + x.ApplicationIds = &v + case "brand_id", "brandId": + s.AddField("brand_id") + x.BrandId = s.ReadString() + case "limit": + s.AddField("limit") + x.Limit = s.ReadUint32() + case "page": + s.AddField("page") + x.Page = s.ReadUint32() + case "order_by", "orderBy": + s.AddField("order_by") + x.OrderBy = s.ReadString() + case "search": + s.AddField("search") + x.Search = s.ReadString() + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the ListEndDeviceModelsRequest from JSON. +func (x *ListEndDeviceModelsRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the GetPayloadFormatterRequest message to JSON. +func (x *GetPayloadFormatterRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.ApplicationIds != nil || s.HasField("application_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("application_ids") + // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.ApplicationIds) + } + if x.VersionIds != nil || s.HasField("version_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("version_ids") + // NOTE: EndDeviceVersionIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.VersionIds) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the GetPayloadFormatterRequest to JSON. +func (x *GetPayloadFormatterRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the GetPayloadFormatterRequest message from JSON. +func (x *GetPayloadFormatterRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "application_ids", "applicationIds": + s.AddField("application_ids") + if s.ReadNil() { + x.ApplicationIds = nil + return + } + // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationIdentifiers + golang.UnmarshalMessage(s, &v) + x.ApplicationIds = &v + case "version_ids", "versionIds": + s.AddField("version_ids") + if s.ReadNil() { + x.VersionIds = nil + return + } + // NOTE: EndDeviceVersionIdentifiers does not seem to implement UnmarshalProtoJSON. + var v EndDeviceVersionIdentifiers + golang.UnmarshalMessage(s, &v) + x.VersionIds = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the GetPayloadFormatterRequest from JSON. +func (x *GetPayloadFormatterRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + // MarshalProtoJSON marshals the ListEndDeviceModelsResponse message to JSON. func (x *ListEndDeviceModelsResponse) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x == nil { @@ -558,7 +1020,7 @@ func (x *MessagePayloadDecoder) MarshalProtoJSON(s *jsonplugin.MarshalState) { for _, element := range x.Examples { s.WriteMoreIf(&wroteElement) // NOTE: MessagePayloadDecoder_Example does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, element) + golang.MarshalMessage(s, element) } s.WriteArrayEnd() } @@ -597,7 +1059,7 @@ func (x *MessagePayloadDecoder) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) s.ReadArray(func() { // NOTE: MessagePayloadDecoder_Example does not seem to implement UnmarshalProtoJSON. var v MessagePayloadDecoder_Example - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Examples = append(x.Examples, &v) }) } @@ -640,7 +1102,7 @@ func (x *MessagePayloadEncoder) MarshalProtoJSON(s *jsonplugin.MarshalState) { for _, element := range x.Examples { s.WriteMoreIf(&wroteElement) // NOTE: MessagePayloadEncoder_Example does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, element) + golang.MarshalMessage(s, element) } s.WriteArrayEnd() } @@ -679,7 +1141,7 @@ func (x *MessagePayloadEncoder) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) s.ReadArray(func() { // NOTE: MessagePayloadEncoder_Example does not seem to implement UnmarshalProtoJSON. var v MessagePayloadEncoder_Example - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Examples = append(x.Examples, &v) }) } diff --git a/pkg/ttnpb/email_messages.pb.go b/pkg/ttnpb/email_messages.pb.go index 4434faee89..4591002bd5 100644 --- a/pkg/ttnpb/email_messages.pb.go +++ b/pkg/ttnpb/email_messages.pb.go @@ -1,95 +1,187 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2022 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/email_messages.proto package ttnpb import ( - fmt "fmt" - proto "github.com/gogo/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // CreateClientEmailMessage is used as a wrapper for handling the email regarding the create client procedure. type CreateClientEmailMessage struct { - CreateClientRequest *CreateClientRequest `protobuf:"bytes,1,opt,name=create_client_request,json=createClientRequest,proto3" json:"create_client_request,omitempty"` - ApiKey *APIKey `protobuf:"bytes,2,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *CreateClientEmailMessage) Reset() { *m = CreateClientEmailMessage{} } -func (m *CreateClientEmailMessage) String() string { return proto.CompactTextString(m) } -func (*CreateClientEmailMessage) ProtoMessage() {} -func (*CreateClientEmailMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_817fda9f00c42195, []int{0} -} -func (m *CreateClientEmailMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateClientEmailMessage.Unmarshal(m, b) + CreateClientRequest *CreateClientRequest `protobuf:"bytes,1,opt,name=create_client_request,json=createClientRequest,proto3" json:"create_client_request,omitempty"` + ApiKey *APIKey `protobuf:"bytes,2,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` } -func (m *CreateClientEmailMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateClientEmailMessage.Marshal(b, m, deterministic) -} -func (m *CreateClientEmailMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateClientEmailMessage.Merge(m, src) + +func (x *CreateClientEmailMessage) Reset() { + *x = CreateClientEmailMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_email_messages_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateClientEmailMessage) XXX_Size() int { - return xxx_messageInfo_CreateClientEmailMessage.Size(m) + +func (x *CreateClientEmailMessage) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateClientEmailMessage) XXX_DiscardUnknown() { - xxx_messageInfo_CreateClientEmailMessage.DiscardUnknown(m) + +func (*CreateClientEmailMessage) ProtoMessage() {} + +func (x *CreateClientEmailMessage) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_email_messages_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CreateClientEmailMessage proto.InternalMessageInfo +// Deprecated: Use CreateClientEmailMessage.ProtoReflect.Descriptor instead. +func (*CreateClientEmailMessage) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_email_messages_proto_rawDescGZIP(), []int{0} +} -func (m *CreateClientEmailMessage) GetCreateClientRequest() *CreateClientRequest { - if m != nil { - return m.CreateClientRequest +func (x *CreateClientEmailMessage) GetCreateClientRequest() *CreateClientRequest { + if x != nil { + return x.CreateClientRequest } return nil } -func (m *CreateClientEmailMessage) GetApiKey() *APIKey { - if m != nil { - return m.ApiKey +func (x *CreateClientEmailMessage) GetApiKey() *APIKey { + if x != nil { + return x.ApiKey } return nil } -func init() { - proto.RegisterType((*CreateClientEmailMessage)(nil), "ttn.lorawan.v3.CreateClientEmailMessage") +var File_lorawan_stack_api_email_messages_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_email_messages_proto_rawDesc = []byte{ + 0x0a, 0x26, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa4, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x57, 0x0a, 0x15, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, + 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x42, + 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("lorawan-stack/api/email_messages.proto", fileDescriptor_817fda9f00c42195) +var ( + file_lorawan_stack_api_email_messages_proto_rawDescOnce sync.Once + file_lorawan_stack_api_email_messages_proto_rawDescData = file_lorawan_stack_api_email_messages_proto_rawDesc +) + +func file_lorawan_stack_api_email_messages_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_email_messages_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_email_messages_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_email_messages_proto_rawDescData) + }) + return file_lorawan_stack_api_email_messages_proto_rawDescData } -var fileDescriptor_817fda9f00c42195 = []byte{ - // 232 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x8f, 0x41, 0x4b, 0x03, 0x31, - 0x10, 0x85, 0x59, 0x0f, 0x15, 0x22, 0x78, 0x58, 0x51, 0x16, 0x0f, 0x22, 0x0a, 0xe2, 0xc5, 0x04, - 0xdd, 0x5f, 0xa0, 0xc5, 0x83, 0x14, 0x41, 0xf6, 0x22, 0x78, 0x09, 0xd3, 0x30, 0x64, 0x43, 0xb6, - 0x49, 0x4c, 0xc6, 0x96, 0xfd, 0x3f, 0xfe, 0x50, 0x31, 0xe9, 0xc1, 0xba, 0xbd, 0xce, 0x7b, 0xef, - 0x7b, 0xf3, 0xd8, 0xcd, 0xe0, 0x23, 0x6c, 0xc0, 0xdd, 0x25, 0x02, 0x65, 0x05, 0x04, 0x23, 0x70, - 0x05, 0x66, 0x90, 0x2b, 0x4c, 0x09, 0x34, 0x26, 0x1e, 0xa2, 0x27, 0x5f, 0x1f, 0x13, 0x39, 0xbe, - 0xf5, 0xf2, 0x75, 0x7b, 0x7e, 0x31, 0xcd, 0xa9, 0xc1, 0xa0, 0xa3, 0xe2, 0xdf, 0xa7, 0x47, 0xa3, - 0x7b, 0xda, 0xf2, 0xae, 0xbe, 0x2b, 0xd6, 0xcc, 0x23, 0x02, 0xe1, 0x3c, 0xc7, 0x9e, 0x7f, 0x4b, - 0x5f, 0x4b, 0x67, 0xfd, 0xce, 0x4e, 0x55, 0xd6, 0x64, 0x61, 0xca, 0x88, 0x9f, 0x5f, 0x98, 0xa8, - 0xa9, 0x2e, 0xab, 0xdb, 0xa3, 0x87, 0x6b, 0xbe, 0xfb, 0x0c, 0xff, 0x0b, 0xea, 0x8a, 0xb5, 0x3b, - 0x51, 0xd3, 0x63, 0x2d, 0xd8, 0x21, 0x04, 0x23, 0x2d, 0x8e, 0xcd, 0x41, 0x46, 0x9d, 0xfd, 0x47, - 0x3d, 0xbe, 0xbd, 0x2c, 0x70, 0xec, 0x66, 0x10, 0xcc, 0x02, 0xc7, 0xa7, 0xfb, 0x0f, 0xa1, 0x3d, - 0xa7, 0x1e, 0xa9, 0x37, 0x4e, 0x27, 0xee, 0x90, 0x36, 0x3e, 0x5a, 0xb1, 0xbb, 0x6e, 0xdd, 0x8a, - 0x60, 0xb5, 0x20, 0x72, 0x61, 0xb9, 0x9c, 0xe5, 0x81, 0xed, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x1c, 0x9f, 0xdc, 0x91, 0x5a, 0x01, 0x00, 0x00, +var file_lorawan_stack_api_email_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_lorawan_stack_api_email_messages_proto_goTypes = []interface{}{ + (*CreateClientEmailMessage)(nil), // 0: ttn.lorawan.v3.CreateClientEmailMessage + (*CreateClientRequest)(nil), // 1: ttn.lorawan.v3.CreateClientRequest + (*APIKey)(nil), // 2: ttn.lorawan.v3.APIKey +} +var file_lorawan_stack_api_email_messages_proto_depIdxs = []int32{ + 1, // 0: ttn.lorawan.v3.CreateClientEmailMessage.create_client_request:type_name -> ttn.lorawan.v3.CreateClientRequest + 2, // 1: ttn.lorawan.v3.CreateClientEmailMessage.api_key:type_name -> ttn.lorawan.v3.APIKey + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_email_messages_proto_init() } +func file_lorawan_stack_api_email_messages_proto_init() { + if File_lorawan_stack_api_email_messages_proto != nil { + return + } + file_lorawan_stack_api_client_proto_init() + file_lorawan_stack_api_rights_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_email_messages_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateClientEmailMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_email_messages_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_email_messages_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_email_messages_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_email_messages_proto_msgTypes, + }.Build() + File_lorawan_stack_api_email_messages_proto = out.File + file_lorawan_stack_api_email_messages_proto_rawDesc = nil + file_lorawan_stack_api_email_messages_proto_goTypes = nil + file_lorawan_stack_api_email_messages_proto_depIdxs = nil } diff --git a/pkg/ttnpb/email_messages.pb.validate.go b/pkg/ttnpb/email_messages.pb.validate.go index 30d2b14678..1558f7195b 100644 --- a/pkg/ttnpb/email_messages.pb.validate.go +++ b/pkg/ttnpb/email_messages.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _email_messages_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on CreateClientEmailMessage with the // rules defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/email_messages_json.pb.go b/pkg/ttnpb/email_messages_json.pb.go index b05db0cdd4..317ace9708 100644 --- a/pkg/ttnpb/email_messages_json.pb.go +++ b/pkg/ttnpb/email_messages_json.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/email_messages.proto package ttnpb diff --git a/pkg/ttnpb/end_device.pb.go b/pkg/ttnpb/end_device.pb.go index bc45e01744..bed9c16bcf 100644 --- a/pkg/ttnpb/end_device.pb.go +++ b/pkg/ttnpb/end_device.pb.go @@ -1,32 +1,48 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/end_device.proto package ttnpb import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + structpb "google.golang.org/protobuf/types/known/structpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // Power state of the device. type PowerState int32 @@ -37,27 +53,52 @@ const ( PowerState_POWER_EXTERNAL PowerState = 2 ) -var PowerState_name = map[int32]string{ - 0: "POWER_UNKNOWN", - 1: "POWER_BATTERY", - 2: "POWER_EXTERNAL", -} +// Enum value maps for PowerState. +var ( + PowerState_name = map[int32]string{ + 0: "POWER_UNKNOWN", + 1: "POWER_BATTERY", + 2: "POWER_EXTERNAL", + } + PowerState_value = map[string]int32{ + "POWER_UNKNOWN": 0, + "POWER_BATTERY": 1, + "POWER_EXTERNAL": 2, + } +) -var PowerState_value = map[string]int32{ - "POWER_UNKNOWN": 0, - "POWER_BATTERY": 1, - "POWER_EXTERNAL": 2, +func (x PowerState) Enum() *PowerState { + p := new(PowerState) + *p = x + return p } func (x PowerState) String() string { - return proto.EnumName(PowerState_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PowerState) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_end_device_proto_enumTypes[0].Descriptor() +} + +func (PowerState) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_end_device_proto_enumTypes[0] +} + +func (x PowerState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use PowerState.Descriptor instead. func (PowerState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{0} + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{0} } type Session struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03). // Known by Network Server, Application Server and Join Server. Owned by Network Server. DevAddr []byte `protobuf:"bytes,2,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` @@ -71,128 +112,142 @@ type Session struct { // Frame counter of the last confirmed downlink message sent. Network Server only. LastConfFCntDown uint32 `protobuf:"varint,7,opt,name=last_conf_f_cnt_down,json=lastConfFCntDown,proto3" json:"last_conf_f_cnt_down,omitempty"` // Time when the session started. Network Server only. - StartedAt *types.Timestamp `protobuf:"bytes,8,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` + StartedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` // Queued Application downlink messages. Stored in Application Server and Network Server. QueuedApplicationDownlinks []*ApplicationDownlink `protobuf:"bytes,9,rep,name=queued_application_downlinks,json=queuedApplicationDownlinks,proto3" json:"queued_application_downlinks,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Session) Reset() { *m = Session{} } -func (m *Session) String() string { return proto.CompactTextString(m) } -func (*Session) ProtoMessage() {} -func (*Session) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{0} -} -func (m *Session) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Session.Unmarshal(m, b) -} -func (m *Session) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Session.Marshal(b, m, deterministic) -} -func (m *Session) XXX_Merge(src proto.Message) { - xxx_messageInfo_Session.Merge(m, src) +func (x *Session) Reset() { + *x = Session{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Session) XXX_Size() int { - return xxx_messageInfo_Session.Size(m) + +func (x *Session) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Session) XXX_DiscardUnknown() { - xxx_messageInfo_Session.DiscardUnknown(m) + +func (*Session) ProtoMessage() {} + +func (x *Session) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Session proto.InternalMessageInfo +// Deprecated: Use Session.ProtoReflect.Descriptor instead. +func (*Session) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{0} +} -func (m *Session) GetDevAddr() []byte { - if m != nil { - return m.DevAddr +func (x *Session) GetDevAddr() []byte { + if x != nil { + return x.DevAddr } return nil } -func (m *Session) GetKeys() *SessionKeys { - if m != nil { - return m.Keys +func (x *Session) GetKeys() *SessionKeys { + if x != nil { + return x.Keys } return nil } -func (m *Session) GetLastFCntUp() uint32 { - if m != nil { - return m.LastFCntUp +func (x *Session) GetLastFCntUp() uint32 { + if x != nil { + return x.LastFCntUp } return 0 } -func (m *Session) GetLastNFCntDown() uint32 { - if m != nil { - return m.LastNFCntDown +func (x *Session) GetLastNFCntDown() uint32 { + if x != nil { + return x.LastNFCntDown } return 0 } -func (m *Session) GetLastAFCntDown() uint32 { - if m != nil { - return m.LastAFCntDown +func (x *Session) GetLastAFCntDown() uint32 { + if x != nil { + return x.LastAFCntDown } return 0 } -func (m *Session) GetLastConfFCntDown() uint32 { - if m != nil { - return m.LastConfFCntDown +func (x *Session) GetLastConfFCntDown() uint32 { + if x != nil { + return x.LastConfFCntDown } return 0 } -func (m *Session) GetStartedAt() *types.Timestamp { - if m != nil { - return m.StartedAt +func (x *Session) GetStartedAt() *timestamppb.Timestamp { + if x != nil { + return x.StartedAt } return nil } -func (m *Session) GetQueuedApplicationDownlinks() []*ApplicationDownlink { - if m != nil { - return m.QueuedApplicationDownlinks +func (x *Session) GetQueuedApplicationDownlinks() []*ApplicationDownlink { + if x != nil { + return x.QueuedApplicationDownlinks } return nil } type BoolValue struct { - Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *BoolValue) Reset() { *m = BoolValue{} } -func (m *BoolValue) String() string { return proto.CompactTextString(m) } -func (*BoolValue) ProtoMessage() {} -func (*BoolValue) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{1} -} -func (m *BoolValue) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BoolValue.Unmarshal(m, b) + Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` } -func (m *BoolValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BoolValue.Marshal(b, m, deterministic) -} -func (m *BoolValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_BoolValue.Merge(m, src) + +func (x *BoolValue) Reset() { + *x = BoolValue{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *BoolValue) XXX_Size() int { - return xxx_messageInfo_BoolValue.Size(m) + +func (x *BoolValue) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *BoolValue) XXX_DiscardUnknown() { - xxx_messageInfo_BoolValue.DiscardUnknown(m) + +func (*BoolValue) ProtoMessage() {} + +func (x *BoolValue) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_BoolValue proto.InternalMessageInfo +// Deprecated: Use BoolValue.ProtoReflect.Descriptor instead. +func (*BoolValue) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{1} +} -func (m *BoolValue) GetValue() bool { - if m != nil { - return m.Value +func (x *BoolValue) GetValue() bool { + if x != nil { + return x.Value } return false } @@ -200,6 +255,10 @@ func (m *BoolValue) GetValue() bool { // MACParameters represent the parameters of the device's MAC layer (active or desired). // This is used internally by the Network Server. type MACParameters struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Maximum EIRP (dBm). MaxEirp float32 `protobuf:"fixed32,1,opt,name=max_eirp,json=maxEirp,proto3" json:"max_eirp,omitempty"` // ADR: data rate index to use. @@ -210,10 +269,14 @@ type MACParameters struct { AdrNbTrans uint32 `protobuf:"varint,6,opt,name=adr_nb_trans,json=adrNbTrans,proto3" json:"adr_nb_trans,omitempty"` // ADR: number of messages to wait before setting ADRAckReq. // This field is deprecated, use adr_ack_limit_exponent instead. - AdrAckLimit uint32 `protobuf:"varint,7,opt,name=adr_ack_limit,json=adrAckLimit,proto3" json:"adr_ack_limit,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Do not use. + AdrAckLimit uint32 `protobuf:"varint,7,opt,name=adr_ack_limit,json=adrAckLimit,proto3" json:"adr_ack_limit,omitempty"` // ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate. // This field is deprecated, use adr_ack_delay_exponent instead. - AdrAckDelay uint32 `protobuf:"varint,8,opt,name=adr_ack_delay,json=adrAckDelay,proto3" json:"adr_ack_delay,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Do not use. + AdrAckDelay uint32 `protobuf:"varint,8,opt,name=adr_ack_delay,json=adrAckDelay,proto3" json:"adr_ack_delay,omitempty"` // Rx1 delay (Rx2 delay is Rx1 delay + 1 second). Rx1Delay RxDelay `protobuf:"varint,9,opt,name=rx1_delay,json=rx1Delay,proto3,enum=ttn.lorawan.v3.RxDelay" json:"rx1_delay,omitempty"` // Data rate offset for Rx1. @@ -232,7 +295,9 @@ type MACParameters struct { PingSlotFrequency uint64 `protobuf:"varint,16,opt,name=ping_slot_frequency,json=pingSlotFrequency,proto3" json:"ping_slot_frequency,omitempty"` // Data rate index of the class B ping slot. // This field is deprecated, use ping_slot_data_rate_index_value instead. - PingSlotDataRateIndex DataRateIndex `protobuf:"varint,17,opt,name=ping_slot_data_rate_index,json=pingSlotDataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"ping_slot_data_rate_index,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Do not use. + PingSlotDataRateIndex DataRateIndex `protobuf:"varint,17,opt,name=ping_slot_data_rate_index,json=pingSlotDataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"ping_slot_data_rate_index,omitempty"` // Frequency of the class B beacon (Hz). BeaconFrequency uint64 `protobuf:"varint,18,opt,name=beacon_frequency,json=beaconFrequency,proto3" json:"beacon_frequency,omitempty"` // Configured uplink channels and optionally Rx1 frequency. @@ -249,269 +314,203 @@ type MACParameters struct { AdrAckDelayExponent *ADRAckDelayExponentValue `protobuf:"bytes,23,opt,name=adr_ack_delay_exponent,json=adrAckDelayExponent,proto3" json:"adr_ack_delay_exponent,omitempty"` // Data rate index of the class B ping slot. PingSlotDataRateIndexValue *DataRateIndexValue `protobuf:"bytes,24,opt,name=ping_slot_data_rate_index_value,json=pingSlotDataRateIndexValue,proto3" json:"ping_slot_data_rate_index_value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *MACParameters) Reset() { *m = MACParameters{} } -func (m *MACParameters) String() string { return proto.CompactTextString(m) } -func (*MACParameters) ProtoMessage() {} -func (*MACParameters) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{2} -} -func (m *MACParameters) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACParameters.Unmarshal(m, b) -} -func (m *MACParameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACParameters.Marshal(b, m, deterministic) -} -func (m *MACParameters) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACParameters.Merge(m, src) +func (x *MACParameters) Reset() { + *x = MACParameters{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACParameters) XXX_Size() int { - return xxx_messageInfo_MACParameters.Size(m) + +func (x *MACParameters) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MACParameters) XXX_DiscardUnknown() { - xxx_messageInfo_MACParameters.DiscardUnknown(m) + +func (*MACParameters) ProtoMessage() {} + +func (x *MACParameters) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MACParameters proto.InternalMessageInfo +// Deprecated: Use MACParameters.ProtoReflect.Descriptor instead. +func (*MACParameters) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{2} +} -func (m *MACParameters) GetMaxEirp() float32 { - if m != nil { - return m.MaxEirp +func (x *MACParameters) GetMaxEirp() float32 { + if x != nil { + return x.MaxEirp } return 0 } -func (m *MACParameters) GetAdrDataRateIndex() DataRateIndex { - if m != nil { - return m.AdrDataRateIndex +func (x *MACParameters) GetAdrDataRateIndex() DataRateIndex { + if x != nil { + return x.AdrDataRateIndex } return DataRateIndex_DATA_RATE_0 } -func (m *MACParameters) GetAdrTxPowerIndex() uint32 { - if m != nil { - return m.AdrTxPowerIndex +func (x *MACParameters) GetAdrTxPowerIndex() uint32 { + if x != nil { + return x.AdrTxPowerIndex } return 0 } -func (m *MACParameters) GetAdrNbTrans() uint32 { - if m != nil { - return m.AdrNbTrans +func (x *MACParameters) GetAdrNbTrans() uint32 { + if x != nil { + return x.AdrNbTrans } return 0 } // Deprecated: Do not use. -func (m *MACParameters) GetAdrAckLimit() uint32 { - if m != nil { - return m.AdrAckLimit +func (x *MACParameters) GetAdrAckLimit() uint32 { + if x != nil { + return x.AdrAckLimit } return 0 } // Deprecated: Do not use. -func (m *MACParameters) GetAdrAckDelay() uint32 { - if m != nil { - return m.AdrAckDelay +func (x *MACParameters) GetAdrAckDelay() uint32 { + if x != nil { + return x.AdrAckDelay } return 0 } -func (m *MACParameters) GetRx1Delay() RxDelay { - if m != nil { - return m.Rx1Delay +func (x *MACParameters) GetRx1Delay() RxDelay { + if x != nil { + return x.Rx1Delay } return RxDelay_RX_DELAY_0 } -func (m *MACParameters) GetRx1DataRateOffset() DataRateOffset { - if m != nil { - return m.Rx1DataRateOffset +func (x *MACParameters) GetRx1DataRateOffset() DataRateOffset { + if x != nil { + return x.Rx1DataRateOffset } return DataRateOffset_DATA_RATE_OFFSET_0 } -func (m *MACParameters) GetRx2DataRateIndex() DataRateIndex { - if m != nil { - return m.Rx2DataRateIndex +func (x *MACParameters) GetRx2DataRateIndex() DataRateIndex { + if x != nil { + return x.Rx2DataRateIndex } return DataRateIndex_DATA_RATE_0 } -func (m *MACParameters) GetRx2Frequency() uint64 { - if m != nil { - return m.Rx2Frequency +func (x *MACParameters) GetRx2Frequency() uint64 { + if x != nil { + return x.Rx2Frequency } return 0 } -func (m *MACParameters) GetMaxDutyCycle() AggregatedDutyCycle { - if m != nil { - return m.MaxDutyCycle +func (x *MACParameters) GetMaxDutyCycle() AggregatedDutyCycle { + if x != nil { + return x.MaxDutyCycle } return AggregatedDutyCycle_DUTY_CYCLE_1 } -func (m *MACParameters) GetRejoinTimePeriodicity() RejoinTimeExponent { - if m != nil { - return m.RejoinTimePeriodicity +func (x *MACParameters) GetRejoinTimePeriodicity() RejoinTimeExponent { + if x != nil { + return x.RejoinTimePeriodicity } return RejoinTimeExponent_REJOIN_TIME_0 } -func (m *MACParameters) GetRejoinCountPeriodicity() RejoinCountExponent { - if m != nil { - return m.RejoinCountPeriodicity +func (x *MACParameters) GetRejoinCountPeriodicity() RejoinCountExponent { + if x != nil { + return x.RejoinCountPeriodicity } return RejoinCountExponent_REJOIN_COUNT_16 } -func (m *MACParameters) GetPingSlotFrequency() uint64 { - if m != nil { - return m.PingSlotFrequency +func (x *MACParameters) GetPingSlotFrequency() uint64 { + if x != nil { + return x.PingSlotFrequency } return 0 } // Deprecated: Do not use. -func (m *MACParameters) GetPingSlotDataRateIndex() DataRateIndex { - if m != nil { - return m.PingSlotDataRateIndex +func (x *MACParameters) GetPingSlotDataRateIndex() DataRateIndex { + if x != nil { + return x.PingSlotDataRateIndex } return DataRateIndex_DATA_RATE_0 } -func (m *MACParameters) GetBeaconFrequency() uint64 { - if m != nil { - return m.BeaconFrequency +func (x *MACParameters) GetBeaconFrequency() uint64 { + if x != nil { + return x.BeaconFrequency } return 0 } -func (m *MACParameters) GetChannels() []*MACParameters_Channel { - if m != nil { - return m.Channels +func (x *MACParameters) GetChannels() []*MACParameters_Channel { + if x != nil { + return x.Channels } return nil } -func (m *MACParameters) GetUplinkDwellTime() *BoolValue { - if m != nil { - return m.UplinkDwellTime +func (x *MACParameters) GetUplinkDwellTime() *BoolValue { + if x != nil { + return x.UplinkDwellTime } return nil } -func (m *MACParameters) GetDownlinkDwellTime() *BoolValue { - if m != nil { - return m.DownlinkDwellTime +func (x *MACParameters) GetDownlinkDwellTime() *BoolValue { + if x != nil { + return x.DownlinkDwellTime } return nil } -func (m *MACParameters) GetAdrAckLimitExponent() *ADRAckLimitExponentValue { - if m != nil { - return m.AdrAckLimitExponent +func (x *MACParameters) GetAdrAckLimitExponent() *ADRAckLimitExponentValue { + if x != nil { + return x.AdrAckLimitExponent } return nil } -func (m *MACParameters) GetAdrAckDelayExponent() *ADRAckDelayExponentValue { - if m != nil { - return m.AdrAckDelayExponent +func (x *MACParameters) GetAdrAckDelayExponent() *ADRAckDelayExponentValue { + if x != nil { + return x.AdrAckDelayExponent } return nil } -func (m *MACParameters) GetPingSlotDataRateIndexValue() *DataRateIndexValue { - if m != nil { - return m.PingSlotDataRateIndexValue +func (x *MACParameters) GetPingSlotDataRateIndexValue() *DataRateIndexValue { + if x != nil { + return x.PingSlotDataRateIndexValue } return nil } -type MACParameters_Channel struct { - // Uplink frequency of the channel (Hz). - UplinkFrequency uint64 `protobuf:"varint,1,opt,name=uplink_frequency,json=uplinkFrequency,proto3" json:"uplink_frequency,omitempty"` - // Downlink frequency of the channel (Hz). - DownlinkFrequency uint64 `protobuf:"varint,2,opt,name=downlink_frequency,json=downlinkFrequency,proto3" json:"downlink_frequency,omitempty"` - // Index of the minimum data rate for uplink. - MinDataRateIndex DataRateIndex `protobuf:"varint,3,opt,name=min_data_rate_index,json=minDataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"min_data_rate_index,omitempty"` - // Index of the maximum data rate for uplink. - MaxDataRateIndex DataRateIndex `protobuf:"varint,4,opt,name=max_data_rate_index,json=maxDataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"max_data_rate_index,omitempty"` - // Channel can be used by device for uplink. - EnableUplink bool `protobuf:"varint,5,opt,name=enable_uplink,json=enableUplink,proto3" json:"enable_uplink,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MACParameters_Channel) Reset() { *m = MACParameters_Channel{} } -func (m *MACParameters_Channel) String() string { return proto.CompactTextString(m) } -func (*MACParameters_Channel) ProtoMessage() {} -func (*MACParameters_Channel) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{2, 0} -} -func (m *MACParameters_Channel) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACParameters_Channel.Unmarshal(m, b) -} -func (m *MACParameters_Channel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACParameters_Channel.Marshal(b, m, deterministic) -} -func (m *MACParameters_Channel) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACParameters_Channel.Merge(m, src) -} -func (m *MACParameters_Channel) XXX_Size() int { - return xxx_messageInfo_MACParameters_Channel.Size(m) -} -func (m *MACParameters_Channel) XXX_DiscardUnknown() { - xxx_messageInfo_MACParameters_Channel.DiscardUnknown(m) -} - -var xxx_messageInfo_MACParameters_Channel proto.InternalMessageInfo - -func (m *MACParameters_Channel) GetUplinkFrequency() uint64 { - if m != nil { - return m.UplinkFrequency - } - return 0 -} - -func (m *MACParameters_Channel) GetDownlinkFrequency() uint64 { - if m != nil { - return m.DownlinkFrequency - } - return 0 -} - -func (m *MACParameters_Channel) GetMinDataRateIndex() DataRateIndex { - if m != nil { - return m.MinDataRateIndex - } - return DataRateIndex_DATA_RATE_0 -} - -func (m *MACParameters_Channel) GetMaxDataRateIndex() DataRateIndex { - if m != nil { - return m.MaxDataRateIndex - } - return DataRateIndex_DATA_RATE_0 -} - -func (m *MACParameters_Channel) GetEnableUplink() bool { - if m != nil { - return m.EnableUplink - } - return false -} - // Template for creating end devices. type EndDeviceVersion struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Version identifiers. Ids *EndDeviceVersionIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` // LoRaWAN MAC version. @@ -537,181 +536,177 @@ type EndDeviceVersion struct { // Whether the device resets the join and dev nonces (not LoRaWAN compliant). ResetsJoinNonces bool `protobuf:"varint,12,opt,name=resets_join_nonces,json=resetsJoinNonces,proto3" json:"resets_join_nonces,omitempty"` // Default formatters defining the payload formats for this end device. - DefaultFormatters *MessagePayloadFormatters `protobuf:"bytes,13,opt,name=default_formatters,json=defaultFormatters,proto3" json:"default_formatters,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + DefaultFormatters *MessagePayloadFormatters `protobuf:"bytes,13,opt,name=default_formatters,json=defaultFormatters,proto3" json:"default_formatters,omitempty"` } -func (m *EndDeviceVersion) Reset() { *m = EndDeviceVersion{} } -func (m *EndDeviceVersion) String() string { return proto.CompactTextString(m) } -func (*EndDeviceVersion) ProtoMessage() {} -func (*EndDeviceVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{3} -} -func (m *EndDeviceVersion) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceVersion.Unmarshal(m, b) -} -func (m *EndDeviceVersion) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceVersion.Marshal(b, m, deterministic) -} -func (m *EndDeviceVersion) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceVersion.Merge(m, src) +func (x *EndDeviceVersion) Reset() { + *x = EndDeviceVersion{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDeviceVersion) XXX_Size() int { - return xxx_messageInfo_EndDeviceVersion.Size(m) + +func (x *EndDeviceVersion) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *EndDeviceVersion) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceVersion.DiscardUnknown(m) + +func (*EndDeviceVersion) ProtoMessage() {} + +func (x *EndDeviceVersion) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_EndDeviceVersion proto.InternalMessageInfo +// Deprecated: Use EndDeviceVersion.ProtoReflect.Descriptor instead. +func (*EndDeviceVersion) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{3} +} -func (m *EndDeviceVersion) GetIds() *EndDeviceVersionIdentifiers { - if m != nil { - return m.Ids +func (x *EndDeviceVersion) GetIds() *EndDeviceVersionIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *EndDeviceVersion) GetLorawanVersion() MACVersion { - if m != nil { - return m.LorawanVersion +func (x *EndDeviceVersion) GetLorawanVersion() MACVersion { + if x != nil { + return x.LorawanVersion } return MACVersion_MAC_UNKNOWN } -func (m *EndDeviceVersion) GetLorawanPhyVersion() PHYVersion { - if m != nil { - return m.LorawanPhyVersion +func (x *EndDeviceVersion) GetLorawanPhyVersion() PHYVersion { + if x != nil { + return x.LorawanPhyVersion } return PHYVersion_PHY_UNKNOWN } -func (m *EndDeviceVersion) GetFrequencyPlanId() string { - if m != nil { - return m.FrequencyPlanId +func (x *EndDeviceVersion) GetFrequencyPlanId() string { + if x != nil { + return x.FrequencyPlanId } return "" } -func (m *EndDeviceVersion) GetPhotos() []string { - if m != nil { - return m.Photos +func (x *EndDeviceVersion) GetPhotos() []string { + if x != nil { + return x.Photos } return nil } -func (m *EndDeviceVersion) GetSupportsClassB() bool { - if m != nil { - return m.SupportsClassB +func (x *EndDeviceVersion) GetSupportsClassB() bool { + if x != nil { + return x.SupportsClassB } return false } -func (m *EndDeviceVersion) GetSupportsClassC() bool { - if m != nil { - return m.SupportsClassC +func (x *EndDeviceVersion) GetSupportsClassC() bool { + if x != nil { + return x.SupportsClassC } return false } -func (m *EndDeviceVersion) GetDefaultMacSettings() *MACSettings { - if m != nil { - return m.DefaultMacSettings +func (x *EndDeviceVersion) GetDefaultMacSettings() *MACSettings { + if x != nil { + return x.DefaultMacSettings } return nil } -func (m *EndDeviceVersion) GetMinFrequency() uint64 { - if m != nil { - return m.MinFrequency +func (x *EndDeviceVersion) GetMinFrequency() uint64 { + if x != nil { + return x.MinFrequency } return 0 } -func (m *EndDeviceVersion) GetMaxFrequency() uint64 { - if m != nil { - return m.MaxFrequency +func (x *EndDeviceVersion) GetMaxFrequency() uint64 { + if x != nil { + return x.MaxFrequency } return 0 } -func (m *EndDeviceVersion) GetSupportsJoin() bool { - if m != nil { - return m.SupportsJoin +func (x *EndDeviceVersion) GetSupportsJoin() bool { + if x != nil { + return x.SupportsJoin } return false } -func (m *EndDeviceVersion) GetResetsJoinNonces() bool { - if m != nil { - return m.ResetsJoinNonces +func (x *EndDeviceVersion) GetResetsJoinNonces() bool { + if x != nil { + return x.ResetsJoinNonces } return false } -func (m *EndDeviceVersion) GetDefaultFormatters() *MessagePayloadFormatters { - if m != nil { - return m.DefaultFormatters +func (x *EndDeviceVersion) GetDefaultFormatters() *MessagePayloadFormatters { + if x != nil { + return x.DefaultFormatters } return nil } // Adaptive Data Rate settings. type ADRSettings struct { - // Types that are valid to be assigned to Mode: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Mode: // *ADRSettings_Static // *ADRSettings_Dynamic // *ADRSettings_Disabled - Mode isADRSettings_Mode `protobuf_oneof:"mode"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Mode isADRSettings_Mode `protobuf_oneof:"mode"` } -func (m *ADRSettings) Reset() { *m = ADRSettings{} } -func (m *ADRSettings) String() string { return proto.CompactTextString(m) } -func (*ADRSettings) ProtoMessage() {} -func (*ADRSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{4} -} -func (m *ADRSettings) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ADRSettings.Unmarshal(m, b) -} -func (m *ADRSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ADRSettings.Marshal(b, m, deterministic) -} -func (m *ADRSettings) XXX_Merge(src proto.Message) { - xxx_messageInfo_ADRSettings.Merge(m, src) -} -func (m *ADRSettings) XXX_Size() int { - return xxx_messageInfo_ADRSettings.Size(m) +func (x *ADRSettings) Reset() { + *x = ADRSettings{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ADRSettings) XXX_DiscardUnknown() { - xxx_messageInfo_ADRSettings.DiscardUnknown(m) + +func (x *ADRSettings) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ADRSettings proto.InternalMessageInfo +func (*ADRSettings) ProtoMessage() {} -type isADRSettings_Mode interface { - isADRSettings_Mode() +func (x *ADRSettings) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type ADRSettings_Static struct { - Static *ADRSettings_StaticMode `protobuf:"bytes,1,opt,name=static,proto3,oneof" json:"static,omitempty"` -} -type ADRSettings_Dynamic struct { - Dynamic *ADRSettings_DynamicMode `protobuf:"bytes,2,opt,name=dynamic,proto3,oneof" json:"dynamic,omitempty"` -} -type ADRSettings_Disabled struct { - Disabled *ADRSettings_DisabledMode `protobuf:"bytes,3,opt,name=disabled,proto3,oneof" json:"disabled,omitempty"` +// Deprecated: Use ADRSettings.ProtoReflect.Descriptor instead. +func (*ADRSettings) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{4} } -func (*ADRSettings_Static) isADRSettings_Mode() {} -func (*ADRSettings_Dynamic) isADRSettings_Mode() {} -func (*ADRSettings_Disabled) isADRSettings_Mode() {} - func (m *ADRSettings) GetMode() isADRSettings_Mode { if m != nil { return m.Mode @@ -719,251 +714,76 @@ func (m *ADRSettings) GetMode() isADRSettings_Mode { return nil } -func (m *ADRSettings) GetStatic() *ADRSettings_StaticMode { - if x, ok := m.GetMode().(*ADRSettings_Static); ok { +func (x *ADRSettings) GetStatic() *ADRSettings_StaticMode { + if x, ok := x.GetMode().(*ADRSettings_Static); ok { return x.Static } return nil } -func (m *ADRSettings) GetDynamic() *ADRSettings_DynamicMode { - if x, ok := m.GetMode().(*ADRSettings_Dynamic); ok { +func (x *ADRSettings) GetDynamic() *ADRSettings_DynamicMode { + if x, ok := x.GetMode().(*ADRSettings_Dynamic); ok { return x.Dynamic } return nil } -func (m *ADRSettings) GetDisabled() *ADRSettings_DisabledMode { - if x, ok := m.GetMode().(*ADRSettings_Disabled); ok { +func (x *ADRSettings) GetDisabled() *ADRSettings_DisabledMode { + if x, ok := x.GetMode().(*ADRSettings_Disabled); ok { return x.Disabled } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*ADRSettings) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*ADRSettings_Static)(nil), - (*ADRSettings_Dynamic)(nil), - (*ADRSettings_Disabled)(nil), - } +type isADRSettings_Mode interface { + isADRSettings_Mode() } -// Configuration options for static ADR. -type ADRSettings_StaticMode struct { - // Data rate index to use. - DataRateIndex DataRateIndex `protobuf:"varint,1,opt,name=data_rate_index,json=dataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"data_rate_index,omitempty"` - // Transmission power index to use. - TxPowerIndex uint32 `protobuf:"varint,2,opt,name=tx_power_index,json=txPowerIndex,proto3" json:"tx_power_index,omitempty"` - // Number of retransmissions. - NbTrans uint32 `protobuf:"varint,3,opt,name=nb_trans,json=nbTrans,proto3" json:"nb_trans,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type ADRSettings_Static struct { + Static *ADRSettings_StaticMode `protobuf:"bytes,1,opt,name=static,proto3,oneof"` } -func (m *ADRSettings_StaticMode) Reset() { *m = ADRSettings_StaticMode{} } -func (m *ADRSettings_StaticMode) String() string { return proto.CompactTextString(m) } -func (*ADRSettings_StaticMode) ProtoMessage() {} -func (*ADRSettings_StaticMode) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{4, 0} -} -func (m *ADRSettings_StaticMode) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ADRSettings_StaticMode.Unmarshal(m, b) -} -func (m *ADRSettings_StaticMode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ADRSettings_StaticMode.Marshal(b, m, deterministic) -} -func (m *ADRSettings_StaticMode) XXX_Merge(src proto.Message) { - xxx_messageInfo_ADRSettings_StaticMode.Merge(m, src) -} -func (m *ADRSettings_StaticMode) XXX_Size() int { - return xxx_messageInfo_ADRSettings_StaticMode.Size(m) +type ADRSettings_Dynamic struct { + Dynamic *ADRSettings_DynamicMode `protobuf:"bytes,2,opt,name=dynamic,proto3,oneof"` } -func (m *ADRSettings_StaticMode) XXX_DiscardUnknown() { - xxx_messageInfo_ADRSettings_StaticMode.DiscardUnknown(m) + +type ADRSettings_Disabled struct { + Disabled *ADRSettings_DisabledMode `protobuf:"bytes,3,opt,name=disabled,proto3,oneof"` } -var xxx_messageInfo_ADRSettings_StaticMode proto.InternalMessageInfo +func (*ADRSettings_Static) isADRSettings_Mode() {} -func (m *ADRSettings_StaticMode) GetDataRateIndex() DataRateIndex { - if m != nil { - return m.DataRateIndex - } - return DataRateIndex_DATA_RATE_0 -} +func (*ADRSettings_Dynamic) isADRSettings_Mode() {} -func (m *ADRSettings_StaticMode) GetTxPowerIndex() uint32 { - if m != nil { - return m.TxPowerIndex - } - return 0 -} +func (*ADRSettings_Disabled) isADRSettings_Mode() {} -func (m *ADRSettings_StaticMode) GetNbTrans() uint32 { - if m != nil { - return m.NbTrans - } - return 0 -} +type MACSettings struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -// Configuration options for dynamic ADR. -type ADRSettings_DynamicMode struct { - // The ADR margin (dB) tells the network server how much margin it should add in ADR requests. - // A bigger margin is less efficient, but gives a better chance of successful reception. + // Maximum delay for the device to answer a MAC request or a confirmed downlink frame. // If unset, the default value from Network Server configuration will be used. - Margin *types.FloatValue `protobuf:"bytes,1,opt,name=margin,proto3" json:"margin,omitempty"` - // Minimum data rate index. + ClassBTimeout *durationpb.Duration `protobuf:"bytes,1,opt,name=class_b_timeout,json=classBTimeout,proto3" json:"class_b_timeout,omitempty"` + // Periodicity of the class B ping slot. // If unset, the default value from Network Server configuration will be used. - MinDataRateIndex *DataRateIndexValue `protobuf:"bytes,2,opt,name=min_data_rate_index,json=minDataRateIndex,proto3" json:"min_data_rate_index,omitempty"` - // Maximum data rate index. + PingSlotPeriodicity *PingSlotPeriodValue `protobuf:"bytes,2,opt,name=ping_slot_periodicity,json=pingSlotPeriodicity,proto3" json:"ping_slot_periodicity,omitempty"` + // Data rate index of the class B ping slot. // If unset, the default value from Network Server configuration will be used. - MaxDataRateIndex *DataRateIndexValue `protobuf:"bytes,3,opt,name=max_data_rate_index,json=maxDataRateIndex,proto3" json:"max_data_rate_index,omitempty"` - // Minimum transmission power index. + PingSlotDataRateIndex *DataRateIndexValue `protobuf:"bytes,3,opt,name=ping_slot_data_rate_index,json=pingSlotDataRateIndex,proto3" json:"ping_slot_data_rate_index,omitempty"` + // Frequency of the class B ping slot (Hz). // If unset, the default value from Network Server configuration will be used. - MinTxPowerIndex *types.UInt32Value `protobuf:"bytes,4,opt,name=min_tx_power_index,json=minTxPowerIndex,proto3" json:"min_tx_power_index,omitempty"` - // Maximum transmission power index. + PingSlotFrequency *ZeroableFrequencyValue `protobuf:"bytes,4,opt,name=ping_slot_frequency,json=pingSlotFrequency,proto3" json:"ping_slot_frequency,omitempty"` + // Frequency of the class B beacon (Hz). // If unset, the default value from Network Server configuration will be used. - MaxTxPowerIndex *types.UInt32Value `protobuf:"bytes,5,opt,name=max_tx_power_index,json=maxTxPowerIndex,proto3" json:"max_tx_power_index,omitempty"` - // Minimum number of retransmissions. + BeaconFrequency *ZeroableFrequencyValue `protobuf:"bytes,25,opt,name=beacon_frequency,json=beaconFrequency,proto3" json:"beacon_frequency,omitempty"` + // Maximum delay for the device to answer a MAC request or a confirmed downlink frame. // If unset, the default value from Network Server configuration will be used. - MinNbTrans *types.UInt32Value `protobuf:"bytes,6,opt,name=min_nb_trans,json=minNbTrans,proto3" json:"min_nb_trans,omitempty"` - // Maximum number of retransmissions. - // If unset, the default value from Network Server configuration will be used. - MaxNbTrans *types.UInt32Value `protobuf:"bytes,7,opt,name=max_nb_trans,json=maxNbTrans,proto3" json:"max_nb_trans,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ADRSettings_DynamicMode) Reset() { *m = ADRSettings_DynamicMode{} } -func (m *ADRSettings_DynamicMode) String() string { return proto.CompactTextString(m) } -func (*ADRSettings_DynamicMode) ProtoMessage() {} -func (*ADRSettings_DynamicMode) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{4, 1} -} -func (m *ADRSettings_DynamicMode) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ADRSettings_DynamicMode.Unmarshal(m, b) -} -func (m *ADRSettings_DynamicMode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ADRSettings_DynamicMode.Marshal(b, m, deterministic) -} -func (m *ADRSettings_DynamicMode) XXX_Merge(src proto.Message) { - xxx_messageInfo_ADRSettings_DynamicMode.Merge(m, src) -} -func (m *ADRSettings_DynamicMode) XXX_Size() int { - return xxx_messageInfo_ADRSettings_DynamicMode.Size(m) -} -func (m *ADRSettings_DynamicMode) XXX_DiscardUnknown() { - xxx_messageInfo_ADRSettings_DynamicMode.DiscardUnknown(m) -} - -var xxx_messageInfo_ADRSettings_DynamicMode proto.InternalMessageInfo - -func (m *ADRSettings_DynamicMode) GetMargin() *types.FloatValue { - if m != nil { - return m.Margin - } - return nil -} - -func (m *ADRSettings_DynamicMode) GetMinDataRateIndex() *DataRateIndexValue { - if m != nil { - return m.MinDataRateIndex - } - return nil -} - -func (m *ADRSettings_DynamicMode) GetMaxDataRateIndex() *DataRateIndexValue { - if m != nil { - return m.MaxDataRateIndex - } - return nil -} - -func (m *ADRSettings_DynamicMode) GetMinTxPowerIndex() *types.UInt32Value { - if m != nil { - return m.MinTxPowerIndex - } - return nil -} - -func (m *ADRSettings_DynamicMode) GetMaxTxPowerIndex() *types.UInt32Value { - if m != nil { - return m.MaxTxPowerIndex - } - return nil -} - -func (m *ADRSettings_DynamicMode) GetMinNbTrans() *types.UInt32Value { - if m != nil { - return m.MinNbTrans - } - return nil -} - -func (m *ADRSettings_DynamicMode) GetMaxNbTrans() *types.UInt32Value { - if m != nil { - return m.MaxNbTrans - } - return nil -} - -// Configuration options for cases in which ADR is to be disabled -// completely. -type ADRSettings_DisabledMode struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ADRSettings_DisabledMode) Reset() { *m = ADRSettings_DisabledMode{} } -func (m *ADRSettings_DisabledMode) String() string { return proto.CompactTextString(m) } -func (*ADRSettings_DisabledMode) ProtoMessage() {} -func (*ADRSettings_DisabledMode) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{4, 2} -} -func (m *ADRSettings_DisabledMode) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ADRSettings_DisabledMode.Unmarshal(m, b) -} -func (m *ADRSettings_DisabledMode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ADRSettings_DisabledMode.Marshal(b, m, deterministic) -} -func (m *ADRSettings_DisabledMode) XXX_Merge(src proto.Message) { - xxx_messageInfo_ADRSettings_DisabledMode.Merge(m, src) -} -func (m *ADRSettings_DisabledMode) XXX_Size() int { - return xxx_messageInfo_ADRSettings_DisabledMode.Size(m) -} -func (m *ADRSettings_DisabledMode) XXX_DiscardUnknown() { - xxx_messageInfo_ADRSettings_DisabledMode.DiscardUnknown(m) -} - -var xxx_messageInfo_ADRSettings_DisabledMode proto.InternalMessageInfo - -type MACSettings struct { - // Maximum delay for the device to answer a MAC request or a confirmed downlink frame. - // If unset, the default value from Network Server configuration will be used. - ClassBTimeout *types.Duration `protobuf:"bytes,1,opt,name=class_b_timeout,json=classBTimeout,proto3" json:"class_b_timeout,omitempty"` - // Periodicity of the class B ping slot. - // If unset, the default value from Network Server configuration will be used. - PingSlotPeriodicity *PingSlotPeriodValue `protobuf:"bytes,2,opt,name=ping_slot_periodicity,json=pingSlotPeriodicity,proto3" json:"ping_slot_periodicity,omitempty"` - // Data rate index of the class B ping slot. - // If unset, the default value from Network Server configuration will be used. - PingSlotDataRateIndex *DataRateIndexValue `protobuf:"bytes,3,opt,name=ping_slot_data_rate_index,json=pingSlotDataRateIndex,proto3" json:"ping_slot_data_rate_index,omitempty"` - // Frequency of the class B ping slot (Hz). - // If unset, the default value from Network Server configuration will be used. - PingSlotFrequency *ZeroableFrequencyValue `protobuf:"bytes,4,opt,name=ping_slot_frequency,json=pingSlotFrequency,proto3" json:"ping_slot_frequency,omitempty"` - // Frequency of the class B beacon (Hz). - // If unset, the default value from Network Server configuration will be used. - BeaconFrequency *ZeroableFrequencyValue `protobuf:"bytes,25,opt,name=beacon_frequency,json=beaconFrequency,proto3" json:"beacon_frequency,omitempty"` - // Maximum delay for the device to answer a MAC request or a confirmed downlink frame. - // If unset, the default value from Network Server configuration will be used. - ClassCTimeout *types.Duration `protobuf:"bytes,5,opt,name=class_c_timeout,json=classCTimeout,proto3" json:"class_c_timeout,omitempty"` - // Class A Rx1 delay. - // If unset, the default value from Network Server configuration or regional parameters specification will be used. - Rx1Delay *RxDelayValue `protobuf:"bytes,6,opt,name=rx1_delay,json=rx1Delay,proto3" json:"rx1_delay,omitempty"` - // Rx1 data rate offset. + ClassCTimeout *durationpb.Duration `protobuf:"bytes,5,opt,name=class_c_timeout,json=classCTimeout,proto3" json:"class_c_timeout,omitempty"` + // Class A Rx1 delay. + // If unset, the default value from Network Server configuration or regional parameters specification will be used. + Rx1Delay *RxDelayValue `protobuf:"bytes,6,opt,name=rx1_delay,json=rx1Delay,proto3" json:"rx1_delay,omitempty"` + // Rx1 data rate offset. // If unset, the default value from Network Server configuration will be used. Rx1DataRateOffset *DataRateOffsetValue `protobuf:"bytes,7,opt,name=rx1_data_rate_offset,json=rx1DataRateOffset,proto3" json:"rx1_data_rate_offset,omitempty"` // Data rate index for Rx2. @@ -982,20 +802,24 @@ type MACSettings struct { Supports_32BitFCnt *BoolValue `protobuf:"bytes,12,opt,name=supports_32_bit_f_cnt,json=supports32BitFCnt,proto3" json:"supports_32_bit_f_cnt,omitempty"` // Whether the Network Server should use ADR for the device. // This field is deprecated, use adr_settings instead. - UseAdr *BoolValue `protobuf:"bytes,13,opt,name=use_adr,json=useAdr,proto3" json:"use_adr,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Do not use. + UseAdr *BoolValue `protobuf:"bytes,13,opt,name=use_adr,json=useAdr,proto3" json:"use_adr,omitempty"` // The ADR margin (dB) tells the network server how much margin it should add in ADR requests. // A bigger margin is less efficient, but gives a better chance of successful reception. // This field is deprecated, use adr_settings.dynamic.margin instead. - AdrMargin *types.FloatValue `protobuf:"bytes,14,opt,name=adr_margin,json=adrMargin,proto3" json:"adr_margin,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Do not use. + AdrMargin *wrapperspb.FloatValue `protobuf:"bytes,14,opt,name=adr_margin,json=adrMargin,proto3" json:"adr_margin,omitempty"` // Whether the device resets the frame counters (not LoRaWAN compliant). // If unset, the default value from Network Server configuration will be used. ResetsFCnt *BoolValue `protobuf:"bytes,15,opt,name=resets_f_cnt,json=resetsFCnt,proto3" json:"resets_f_cnt,omitempty"` // The interval after which a DevStatusReq MACCommand shall be sent. // If unset, the default value from Network Server configuration will be used. - StatusTimePeriodicity *types.Duration `protobuf:"bytes,16,opt,name=status_time_periodicity,json=statusTimePeriodicity,proto3" json:"status_time_periodicity,omitempty"` + StatusTimePeriodicity *durationpb.Duration `protobuf:"bytes,16,opt,name=status_time_periodicity,json=statusTimePeriodicity,proto3" json:"status_time_periodicity,omitempty"` // Number of uplink messages after which a DevStatusReq MACCommand shall be sent. // If unset, the default value from Network Server configuration will be used. - StatusCountPeriodicity *types.UInt32Value `protobuf:"bytes,17,opt,name=status_count_periodicity,json=statusCountPeriodicity,proto3" json:"status_count_periodicity,omitempty"` + StatusCountPeriodicity *wrapperspb.UInt32Value `protobuf:"bytes,17,opt,name=status_count_periodicity,json=statusCountPeriodicity,proto3" json:"status_count_periodicity,omitempty"` // The Rx1 delay Network Server should configure device to use via MAC commands or Join-Accept. // If unset, the default value from Network Server configuration or regional parameters specification will be used. DesiredRx1Delay *RxDelayValue `protobuf:"bytes,18,opt,name=desired_rx1_delay,json=desiredRx1Delay,proto3" json:"desired_rx1_delay,omitempty"` @@ -1030,7 +854,7 @@ type MACSettings struct { // If unset, the default value from regional parameters specification will be used. DesiredMaxEirp *DeviceEIRPValue `protobuf:"bytes,30,opt,name=desired_max_eirp,json=desiredMaxEirp,proto3" json:"desired_max_eirp,omitempty"` // The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink. - ClassBCDownlinkInterval *types.Duration `protobuf:"bytes,31,opt,name=class_b_c_downlink_interval,json=classBCDownlinkInterval,proto3" json:"class_b_c_downlink_interval,omitempty"` + ClassBCDownlinkInterval *durationpb.Duration `protobuf:"bytes,31,opt,name=class_b_c_downlink_interval,json=classBCDownlinkInterval,proto3" json:"class_b_c_downlink_interval,omitempty"` // Whether uplink dwell time is set (400ms). // If unset, the default value from Network Server configuration or regional parameters specification will be used. UplinkDwellTime *BoolValue `protobuf:"bytes,32,opt,name=uplink_dwell_time,json=uplinkDwellTime,proto3" json:"uplink_dwell_time,omitempty"` @@ -1043,272 +867,277 @@ type MACSettings struct { // Whether or not downlink messages should be scheduled. // This option can be used in order to disable any downlink interaction with the end device. It will affect all types // of downlink messages: data and MAC downlinks, and join accepts. - ScheduleDownlinks *BoolValue `protobuf:"bytes,35,opt,name=schedule_downlinks,json=scheduleDownlinks,proto3" json:"schedule_downlinks,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ScheduleDownlinks *BoolValue `protobuf:"bytes,35,opt,name=schedule_downlinks,json=scheduleDownlinks,proto3" json:"schedule_downlinks,omitempty"` } -func (m *MACSettings) Reset() { *m = MACSettings{} } -func (m *MACSettings) String() string { return proto.CompactTextString(m) } -func (*MACSettings) ProtoMessage() {} -func (*MACSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{5} -} -func (m *MACSettings) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACSettings.Unmarshal(m, b) -} -func (m *MACSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACSettings.Marshal(b, m, deterministic) -} -func (m *MACSettings) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACSettings.Merge(m, src) +func (x *MACSettings) Reset() { + *x = MACSettings{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACSettings) XXX_Size() int { - return xxx_messageInfo_MACSettings.Size(m) + +func (x *MACSettings) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MACSettings) XXX_DiscardUnknown() { - xxx_messageInfo_MACSettings.DiscardUnknown(m) + +func (*MACSettings) ProtoMessage() {} + +func (x *MACSettings) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MACSettings proto.InternalMessageInfo +// Deprecated: Use MACSettings.ProtoReflect.Descriptor instead. +func (*MACSettings) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{5} +} -func (m *MACSettings) GetClassBTimeout() *types.Duration { - if m != nil { - return m.ClassBTimeout +func (x *MACSettings) GetClassBTimeout() *durationpb.Duration { + if x != nil { + return x.ClassBTimeout } return nil } -func (m *MACSettings) GetPingSlotPeriodicity() *PingSlotPeriodValue { - if m != nil { - return m.PingSlotPeriodicity +func (x *MACSettings) GetPingSlotPeriodicity() *PingSlotPeriodValue { + if x != nil { + return x.PingSlotPeriodicity } return nil } -func (m *MACSettings) GetPingSlotDataRateIndex() *DataRateIndexValue { - if m != nil { - return m.PingSlotDataRateIndex +func (x *MACSettings) GetPingSlotDataRateIndex() *DataRateIndexValue { + if x != nil { + return x.PingSlotDataRateIndex } return nil } -func (m *MACSettings) GetPingSlotFrequency() *ZeroableFrequencyValue { - if m != nil { - return m.PingSlotFrequency +func (x *MACSettings) GetPingSlotFrequency() *ZeroableFrequencyValue { + if x != nil { + return x.PingSlotFrequency } return nil } -func (m *MACSettings) GetBeaconFrequency() *ZeroableFrequencyValue { - if m != nil { - return m.BeaconFrequency +func (x *MACSettings) GetBeaconFrequency() *ZeroableFrequencyValue { + if x != nil { + return x.BeaconFrequency } return nil } -func (m *MACSettings) GetClassCTimeout() *types.Duration { - if m != nil { - return m.ClassCTimeout +func (x *MACSettings) GetClassCTimeout() *durationpb.Duration { + if x != nil { + return x.ClassCTimeout } return nil } -func (m *MACSettings) GetRx1Delay() *RxDelayValue { - if m != nil { - return m.Rx1Delay +func (x *MACSettings) GetRx1Delay() *RxDelayValue { + if x != nil { + return x.Rx1Delay } return nil } -func (m *MACSettings) GetRx1DataRateOffset() *DataRateOffsetValue { - if m != nil { - return m.Rx1DataRateOffset +func (x *MACSettings) GetRx1DataRateOffset() *DataRateOffsetValue { + if x != nil { + return x.Rx1DataRateOffset } return nil } -func (m *MACSettings) GetRx2DataRateIndex() *DataRateIndexValue { - if m != nil { - return m.Rx2DataRateIndex +func (x *MACSettings) GetRx2DataRateIndex() *DataRateIndexValue { + if x != nil { + return x.Rx2DataRateIndex } return nil } -func (m *MACSettings) GetRx2Frequency() *FrequencyValue { - if m != nil { - return m.Rx2Frequency +func (x *MACSettings) GetRx2Frequency() *FrequencyValue { + if x != nil { + return x.Rx2Frequency } return nil } -func (m *MACSettings) GetFactoryPresetFrequencies() []uint64 { - if m != nil { - return m.FactoryPresetFrequencies +func (x *MACSettings) GetFactoryPresetFrequencies() []uint64 { + if x != nil { + return x.FactoryPresetFrequencies } return nil } -func (m *MACSettings) GetMaxDutyCycle() *AggregatedDutyCycleValue { - if m != nil { - return m.MaxDutyCycle +func (x *MACSettings) GetMaxDutyCycle() *AggregatedDutyCycleValue { + if x != nil { + return x.MaxDutyCycle } return nil } -func (m *MACSettings) GetSupports_32BitFCnt() *BoolValue { - if m != nil { - return m.Supports_32BitFCnt +func (x *MACSettings) GetSupports_32BitFCnt() *BoolValue { + if x != nil { + return x.Supports_32BitFCnt } return nil } // Deprecated: Do not use. -func (m *MACSettings) GetUseAdr() *BoolValue { - if m != nil { - return m.UseAdr +func (x *MACSettings) GetUseAdr() *BoolValue { + if x != nil { + return x.UseAdr } return nil } // Deprecated: Do not use. -func (m *MACSettings) GetAdrMargin() *types.FloatValue { - if m != nil { - return m.AdrMargin +func (x *MACSettings) GetAdrMargin() *wrapperspb.FloatValue { + if x != nil { + return x.AdrMargin } return nil } -func (m *MACSettings) GetResetsFCnt() *BoolValue { - if m != nil { - return m.ResetsFCnt +func (x *MACSettings) GetResetsFCnt() *BoolValue { + if x != nil { + return x.ResetsFCnt } return nil } -func (m *MACSettings) GetStatusTimePeriodicity() *types.Duration { - if m != nil { - return m.StatusTimePeriodicity +func (x *MACSettings) GetStatusTimePeriodicity() *durationpb.Duration { + if x != nil { + return x.StatusTimePeriodicity } return nil } -func (m *MACSettings) GetStatusCountPeriodicity() *types.UInt32Value { - if m != nil { - return m.StatusCountPeriodicity +func (x *MACSettings) GetStatusCountPeriodicity() *wrapperspb.UInt32Value { + if x != nil { + return x.StatusCountPeriodicity } return nil } -func (m *MACSettings) GetDesiredRx1Delay() *RxDelayValue { - if m != nil { - return m.DesiredRx1Delay +func (x *MACSettings) GetDesiredRx1Delay() *RxDelayValue { + if x != nil { + return x.DesiredRx1Delay } return nil } -func (m *MACSettings) GetDesiredRx1DataRateOffset() *DataRateOffsetValue { - if m != nil { - return m.DesiredRx1DataRateOffset +func (x *MACSettings) GetDesiredRx1DataRateOffset() *DataRateOffsetValue { + if x != nil { + return x.DesiredRx1DataRateOffset } return nil } -func (m *MACSettings) GetDesiredRx2DataRateIndex() *DataRateIndexValue { - if m != nil { - return m.DesiredRx2DataRateIndex +func (x *MACSettings) GetDesiredRx2DataRateIndex() *DataRateIndexValue { + if x != nil { + return x.DesiredRx2DataRateIndex } return nil } -func (m *MACSettings) GetDesiredRx2Frequency() *FrequencyValue { - if m != nil { - return m.DesiredRx2Frequency +func (x *MACSettings) GetDesiredRx2Frequency() *FrequencyValue { + if x != nil { + return x.DesiredRx2Frequency } return nil } -func (m *MACSettings) GetDesiredMaxDutyCycle() *AggregatedDutyCycleValue { - if m != nil { - return m.DesiredMaxDutyCycle +func (x *MACSettings) GetDesiredMaxDutyCycle() *AggregatedDutyCycleValue { + if x != nil { + return x.DesiredMaxDutyCycle } return nil } -func (m *MACSettings) GetDesiredAdrAckLimitExponent() *ADRAckLimitExponentValue { - if m != nil { - return m.DesiredAdrAckLimitExponent +func (x *MACSettings) GetDesiredAdrAckLimitExponent() *ADRAckLimitExponentValue { + if x != nil { + return x.DesiredAdrAckLimitExponent } return nil } -func (m *MACSettings) GetDesiredAdrAckDelayExponent() *ADRAckDelayExponentValue { - if m != nil { - return m.DesiredAdrAckDelayExponent +func (x *MACSettings) GetDesiredAdrAckDelayExponent() *ADRAckDelayExponentValue { + if x != nil { + return x.DesiredAdrAckDelayExponent } return nil } -func (m *MACSettings) GetDesiredPingSlotDataRateIndex() *DataRateIndexValue { - if m != nil { - return m.DesiredPingSlotDataRateIndex +func (x *MACSettings) GetDesiredPingSlotDataRateIndex() *DataRateIndexValue { + if x != nil { + return x.DesiredPingSlotDataRateIndex } return nil } -func (m *MACSettings) GetDesiredPingSlotFrequency() *ZeroableFrequencyValue { - if m != nil { - return m.DesiredPingSlotFrequency +func (x *MACSettings) GetDesiredPingSlotFrequency() *ZeroableFrequencyValue { + if x != nil { + return x.DesiredPingSlotFrequency } return nil } -func (m *MACSettings) GetDesiredBeaconFrequency() *ZeroableFrequencyValue { - if m != nil { - return m.DesiredBeaconFrequency +func (x *MACSettings) GetDesiredBeaconFrequency() *ZeroableFrequencyValue { + if x != nil { + return x.DesiredBeaconFrequency } return nil } -func (m *MACSettings) GetDesiredMaxEirp() *DeviceEIRPValue { - if m != nil { - return m.DesiredMaxEirp +func (x *MACSettings) GetDesiredMaxEirp() *DeviceEIRPValue { + if x != nil { + return x.DesiredMaxEirp } return nil } -func (m *MACSettings) GetClassBCDownlinkInterval() *types.Duration { - if m != nil { - return m.ClassBCDownlinkInterval +func (x *MACSettings) GetClassBCDownlinkInterval() *durationpb.Duration { + if x != nil { + return x.ClassBCDownlinkInterval } return nil } -func (m *MACSettings) GetUplinkDwellTime() *BoolValue { - if m != nil { - return m.UplinkDwellTime +func (x *MACSettings) GetUplinkDwellTime() *BoolValue { + if x != nil { + return x.UplinkDwellTime } return nil } -func (m *MACSettings) GetDownlinkDwellTime() *BoolValue { - if m != nil { - return m.DownlinkDwellTime +func (x *MACSettings) GetDownlinkDwellTime() *BoolValue { + if x != nil { + return x.DownlinkDwellTime } return nil } -func (m *MACSettings) GetAdr() *ADRSettings { - if m != nil { - return m.Adr +func (x *MACSettings) GetAdr() *ADRSettings { + if x != nil { + return x.Adr } return nil } -func (m *MACSettings) GetScheduleDownlinks() *BoolValue { - if m != nil { - return m.ScheduleDownlinks +func (x *MACSettings) GetScheduleDownlinks() *BoolValue { + if x != nil { + return x.ScheduleDownlinks } return nil } @@ -1317,6 +1146,10 @@ func (m *MACSettings) GetScheduleDownlinks() *BoolValue { // MACState is reset on each join for OTAA or ResetInd for ABP devices. // This is used internally by the Network Server. type MACState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Current LoRaWAN MAC parameters. CurrentParameters *MACParameters `protobuf:"bytes,1,opt,name=current_parameters,json=currentParameters,proto3" json:"current_parameters,omitempty"` // Desired LoRaWAN MAC parameters. @@ -1329,7 +1162,7 @@ type MACState struct { // LoRaWAN MAC version. LorawanVersion MACVersion `protobuf:"varint,4,opt,name=lorawan_version,json=lorawanVersion,proto3,enum=ttn.lorawan.v3.MACVersion" json:"lorawan_version,omitempty"` // Time when the last confirmed downlink message or MAC command was scheduled. - LastConfirmedDownlinkAt *types.Timestamp `protobuf:"bytes,5,opt,name=last_confirmed_downlink_at,json=lastConfirmedDownlinkAt,proto3" json:"last_confirmed_downlink_at,omitempty"` + LastConfirmedDownlinkAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_confirmed_downlink_at,json=lastConfirmedDownlinkAt,proto3" json:"last_confirmed_downlink_at,omitempty"` // Frame counter value of last uplink containing DevStatusAns. LastDevStatusFCntUp uint32 `protobuf:"varint,6,opt,name=last_dev_status_f_cnt_up,json=lastDevStatusFCntUp,proto3" json:"last_dev_status_f_cnt_up,omitempty"` // Periodicity of the class B ping slot. @@ -1359,7 +1192,7 @@ type MACState struct { // The number of messages stored may depend on configuration. RecentDownlinks []*MACState_DownlinkMessage `protobuf:"bytes,15,rep,name=recent_downlinks,json=recentDownlinks,proto3" json:"recent_downlinks,omitempty"` // Time when the last network-initiated downlink message was scheduled. - LastNetworkInitiatedDownlinkAt *types.Timestamp `protobuf:"bytes,16,opt,name=last_network_initiated_downlink_at,json=lastNetworkInitiatedDownlinkAt,proto3" json:"last_network_initiated_downlink_at,omitempty"` + LastNetworkInitiatedDownlinkAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=last_network_initiated_downlink_at,json=lastNetworkInitiatedDownlinkAt,proto3" json:"last_network_initiated_downlink_at,omitempty"` // ADR Data rate index values rejected by the device. // Reset each time `current_parameters.channels` change. // Elements are sorted in ascending order. @@ -1370,7 +1203,7 @@ type MACState struct { // Frequencies rejected by the device. RejectedFrequencies []uint64 `protobuf:"varint,19,rep,packed,name=rejected_frequencies,json=rejectedFrequencies,proto3" json:"rejected_frequencies,omitempty"` // Time when the last downlink message was scheduled. - LastDownlinkAt *types.Timestamp `protobuf:"bytes,20,opt,name=last_downlink_at,json=lastDownlinkAt,proto3" json:"last_downlink_at,omitempty"` + LastDownlinkAt *timestamppb.Timestamp `protobuf:"bytes,20,opt,name=last_downlink_at,json=lastDownlinkAt,proto3" json:"last_downlink_at,omitempty"` // Data rate ranges rejected by the device per frequency. RejectedDataRateRanges map[uint64]*MACState_DataRateRanges `protobuf:"bytes,21,rep,name=rejected_data_rate_ranges,json=rejectedDataRateRanges,proto3" json:"rejected_data_rate_ranges,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Frame counter of uplink, which confirmed the last ADR parameter change. @@ -1379,888 +1212,276 @@ type MACState struct { // The Network Server may choose to store only certain types of MAC // command identifiers in the underlying implementation. RecentMacCommandIdentifiers []MACCommandIdentifier `protobuf:"varint,23,rep,packed,name=recent_mac_command_identifiers,json=recentMacCommandIdentifiers,proto3,enum=ttn.lorawan.v3.MACCommandIdentifier" json:"recent_mac_command_identifiers,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *MACState) Reset() { *m = MACState{} } -func (m *MACState) String() string { return proto.CompactTextString(m) } -func (*MACState) ProtoMessage() {} -func (*MACState) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{6} -} -func (m *MACState) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACState.Unmarshal(m, b) -} -func (m *MACState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACState.Marshal(b, m, deterministic) -} -func (m *MACState) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACState.Merge(m, src) +func (x *MACState) Reset() { + *x = MACState{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACState) XXX_Size() int { - return xxx_messageInfo_MACState.Size(m) + +func (x *MACState) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MACState) XXX_DiscardUnknown() { - xxx_messageInfo_MACState.DiscardUnknown(m) + +func (*MACState) ProtoMessage() {} + +func (x *MACState) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MACState proto.InternalMessageInfo +// Deprecated: Use MACState.ProtoReflect.Descriptor instead. +func (*MACState) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{6} +} -func (m *MACState) GetCurrentParameters() *MACParameters { - if m != nil { - return m.CurrentParameters +func (x *MACState) GetCurrentParameters() *MACParameters { + if x != nil { + return x.CurrentParameters } return nil } -func (m *MACState) GetDesiredParameters() *MACParameters { - if m != nil { - return m.DesiredParameters +func (x *MACState) GetDesiredParameters() *MACParameters { + if x != nil { + return x.DesiredParameters } return nil } -func (m *MACState) GetDeviceClass() Class { - if m != nil { - return m.DeviceClass +func (x *MACState) GetDeviceClass() Class { + if x != nil { + return x.DeviceClass } return Class_CLASS_A } -func (m *MACState) GetLorawanVersion() MACVersion { - if m != nil { - return m.LorawanVersion +func (x *MACState) GetLorawanVersion() MACVersion { + if x != nil { + return x.LorawanVersion } return MACVersion_MAC_UNKNOWN } -func (m *MACState) GetLastConfirmedDownlinkAt() *types.Timestamp { - if m != nil { - return m.LastConfirmedDownlinkAt +func (x *MACState) GetLastConfirmedDownlinkAt() *timestamppb.Timestamp { + if x != nil { + return x.LastConfirmedDownlinkAt } return nil } -func (m *MACState) GetLastDevStatusFCntUp() uint32 { - if m != nil { - return m.LastDevStatusFCntUp +func (x *MACState) GetLastDevStatusFCntUp() uint32 { + if x != nil { + return x.LastDevStatusFCntUp } return 0 } -func (m *MACState) GetPingSlotPeriodicity() *PingSlotPeriodValue { - if m != nil { - return m.PingSlotPeriodicity +func (x *MACState) GetPingSlotPeriodicity() *PingSlotPeriodValue { + if x != nil { + return x.PingSlotPeriodicity } return nil } -func (m *MACState) GetPendingApplicationDownlink() *ApplicationDownlink { - if m != nil { - return m.PendingApplicationDownlink +func (x *MACState) GetPendingApplicationDownlink() *ApplicationDownlink { + if x != nil { + return x.PendingApplicationDownlink } return nil } -func (m *MACState) GetQueuedResponses() []*MACCommand { - if m != nil { - return m.QueuedResponses +func (x *MACState) GetQueuedResponses() []*MACCommand { + if x != nil { + return x.QueuedResponses } return nil } -func (m *MACState) GetPendingRequests() []*MACCommand { - if m != nil { - return m.PendingRequests +func (x *MACState) GetPendingRequests() []*MACCommand { + if x != nil { + return x.PendingRequests } return nil } -func (m *MACState) GetQueuedJoinAccept() *MACState_JoinAccept { - if m != nil { - return m.QueuedJoinAccept +func (x *MACState) GetQueuedJoinAccept() *MACState_JoinAccept { + if x != nil { + return x.QueuedJoinAccept } return nil } -func (m *MACState) GetPendingJoinRequest() *MACState_JoinRequest { - if m != nil { - return m.PendingJoinRequest +func (x *MACState) GetPendingJoinRequest() *MACState_JoinRequest { + if x != nil { + return x.PendingJoinRequest } return nil } -func (m *MACState) GetRxWindowsAvailable() bool { - if m != nil { - return m.RxWindowsAvailable +func (x *MACState) GetRxWindowsAvailable() bool { + if x != nil { + return x.RxWindowsAvailable } return false } -func (m *MACState) GetRecentUplinks() []*MACState_UplinkMessage { - if m != nil { - return m.RecentUplinks +func (x *MACState) GetRecentUplinks() []*MACState_UplinkMessage { + if x != nil { + return x.RecentUplinks } return nil } -func (m *MACState) GetRecentDownlinks() []*MACState_DownlinkMessage { - if m != nil { - return m.RecentDownlinks +func (x *MACState) GetRecentDownlinks() []*MACState_DownlinkMessage { + if x != nil { + return x.RecentDownlinks } return nil } -func (m *MACState) GetLastNetworkInitiatedDownlinkAt() *types.Timestamp { - if m != nil { - return m.LastNetworkInitiatedDownlinkAt +func (x *MACState) GetLastNetworkInitiatedDownlinkAt() *timestamppb.Timestamp { + if x != nil { + return x.LastNetworkInitiatedDownlinkAt } return nil } -func (m *MACState) GetRejectedAdrDataRateIndexes() []DataRateIndex { - if m != nil { - return m.RejectedAdrDataRateIndexes +func (x *MACState) GetRejectedAdrDataRateIndexes() []DataRateIndex { + if x != nil { + return x.RejectedAdrDataRateIndexes } return nil } -func (m *MACState) GetRejectedAdrTxPowerIndexes() []uint32 { - if m != nil { - return m.RejectedAdrTxPowerIndexes +func (x *MACState) GetRejectedAdrTxPowerIndexes() []uint32 { + if x != nil { + return x.RejectedAdrTxPowerIndexes } return nil } -func (m *MACState) GetRejectedFrequencies() []uint64 { - if m != nil { - return m.RejectedFrequencies +func (x *MACState) GetRejectedFrequencies() []uint64 { + if x != nil { + return x.RejectedFrequencies } return nil } -func (m *MACState) GetLastDownlinkAt() *types.Timestamp { - if m != nil { - return m.LastDownlinkAt +func (x *MACState) GetLastDownlinkAt() *timestamppb.Timestamp { + if x != nil { + return x.LastDownlinkAt } return nil } -func (m *MACState) GetRejectedDataRateRanges() map[uint64]*MACState_DataRateRanges { - if m != nil { - return m.RejectedDataRateRanges +func (x *MACState) GetRejectedDataRateRanges() map[uint64]*MACState_DataRateRanges { + if x != nil { + return x.RejectedDataRateRanges } return nil } -func (m *MACState) GetLastAdrChangeFCntUp() uint32 { - if m != nil { - return m.LastAdrChangeFCntUp +func (x *MACState) GetLastAdrChangeFCntUp() uint32 { + if x != nil { + return x.LastAdrChangeFCntUp } return 0 } -func (m *MACState) GetRecentMacCommandIdentifiers() []MACCommandIdentifier { - if m != nil { - return m.RecentMacCommandIdentifiers - } - return nil -} - -type MACState_JoinRequest struct { - DownlinkSettings *DLSettings `protobuf:"bytes,6,opt,name=downlink_settings,json=downlinkSettings,proto3" json:"downlink_settings,omitempty"` - RxDelay RxDelay `protobuf:"varint,7,opt,name=rx_delay,json=rxDelay,proto3,enum=ttn.lorawan.v3.RxDelay" json:"rx_delay,omitempty"` - CfList *CFList `protobuf:"bytes,8,opt,name=cf_list,json=cfList,proto3" json:"cf_list,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MACState_JoinRequest) Reset() { *m = MACState_JoinRequest{} } -func (m *MACState_JoinRequest) String() string { return proto.CompactTextString(m) } -func (*MACState_JoinRequest) ProtoMessage() {} -func (*MACState_JoinRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{6, 0} -} -func (m *MACState_JoinRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACState_JoinRequest.Unmarshal(m, b) -} -func (m *MACState_JoinRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACState_JoinRequest.Marshal(b, m, deterministic) -} -func (m *MACState_JoinRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACState_JoinRequest.Merge(m, src) -} -func (m *MACState_JoinRequest) XXX_Size() int { - return xxx_messageInfo_MACState_JoinRequest.Size(m) -} -func (m *MACState_JoinRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MACState_JoinRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_MACState_JoinRequest proto.InternalMessageInfo - -func (m *MACState_JoinRequest) GetDownlinkSettings() *DLSettings { - if m != nil { - return m.DownlinkSettings - } - return nil -} - -func (m *MACState_JoinRequest) GetRxDelay() RxDelay { - if m != nil { - return m.RxDelay - } - return RxDelay_RX_DELAY_0 -} - -func (m *MACState_JoinRequest) GetCfList() *CFList { - if m != nil { - return m.CfList - } - return nil -} - -type MACState_JoinAccept struct { - // Payload of the join-accept received from Join Server. - Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` - Request *MACState_JoinRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` - // Network session keys associated with the join. - Keys *SessionKeys `protobuf:"bytes,3,opt,name=keys,proto3" json:"keys,omitempty"` - CorrelationIds []string `protobuf:"bytes,4,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` - DevAddr []byte `protobuf:"bytes,5,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` - NetId []byte `protobuf:"bytes,6,opt,name=net_id,json=netId,proto3" json:"net_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MACState_JoinAccept) Reset() { *m = MACState_JoinAccept{} } -func (m *MACState_JoinAccept) String() string { return proto.CompactTextString(m) } -func (*MACState_JoinAccept) ProtoMessage() {} -func (*MACState_JoinAccept) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{6, 1} -} -func (m *MACState_JoinAccept) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACState_JoinAccept.Unmarshal(m, b) -} -func (m *MACState_JoinAccept) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACState_JoinAccept.Marshal(b, m, deterministic) -} -func (m *MACState_JoinAccept) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACState_JoinAccept.Merge(m, src) -} -func (m *MACState_JoinAccept) XXX_Size() int { - return xxx_messageInfo_MACState_JoinAccept.Size(m) -} -func (m *MACState_JoinAccept) XXX_DiscardUnknown() { - xxx_messageInfo_MACState_JoinAccept.DiscardUnknown(m) -} - -var xxx_messageInfo_MACState_JoinAccept proto.InternalMessageInfo - -func (m *MACState_JoinAccept) GetPayload() []byte { - if m != nil { - return m.Payload - } - return nil -} - -func (m *MACState_JoinAccept) GetRequest() *MACState_JoinRequest { - if m != nil { - return m.Request - } - return nil -} - -func (m *MACState_JoinAccept) GetKeys() *SessionKeys { - if m != nil { - return m.Keys +func (x *MACState) GetRecentMacCommandIdentifiers() []MACCommandIdentifier { + if x != nil { + return x.RecentMacCommandIdentifiers } return nil } -func (m *MACState_JoinAccept) GetCorrelationIds() []string { - if m != nil { - return m.CorrelationIds - } - return nil -} +// Authentication code for end devices. +type EndDeviceAuthenticationCode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MACState_JoinAccept) GetDevAddr() []byte { - if m != nil { - return m.DevAddr - } - return nil + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + ValidFrom *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=valid_from,json=validFrom,proto3" json:"valid_from,omitempty"` + ValidTo *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=valid_to,json=validTo,proto3" json:"valid_to,omitempty"` } -func (m *MACState_JoinAccept) GetNetId() []byte { - if m != nil { - return m.NetId +func (x *EndDeviceAuthenticationCode) Reset() { + *x = EndDeviceAuthenticationCode{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -// A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message. -// Used for type safe recent uplink storage. -type MACState_UplinkMessage struct { - Payload *Message `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` - Settings *MACState_UplinkMessage_TxSettings `protobuf:"bytes,4,opt,name=settings,proto3" json:"settings,omitempty"` - RxMetadata []*MACState_UplinkMessage_RxMetadata `protobuf:"bytes,5,rep,name=rx_metadata,json=rxMetadata,proto3" json:"rx_metadata,omitempty"` - ReceivedAt *types.Timestamp `protobuf:"bytes,6,opt,name=received_at,json=receivedAt,proto3" json:"received_at,omitempty"` - CorrelationIds []string `protobuf:"bytes,7,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` - DeviceChannelIndex uint32 `protobuf:"varint,9,opt,name=device_channel_index,json=deviceChannelIndex,proto3" json:"device_channel_index,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MACState_UplinkMessage) Reset() { *m = MACState_UplinkMessage{} } -func (m *MACState_UplinkMessage) String() string { return proto.CompactTextString(m) } -func (*MACState_UplinkMessage) ProtoMessage() {} -func (*MACState_UplinkMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{6, 2} -} -func (m *MACState_UplinkMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACState_UplinkMessage.Unmarshal(m, b) -} -func (m *MACState_UplinkMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACState_UplinkMessage.Marshal(b, m, deterministic) -} -func (m *MACState_UplinkMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACState_UplinkMessage.Merge(m, src) -} -func (m *MACState_UplinkMessage) XXX_Size() int { - return xxx_messageInfo_MACState_UplinkMessage.Size(m) -} -func (m *MACState_UplinkMessage) XXX_DiscardUnknown() { - xxx_messageInfo_MACState_UplinkMessage.DiscardUnknown(m) +func (x *EndDeviceAuthenticationCode) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACState_UplinkMessage proto.InternalMessageInfo +func (*EndDeviceAuthenticationCode) ProtoMessage() {} -func (m *MACState_UplinkMessage) GetPayload() *Message { - if m != nil { - return m.Payload +func (x *EndDeviceAuthenticationCode) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *MACState_UplinkMessage) GetSettings() *MACState_UplinkMessage_TxSettings { - if m != nil { - return m.Settings - } - return nil +// Deprecated: Use EndDeviceAuthenticationCode.ProtoReflect.Descriptor instead. +func (*EndDeviceAuthenticationCode) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{7} } -func (m *MACState_UplinkMessage) GetRxMetadata() []*MACState_UplinkMessage_RxMetadata { - if m != nil { - return m.RxMetadata +func (x *EndDeviceAuthenticationCode) GetValue() string { + if x != nil { + return x.Value } - return nil + return "" } -func (m *MACState_UplinkMessage) GetReceivedAt() *types.Timestamp { - if m != nil { - return m.ReceivedAt +func (x *EndDeviceAuthenticationCode) GetValidFrom() *timestamppb.Timestamp { + if x != nil { + return x.ValidFrom } return nil } -func (m *MACState_UplinkMessage) GetCorrelationIds() []string { - if m != nil { - return m.CorrelationIds +func (x *EndDeviceAuthenticationCode) GetValidTo() *timestamppb.Timestamp { + if x != nil { + return x.ValidTo } return nil } -func (m *MACState_UplinkMessage) GetDeviceChannelIndex() uint32 { - if m != nil { - return m.DeviceChannelIndex - } - return 0 -} - -type MACState_UplinkMessage_TxSettings struct { - DataRate *DataRate `protobuf:"bytes,1,opt,name=data_rate,json=dataRate,proto3" json:"data_rate,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MACState_UplinkMessage_TxSettings) Reset() { *m = MACState_UplinkMessage_TxSettings{} } -func (m *MACState_UplinkMessage_TxSettings) String() string { return proto.CompactTextString(m) } -func (*MACState_UplinkMessage_TxSettings) ProtoMessage() {} -func (*MACState_UplinkMessage_TxSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{6, 2, 0} -} -func (m *MACState_UplinkMessage_TxSettings) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACState_UplinkMessage_TxSettings.Unmarshal(m, b) -} -func (m *MACState_UplinkMessage_TxSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACState_UplinkMessage_TxSettings.Marshal(b, m, deterministic) -} -func (m *MACState_UplinkMessage_TxSettings) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACState_UplinkMessage_TxSettings.Merge(m, src) -} -func (m *MACState_UplinkMessage_TxSettings) XXX_Size() int { - return xxx_messageInfo_MACState_UplinkMessage_TxSettings.Size(m) -} -func (m *MACState_UplinkMessage_TxSettings) XXX_DiscardUnknown() { - xxx_messageInfo_MACState_UplinkMessage_TxSettings.DiscardUnknown(m) -} - -var xxx_messageInfo_MACState_UplinkMessage_TxSettings proto.InternalMessageInfo - -func (m *MACState_UplinkMessage_TxSettings) GetDataRate() *DataRate { - if m != nil { - return m.DataRate - } - return nil -} +// Defines an End Device registration and its state on the network. +// The persistence of the EndDevice is divided between the Network Server, Application Server and Join Server. +// SDKs are responsible for combining (if desired) the three. +type EndDevice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -type MACState_UplinkMessage_RxMetadata struct { - GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` - ChannelRssi float32 `protobuf:"fixed32,9,opt,name=channel_rssi,json=channelRssi,proto3" json:"channel_rssi,omitempty"` - Snr float32 `protobuf:"fixed32,11,opt,name=snr,proto3" json:"snr,omitempty"` - DownlinkPathConstraint DownlinkPathConstraint `protobuf:"varint,14,opt,name=downlink_path_constraint,json=downlinkPathConstraint,proto3,enum=ttn.lorawan.v3.DownlinkPathConstraint" json:"downlink_path_constraint,omitempty"` - UplinkToken []byte `protobuf:"bytes,15,opt,name=uplink_token,json=uplinkToken,proto3" json:"uplink_token,omitempty"` - PacketBroker *MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata `protobuf:"bytes,18,opt,name=packet_broker,json=packetBroker,proto3" json:"packet_broker,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MACState_UplinkMessage_RxMetadata) Reset() { *m = MACState_UplinkMessage_RxMetadata{} } -func (m *MACState_UplinkMessage_RxMetadata) String() string { return proto.CompactTextString(m) } -func (*MACState_UplinkMessage_RxMetadata) ProtoMessage() {} -func (*MACState_UplinkMessage_RxMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{6, 2, 1} -} -func (m *MACState_UplinkMessage_RxMetadata) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACState_UplinkMessage_RxMetadata.Unmarshal(m, b) -} -func (m *MACState_UplinkMessage_RxMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACState_UplinkMessage_RxMetadata.Marshal(b, m, deterministic) -} -func (m *MACState_UplinkMessage_RxMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACState_UplinkMessage_RxMetadata.Merge(m, src) -} -func (m *MACState_UplinkMessage_RxMetadata) XXX_Size() int { - return xxx_messageInfo_MACState_UplinkMessage_RxMetadata.Size(m) -} -func (m *MACState_UplinkMessage_RxMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_MACState_UplinkMessage_RxMetadata.DiscardUnknown(m) -} - -var xxx_messageInfo_MACState_UplinkMessage_RxMetadata proto.InternalMessageInfo - -func (m *MACState_UplinkMessage_RxMetadata) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds - } - return nil -} - -func (m *MACState_UplinkMessage_RxMetadata) GetChannelRssi() float32 { - if m != nil { - return m.ChannelRssi - } - return 0 -} - -func (m *MACState_UplinkMessage_RxMetadata) GetSnr() float32 { - if m != nil { - return m.Snr - } - return 0 -} - -func (m *MACState_UplinkMessage_RxMetadata) GetDownlinkPathConstraint() DownlinkPathConstraint { - if m != nil { - return m.DownlinkPathConstraint - } - return DownlinkPathConstraint_DOWNLINK_PATH_CONSTRAINT_NONE -} - -func (m *MACState_UplinkMessage_RxMetadata) GetUplinkToken() []byte { - if m != nil { - return m.UplinkToken - } - return nil -} - -func (m *MACState_UplinkMessage_RxMetadata) GetPacketBroker() *MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata { - if m != nil { - return m.PacketBroker - } - return nil -} - -type MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata) Reset() { - *m = MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata{} -} -func (m *MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata) String() string { - return proto.CompactTextString(m) -} -func (*MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata) ProtoMessage() {} -func (*MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{6, 2, 1, 0} -} -func (m *MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata.Unmarshal(m, b) -} -func (m *MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata.Marshal(b, m, deterministic) -} -func (m *MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata.Merge(m, src) -} -func (m *MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata) XXX_Size() int { - return xxx_messageInfo_MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata.Size(m) -} -func (m *MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata.DiscardUnknown(m) -} - -var xxx_messageInfo_MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata proto.InternalMessageInfo - -// A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message. -// Used for type safe recent downlink storage. -type MACState_DownlinkMessage struct { - Payload *MACState_DownlinkMessage_Message `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` - CorrelationIds []string `protobuf:"bytes,6,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MACState_DownlinkMessage) Reset() { *m = MACState_DownlinkMessage{} } -func (m *MACState_DownlinkMessage) String() string { return proto.CompactTextString(m) } -func (*MACState_DownlinkMessage) ProtoMessage() {} -func (*MACState_DownlinkMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{6, 3} -} -func (m *MACState_DownlinkMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACState_DownlinkMessage.Unmarshal(m, b) -} -func (m *MACState_DownlinkMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACState_DownlinkMessage.Marshal(b, m, deterministic) -} -func (m *MACState_DownlinkMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACState_DownlinkMessage.Merge(m, src) -} -func (m *MACState_DownlinkMessage) XXX_Size() int { - return xxx_messageInfo_MACState_DownlinkMessage.Size(m) -} -func (m *MACState_DownlinkMessage) XXX_DiscardUnknown() { - xxx_messageInfo_MACState_DownlinkMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_MACState_DownlinkMessage proto.InternalMessageInfo - -func (m *MACState_DownlinkMessage) GetPayload() *MACState_DownlinkMessage_Message { - if m != nil { - return m.Payload - } - return nil -} - -func (m *MACState_DownlinkMessage) GetCorrelationIds() []string { - if m != nil { - return m.CorrelationIds - } - return nil -} - -type MACState_DownlinkMessage_Message struct { - MHdr *MACState_DownlinkMessage_Message_MHDR `protobuf:"bytes,1,opt,name=m_hdr,json=mHdr,proto3" json:"m_hdr,omitempty"` - MacPayload *MACState_DownlinkMessage_Message_MACPayload `protobuf:"bytes,3,opt,name=mac_payload,json=macPayload,proto3" json:"mac_payload,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MACState_DownlinkMessage_Message) Reset() { *m = MACState_DownlinkMessage_Message{} } -func (m *MACState_DownlinkMessage_Message) String() string { return proto.CompactTextString(m) } -func (*MACState_DownlinkMessage_Message) ProtoMessage() {} -func (*MACState_DownlinkMessage_Message) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{6, 3, 0} -} -func (m *MACState_DownlinkMessage_Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACState_DownlinkMessage_Message.Unmarshal(m, b) -} -func (m *MACState_DownlinkMessage_Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACState_DownlinkMessage_Message.Marshal(b, m, deterministic) -} -func (m *MACState_DownlinkMessage_Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACState_DownlinkMessage_Message.Merge(m, src) -} -func (m *MACState_DownlinkMessage_Message) XXX_Size() int { - return xxx_messageInfo_MACState_DownlinkMessage_Message.Size(m) -} -func (m *MACState_DownlinkMessage_Message) XXX_DiscardUnknown() { - xxx_messageInfo_MACState_DownlinkMessage_Message.DiscardUnknown(m) -} - -var xxx_messageInfo_MACState_DownlinkMessage_Message proto.InternalMessageInfo - -func (m *MACState_DownlinkMessage_Message) GetMHdr() *MACState_DownlinkMessage_Message_MHDR { - if m != nil { - return m.MHdr - } - return nil -} - -func (m *MACState_DownlinkMessage_Message) GetMacPayload() *MACState_DownlinkMessage_Message_MACPayload { - if m != nil { - return m.MacPayload - } - return nil -} - -type MACState_DownlinkMessage_Message_MHDR struct { - MType MType `protobuf:"varint,1,opt,name=m_type,json=mType,proto3,enum=ttn.lorawan.v3.MType" json:"m_type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MACState_DownlinkMessage_Message_MHDR) Reset() { *m = MACState_DownlinkMessage_Message_MHDR{} } -func (m *MACState_DownlinkMessage_Message_MHDR) String() string { return proto.CompactTextString(m) } -func (*MACState_DownlinkMessage_Message_MHDR) ProtoMessage() {} -func (*MACState_DownlinkMessage_Message_MHDR) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{6, 3, 0, 0} -} -func (m *MACState_DownlinkMessage_Message_MHDR) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACState_DownlinkMessage_Message_MHDR.Unmarshal(m, b) -} -func (m *MACState_DownlinkMessage_Message_MHDR) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACState_DownlinkMessage_Message_MHDR.Marshal(b, m, deterministic) -} -func (m *MACState_DownlinkMessage_Message_MHDR) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACState_DownlinkMessage_Message_MHDR.Merge(m, src) -} -func (m *MACState_DownlinkMessage_Message_MHDR) XXX_Size() int { - return xxx_messageInfo_MACState_DownlinkMessage_Message_MHDR.Size(m) -} -func (m *MACState_DownlinkMessage_Message_MHDR) XXX_DiscardUnknown() { - xxx_messageInfo_MACState_DownlinkMessage_Message_MHDR.DiscardUnknown(m) -} - -var xxx_messageInfo_MACState_DownlinkMessage_Message_MHDR proto.InternalMessageInfo - -func (m *MACState_DownlinkMessage_Message_MHDR) GetMType() MType { - if m != nil { - return m.MType - } - return MType_JOIN_REQUEST -} - -type MACState_DownlinkMessage_Message_MACPayload struct { - FPort uint32 `protobuf:"varint,2,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` - FullFCnt uint32 `protobuf:"varint,5,opt,name=full_f_cnt,json=fullFCnt,proto3" json:"full_f_cnt,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MACState_DownlinkMessage_Message_MACPayload) Reset() { - *m = MACState_DownlinkMessage_Message_MACPayload{} -} -func (m *MACState_DownlinkMessage_Message_MACPayload) String() string { - return proto.CompactTextString(m) -} -func (*MACState_DownlinkMessage_Message_MACPayload) ProtoMessage() {} -func (*MACState_DownlinkMessage_Message_MACPayload) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{6, 3, 0, 1} -} -func (m *MACState_DownlinkMessage_Message_MACPayload) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACState_DownlinkMessage_Message_MACPayload.Unmarshal(m, b) -} -func (m *MACState_DownlinkMessage_Message_MACPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACState_DownlinkMessage_Message_MACPayload.Marshal(b, m, deterministic) -} -func (m *MACState_DownlinkMessage_Message_MACPayload) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACState_DownlinkMessage_Message_MACPayload.Merge(m, src) -} -func (m *MACState_DownlinkMessage_Message_MACPayload) XXX_Size() int { - return xxx_messageInfo_MACState_DownlinkMessage_Message_MACPayload.Size(m) -} -func (m *MACState_DownlinkMessage_Message_MACPayload) XXX_DiscardUnknown() { - xxx_messageInfo_MACState_DownlinkMessage_Message_MACPayload.DiscardUnknown(m) -} - -var xxx_messageInfo_MACState_DownlinkMessage_Message_MACPayload proto.InternalMessageInfo - -func (m *MACState_DownlinkMessage_Message_MACPayload) GetFPort() uint32 { - if m != nil { - return m.FPort - } - return 0 -} - -func (m *MACState_DownlinkMessage_Message_MACPayload) GetFullFCnt() uint32 { - if m != nil { - return m.FullFCnt - } - return 0 -} - -type MACState_DataRateRange struct { - MinDataRateIndex DataRateIndex `protobuf:"varint,1,opt,name=min_data_rate_index,json=minDataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"min_data_rate_index,omitempty"` - MaxDataRateIndex DataRateIndex `protobuf:"varint,2,opt,name=max_data_rate_index,json=maxDataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"max_data_rate_index,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MACState_DataRateRange) Reset() { *m = MACState_DataRateRange{} } -func (m *MACState_DataRateRange) String() string { return proto.CompactTextString(m) } -func (*MACState_DataRateRange) ProtoMessage() {} -func (*MACState_DataRateRange) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{6, 4} -} -func (m *MACState_DataRateRange) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACState_DataRateRange.Unmarshal(m, b) -} -func (m *MACState_DataRateRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACState_DataRateRange.Marshal(b, m, deterministic) -} -func (m *MACState_DataRateRange) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACState_DataRateRange.Merge(m, src) -} -func (m *MACState_DataRateRange) XXX_Size() int { - return xxx_messageInfo_MACState_DataRateRange.Size(m) -} -func (m *MACState_DataRateRange) XXX_DiscardUnknown() { - xxx_messageInfo_MACState_DataRateRange.DiscardUnknown(m) -} - -var xxx_messageInfo_MACState_DataRateRange proto.InternalMessageInfo - -func (m *MACState_DataRateRange) GetMinDataRateIndex() DataRateIndex { - if m != nil { - return m.MinDataRateIndex - } - return DataRateIndex_DATA_RATE_0 -} - -func (m *MACState_DataRateRange) GetMaxDataRateIndex() DataRateIndex { - if m != nil { - return m.MaxDataRateIndex - } - return DataRateIndex_DATA_RATE_0 -} - -type MACState_DataRateRanges struct { - Ranges []*MACState_DataRateRange `protobuf:"bytes,1,rep,name=ranges,proto3" json:"ranges,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MACState_DataRateRanges) Reset() { *m = MACState_DataRateRanges{} } -func (m *MACState_DataRateRanges) String() string { return proto.CompactTextString(m) } -func (*MACState_DataRateRanges) ProtoMessage() {} -func (*MACState_DataRateRanges) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{6, 5} -} -func (m *MACState_DataRateRanges) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACState_DataRateRanges.Unmarshal(m, b) -} -func (m *MACState_DataRateRanges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACState_DataRateRanges.Marshal(b, m, deterministic) -} -func (m *MACState_DataRateRanges) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACState_DataRateRanges.Merge(m, src) -} -func (m *MACState_DataRateRanges) XXX_Size() int { - return xxx_messageInfo_MACState_DataRateRanges.Size(m) -} -func (m *MACState_DataRateRanges) XXX_DiscardUnknown() { - xxx_messageInfo_MACState_DataRateRanges.DiscardUnknown(m) -} - -var xxx_messageInfo_MACState_DataRateRanges proto.InternalMessageInfo - -func (m *MACState_DataRateRanges) GetRanges() []*MACState_DataRateRange { - if m != nil { - return m.Ranges - } - return nil -} - -// Authentication code for end devices. -type EndDeviceAuthenticationCode struct { - Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` - ValidFrom *types.Timestamp `protobuf:"bytes,2,opt,name=valid_from,json=validFrom,proto3" json:"valid_from,omitempty"` - ValidTo *types.Timestamp `protobuf:"bytes,3,opt,name=valid_to,json=validTo,proto3" json:"valid_to,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *EndDeviceAuthenticationCode) Reset() { *m = EndDeviceAuthenticationCode{} } -func (m *EndDeviceAuthenticationCode) String() string { return proto.CompactTextString(m) } -func (*EndDeviceAuthenticationCode) ProtoMessage() {} -func (*EndDeviceAuthenticationCode) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{7} -} -func (m *EndDeviceAuthenticationCode) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceAuthenticationCode.Unmarshal(m, b) -} -func (m *EndDeviceAuthenticationCode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceAuthenticationCode.Marshal(b, m, deterministic) -} -func (m *EndDeviceAuthenticationCode) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceAuthenticationCode.Merge(m, src) -} -func (m *EndDeviceAuthenticationCode) XXX_Size() int { - return xxx_messageInfo_EndDeviceAuthenticationCode.Size(m) -} -func (m *EndDeviceAuthenticationCode) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceAuthenticationCode.DiscardUnknown(m) -} - -var xxx_messageInfo_EndDeviceAuthenticationCode proto.InternalMessageInfo - -func (m *EndDeviceAuthenticationCode) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -func (m *EndDeviceAuthenticationCode) GetValidFrom() *types.Timestamp { - if m != nil { - return m.ValidFrom - } - return nil -} - -func (m *EndDeviceAuthenticationCode) GetValidTo() *types.Timestamp { - if m != nil { - return m.ValidTo - } - return nil -} - -// Defines an End Device registration and its state on the network. -// The persistence of the EndDevice is divided between the Network Server, Application Server and Join Server. -// SDKs are responsible for combining (if desired) the three. -type EndDevice struct { - Ids *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` - CreatedAt *types.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *types.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Ids *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // Friendly name of the device. Stored in Entity Registry. Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` // Description of the device. Stored in Entity Registry. @@ -2365,7 +1586,7 @@ type EndDevice struct { LastRjCount_1 uint32 `protobuf:"varint,32,opt,name=last_rj_count_1,json=lastRjCount1,proto3" json:"last_rj_count_1,omitempty"` // Time when last DevStatus MAC command was received. // Stored in Network Server. - LastDevStatusReceivedAt *types.Timestamp `protobuf:"bytes,33,opt,name=last_dev_status_received_at,json=lastDevStatusReceivedAt,proto3" json:"last_dev_status_received_at,omitempty"` + LastDevStatusReceivedAt *timestamppb.Timestamp `protobuf:"bytes,33,opt,name=last_dev_status_received_at,json=lastDevStatusReceivedAt,proto3" json:"last_dev_status_received_at,omitempty"` // The power state of the device; whether it is battery-powered or connected to an external power source. // Received via the DevStatus MAC command at status_received_at. // Stored in Network Server. @@ -2373,7 +1594,7 @@ type EndDevice struct { // Latest-known battery percentage of the device. // Received via the DevStatus MAC command at last_dev_status_received_at or earlier. // Stored in Network Server. - BatteryPercentage *types.FloatValue `protobuf:"bytes,35,opt,name=battery_percentage,json=batteryPercentage,proto3" json:"battery_percentage,omitempty"` + BatteryPercentage *wrapperspb.FloatValue `protobuf:"bytes,35,opt,name=battery_percentage,json=batteryPercentage,proto3" json:"battery_percentage,omitempty"` // Demodulation signal-to-noise ratio (dB). // Received via the DevStatus MAC command at last_dev_status_received_at. // Stored in Network Server. @@ -2388,7 +1609,7 @@ type EndDevice struct { // ID of the provisioner. Stored in Join Server. ProvisionerId string `protobuf:"bytes,42,opt,name=provisioner_id,json=provisionerId,proto3" json:"provisioner_id,omitempty"` // Vendor-specific provisioning data. Stored in Join Server. - ProvisioningData *types.Struct `protobuf:"bytes,43,opt,name=provisioning_data,json=provisioningData,proto3" json:"provisioning_data,omitempty"` + ProvisioningData *structpb.Struct `protobuf:"bytes,43,opt,name=provisioning_data,json=provisioningData,proto3" json:"provisioning_data,omitempty"` // Indicates whether this device represents a multicast group. Multicast bool `protobuf:"varint,45,opt,name=multicast,proto3" json:"multicast,omitempty"` // Authentication code to claim ownership of the end device. @@ -2401,1630 +1622,4425 @@ type EndDevice struct { SkipPayloadCrypto bool `protobuf:"varint,51,opt,name=skip_payload_crypto,json=skipPayloadCrypto,proto3" json:"skip_payload_crypto,omitempty"` // Skip decryption of uplink payloads and encryption of downlink payloads. // This field overrides the application-level setting. - SkipPayloadCryptoOverride *types.BoolValue `protobuf:"bytes,52,opt,name=skip_payload_crypto_override,json=skipPayloadCryptoOverride,proto3" json:"skip_payload_crypto_override,omitempty"` + SkipPayloadCryptoOverride *wrapperspb.BoolValue `protobuf:"bytes,52,opt,name=skip_payload_crypto_override,json=skipPayloadCryptoOverride,proto3" json:"skip_payload_crypto_override,omitempty"` // Timestamp when the device has been activated. Stored in the Entity Registry. // This field is set by the Application Server when an end device sends // its first uplink. // The Application Server will use the field in order to avoid repeated // calls to the Entity Registry. // The field cannot be unset once set. - ActivatedAt *types.Timestamp `protobuf:"bytes,53,opt,name=activated_at,json=activatedAt,proto3" json:"activated_at,omitempty"` + ActivatedAt *timestamppb.Timestamp `protobuf:"bytes,53,opt,name=activated_at,json=activatedAt,proto3" json:"activated_at,omitempty"` // Timestamp when a device uplink has been last observed. // This field is set by the Application Server and stored in the Identity Server. - LastSeenAt *types.Timestamp `protobuf:"bytes,54,opt,name=last_seen_at,json=lastSeenAt,proto3" json:"last_seen_at,omitempty"` + LastSeenAt *timestamppb.Timestamp `protobuf:"bytes,54,opt,name=last_seen_at,json=lastSeenAt,proto3" json:"last_seen_at,omitempty"` SerialNumber string `protobuf:"bytes,55,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"` LoraAllianceProfileIds *LoRaAllianceProfileIdentifiers `protobuf:"bytes,56,opt,name=lora_alliance_profile_ids,json=loraAllianceProfileIds,proto3" json:"lora_alliance_profile_ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *EndDevice) Reset() { *m = EndDevice{} } -func (m *EndDevice) String() string { return proto.CompactTextString(m) } -func (*EndDevice) ProtoMessage() {} -func (*EndDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{8} -} -func (m *EndDevice) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDevice.Unmarshal(m, b) -} -func (m *EndDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDevice.Marshal(b, m, deterministic) -} -func (m *EndDevice) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDevice.Merge(m, src) +func (x *EndDevice) Reset() { + *x = EndDevice{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDevice) XXX_Size() int { - return xxx_messageInfo_EndDevice.Size(m) + +func (x *EndDevice) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *EndDevice) XXX_DiscardUnknown() { - xxx_messageInfo_EndDevice.DiscardUnknown(m) + +func (*EndDevice) ProtoMessage() {} + +func (x *EndDevice) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_EndDevice proto.InternalMessageInfo +// Deprecated: Use EndDevice.ProtoReflect.Descriptor instead. +func (*EndDevice) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{8} +} -func (m *EndDevice) GetIds() *EndDeviceIdentifiers { - if m != nil { - return m.Ids +func (x *EndDevice) GetIds() *EndDeviceIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *EndDevice) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *EndDevice) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *EndDevice) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *EndDevice) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *EndDevice) GetName() string { - if m != nil { - return m.Name +func (x *EndDevice) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *EndDevice) GetDescription() string { - if m != nil { - return m.Description +func (x *EndDevice) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *EndDevice) GetAttributes() map[string]string { - if m != nil { - return m.Attributes +func (x *EndDevice) GetAttributes() map[string]string { + if x != nil { + return x.Attributes } return nil } -func (m *EndDevice) GetVersionIds() *EndDeviceVersionIdentifiers { - if m != nil { - return m.VersionIds +func (x *EndDevice) GetVersionIds() *EndDeviceVersionIdentifiers { + if x != nil { + return x.VersionIds } return nil } -func (m *EndDevice) GetServiceProfileId() string { - if m != nil { - return m.ServiceProfileId +func (x *EndDevice) GetServiceProfileId() string { + if x != nil { + return x.ServiceProfileId } return "" } -func (m *EndDevice) GetNetworkServerAddress() string { - if m != nil { - return m.NetworkServerAddress +func (x *EndDevice) GetNetworkServerAddress() string { + if x != nil { + return x.NetworkServerAddress } return "" } -func (m *EndDevice) GetNetworkServerKekLabel() string { - if m != nil { - return m.NetworkServerKekLabel +func (x *EndDevice) GetNetworkServerKekLabel() string { + if x != nil { + return x.NetworkServerKekLabel } return "" } -func (m *EndDevice) GetApplicationServerAddress() string { - if m != nil { - return m.ApplicationServerAddress +func (x *EndDevice) GetApplicationServerAddress() string { + if x != nil { + return x.ApplicationServerAddress } return "" } -func (m *EndDevice) GetApplicationServerKekLabel() string { - if m != nil { - return m.ApplicationServerKekLabel +func (x *EndDevice) GetApplicationServerKekLabel() string { + if x != nil { + return x.ApplicationServerKekLabel } return "" } -func (m *EndDevice) GetApplicationServerId() string { - if m != nil { - return m.ApplicationServerId +func (x *EndDevice) GetApplicationServerId() string { + if x != nil { + return x.ApplicationServerId } return "" } -func (m *EndDevice) GetJoinServerAddress() string { - if m != nil { - return m.JoinServerAddress +func (x *EndDevice) GetJoinServerAddress() string { + if x != nil { + return x.JoinServerAddress } return "" } -func (m *EndDevice) GetLocations() map[string]*Location { - if m != nil { - return m.Locations +func (x *EndDevice) GetLocations() map[string]*Location { + if x != nil { + return x.Locations } return nil } -func (m *EndDevice) GetPicture() *Picture { - if m != nil { - return m.Picture +func (x *EndDevice) GetPicture() *Picture { + if x != nil { + return x.Picture } return nil } -func (m *EndDevice) GetSupportsClassB() bool { - if m != nil { - return m.SupportsClassB +func (x *EndDevice) GetSupportsClassB() bool { + if x != nil { + return x.SupportsClassB } return false } -func (m *EndDevice) GetSupportsClassC() bool { - if m != nil { - return m.SupportsClassC +func (x *EndDevice) GetSupportsClassC() bool { + if x != nil { + return x.SupportsClassC } return false } -func (m *EndDevice) GetLorawanVersion() MACVersion { - if m != nil { - return m.LorawanVersion +func (x *EndDevice) GetLorawanVersion() MACVersion { + if x != nil { + return x.LorawanVersion } return MACVersion_MAC_UNKNOWN } -func (m *EndDevice) GetLorawanPhyVersion() PHYVersion { - if m != nil { - return m.LorawanPhyVersion +func (x *EndDevice) GetLorawanPhyVersion() PHYVersion { + if x != nil { + return x.LorawanPhyVersion } return PHYVersion_PHY_UNKNOWN } -func (m *EndDevice) GetFrequencyPlanId() string { - if m != nil { - return m.FrequencyPlanId +func (x *EndDevice) GetFrequencyPlanId() string { + if x != nil { + return x.FrequencyPlanId } return "" } -func (m *EndDevice) GetMinFrequency() uint64 { - if m != nil { - return m.MinFrequency +func (x *EndDevice) GetMinFrequency() uint64 { + if x != nil { + return x.MinFrequency } return 0 } -func (m *EndDevice) GetMaxFrequency() uint64 { - if m != nil { - return m.MaxFrequency +func (x *EndDevice) GetMaxFrequency() uint64 { + if x != nil { + return x.MaxFrequency } return 0 } -func (m *EndDevice) GetSupportsJoin() bool { - if m != nil { - return m.SupportsJoin +func (x *EndDevice) GetSupportsJoin() bool { + if x != nil { + return x.SupportsJoin } return false } -func (m *EndDevice) GetResetsJoinNonces() bool { - if m != nil { - return m.ResetsJoinNonces +func (x *EndDevice) GetResetsJoinNonces() bool { + if x != nil { + return x.ResetsJoinNonces } return false } -func (m *EndDevice) GetRootKeys() *RootKeys { - if m != nil { - return m.RootKeys +func (x *EndDevice) GetRootKeys() *RootKeys { + if x != nil { + return x.RootKeys } return nil } -func (m *EndDevice) GetNetId() []byte { - if m != nil { - return m.NetId +func (x *EndDevice) GetNetId() []byte { + if x != nil { + return x.NetId } return nil } -func (m *EndDevice) GetMacSettings() *MACSettings { - if m != nil { - return m.MacSettings +func (x *EndDevice) GetMacSettings() *MACSettings { + if x != nil { + return x.MacSettings } return nil } -func (m *EndDevice) GetMacState() *MACState { - if m != nil { - return m.MacState +func (x *EndDevice) GetMacState() *MACState { + if x != nil { + return x.MacState } return nil } -func (m *EndDevice) GetPendingMacState() *MACState { - if m != nil { - return m.PendingMacState +func (x *EndDevice) GetPendingMacState() *MACState { + if x != nil { + return x.PendingMacState } return nil } -func (m *EndDevice) GetSession() *Session { - if m != nil { - return m.Session +func (x *EndDevice) GetSession() *Session { + if x != nil { + return x.Session } return nil } -func (m *EndDevice) GetPendingSession() *Session { - if m != nil { - return m.PendingSession +func (x *EndDevice) GetPendingSession() *Session { + if x != nil { + return x.PendingSession } return nil } -func (m *EndDevice) GetLastDevNonce() uint32 { - if m != nil { - return m.LastDevNonce +func (x *EndDevice) GetLastDevNonce() uint32 { + if x != nil { + return x.LastDevNonce } return 0 } -func (m *EndDevice) GetUsedDevNonces() []uint32 { - if m != nil { - return m.UsedDevNonces +func (x *EndDevice) GetUsedDevNonces() []uint32 { + if x != nil { + return x.UsedDevNonces } return nil } -func (m *EndDevice) GetLastJoinNonce() uint32 { - if m != nil { - return m.LastJoinNonce +func (x *EndDevice) GetLastJoinNonce() uint32 { + if x != nil { + return x.LastJoinNonce } return 0 } -func (m *EndDevice) GetLastRjCount_0() uint32 { - if m != nil { - return m.LastRjCount_0 +func (x *EndDevice) GetLastRjCount_0() uint32 { + if x != nil { + return x.LastRjCount_0 } return 0 } -func (m *EndDevice) GetLastRjCount_1() uint32 { - if m != nil { - return m.LastRjCount_1 +func (x *EndDevice) GetLastRjCount_1() uint32 { + if x != nil { + return x.LastRjCount_1 } return 0 } -func (m *EndDevice) GetLastDevStatusReceivedAt() *types.Timestamp { - if m != nil { - return m.LastDevStatusReceivedAt +func (x *EndDevice) GetLastDevStatusReceivedAt() *timestamppb.Timestamp { + if x != nil { + return x.LastDevStatusReceivedAt } return nil } -func (m *EndDevice) GetPowerState() PowerState { - if m != nil { - return m.PowerState +func (x *EndDevice) GetPowerState() PowerState { + if x != nil { + return x.PowerState } return PowerState_POWER_UNKNOWN } -func (m *EndDevice) GetBatteryPercentage() *types.FloatValue { - if m != nil { - return m.BatteryPercentage +func (x *EndDevice) GetBatteryPercentage() *wrapperspb.FloatValue { + if x != nil { + return x.BatteryPercentage } return nil } -func (m *EndDevice) GetDownlinkMargin() int32 { - if m != nil { - return m.DownlinkMargin +func (x *EndDevice) GetDownlinkMargin() int32 { + if x != nil { + return x.DownlinkMargin } return 0 } -func (m *EndDevice) GetQueuedApplicationDownlinks() []*ApplicationDownlink { - if m != nil { - return m.QueuedApplicationDownlinks +func (x *EndDevice) GetQueuedApplicationDownlinks() []*ApplicationDownlink { + if x != nil { + return x.QueuedApplicationDownlinks } return nil } -func (m *EndDevice) GetFormatters() *MessagePayloadFormatters { - if m != nil { - return m.Formatters +func (x *EndDevice) GetFormatters() *MessagePayloadFormatters { + if x != nil { + return x.Formatters } return nil } -func (m *EndDevice) GetProvisionerId() string { - if m != nil { - return m.ProvisionerId +func (x *EndDevice) GetProvisionerId() string { + if x != nil { + return x.ProvisionerId } return "" } -func (m *EndDevice) GetProvisioningData() *types.Struct { - if m != nil { - return m.ProvisioningData +func (x *EndDevice) GetProvisioningData() *structpb.Struct { + if x != nil { + return x.ProvisioningData } return nil } -func (m *EndDevice) GetMulticast() bool { - if m != nil { - return m.Multicast +func (x *EndDevice) GetMulticast() bool { + if x != nil { + return x.Multicast } return false } -func (m *EndDevice) GetClaimAuthenticationCode() *EndDeviceAuthenticationCode { - if m != nil { - return m.ClaimAuthenticationCode +func (x *EndDevice) GetClaimAuthenticationCode() *EndDeviceAuthenticationCode { + if x != nil { + return x.ClaimAuthenticationCode } return nil } -func (m *EndDevice) GetSkipPayloadCrypto() bool { - if m != nil { - return m.SkipPayloadCrypto +func (x *EndDevice) GetSkipPayloadCrypto() bool { + if x != nil { + return x.SkipPayloadCrypto } return false } -func (m *EndDevice) GetSkipPayloadCryptoOverride() *types.BoolValue { - if m != nil { - return m.SkipPayloadCryptoOverride +func (x *EndDevice) GetSkipPayloadCryptoOverride() *wrapperspb.BoolValue { + if x != nil { + return x.SkipPayloadCryptoOverride } return nil } -func (m *EndDevice) GetActivatedAt() *types.Timestamp { - if m != nil { - return m.ActivatedAt +func (x *EndDevice) GetActivatedAt() *timestamppb.Timestamp { + if x != nil { + return x.ActivatedAt } return nil } -func (m *EndDevice) GetLastSeenAt() *types.Timestamp { - if m != nil { - return m.LastSeenAt +func (x *EndDevice) GetLastSeenAt() *timestamppb.Timestamp { + if x != nil { + return x.LastSeenAt } return nil } -func (m *EndDevice) GetSerialNumber() string { - if m != nil { - return m.SerialNumber +func (x *EndDevice) GetSerialNumber() string { + if x != nil { + return x.SerialNumber } return "" } -func (m *EndDevice) GetLoraAllianceProfileIds() *LoRaAllianceProfileIdentifiers { - if m != nil { - return m.LoraAllianceProfileIds +func (x *EndDevice) GetLoraAllianceProfileIds() *LoRaAllianceProfileIdentifiers { + if x != nil { + return x.LoraAllianceProfileIds } return nil } type EndDevices struct { - EndDevices []*EndDevice `protobuf:"bytes,1,rep,name=end_devices,json=endDevices,proto3" json:"end_devices,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *EndDevices) Reset() { *m = EndDevices{} } -func (m *EndDevices) String() string { return proto.CompactTextString(m) } -func (*EndDevices) ProtoMessage() {} -func (*EndDevices) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{9} -} -func (m *EndDevices) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDevices.Unmarshal(m, b) -} -func (m *EndDevices) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDevices.Marshal(b, m, deterministic) + EndDevices []*EndDevice `protobuf:"bytes,1,rep,name=end_devices,json=endDevices,proto3" json:"end_devices,omitempty"` } -func (m *EndDevices) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDevices.Merge(m, src) + +func (x *EndDevices) Reset() { + *x = EndDevices{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDevices) XXX_Size() int { - return xxx_messageInfo_EndDevices.Size(m) + +func (x *EndDevices) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *EndDevices) XXX_DiscardUnknown() { - xxx_messageInfo_EndDevices.DiscardUnknown(m) + +func (*EndDevices) ProtoMessage() {} + +func (x *EndDevices) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_EndDevices proto.InternalMessageInfo +// Deprecated: Use EndDevices.ProtoReflect.Descriptor instead. +func (*EndDevices) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{9} +} -func (m *EndDevices) GetEndDevices() []*EndDevice { - if m != nil { - return m.EndDevices +func (x *EndDevices) GetEndDevices() []*EndDevice { + if x != nil { + return x.EndDevices } return nil } type DevAddrPrefix struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // DevAddr base. DevAddr []byte `protobuf:"bytes,1,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` // Number of most significant bits from dev_addr that are used as prefix. - Length uint32 `protobuf:"varint,2,opt,name=length,proto3" json:"length,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Length uint32 `protobuf:"varint,2,opt,name=length,proto3" json:"length,omitempty"` } -func (m *DevAddrPrefix) Reset() { *m = DevAddrPrefix{} } -func (m *DevAddrPrefix) String() string { return proto.CompactTextString(m) } -func (*DevAddrPrefix) ProtoMessage() {} -func (*DevAddrPrefix) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{10} -} -func (m *DevAddrPrefix) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DevAddrPrefix.Unmarshal(m, b) -} -func (m *DevAddrPrefix) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DevAddrPrefix.Marshal(b, m, deterministic) -} -func (m *DevAddrPrefix) XXX_Merge(src proto.Message) { - xxx_messageInfo_DevAddrPrefix.Merge(m, src) +func (x *DevAddrPrefix) Reset() { + *x = DevAddrPrefix{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DevAddrPrefix) XXX_Size() int { - return xxx_messageInfo_DevAddrPrefix.Size(m) + +func (x *DevAddrPrefix) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DevAddrPrefix) XXX_DiscardUnknown() { - xxx_messageInfo_DevAddrPrefix.DiscardUnknown(m) + +func (*DevAddrPrefix) ProtoMessage() {} + +func (x *DevAddrPrefix) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DevAddrPrefix proto.InternalMessageInfo +// Deprecated: Use DevAddrPrefix.ProtoReflect.Descriptor instead. +func (*DevAddrPrefix) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{10} +} -func (m *DevAddrPrefix) GetDevAddr() []byte { - if m != nil { - return m.DevAddr +func (x *DevAddrPrefix) GetDevAddr() []byte { + if x != nil { + return x.DevAddr } return nil } -func (m *DevAddrPrefix) GetLength() uint32 { - if m != nil { - return m.Length +func (x *DevAddrPrefix) GetLength() uint32 { + if x != nil { + return x.Length } return 0 } type CreateEndDeviceRequest struct { - EndDevice *EndDevice `protobuf:"bytes,1,opt,name=end_device,json=endDevice,proto3" json:"end_device,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *CreateEndDeviceRequest) Reset() { *m = CreateEndDeviceRequest{} } -func (m *CreateEndDeviceRequest) String() string { return proto.CompactTextString(m) } -func (*CreateEndDeviceRequest) ProtoMessage() {} -func (*CreateEndDeviceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{11} -} -func (m *CreateEndDeviceRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateEndDeviceRequest.Unmarshal(m, b) -} -func (m *CreateEndDeviceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateEndDeviceRequest.Marshal(b, m, deterministic) + EndDevice *EndDevice `protobuf:"bytes,1,opt,name=end_device,json=endDevice,proto3" json:"end_device,omitempty"` } -func (m *CreateEndDeviceRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateEndDeviceRequest.Merge(m, src) + +func (x *CreateEndDeviceRequest) Reset() { + *x = CreateEndDeviceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateEndDeviceRequest) XXX_Size() int { - return xxx_messageInfo_CreateEndDeviceRequest.Size(m) + +func (x *CreateEndDeviceRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateEndDeviceRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateEndDeviceRequest.DiscardUnknown(m) + +func (*CreateEndDeviceRequest) ProtoMessage() {} + +func (x *CreateEndDeviceRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CreateEndDeviceRequest proto.InternalMessageInfo +// Deprecated: Use CreateEndDeviceRequest.ProtoReflect.Descriptor instead. +func (*CreateEndDeviceRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{11} +} -func (m *CreateEndDeviceRequest) GetEndDevice() *EndDevice { - if m != nil { - return m.EndDevice +func (x *CreateEndDeviceRequest) GetEndDevice() *EndDevice { + if x != nil { + return x.EndDevice } return nil } type UpdateEndDeviceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + EndDevice *EndDevice `protobuf:"bytes,1,opt,name=end_device,json=endDevice,proto3" json:"end_device,omitempty"` // The names of the end device fields that should be updated. // See the API reference for which fields can be set on the different services. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *UpdateEndDeviceRequest) Reset() { *m = UpdateEndDeviceRequest{} } -func (m *UpdateEndDeviceRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateEndDeviceRequest) ProtoMessage() {} -func (*UpdateEndDeviceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{12} -} -func (m *UpdateEndDeviceRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateEndDeviceRequest.Unmarshal(m, b) -} -func (m *UpdateEndDeviceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateEndDeviceRequest.Marshal(b, m, deterministic) -} -func (m *UpdateEndDeviceRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateEndDeviceRequest.Merge(m, src) +func (x *UpdateEndDeviceRequest) Reset() { + *x = UpdateEndDeviceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UpdateEndDeviceRequest) XXX_Size() int { - return xxx_messageInfo_UpdateEndDeviceRequest.Size(m) + +func (x *UpdateEndDeviceRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UpdateEndDeviceRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateEndDeviceRequest.DiscardUnknown(m) + +func (*UpdateEndDeviceRequest) ProtoMessage() {} + +func (x *UpdateEndDeviceRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UpdateEndDeviceRequest proto.InternalMessageInfo +// Deprecated: Use UpdateEndDeviceRequest.ProtoReflect.Descriptor instead. +func (*UpdateEndDeviceRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{12} +} -func (m *UpdateEndDeviceRequest) GetEndDevice() *EndDevice { - if m != nil { - return m.EndDevice +func (x *UpdateEndDeviceRequest) GetEndDevice() *EndDevice { + if x != nil { + return x.EndDevice } return nil } -func (m *UpdateEndDeviceRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *UpdateEndDeviceRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type BatchUpdateEndDeviceLastSeenRequest struct { - // The last seen timestamp needs to be set per end device. - Updates []*BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate `protobuf:"bytes,1,rep,name=updates,proto3" json:"updates,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *BatchUpdateEndDeviceLastSeenRequest) Reset() { *m = BatchUpdateEndDeviceLastSeenRequest{} } -func (m *BatchUpdateEndDeviceLastSeenRequest) String() string { return proto.CompactTextString(m) } -func (*BatchUpdateEndDeviceLastSeenRequest) ProtoMessage() {} -func (*BatchUpdateEndDeviceLastSeenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{13} -} -func (m *BatchUpdateEndDeviceLastSeenRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BatchUpdateEndDeviceLastSeenRequest.Unmarshal(m, b) -} -func (m *BatchUpdateEndDeviceLastSeenRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BatchUpdateEndDeviceLastSeenRequest.Marshal(b, m, deterministic) -} -func (m *BatchUpdateEndDeviceLastSeenRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_BatchUpdateEndDeviceLastSeenRequest.Merge(m, src) -} -func (m *BatchUpdateEndDeviceLastSeenRequest) XXX_Size() int { - return xxx_messageInfo_BatchUpdateEndDeviceLastSeenRequest.Size(m) -} -func (m *BatchUpdateEndDeviceLastSeenRequest) XXX_DiscardUnknown() { - xxx_messageInfo_BatchUpdateEndDeviceLastSeenRequest.DiscardUnknown(m) + // The last seen timestamp needs to be set per end device. + Updates []*BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate `protobuf:"bytes,1,rep,name=updates,proto3" json:"updates,omitempty"` } -var xxx_messageInfo_BatchUpdateEndDeviceLastSeenRequest proto.InternalMessageInfo - -func (m *BatchUpdateEndDeviceLastSeenRequest) GetUpdates() []*BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate { - if m != nil { - return m.Updates +func (x *BatchUpdateEndDeviceLastSeenRequest) Reset() { + *x = BatchUpdateEndDeviceLastSeenRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil -} - -type BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate struct { - Ids *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` - LastSeenAt *types.Timestamp `protobuf:"bytes,2,opt,name=last_seen_at,json=lastSeenAt,proto3" json:"last_seen_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) Reset() { - *m = BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate{} -} -func (m *BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) String() string { - return proto.CompactTextString(m) -} -func (*BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) ProtoMessage() {} -func (*BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{13, 0} -} -func (m *BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate.Unmarshal(m, b) -} -func (m *BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate.Marshal(b, m, deterministic) -} -func (m *BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) XXX_Merge(src proto.Message) { - xxx_messageInfo_BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate.Merge(m, src) -} -func (m *BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) XXX_Size() int { - return xxx_messageInfo_BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate.Size(m) -} -func (m *BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) XXX_DiscardUnknown() { - xxx_messageInfo_BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate.DiscardUnknown(m) +func (x *BatchUpdateEndDeviceLastSeenRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate proto.InternalMessageInfo +func (*BatchUpdateEndDeviceLastSeenRequest) ProtoMessage() {} -func (m *BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) GetIds() *EndDeviceIdentifiers { - if m != nil { - return m.Ids +func (x *BatchUpdateEndDeviceLastSeenRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) GetLastSeenAt() *types.Timestamp { - if m != nil { - return m.LastSeenAt +// Deprecated: Use BatchUpdateEndDeviceLastSeenRequest.ProtoReflect.Descriptor instead. +func (*BatchUpdateEndDeviceLastSeenRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{13} +} + +func (x *BatchUpdateEndDeviceLastSeenRequest) GetUpdates() []*BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate { + if x != nil { + return x.Updates } return nil } type GetEndDeviceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + EndDeviceIds *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` // The names of the end device fields that should be returned. // See the API reference for which fields can be returned by the different services. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *GetEndDeviceRequest) Reset() { *m = GetEndDeviceRequest{} } -func (m *GetEndDeviceRequest) String() string { return proto.CompactTextString(m) } -func (*GetEndDeviceRequest) ProtoMessage() {} -func (*GetEndDeviceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{14} -} -func (m *GetEndDeviceRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetEndDeviceRequest.Unmarshal(m, b) -} -func (m *GetEndDeviceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetEndDeviceRequest.Marshal(b, m, deterministic) -} -func (m *GetEndDeviceRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetEndDeviceRequest.Merge(m, src) +func (x *GetEndDeviceRequest) Reset() { + *x = GetEndDeviceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetEndDeviceRequest) XXX_Size() int { - return xxx_messageInfo_GetEndDeviceRequest.Size(m) + +func (x *GetEndDeviceRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetEndDeviceRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetEndDeviceRequest.DiscardUnknown(m) + +func (*GetEndDeviceRequest) ProtoMessage() {} + +func (x *GetEndDeviceRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetEndDeviceRequest proto.InternalMessageInfo +// Deprecated: Use GetEndDeviceRequest.ProtoReflect.Descriptor instead. +func (*GetEndDeviceRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{14} +} -func (m *GetEndDeviceRequest) GetEndDeviceIds() *EndDeviceIdentifiers { - if m != nil { - return m.EndDeviceIds +func (x *GetEndDeviceRequest) GetEndDeviceIds() *EndDeviceIdentifiers { + if x != nil { + return x.EndDeviceIds } return nil } -func (m *GetEndDeviceRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *GetEndDeviceRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type GetEndDeviceIdentifiersForEUIsRequest struct { - JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` - DevEui []byte `protobuf:"bytes,2,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GetEndDeviceIdentifiersForEUIsRequest) Reset() { *m = GetEndDeviceIdentifiersForEUIsRequest{} } -func (m *GetEndDeviceIdentifiersForEUIsRequest) String() string { return proto.CompactTextString(m) } -func (*GetEndDeviceIdentifiersForEUIsRequest) ProtoMessage() {} -func (*GetEndDeviceIdentifiersForEUIsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{15} -} -func (m *GetEndDeviceIdentifiersForEUIsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetEndDeviceIdentifiersForEUIsRequest.Unmarshal(m, b) + JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` + DevEui []byte `protobuf:"bytes,2,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"` } -func (m *GetEndDeviceIdentifiersForEUIsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetEndDeviceIdentifiersForEUIsRequest.Marshal(b, m, deterministic) -} -func (m *GetEndDeviceIdentifiersForEUIsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetEndDeviceIdentifiersForEUIsRequest.Merge(m, src) + +func (x *GetEndDeviceIdentifiersForEUIsRequest) Reset() { + *x = GetEndDeviceIdentifiersForEUIsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetEndDeviceIdentifiersForEUIsRequest) XXX_Size() int { - return xxx_messageInfo_GetEndDeviceIdentifiersForEUIsRequest.Size(m) + +func (x *GetEndDeviceIdentifiersForEUIsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetEndDeviceIdentifiersForEUIsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetEndDeviceIdentifiersForEUIsRequest.DiscardUnknown(m) + +func (*GetEndDeviceIdentifiersForEUIsRequest) ProtoMessage() {} + +func (x *GetEndDeviceIdentifiersForEUIsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetEndDeviceIdentifiersForEUIsRequest proto.InternalMessageInfo +// Deprecated: Use GetEndDeviceIdentifiersForEUIsRequest.ProtoReflect.Descriptor instead. +func (*GetEndDeviceIdentifiersForEUIsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{15} +} -func (m *GetEndDeviceIdentifiersForEUIsRequest) GetJoinEui() []byte { - if m != nil { - return m.JoinEui +func (x *GetEndDeviceIdentifiersForEUIsRequest) GetJoinEui() []byte { + if x != nil { + return x.JoinEui } return nil } -func (m *GetEndDeviceIdentifiersForEUIsRequest) GetDevEui() []byte { - if m != nil { - return m.DevEui +func (x *GetEndDeviceIdentifiersForEUIsRequest) GetDevEui() []byte { + if x != nil { + return x.DevEui } return nil } type ListEndDevicesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` // The names of the end device fields that should be returned. // See the API reference for which fields can be returned by the different services. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. Order string `protobuf:"bytes,3,opt,name=order,proto3" json:"order,omitempty"` // Limit the number of results per page. Limit uint32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,5,opt,name=page,proto3" json:"page,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Page uint32 `protobuf:"varint,5,opt,name=page,proto3" json:"page,omitempty"` } -func (m *ListEndDevicesRequest) Reset() { *m = ListEndDevicesRequest{} } -func (m *ListEndDevicesRequest) String() string { return proto.CompactTextString(m) } -func (*ListEndDevicesRequest) ProtoMessage() {} -func (*ListEndDevicesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{16} -} -func (m *ListEndDevicesRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListEndDevicesRequest.Unmarshal(m, b) -} -func (m *ListEndDevicesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListEndDevicesRequest.Marshal(b, m, deterministic) -} -func (m *ListEndDevicesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListEndDevicesRequest.Merge(m, src) +func (x *ListEndDevicesRequest) Reset() { + *x = ListEndDevicesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListEndDevicesRequest) XXX_Size() int { - return xxx_messageInfo_ListEndDevicesRequest.Size(m) + +func (x *ListEndDevicesRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListEndDevicesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListEndDevicesRequest.DiscardUnknown(m) + +func (*ListEndDevicesRequest) ProtoMessage() {} + +func (x *ListEndDevicesRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListEndDevicesRequest proto.InternalMessageInfo +// Deprecated: Use ListEndDevicesRequest.ProtoReflect.Descriptor instead. +func (*ListEndDevicesRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{16} +} -func (m *ListEndDevicesRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *ListEndDevicesRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *ListEndDevicesRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *ListEndDevicesRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *ListEndDevicesRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListEndDevicesRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *ListEndDevicesRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListEndDevicesRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListEndDevicesRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListEndDevicesRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } type SetEndDeviceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + EndDevice *EndDevice `protobuf:"bytes,1,opt,name=end_device,json=endDevice,proto3" json:"end_device,omitempty"` // The names of the end device fields that should be updated. // See the API reference for which fields can be set on the different services. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *SetEndDeviceRequest) Reset() { *m = SetEndDeviceRequest{} } -func (m *SetEndDeviceRequest) String() string { return proto.CompactTextString(m) } -func (*SetEndDeviceRequest) ProtoMessage() {} -func (*SetEndDeviceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{17} -} -func (m *SetEndDeviceRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetEndDeviceRequest.Unmarshal(m, b) -} -func (m *SetEndDeviceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetEndDeviceRequest.Marshal(b, m, deterministic) -} -func (m *SetEndDeviceRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetEndDeviceRequest.Merge(m, src) +func (x *SetEndDeviceRequest) Reset() { + *x = SetEndDeviceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SetEndDeviceRequest) XXX_Size() int { - return xxx_messageInfo_SetEndDeviceRequest.Size(m) + +func (x *SetEndDeviceRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SetEndDeviceRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetEndDeviceRequest.DiscardUnknown(m) + +func (*SetEndDeviceRequest) ProtoMessage() {} + +func (x *SetEndDeviceRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SetEndDeviceRequest proto.InternalMessageInfo +// Deprecated: Use SetEndDeviceRequest.ProtoReflect.Descriptor instead. +func (*SetEndDeviceRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{17} +} -func (m *SetEndDeviceRequest) GetEndDevice() *EndDevice { - if m != nil { - return m.EndDevice +func (x *SetEndDeviceRequest) GetEndDevice() *EndDevice { + if x != nil { + return x.EndDevice } return nil } -func (m *SetEndDeviceRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *SetEndDeviceRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type ResetAndGetEndDeviceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + EndDeviceIds *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` // The names of the end device fields that should be returned. // See the API reference for which fields can be returned by the different services. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *ResetAndGetEndDeviceRequest) Reset() { *m = ResetAndGetEndDeviceRequest{} } -func (m *ResetAndGetEndDeviceRequest) String() string { return proto.CompactTextString(m) } -func (*ResetAndGetEndDeviceRequest) ProtoMessage() {} -func (*ResetAndGetEndDeviceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{18} -} -func (m *ResetAndGetEndDeviceRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ResetAndGetEndDeviceRequest.Unmarshal(m, b) -} -func (m *ResetAndGetEndDeviceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ResetAndGetEndDeviceRequest.Marshal(b, m, deterministic) -} -func (m *ResetAndGetEndDeviceRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ResetAndGetEndDeviceRequest.Merge(m, src) +func (x *ResetAndGetEndDeviceRequest) Reset() { + *x = ResetAndGetEndDeviceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ResetAndGetEndDeviceRequest) XXX_Size() int { - return xxx_messageInfo_ResetAndGetEndDeviceRequest.Size(m) + +func (x *ResetAndGetEndDeviceRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ResetAndGetEndDeviceRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ResetAndGetEndDeviceRequest.DiscardUnknown(m) + +func (*ResetAndGetEndDeviceRequest) ProtoMessage() {} + +func (x *ResetAndGetEndDeviceRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ResetAndGetEndDeviceRequest proto.InternalMessageInfo +// Deprecated: Use ResetAndGetEndDeviceRequest.ProtoReflect.Descriptor instead. +func (*ResetAndGetEndDeviceRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{18} +} -func (m *ResetAndGetEndDeviceRequest) GetEndDeviceIds() *EndDeviceIdentifiers { - if m != nil { - return m.EndDeviceIds +func (x *ResetAndGetEndDeviceRequest) GetEndDeviceIds() *EndDeviceIdentifiers { + if x != nil { + return x.EndDeviceIds } return nil } -func (m *ResetAndGetEndDeviceRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *ResetAndGetEndDeviceRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type EndDeviceTemplate struct { - EndDevice *EndDevice `protobuf:"bytes,1,opt,name=end_device,json=endDevice,proto3" json:"end_device,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - MappingKey string `protobuf:"bytes,3,opt,name=mapping_key,json=mappingKey,proto3" json:"mapping_key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *EndDeviceTemplate) Reset() { *m = EndDeviceTemplate{} } -func (m *EndDeviceTemplate) String() string { return proto.CompactTextString(m) } -func (*EndDeviceTemplate) ProtoMessage() {} -func (*EndDeviceTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{19} + EndDevice *EndDevice `protobuf:"bytes,1,opt,name=end_device,json=endDevice,proto3" json:"end_device,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` + MappingKey string `protobuf:"bytes,3,opt,name=mapping_key,json=mappingKey,proto3" json:"mapping_key,omitempty"` } -func (m *EndDeviceTemplate) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceTemplate.Unmarshal(m, b) -} -func (m *EndDeviceTemplate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceTemplate.Marshal(b, m, deterministic) -} -func (m *EndDeviceTemplate) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceTemplate.Merge(m, src) + +func (x *EndDeviceTemplate) Reset() { + *x = EndDeviceTemplate{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDeviceTemplate) XXX_Size() int { - return xxx_messageInfo_EndDeviceTemplate.Size(m) + +func (x *EndDeviceTemplate) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *EndDeviceTemplate) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceTemplate.DiscardUnknown(m) + +func (*EndDeviceTemplate) ProtoMessage() {} + +func (x *EndDeviceTemplate) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_EndDeviceTemplate proto.InternalMessageInfo +// Deprecated: Use EndDeviceTemplate.ProtoReflect.Descriptor instead. +func (*EndDeviceTemplate) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{19} +} -func (m *EndDeviceTemplate) GetEndDevice() *EndDevice { - if m != nil { - return m.EndDevice +func (x *EndDeviceTemplate) GetEndDevice() *EndDevice { + if x != nil { + return x.EndDevice } return nil } -func (m *EndDeviceTemplate) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *EndDeviceTemplate) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *EndDeviceTemplate) GetMappingKey() string { - if m != nil { - return m.MappingKey +func (x *EndDeviceTemplate) GetMappingKey() string { + if x != nil { + return x.MappingKey } return "" } type EndDeviceTemplateFormat struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - FileExtensions []string `protobuf:"bytes,3,rep,name=file_extensions,json=fileExtensions,proto3" json:"file_extensions,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *EndDeviceTemplateFormat) Reset() { *m = EndDeviceTemplateFormat{} } -func (m *EndDeviceTemplateFormat) String() string { return proto.CompactTextString(m) } -func (*EndDeviceTemplateFormat) ProtoMessage() {} -func (*EndDeviceTemplateFormat) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{20} -} -func (m *EndDeviceTemplateFormat) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceTemplateFormat.Unmarshal(m, b) + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + FileExtensions []string `protobuf:"bytes,3,rep,name=file_extensions,json=fileExtensions,proto3" json:"file_extensions,omitempty"` } -func (m *EndDeviceTemplateFormat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceTemplateFormat.Marshal(b, m, deterministic) -} -func (m *EndDeviceTemplateFormat) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceTemplateFormat.Merge(m, src) + +func (x *EndDeviceTemplateFormat) Reset() { + *x = EndDeviceTemplateFormat{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDeviceTemplateFormat) XXX_Size() int { - return xxx_messageInfo_EndDeviceTemplateFormat.Size(m) + +func (x *EndDeviceTemplateFormat) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *EndDeviceTemplateFormat) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceTemplateFormat.DiscardUnknown(m) + +func (*EndDeviceTemplateFormat) ProtoMessage() {} + +func (x *EndDeviceTemplateFormat) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_EndDeviceTemplateFormat proto.InternalMessageInfo +// Deprecated: Use EndDeviceTemplateFormat.ProtoReflect.Descriptor instead. +func (*EndDeviceTemplateFormat) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{20} +} -func (m *EndDeviceTemplateFormat) GetName() string { - if m != nil { - return m.Name +func (x *EndDeviceTemplateFormat) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *EndDeviceTemplateFormat) GetDescription() string { - if m != nil { - return m.Description +func (x *EndDeviceTemplateFormat) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *EndDeviceTemplateFormat) GetFileExtensions() []string { - if m != nil { - return m.FileExtensions +func (x *EndDeviceTemplateFormat) GetFileExtensions() []string { + if x != nil { + return x.FileExtensions } return nil } type EndDeviceTemplateFormats struct { - Formats map[string]*EndDeviceTemplateFormat `protobuf:"bytes,1,rep,name=formats,proto3" json:"formats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *EndDeviceTemplateFormats) Reset() { *m = EndDeviceTemplateFormats{} } -func (m *EndDeviceTemplateFormats) String() string { return proto.CompactTextString(m) } -func (*EndDeviceTemplateFormats) ProtoMessage() {} -func (*EndDeviceTemplateFormats) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{21} -} -func (m *EndDeviceTemplateFormats) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceTemplateFormats.Unmarshal(m, b) -} -func (m *EndDeviceTemplateFormats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceTemplateFormats.Marshal(b, m, deterministic) + Formats map[string]*EndDeviceTemplateFormat `protobuf:"bytes,1,rep,name=formats,proto3" json:"formats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *EndDeviceTemplateFormats) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceTemplateFormats.Merge(m, src) + +func (x *EndDeviceTemplateFormats) Reset() { + *x = EndDeviceTemplateFormats{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDeviceTemplateFormats) XXX_Size() int { - return xxx_messageInfo_EndDeviceTemplateFormats.Size(m) + +func (x *EndDeviceTemplateFormats) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *EndDeviceTemplateFormats) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceTemplateFormats.DiscardUnknown(m) + +func (*EndDeviceTemplateFormats) ProtoMessage() {} + +func (x *EndDeviceTemplateFormats) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_EndDeviceTemplateFormats proto.InternalMessageInfo +// Deprecated: Use EndDeviceTemplateFormats.ProtoReflect.Descriptor instead. +func (*EndDeviceTemplateFormats) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{21} +} -func (m *EndDeviceTemplateFormats) GetFormats() map[string]*EndDeviceTemplateFormat { - if m != nil { - return m.Formats +func (x *EndDeviceTemplateFormats) GetFormats() map[string]*EndDeviceTemplateFormat { + if x != nil { + return x.Formats } return nil } type ConvertEndDeviceTemplateRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // ID of the format. FormatId string `protobuf:"bytes,1,opt,name=format_id,json=formatId,proto3" json:"format_id,omitempty"` // Data to convert. Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` // End device profile identifiers. - EndDeviceVersionIds *EndDeviceVersionIdentifiers `protobuf:"bytes,3,opt,name=end_device_version_ids,json=endDeviceVersionIds,proto3" json:"end_device_version_ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + EndDeviceVersionIds *EndDeviceVersionIdentifiers `protobuf:"bytes,3,opt,name=end_device_version_ids,json=endDeviceVersionIds,proto3" json:"end_device_version_ids,omitempty"` } -func (m *ConvertEndDeviceTemplateRequest) Reset() { *m = ConvertEndDeviceTemplateRequest{} } -func (m *ConvertEndDeviceTemplateRequest) String() string { return proto.CompactTextString(m) } -func (*ConvertEndDeviceTemplateRequest) ProtoMessage() {} -func (*ConvertEndDeviceTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_a656ee0551c94a80, []int{22} -} -func (m *ConvertEndDeviceTemplateRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ConvertEndDeviceTemplateRequest.Unmarshal(m, b) -} -func (m *ConvertEndDeviceTemplateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ConvertEndDeviceTemplateRequest.Marshal(b, m, deterministic) -} -func (m *ConvertEndDeviceTemplateRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ConvertEndDeviceTemplateRequest.Merge(m, src) +func (x *ConvertEndDeviceTemplateRequest) Reset() { + *x = ConvertEndDeviceTemplateRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ConvertEndDeviceTemplateRequest) XXX_Size() int { - return xxx_messageInfo_ConvertEndDeviceTemplateRequest.Size(m) + +func (x *ConvertEndDeviceTemplateRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ConvertEndDeviceTemplateRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ConvertEndDeviceTemplateRequest.DiscardUnknown(m) + +func (*ConvertEndDeviceTemplateRequest) ProtoMessage() {} + +func (x *ConvertEndDeviceTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ConvertEndDeviceTemplateRequest proto.InternalMessageInfo +// Deprecated: Use ConvertEndDeviceTemplateRequest.ProtoReflect.Descriptor instead. +func (*ConvertEndDeviceTemplateRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{22} +} -func (m *ConvertEndDeviceTemplateRequest) GetFormatId() string { - if m != nil { - return m.FormatId +func (x *ConvertEndDeviceTemplateRequest) GetFormatId() string { + if x != nil { + return x.FormatId } return "" } -func (m *ConvertEndDeviceTemplateRequest) GetData() []byte { - if m != nil { - return m.Data +func (x *ConvertEndDeviceTemplateRequest) GetData() []byte { + if x != nil { + return x.Data } return nil } -func (m *ConvertEndDeviceTemplateRequest) GetEndDeviceVersionIds() *EndDeviceVersionIdentifiers { - if m != nil { - return m.EndDeviceVersionIds - } - return nil -} - -func init() { - proto.RegisterEnum("ttn.lorawan.v3.PowerState", PowerState_name, PowerState_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.PowerState", PowerState_name, PowerState_value) - proto.RegisterType((*Session)(nil), "ttn.lorawan.v3.Session") - golang_proto.RegisterType((*Session)(nil), "ttn.lorawan.v3.Session") - proto.RegisterType((*BoolValue)(nil), "ttn.lorawan.v3.BoolValue") - golang_proto.RegisterType((*BoolValue)(nil), "ttn.lorawan.v3.BoolValue") - proto.RegisterType((*MACParameters)(nil), "ttn.lorawan.v3.MACParameters") - golang_proto.RegisterType((*MACParameters)(nil), "ttn.lorawan.v3.MACParameters") - proto.RegisterType((*MACParameters_Channel)(nil), "ttn.lorawan.v3.MACParameters.Channel") - golang_proto.RegisterType((*MACParameters_Channel)(nil), "ttn.lorawan.v3.MACParameters.Channel") - proto.RegisterType((*EndDeviceVersion)(nil), "ttn.lorawan.v3.EndDeviceVersion") - golang_proto.RegisterType((*EndDeviceVersion)(nil), "ttn.lorawan.v3.EndDeviceVersion") - proto.RegisterType((*ADRSettings)(nil), "ttn.lorawan.v3.ADRSettings") - golang_proto.RegisterType((*ADRSettings)(nil), "ttn.lorawan.v3.ADRSettings") - proto.RegisterType((*ADRSettings_StaticMode)(nil), "ttn.lorawan.v3.ADRSettings.StaticMode") - golang_proto.RegisterType((*ADRSettings_StaticMode)(nil), "ttn.lorawan.v3.ADRSettings.StaticMode") - proto.RegisterType((*ADRSettings_DynamicMode)(nil), "ttn.lorawan.v3.ADRSettings.DynamicMode") - golang_proto.RegisterType((*ADRSettings_DynamicMode)(nil), "ttn.lorawan.v3.ADRSettings.DynamicMode") - proto.RegisterType((*ADRSettings_DisabledMode)(nil), "ttn.lorawan.v3.ADRSettings.DisabledMode") - golang_proto.RegisterType((*ADRSettings_DisabledMode)(nil), "ttn.lorawan.v3.ADRSettings.DisabledMode") - proto.RegisterType((*MACSettings)(nil), "ttn.lorawan.v3.MACSettings") - golang_proto.RegisterType((*MACSettings)(nil), "ttn.lorawan.v3.MACSettings") - proto.RegisterType((*MACState)(nil), "ttn.lorawan.v3.MACState") - golang_proto.RegisterType((*MACState)(nil), "ttn.lorawan.v3.MACState") - proto.RegisterMapType((map[uint64]*MACState_DataRateRanges)(nil), "ttn.lorawan.v3.MACState.RejectedDataRateRangesEntry") - golang_proto.RegisterMapType((map[uint64]*MACState_DataRateRanges)(nil), "ttn.lorawan.v3.MACState.RejectedDataRateRangesEntry") - proto.RegisterType((*MACState_JoinRequest)(nil), "ttn.lorawan.v3.MACState.JoinRequest") - golang_proto.RegisterType((*MACState_JoinRequest)(nil), "ttn.lorawan.v3.MACState.JoinRequest") - proto.RegisterType((*MACState_JoinAccept)(nil), "ttn.lorawan.v3.MACState.JoinAccept") - golang_proto.RegisterType((*MACState_JoinAccept)(nil), "ttn.lorawan.v3.MACState.JoinAccept") - proto.RegisterType((*MACState_UplinkMessage)(nil), "ttn.lorawan.v3.MACState.UplinkMessage") - golang_proto.RegisterType((*MACState_UplinkMessage)(nil), "ttn.lorawan.v3.MACState.UplinkMessage") - proto.RegisterType((*MACState_UplinkMessage_TxSettings)(nil), "ttn.lorawan.v3.MACState.UplinkMessage.TxSettings") - golang_proto.RegisterType((*MACState_UplinkMessage_TxSettings)(nil), "ttn.lorawan.v3.MACState.UplinkMessage.TxSettings") - proto.RegisterType((*MACState_UplinkMessage_RxMetadata)(nil), "ttn.lorawan.v3.MACState.UplinkMessage.RxMetadata") - golang_proto.RegisterType((*MACState_UplinkMessage_RxMetadata)(nil), "ttn.lorawan.v3.MACState.UplinkMessage.RxMetadata") - proto.RegisterType((*MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata)(nil), "ttn.lorawan.v3.MACState.UplinkMessage.RxMetadata.PacketBrokerMetadata") - golang_proto.RegisterType((*MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata)(nil), "ttn.lorawan.v3.MACState.UplinkMessage.RxMetadata.PacketBrokerMetadata") - proto.RegisterType((*MACState_DownlinkMessage)(nil), "ttn.lorawan.v3.MACState.DownlinkMessage") - golang_proto.RegisterType((*MACState_DownlinkMessage)(nil), "ttn.lorawan.v3.MACState.DownlinkMessage") - proto.RegisterType((*MACState_DownlinkMessage_Message)(nil), "ttn.lorawan.v3.MACState.DownlinkMessage.Message") - golang_proto.RegisterType((*MACState_DownlinkMessage_Message)(nil), "ttn.lorawan.v3.MACState.DownlinkMessage.Message") - proto.RegisterType((*MACState_DownlinkMessage_Message_MHDR)(nil), "ttn.lorawan.v3.MACState.DownlinkMessage.Message.MHDR") - golang_proto.RegisterType((*MACState_DownlinkMessage_Message_MHDR)(nil), "ttn.lorawan.v3.MACState.DownlinkMessage.Message.MHDR") - proto.RegisterType((*MACState_DownlinkMessage_Message_MACPayload)(nil), "ttn.lorawan.v3.MACState.DownlinkMessage.Message.MACPayload") - golang_proto.RegisterType((*MACState_DownlinkMessage_Message_MACPayload)(nil), "ttn.lorawan.v3.MACState.DownlinkMessage.Message.MACPayload") - proto.RegisterType((*MACState_DataRateRange)(nil), "ttn.lorawan.v3.MACState.DataRateRange") - golang_proto.RegisterType((*MACState_DataRateRange)(nil), "ttn.lorawan.v3.MACState.DataRateRange") - proto.RegisterType((*MACState_DataRateRanges)(nil), "ttn.lorawan.v3.MACState.DataRateRanges") - golang_proto.RegisterType((*MACState_DataRateRanges)(nil), "ttn.lorawan.v3.MACState.DataRateRanges") - proto.RegisterType((*EndDeviceAuthenticationCode)(nil), "ttn.lorawan.v3.EndDeviceAuthenticationCode") - golang_proto.RegisterType((*EndDeviceAuthenticationCode)(nil), "ttn.lorawan.v3.EndDeviceAuthenticationCode") - proto.RegisterType((*EndDevice)(nil), "ttn.lorawan.v3.EndDevice") - golang_proto.RegisterType((*EndDevice)(nil), "ttn.lorawan.v3.EndDevice") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.EndDevice.AttributesEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.EndDevice.AttributesEntry") - proto.RegisterMapType((map[string]*Location)(nil), "ttn.lorawan.v3.EndDevice.LocationsEntry") - golang_proto.RegisterMapType((map[string]*Location)(nil), "ttn.lorawan.v3.EndDevice.LocationsEntry") - proto.RegisterType((*EndDevices)(nil), "ttn.lorawan.v3.EndDevices") - golang_proto.RegisterType((*EndDevices)(nil), "ttn.lorawan.v3.EndDevices") - proto.RegisterType((*DevAddrPrefix)(nil), "ttn.lorawan.v3.DevAddrPrefix") - golang_proto.RegisterType((*DevAddrPrefix)(nil), "ttn.lorawan.v3.DevAddrPrefix") - proto.RegisterType((*CreateEndDeviceRequest)(nil), "ttn.lorawan.v3.CreateEndDeviceRequest") - golang_proto.RegisterType((*CreateEndDeviceRequest)(nil), "ttn.lorawan.v3.CreateEndDeviceRequest") - proto.RegisterType((*UpdateEndDeviceRequest)(nil), "ttn.lorawan.v3.UpdateEndDeviceRequest") - golang_proto.RegisterType((*UpdateEndDeviceRequest)(nil), "ttn.lorawan.v3.UpdateEndDeviceRequest") - proto.RegisterType((*BatchUpdateEndDeviceLastSeenRequest)(nil), "ttn.lorawan.v3.BatchUpdateEndDeviceLastSeenRequest") - golang_proto.RegisterType((*BatchUpdateEndDeviceLastSeenRequest)(nil), "ttn.lorawan.v3.BatchUpdateEndDeviceLastSeenRequest") - proto.RegisterType((*BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate)(nil), "ttn.lorawan.v3.BatchUpdateEndDeviceLastSeenRequest.EndDeviceLastSeenUpdate") - golang_proto.RegisterType((*BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate)(nil), "ttn.lorawan.v3.BatchUpdateEndDeviceLastSeenRequest.EndDeviceLastSeenUpdate") - proto.RegisterType((*GetEndDeviceRequest)(nil), "ttn.lorawan.v3.GetEndDeviceRequest") - golang_proto.RegisterType((*GetEndDeviceRequest)(nil), "ttn.lorawan.v3.GetEndDeviceRequest") - proto.RegisterType((*GetEndDeviceIdentifiersForEUIsRequest)(nil), "ttn.lorawan.v3.GetEndDeviceIdentifiersForEUIsRequest") - golang_proto.RegisterType((*GetEndDeviceIdentifiersForEUIsRequest)(nil), "ttn.lorawan.v3.GetEndDeviceIdentifiersForEUIsRequest") - proto.RegisterType((*ListEndDevicesRequest)(nil), "ttn.lorawan.v3.ListEndDevicesRequest") - golang_proto.RegisterType((*ListEndDevicesRequest)(nil), "ttn.lorawan.v3.ListEndDevicesRequest") - proto.RegisterType((*SetEndDeviceRequest)(nil), "ttn.lorawan.v3.SetEndDeviceRequest") - golang_proto.RegisterType((*SetEndDeviceRequest)(nil), "ttn.lorawan.v3.SetEndDeviceRequest") - proto.RegisterType((*ResetAndGetEndDeviceRequest)(nil), "ttn.lorawan.v3.ResetAndGetEndDeviceRequest") - golang_proto.RegisterType((*ResetAndGetEndDeviceRequest)(nil), "ttn.lorawan.v3.ResetAndGetEndDeviceRequest") - proto.RegisterType((*EndDeviceTemplate)(nil), "ttn.lorawan.v3.EndDeviceTemplate") - golang_proto.RegisterType((*EndDeviceTemplate)(nil), "ttn.lorawan.v3.EndDeviceTemplate") - proto.RegisterType((*EndDeviceTemplateFormat)(nil), "ttn.lorawan.v3.EndDeviceTemplateFormat") - golang_proto.RegisterType((*EndDeviceTemplateFormat)(nil), "ttn.lorawan.v3.EndDeviceTemplateFormat") - proto.RegisterType((*EndDeviceTemplateFormats)(nil), "ttn.lorawan.v3.EndDeviceTemplateFormats") - golang_proto.RegisterType((*EndDeviceTemplateFormats)(nil), "ttn.lorawan.v3.EndDeviceTemplateFormats") - proto.RegisterMapType((map[string]*EndDeviceTemplateFormat)(nil), "ttn.lorawan.v3.EndDeviceTemplateFormats.FormatsEntry") - golang_proto.RegisterMapType((map[string]*EndDeviceTemplateFormat)(nil), "ttn.lorawan.v3.EndDeviceTemplateFormats.FormatsEntry") - proto.RegisterType((*ConvertEndDeviceTemplateRequest)(nil), "ttn.lorawan.v3.ConvertEndDeviceTemplateRequest") - golang_proto.RegisterType((*ConvertEndDeviceTemplateRequest)(nil), "ttn.lorawan.v3.ConvertEndDeviceTemplateRequest") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/end_device.proto", fileDescriptor_a656ee0551c94a80) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/end_device.proto", fileDescriptor_a656ee0551c94a80) -} - -var fileDescriptor_a656ee0551c94a80 = []byte{ - // 6083 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7c, 0x4d, 0x6c, 0x23, 0xc9, - 0x75, 0xbf, 0x9a, 0xa2, 0x44, 0xf2, 0x91, 0x22, 0xa9, 0xd2, 0x57, 0x8b, 0x9a, 0x0f, 0x0d, 0x57, - 0x3b, 0xcb, 0x19, 0xaf, 0x28, 0x0d, 0xb5, 0xb3, 0xde, 0x9d, 0xb5, 0x3d, 0x4b, 0x4a, 0x1a, 0x8f, - 0x34, 0xa3, 0x59, 0x4d, 0x8f, 0x66, 0xc6, 0xde, 0xaf, 0xde, 0x56, 0x77, 0x49, 0xea, 0x15, 0xd9, - 0x4d, 0x57, 0x37, 0x35, 0x94, 0xd7, 0x0b, 0x18, 0xfe, 0xff, 0x81, 0x00, 0x06, 0x9c, 0xc3, 0x20, - 0x88, 0x11, 0x5f, 0x62, 0xf8, 0x60, 0x04, 0x83, 0x20, 0xc8, 0x21, 0x87, 0x1c, 0x1c, 0x24, 0x17, - 0x03, 0x0e, 0x8c, 0x24, 0xf6, 0x29, 0x40, 0x80, 0x00, 0x01, 0x72, 0x48, 0x60, 0x20, 0x39, 0xec, - 0x2d, 0x42, 0x90, 0x04, 0x55, 0x5d, 0xd5, 0xdd, 0x24, 0x9b, 0xfa, 0xf0, 0xec, 0xc2, 0x6b, 0xc0, - 0x97, 0xdd, 0x56, 0xd5, 0x7b, 0xbf, 0xae, 0xae, 0x7a, 0xef, 0xd5, 0xfb, 0xe2, 0x40, 0xb1, 0x6e, - 0x13, 0xed, 0x89, 0x66, 0xcd, 0x3b, 0xae, 0xa6, 0xef, 0x2f, 0x68, 0x4d, 0x73, 0x01, 0x5b, 0x86, - 0x6a, 0xe0, 0x03, 0x53, 0xc7, 0xe5, 0x26, 0xb1, 0x5d, 0x1b, 0x65, 0x5d, 0xd7, 0x2a, 0x73, 0xba, - 0xf2, 0xc1, 0x52, 0xa1, 0xba, 0x6b, 0xba, 0x7b, 0xad, 0xed, 0xb2, 0x6e, 0x37, 0x16, 0xb0, 0x75, - 0x60, 0x1f, 0x36, 0x89, 0xdd, 0x3e, 0x5c, 0x60, 0xc4, 0xfa, 0xfc, 0x2e, 0xb6, 0xe6, 0x0f, 0xb4, - 0xba, 0x69, 0x68, 0x2e, 0x5e, 0xe8, 0x79, 0xf0, 0x20, 0x0b, 0xf3, 0x21, 0x88, 0x5d, 0x7b, 0xd7, - 0xf6, 0x98, 0xb7, 0x5b, 0x3b, 0xec, 0x2f, 0xf6, 0x07, 0x7b, 0xe2, 0xe4, 0x2b, 0x21, 0xf2, 0xad, - 0x3d, 0xbc, 0xb5, 0x67, 0x5a, 0xbb, 0xce, 0x9a, 0x65, 0xb4, 0x1c, 0x97, 0x98, 0xd8, 0x09, 0xbf, - 0x7a, 0xd7, 0x9e, 0xdf, 0xa9, 0x6b, 0xbb, 0xce, 0x82, 0x66, 0x59, 0xb6, 0xab, 0xb9, 0xa6, 0x6d, - 0x39, 0x1c, 0x65, 0xf9, 0x4c, 0x28, 0x1f, 0x3a, 0xb6, 0x15, 0x01, 0x72, 0x61, 0xd7, 0xb6, 0x77, - 0xeb, 0x38, 0x58, 0xb0, 0xd1, 0x22, 0x8c, 0x80, 0xcf, 0xcf, 0x76, 0xcf, 0xef, 0x98, 0xb8, 0x6e, - 0xa8, 0x0d, 0xcd, 0xd9, 0xe7, 0x14, 0xe7, 0xba, 0x29, 0x1c, 0x97, 0xb4, 0x74, 0x97, 0xcf, 0x5e, - 0xec, 0x9e, 0x75, 0xcd, 0x06, 0x76, 0x5c, 0xad, 0xd1, 0xec, 0xb7, 0x80, 0x27, 0x44, 0x6b, 0x36, - 0x31, 0x11, 0x0b, 0x3c, 0x1f, 0x75, 0xa2, 0xad, 0x86, 0x98, 0x7e, 0xa1, 0x77, 0xda, 0x34, 0xb0, - 0xe5, 0x9a, 0x3b, 0x66, 0x80, 0x71, 0xae, 0x97, 0x68, 0x1f, 0x1f, 0x8a, 0xd9, 0x8b, 0xbd, 0xb3, - 0x42, 0x3a, 0xf8, 0x1e, 0xf4, 0x12, 0x34, 0xb0, 0xe3, 0x68, 0xbb, 0xd8, 0x39, 0x8e, 0xc2, 0xd5, - 0x0c, 0xcd, 0xd5, 0xfa, 0xbf, 0xa4, 0x69, 0xea, 0x6e, 0x8b, 0x08, 0x11, 0x2a, 0x87, 0x8e, 0xcb, - 0x6e, 0x62, 0x4b, 0x6b, 0x9a, 0x07, 0x95, 0x05, 0xbb, 0xc9, 0x0e, 0xab, 0xf7, 0xe0, 0x8a, 0xdf, - 0x1b, 0x86, 0xc4, 0x03, 0xec, 0x38, 0xa6, 0x6d, 0xa1, 0xff, 0x88, 0x41, 0xd2, 0xc0, 0x07, 0xaa, - 0x66, 0x18, 0x44, 0x8e, 0xcd, 0x4a, 0xa5, 0x4c, 0xed, 0x97, 0xb1, 0xa7, 0xd5, 0xe9, 0x75, 0x28, - 0x56, 0x5e, 0x5d, 0x5c, 0xac, 0xd6, 0x96, 0x57, 0x8a, 0x3f, 0x88, 0x49, 0x89, 0x1f, 0xc5, 0x86, - 0xa9, 0x6c, 0x58, 0xbb, 0x47, 0xb5, 0xe1, 0x6f, 0xc6, 0xf7, 0xe2, 0x4d, 0xe9, 0x57, 0xcf, 0xa6, - 0xbf, 0x23, 0xc1, 0xcd, 0x5d, 0xbb, 0xec, 0xee, 0x61, 0x97, 0x49, 0x50, 0xd9, 0xc2, 0xee, 0x13, - 0x9b, 0xec, 0x2f, 0x74, 0xae, 0xf8, 0x60, 0x69, 0xa1, 0xb9, 0xbf, 0xbb, 0xe0, 0x1e, 0x36, 0xb1, - 0x53, 0xde, 0xd0, 0x88, 0xb3, 0xa7, 0xd5, 0x6f, 0xaf, 0x7e, 0xad, 0x76, 0xe8, 0x62, 0x07, 0x9d, - 0x19, 0xe0, 0xa1, 0xd5, 0xf0, 0x20, 0x5e, 0x61, 0x00, 0x9f, 0x3c, 0x9b, 0xfe, 0xa1, 0x54, 0xb8, - 0x77, 0x3a, 0x14, 0xbd, 0x61, 0x2c, 0xb8, 0xae, 0x35, 0x5f, 0x7f, 0x32, 0xaf, 0xd7, 0xcd, 0x05, - 0xbd, 0xe5, 0xb8, 0x76, 0x83, 0x29, 0x49, 0xf9, 0x1e, 0x7e, 0xe2, 0x01, 0xde, 0xaa, 0x6b, 0xbb, - 0xc5, 0xe7, 0xc7, 0xfb, 0x2a, 0x76, 0x57, 0xdb, 0x9a, 0xee, 0x32, 0x4c, 0x25, 0x61, 0xe0, 0x83, - 0xaa, 0x61, 0x10, 0xf4, 0x3a, 0xc4, 0xa9, 0xfc, 0xc8, 0x83, 0xb3, 0x52, 0x29, 0x5d, 0x99, 0x29, - 0x77, 0x1a, 0x94, 0x32, 0x3f, 0x96, 0x3b, 0xf8, 0xd0, 0xa9, 0x25, 0x8f, 0x6a, 0x43, 0xdf, 0x95, - 0x62, 0x79, 0x49, 0x61, 0x2c, 0xe8, 0x12, 0x8c, 0xd4, 0x35, 0xc7, 0x55, 0x77, 0x54, 0xdd, 0x72, - 0xd5, 0x56, 0x53, 0x8e, 0xcf, 0x4a, 0xa5, 0x11, 0x05, 0xe8, 0xe0, 0xad, 0x65, 0xcb, 0x7d, 0xd8, - 0x44, 0x25, 0x18, 0x65, 0x24, 0x16, 0x27, 0x32, 0xec, 0x27, 0x96, 0x3c, 0xc4, 0xc8, 0x18, 0xef, - 0x3d, 0x4a, 0xb7, 0x62, 0x3f, 0xb1, 0x7c, 0x4a, 0x2d, 0x4c, 0x39, 0x1c, 0x50, 0x56, 0x7d, 0xca, - 0x32, 0x8c, 0x33, 0x4a, 0xdd, 0xb6, 0x76, 0xc2, 0xc4, 0x09, 0x46, 0x9c, 0xa7, 0x73, 0xcb, 0xb6, - 0xb5, 0xe3, 0xd3, 0xbf, 0x0e, 0xe0, 0xb8, 0x1a, 0x71, 0xb1, 0xa1, 0x6a, 0xae, 0x9c, 0x64, 0xdf, - 0x59, 0x28, 0x7b, 0xaa, 0x5a, 0x16, 0xaa, 0x5a, 0xde, 0x12, 0xba, 0xac, 0xa4, 0x38, 0x75, 0xd5, - 0x45, 0x18, 0xce, 0x7d, 0xa3, 0x85, 0x5b, 0x94, 0xb3, 0xd9, 0xac, 0x9b, 0x3a, 0x93, 0x5a, 0xf6, - 0xb6, 0xba, 0x69, 0xed, 0x3b, 0x72, 0x6a, 0x76, 0xb0, 0x94, 0xae, 0xbc, 0xd0, 0xbd, 0x69, 0xd5, - 0x80, 0x78, 0x85, 0xd3, 0x2a, 0x05, 0x0f, 0x28, 0x62, 0xca, 0xb9, 0x91, 0xfc, 0xe4, 0xd9, 0x74, - 0x3c, 0x29, 0xe5, 0xa5, 0x75, 0xfa, 0xdf, 0x58, 0x71, 0x09, 0x52, 0x35, 0xdb, 0xae, 0x3f, 0xd2, - 0xea, 0x2d, 0x8c, 0xc6, 0x61, 0xe8, 0x80, 0x3e, 0xc8, 0xd2, 0xac, 0x54, 0x4a, 0x2a, 0xde, 0x1f, - 0x37, 0xf2, 0xbf, 0x7a, 0x36, 0x1d, 0x93, 0xa5, 0x4f, 0x9e, 0x4d, 0x0f, 0x53, 0x46, 0x59, 0x2a, - 0xfe, 0x34, 0x07, 0x23, 0x1b, 0xd5, 0xe5, 0x4d, 0x8d, 0x68, 0x0d, 0xec, 0x62, 0xe2, 0xa0, 0x69, - 0x48, 0x36, 0xb4, 0xb6, 0x8a, 0x4d, 0xd2, 0x64, 0xcc, 0x31, 0x25, 0xd1, 0xd0, 0xda, 0xab, 0x26, - 0x69, 0xa2, 0x47, 0x30, 0xa6, 0x19, 0x44, 0xa5, 0x4a, 0xad, 0x12, 0xcd, 0xc5, 0xaa, 0x69, 0x19, - 0xb8, 0xcd, 0x0e, 0x30, 0x5b, 0x39, 0xdf, 0xfd, 0x3d, 0x2b, 0x9a, 0xab, 0x29, 0x9a, 0x8b, 0xd7, - 0x28, 0x11, 0x13, 0x83, 0xef, 0x30, 0x31, 0xc8, 0x6b, 0x06, 0xe9, 0x98, 0x43, 0xaf, 0x00, 0xa2, - 0xb8, 0x6e, 0x5b, 0x6d, 0xda, 0x4f, 0x30, 0xe1, 0xb0, 0xec, 0xc0, 0x6b, 0x89, 0xa3, 0x5a, 0xfc, - 0x6a, 0x4c, 0xce, 0x29, 0x39, 0xcd, 0x20, 0x5b, 0xed, 0x4d, 0x4a, 0xe0, 0x71, 0x5d, 0x81, 0x0c, - 0xe5, 0xb2, 0xb6, 0x55, 0x97, 0x68, 0x96, 0xe3, 0x1d, 0x7b, 0x40, 0x0f, 0x9a, 0x41, 0xee, 0x6d, - 0x6f, 0xd1, 0x29, 0x74, 0x19, 0x46, 0x28, 0xa9, 0xa6, 0xef, 0xab, 0x75, 0xb3, 0x61, 0xba, 0xde, - 0xa9, 0xd7, 0x62, 0xb2, 0xa4, 0xa4, 0x35, 0x83, 0x54, 0xf5, 0xfd, 0xbb, 0x74, 0x38, 0x4c, 0x67, - 0xe0, 0xba, 0x76, 0xc8, 0xce, 0xbd, 0x83, 0x6e, 0x85, 0x0e, 0xa3, 0xaf, 0x40, 0x8a, 0xb4, 0xaf, - 0x71, 0x9a, 0x14, 0xfb, 0xfc, 0xa9, 0xee, 0xcf, 0x57, 0xda, 0x8c, 0x36, 0xf4, 0xe1, 0x49, 0xd2, - 0xbe, 0xe6, 0xf1, 0x7f, 0x1d, 0xc6, 0x19, 0xbf, 0xbf, 0x91, 0xf6, 0xce, 0x8e, 0x83, 0x5d, 0x19, - 0x18, 0xd4, 0x85, 0x7e, 0x3b, 0xf9, 0x16, 0xa3, 0x0a, 0x21, 0x8e, 0x52, 0xc4, 0x8e, 0x49, 0x7a, - 0x46, 0xa4, 0x5d, 0xe9, 0x39, 0xa3, 0xf4, 0x19, 0xcf, 0x88, 0xb4, 0x2b, 0x9d, 0x67, 0x54, 0x86, - 0x11, 0x8a, 0xbb, 0x43, 0xf0, 0x37, 0x5a, 0xd8, 0xd2, 0x0f, 0xe5, 0xcc, 0xac, 0x54, 0x8a, 0xd7, - 0x52, 0x47, 0xb5, 0xe1, 0x4a, 0xbc, 0xf4, 0xc3, 0xef, 0x0d, 0x2b, 0x19, 0xd2, 0xae, 0xdc, 0x12, - 0xd3, 0xe8, 0x01, 0x64, 0xa9, 0x18, 0x19, 0x2d, 0xf7, 0x50, 0xd5, 0x0f, 0xf5, 0x3a, 0x96, 0x47, - 0xd8, 0x12, 0x7a, 0xc5, 0x7e, 0x77, 0x97, 0xe0, 0x5d, 0xcd, 0xc5, 0xc6, 0x4a, 0xcb, 0x3d, 0x5c, - 0xa6, 0xa4, 0xa1, 0x85, 0x64, 0x1a, 0x5a, 0xdb, 0x1f, 0x47, 0x06, 0x4c, 0x11, 0xfc, 0xa1, 0x6d, - 0x5a, 0x2a, 0xbd, 0x44, 0xd5, 0x26, 0x26, 0xa6, 0x6d, 0x98, 0xba, 0xe9, 0x1e, 0xca, 0x59, 0x86, - 0x5e, 0xec, 0x39, 0x05, 0x46, 0x4e, 0xd5, 0x74, 0xb5, 0xdd, 0xb4, 0x2d, 0x6c, 0x85, 0xb7, 0x6f, - 0x82, 0xf8, 0xb3, 0x9b, 0x01, 0x14, 0xda, 0x05, 0x99, 0xbf, 0x45, 0xb7, 0x5b, 0x96, 0xdb, 0xf1, - 0x9a, 0x5c, 0xf4, 0x47, 0x78, 0xaf, 0x59, 0xa6, 0xe4, 0x11, 0xef, 0x99, 0x24, 0xc1, 0x74, 0xf8, - 0x45, 0x6f, 0xc0, 0x58, 0xd3, 0xb4, 0x76, 0x55, 0xa7, 0x6e, 0xbb, 0xa1, 0x9d, 0xcd, 0xb3, 0x9d, - 0x4d, 0x1f, 0xd5, 0x92, 0x95, 0x61, 0x79, 0x80, 0xed, 0xed, 0x28, 0xa5, 0x7b, 0x50, 0xb7, 0xdd, - 0x60, 0x83, 0xdf, 0x81, 0xe9, 0x80, 0xb9, 0xfb, 0xb8, 0x47, 0x4f, 0x73, 0xdc, 0x54, 0xac, 0x27, - 0x04, 0x70, 0xe7, 0x69, 0xbf, 0x0a, 0xf9, 0x6d, 0xac, 0xe9, 0xb6, 0x15, 0x5a, 0x16, 0xea, 0x5d, - 0x56, 0xce, 0x23, 0x0a, 0x16, 0x75, 0x07, 0x92, 0xfa, 0x9e, 0x66, 0x59, 0xb8, 0xee, 0xc8, 0x63, - 0xcc, 0xcc, 0xbd, 0xd8, 0xbd, 0x86, 0x0e, 0x6b, 0x53, 0x5e, 0xf6, 0xa8, 0xd9, 0x66, 0x3d, 0x95, - 0x62, 0x49, 0x49, 0xf1, 0x01, 0xd0, 0x2a, 0x8c, 0xb6, 0x9a, 0xd4, 0xd6, 0xa9, 0xc6, 0x13, 0x5c, - 0xaf, 0xb3, 0x33, 0x97, 0xc7, 0x99, 0x25, 0x9e, 0xee, 0x46, 0xf5, 0x2d, 0x9f, 0x92, 0xf3, 0x78, - 0x56, 0x28, 0x0b, 0x3d, 0x59, 0xb4, 0x06, 0x63, 0xc2, 0xf6, 0x86, 0x81, 0x26, 0x4e, 0x02, 0x1a, - 0x15, 0x5c, 0x01, 0xd4, 0x7b, 0x30, 0xd9, 0x61, 0x47, 0x54, 0xcc, 0x0f, 0x5b, 0x9e, 0x64, 0x68, - 0xa5, 0x1e, 0xe1, 0x5e, 0x51, 0x84, 0x71, 0x11, 0x72, 0xe1, 0x81, 0x8f, 0x85, 0xcc, 0x8e, 0x98, - 0x09, 0xc3, 0x33, 0xd3, 0x12, 0xc0, 0x4f, 0x1d, 0x07, 0xcf, 0x6c, 0x4a, 0x24, 0x7c, 0xc7, 0x0c, - 0xda, 0x85, 0x8b, 0x7d, 0x25, 0x46, 0xf5, 0x6e, 0x0b, 0x99, 0xbd, 0xa7, 0x78, 0xac, 0xdc, 0x78, - 0x6f, 0x28, 0x44, 0x0a, 0x0e, 0x9b, 0x2b, 0xfc, 0x53, 0x0c, 0x12, 0xfc, 0x60, 0xa9, 0x24, 0xf1, - 0x43, 0x0c, 0x24, 0x49, 0x8a, 0x90, 0x24, 0x8f, 0x28, 0x90, 0xa4, 0xd7, 0x00, 0xf9, 0xa7, 0x16, - 0x70, 0xc6, 0xba, 0x8d, 0x8e, 0x7f, 0x48, 0x01, 0xe7, 0x23, 0x18, 0x6b, 0x98, 0x56, 0x8f, 0x4a, - 0x0c, 0x9e, 0xd1, 0x02, 0x36, 0x4c, 0xab, 0x53, 0x27, 0x28, 0x2e, 0xb5, 0x68, 0xcf, 0x79, 0xfb, - 0x51, 0x83, 0xd6, 0x81, 0xfb, 0x02, 0x8c, 0x60, 0x4b, 0xdb, 0xae, 0x63, 0xd5, 0xdb, 0x03, 0x76, - 0xf1, 0x25, 0x95, 0x8c, 0x37, 0xf8, 0x90, 0x8d, 0x05, 0x97, 0x7d, 0xc7, 0xb5, 0x1f, 0xcb, 0x0f, - 0xae, 0xc7, 0x93, 0x83, 0xf9, 0x78, 0xf1, 0x68, 0x08, 0xf2, 0xab, 0x96, 0xb1, 0xc2, 0xc2, 0xbc, - 0x47, 0x98, 0x30, 0xaf, 0xf8, 0xab, 0x30, 0x68, 0x1a, 0x0e, 0xdb, 0xee, 0x74, 0xe5, 0x0b, 0xdd, - 0x2b, 0xec, 0x26, 0x5f, 0x0b, 0xa2, 0x86, 0x90, 0xd3, 0x46, 0x11, 0xd0, 0x06, 0xe4, 0x38, 0xa3, - 0x7a, 0xe0, 0x11, 0xb3, 0x93, 0xc8, 0x56, 0x0a, 0x11, 0xda, 0xcd, 0xe1, 0x42, 0xdf, 0x9c, 0xe5, - 0x04, 0x62, 0x5d, 0x5b, 0x30, 0x26, 0xe0, 0x9a, 0x7b, 0x87, 0x3e, 0xe4, 0x60, 0x34, 0xe4, 0xe6, - 0xed, 0xaf, 0xf7, 0x42, 0x8e, 0x72, 0x82, 0xcd, 0xbd, 0x43, 0x81, 0xba, 0x04, 0xa3, 0xbe, 0xa0, - 0xa8, 0xcd, 0xba, 0x66, 0xa9, 0xa6, 0xc1, 0x4e, 0x27, 0xc5, 0x9c, 0x02, 0x12, 0x93, 0xdf, 0x54, - 0x72, 0x3e, 0xc5, 0x66, 0x5d, 0xb3, 0xd6, 0x0c, 0x34, 0x0b, 0xc3, 0xcd, 0x3d, 0xdb, 0xb5, 0x1d, - 0x79, 0x68, 0x76, 0xb0, 0x94, 0x12, 0x76, 0x28, 0x0f, 0x0a, 0x1f, 0x47, 0x25, 0xc8, 0x3b, 0xad, - 0x66, 0xd3, 0x26, 0xae, 0xa3, 0xea, 0x75, 0xcd, 0x71, 0xd4, 0x6d, 0xe6, 0x6a, 0x24, 0x95, 0xac, - 0x18, 0x5f, 0xa6, 0xc3, 0xb5, 0x08, 0x4a, 0x9d, 0x39, 0x1a, 0xdd, 0x94, 0xcb, 0x68, 0x03, 0xc6, - 0x0d, 0xbc, 0xa3, 0xb5, 0xea, 0xae, 0xda, 0xd0, 0x74, 0xd5, 0xc1, 0xae, 0x4b, 0x3d, 0x74, 0xee, - 0x66, 0xce, 0x44, 0x6c, 0xea, 0x03, 0x4e, 0xa2, 0x20, 0xce, 0xb8, 0xa1, 0xe9, 0x62, 0x8c, 0x4a, - 0x10, 0x95, 0xf8, 0x40, 0x4d, 0xa8, 0x4b, 0x12, 0x57, 0x32, 0x0d, 0x33, 0x64, 0x9a, 0x29, 0x91, - 0xd6, 0x0e, 0x11, 0x01, 0x27, 0xd2, 0xda, 0x1d, 0x44, 0xfe, 0x27, 0xd0, 0x2b, 0x8b, 0xf9, 0x0d, - 0x49, 0x25, 0x23, 0x06, 0xd7, 0x6d, 0xd3, 0x42, 0x2f, 0x03, 0x22, 0xd8, 0xc1, 0x9c, 0x44, 0xb5, - 0x6c, 0x4b, 0xc7, 0x0e, 0xf3, 0x07, 0x92, 0x4a, 0xde, 0x9b, 0xa1, 0x74, 0xf7, 0xd8, 0x38, 0xd2, - 0x40, 0x2c, 0x59, 0xdd, 0xb1, 0x49, 0x43, 0x73, 0xa9, 0xdd, 0x67, 0xce, 0x40, 0x84, 0x41, 0xdb, - 0xf0, 0xa2, 0xca, 0x4d, 0xed, 0xb0, 0x6e, 0x6b, 0xc6, 0x2d, 0x9f, 0x3e, 0x24, 0x90, 0xa3, 0x1c, - 0x2d, 0x98, 0x2c, 0xfe, 0x77, 0x02, 0xd2, 0xd5, 0x15, 0xc5, 0xdf, 0x8f, 0x37, 0x61, 0xd8, 0xa1, - 0xb1, 0xa2, 0xce, 0x45, 0xff, 0x72, 0x84, 0xdd, 0x14, 0xc4, 0xe5, 0x07, 0x8c, 0x72, 0xc3, 0x36, - 0xf0, 0xed, 0x01, 0x85, 0xf3, 0xa1, 0x65, 0x48, 0x18, 0x87, 0x96, 0xd6, 0x30, 0x75, 0x26, 0xe8, - 0xe9, 0xca, 0x4b, 0xc7, 0x41, 0xac, 0x78, 0xa4, 0x1c, 0x43, 0x70, 0xa2, 0x5b, 0x90, 0x34, 0x4c, - 0x87, 0x2a, 0xb1, 0xc1, 0x03, 0xa5, 0xd2, 0xb1, 0x28, 0x9c, 0x96, 0xc3, 0xf8, 0xbc, 0x85, 0x9f, - 0x48, 0x00, 0xc1, 0x2a, 0xd1, 0x5b, 0x90, 0xeb, 0xb6, 0x41, 0xd2, 0xd9, 0x6c, 0xd0, 0x88, 0xd1, - 0x61, 0x80, 0xe6, 0x21, 0xdb, 0xe5, 0x7a, 0xc7, 0x3a, 0x5d, 0xe9, 0x8c, 0x1b, 0xf6, 0xbb, 0xe7, - 0x20, 0xe9, 0xfb, 0xdc, 0x83, 0x8c, 0x90, 0xda, 0xe3, 0xab, 0x71, 0x39, 0x57, 0x92, 0x94, 0x84, - 0xe5, 0xb9, 0xdc, 0x81, 0x99, 0x2a, 0xfc, 0x79, 0x1c, 0xd2, 0xa1, 0x1d, 0x42, 0x4b, 0x30, 0xdc, - 0xd0, 0xc8, 0xae, 0x69, 0xf1, 0xd3, 0x99, 0xe9, 0x89, 0xaa, 0x6e, 0xd5, 0x6d, 0x8d, 0x5f, 0x64, - 0x9c, 0x14, 0xdd, 0x8f, 0x36, 0xea, 0xb1, 0x53, 0xdf, 0x57, 0xbd, 0xf6, 0xfc, 0x7e, 0xb4, 0x3d, - 0x1f, 0x3c, 0x03, 0x64, 0xb7, 0x29, 0x57, 0x00, 0xd1, 0x55, 0x76, 0xed, 0x66, 0x9c, 0x21, 0x9e, - 0xeb, 0xf9, 0xcc, 0x87, 0x6b, 0x96, 0xbb, 0x54, 0x61, 0x58, 0xa1, 0x30, 0xa7, 0x61, 0x5a, 0x1d, - 0x61, 0x0e, 0xc5, 0xd4, 0xda, 0x51, 0xc1, 0xd1, 0x19, 0x30, 0xb5, 0x76, 0x07, 0xe6, 0x1a, 0x50, - 0xdb, 0xd0, 0x19, 0x3a, 0x9d, 0x84, 0xc6, 0x0f, 0x79, 0xb0, 0x24, 0x29, 0xd0, 0x30, 0x2d, 0x11, - 0x5a, 0x51, 0x28, 0xad, 0x1d, 0x40, 0x25, 0xce, 0x0a, 0xa5, 0xb5, 0xef, 0xf5, 0x88, 0x8c, 0x0c, - 0x99, 0xb0, 0x36, 0x84, 0x6e, 0x3f, 0x10, 0xb1, 0xeb, 0xac, 0x54, 0x1b, 0x86, 0x78, 0xc3, 0x36, - 0x70, 0xf1, 0x93, 0x09, 0x48, 0x87, 0x4c, 0x24, 0xaa, 0x42, 0x8e, 0x1b, 0x6a, 0xe6, 0xe9, 0xd9, - 0x2d, 0x97, 0x4b, 0xda, 0x74, 0xcf, 0xaa, 0x56, 0x78, 0xae, 0x4f, 0x19, 0x61, 0x1c, 0xb5, 0x2d, - 0x8f, 0x1e, 0x3d, 0x86, 0x89, 0xc0, 0x55, 0x0a, 0xfb, 0xff, 0x9e, 0xc0, 0xf5, 0xf8, 0xff, 0x9b, - 0xdc, 0x19, 0xf2, 0xbc, 0x7b, 0xee, 0x83, 0x35, 0x3b, 0x06, 0x3d, 0x97, 0xff, 0xdd, 0xe3, 0xbc, - 0xf6, 0xd3, 0x8b, 0x5e, 0x1f, 0xb7, 0xfd, 0x51, 0x74, 0x40, 0x11, 0x8f, 0xb6, 0x82, 0x6f, 0x63, - 0x62, 0xd3, 0x3d, 0xf6, 0xcd, 0x3f, 0xf7, 0x7b, 0x7b, 0x63, 0x8d, 0xfb, 0x11, 0xe1, 0xc0, 0xf4, - 0x99, 0x40, 0x7b, 0x22, 0x05, 0xff, 0x90, 0x74, 0xff, 0x90, 0x86, 0x4e, 0x77, 0x48, 0xcb, 0xe2, - 0x90, 0x5e, 0x0f, 0x47, 0xe1, 0x42, 0x84, 0xa3, 0xa3, 0x70, 0x6f, 0x11, 0x41, 0x00, 0xbe, 0xd5, - 0x27, 0x00, 0x4f, 0x44, 0x1f, 0x6f, 0x67, 0x8c, 0xcd, 0xb7, 0xa9, 0x37, 0xf6, 0xbe, 0x1f, 0x1d, - 0x7b, 0x27, 0x4f, 0x6f, 0x51, 0x7a, 0xc2, 0xee, 0xe5, 0xee, 0xb0, 0x3b, 0xc5, 0xc0, 0x7a, 0x52, - 0x04, 0x5d, 0xdb, 0xdd, 0x19, 0x8b, 0xdf, 0x82, 0xc2, 0x8e, 0xa6, 0xbb, 0x36, 0x39, 0x54, 0x9b, - 0xec, 0x7e, 0xf6, 0xf1, 0x4c, 0xec, 0xc8, 0x30, 0x3b, 0x58, 0x8a, 0xfb, 0x8e, 0xcf, 0x07, 0x8a, - 0xcc, 0x69, 0x37, 0x19, 0xe9, 0xad, 0x80, 0x12, 0xdd, 0xeb, 0x89, 0xe9, 0xd3, 0x7d, 0xae, 0xb5, - 0xde, 0x98, 0x9e, 0xaf, 0xab, 0x23, 0x9c, 0xbf, 0x03, 0x13, 0xbe, 0xb7, 0xb1, 0x54, 0x51, 0xb7, - 0x4d, 0x9e, 0x15, 0x64, 0xbe, 0xc4, 0xf1, 0xb1, 0x99, 0xe0, 0x5b, 0xaa, 0xd4, 0x4c, 0x96, 0x36, - 0x44, 0xaf, 0x42, 0xa2, 0xe5, 0x60, 0x55, 0x33, 0x08, 0x77, 0x2e, 0xfa, 0xb3, 0xb3, 0xc8, 0x77, - 0xb8, 0xe5, 0xe0, 0xaa, 0x41, 0xd0, 0x57, 0x00, 0x68, 0xd0, 0xc5, 0xaf, 0xa4, 0xec, 0x89, 0x57, - 0x12, 0x63, 0x4e, 0x69, 0x06, 0xd9, 0xf0, 0x6e, 0xa6, 0x37, 0x20, 0xc3, 0xbd, 0x21, 0x6f, 0xed, - 0xb9, 0x93, 0xd6, 0x0e, 0x1e, 0x39, 0x5b, 0xf4, 0x7d, 0x98, 0xa2, 0x1e, 0x47, 0xcb, 0xe9, 0x4d, - 0x68, 0xe4, 0x4f, 0xd2, 0x86, 0x09, 0x8f, 0xb3, 0x3b, 0x7b, 0xf1, 0x08, 0x64, 0x0e, 0xd9, 0x9b, - 0xbd, 0x18, 0x3d, 0xd9, 0x38, 0x2b, 0x93, 0x1e, 0x77, 0x4f, 0xb2, 0xe2, 0x36, 0x8c, 0x1a, 0xd8, - 0x31, 0x09, 0x36, 0xd4, 0x40, 0xeb, 0xd0, 0x29, 0xb4, 0x2e, 0xc7, 0xd9, 0x14, 0xa1, 0x7c, 0x3a, - 0x9c, 0xeb, 0x40, 0xea, 0x56, 0xc2, 0xb1, 0xd3, 0x2b, 0xa1, 0x1c, 0xc2, 0xee, 0xd4, 0xc5, 0x0f, - 0x60, 0x26, 0x78, 0x49, 0xaf, 0x4e, 0x8e, 0x9f, 0x5a, 0x27, 0xa7, 0xfc, 0x57, 0x54, 0xba, 0x2f, - 0xfb, 0x89, 0xf0, 0x1b, 0x02, 0x15, 0x9d, 0x38, 0x95, 0x8a, 0x8e, 0x05, 0xb8, 0x81, 0xa6, 0xbe, - 0x07, 0x93, 0x02, 0xb3, 0x4b, 0xd3, 0x26, 0xcf, 0xa8, 0x69, 0x02, 0x7e, 0x23, 0xac, 0x70, 0x75, - 0xb8, 0x20, 0xe0, 0xfb, 0xe4, 0x31, 0xa6, 0xce, 0x98, 0xc7, 0x28, 0x70, 0xbc, 0x6a, 0x44, 0x3a, - 0x23, 0xe2, 0x6d, 0x5d, 0x69, 0x0d, 0xf9, 0x8c, 0x69, 0x8d, 0xce, 0xb7, 0x75, 0x66, 0x37, 0xf6, - 0xe1, 0x92, 0x78, 0x5b, 0xff, 0x1b, 0x76, 0xe6, 0xd4, 0xc7, 0x2e, 0x44, 0x74, 0x33, 0xf2, 0xa2, - 0xc5, 0x81, 0x74, 0x45, 0x5d, 0xb8, 0xe7, 0xce, 0x74, 0x37, 0xca, 0x5d, 0xaf, 0x0a, 0xc4, 0xe1, - 0x03, 0x10, 0x73, 0x6a, 0xcf, 0xfd, 0x7b, 0xfe, 0x4c, 0xef, 0x10, 0x62, 0x55, 0xeb, 0xba, 0x86, - 0xd7, 0x20, 0x1f, 0x16, 0x38, 0x96, 0xf5, 0xbf, 0xc0, 0x90, 0x2f, 0xf6, 0x6c, 0x12, 0x4b, 0x16, - 0xac, 0xae, 0x29, 0x9b, 0x1e, 0x64, 0x36, 0x90, 0x30, 0x56, 0x1d, 0x78, 0x0c, 0x33, 0xc2, 0xed, - 0xd2, 0xfd, 0x6a, 0x87, 0x6a, 0x5a, 0x2e, 0x26, 0x07, 0x5a, 0x5d, 0xbe, 0x78, 0x92, 0x3d, 0x9b, - 0xf2, 0x5c, 0xb0, 0x65, 0x51, 0xe1, 0x58, 0xe3, 0x9c, 0xd1, 0x79, 0xc0, 0xd9, 0x4f, 0x2b, 0x0f, - 0x78, 0xe9, 0xd7, 0xc8, 0x03, 0xce, 0xc3, 0x20, 0xbd, 0x67, 0x8a, 0xd1, 0xe1, 0x7a, 0x28, 0xa8, - 0x53, 0x28, 0x1d, 0xba, 0x0d, 0xc8, 0xd1, 0xf7, 0xb0, 0xd1, 0xaa, 0xe3, 0x50, 0x19, 0xe8, 0x85, - 0x93, 0x2f, 0x39, 0xce, 0x14, 0x51, 0xf3, 0x29, 0xfe, 0x61, 0x09, 0x92, 0xd4, 0xe9, 0x75, 0x35, - 0x17, 0xa3, 0x47, 0x80, 0xf4, 0x16, 0x21, 0x98, 0x9a, 0x7b, 0x3f, 0xb7, 0xca, 0x9d, 0xde, 0xf3, - 0xc7, 0x26, 0x60, 0xc3, 0x81, 0x35, 0x87, 0x08, 0xd5, 0x82, 0x1e, 0xd1, 0xd8, 0x9d, 0x8b, 0x79, - 0x80, 0x1b, 0x3b, 0x23, 0xae, 0x10, 0xef, 0x00, 0xb7, 0x06, 0x19, 0xaf, 0x21, 0xc1, 0xcb, 0x93, - 0xf0, 0xcc, 0xcf, 0x44, 0x37, 0xa2, 0x97, 0x57, 0x09, 0xe2, 0xd6, 0xb4, 0xc7, 0xc4, 0x86, 0xa3, - 0x72, 0x52, 0xf1, 0xe7, 0xc8, 0x49, 0x3d, 0x86, 0x82, 0x5f, 0x1f, 0x34, 0x49, 0x03, 0x1b, 0x81, - 0x08, 0x6b, 0xc2, 0x35, 0x3d, 0xae, 0xfe, 0x37, 0x25, 0x2a, 0x88, 0x8c, 0x59, 0x9c, 0x58, 0xd5, - 0x45, 0xd7, 0x41, 0x66, 0xc0, 0x06, 0x3e, 0x50, 0xf9, 0xc5, 0xec, 0x97, 0x3e, 0xbd, 0x4a, 0xe5, - 0x18, 0x9d, 0x5f, 0xc1, 0x07, 0x0f, 0xd8, 0x2c, 0xaf, 0x81, 0xf6, 0x8d, 0x40, 0x12, 0xcf, 0x19, - 0x81, 0x60, 0x38, 0xd7, 0xc4, 0x96, 0x41, 0xb1, 0xa3, 0xca, 0x93, 0xdc, 0x5b, 0x3d, 0x5d, 0x75, - 0x92, 0x03, 0x45, 0xcc, 0xa1, 0x55, 0xc8, 0xf3, 0x22, 0x28, 0xc1, 0x4e, 0xd3, 0xb6, 0x1c, 0x2c, - 0x0a, 0x9f, 0x51, 0xe7, 0xb3, 0x6c, 0x37, 0x1a, 0x9a, 0x65, 0x28, 0x39, 0x8f, 0x47, 0x11, 0x2c, - 0x14, 0x46, 0xac, 0x96, 0xd9, 0x2c, 0xc7, 0xf5, 0x1c, 0xd6, 0x13, 0x60, 0x38, 0x8f, 0xc2, 0x59, - 0xd0, 0x7d, 0x40, 0x7c, 0x35, 0x2c, 0x65, 0xa5, 0xe9, 0x3a, 0x6e, 0xba, 0xdc, 0x7b, 0x7d, 0x21, - 0x2a, 0xdd, 0x46, 0xd5, 0xaa, 0xbc, 0x6e, 0x9b, 0x56, 0x95, 0x91, 0x2a, 0xfc, 0x63, 0x82, 0x11, - 0xf4, 0x08, 0xc6, 0xc5, 0xca, 0x18, 0x26, 0x5f, 0x1e, 0xf7, 0x5d, 0xe7, 0x8e, 0x05, 0xe5, 0xeb, - 0x52, 0x10, 0x47, 0x08, 0x8d, 0xa1, 0x45, 0x1a, 0x9a, 0xa8, 0x4f, 0x4c, 0xcb, 0xb0, 0x9f, 0x38, - 0xaa, 0x76, 0xa0, 0x99, 0x75, 0x6a, 0xcf, 0x99, 0x53, 0x9b, 0x54, 0x10, 0x69, 0x3f, 0xf6, 0xa6, - 0xaa, 0x62, 0x06, 0x6d, 0x40, 0x96, 0x60, 0x1d, 0x33, 0x91, 0xf2, 0x4c, 0x4b, 0x96, 0xed, 0xd0, - 0xe5, 0xbe, 0x6b, 0xf0, 0x92, 0xca, 0x3c, 0xd9, 0xa6, 0x8c, 0x78, 0xdc, 0xde, 0xa0, 0x83, 0x1e, - 0x40, 0x9e, 0xc3, 0x05, 0xb6, 0x2a, 0xc7, 0x00, 0x4b, 0x7d, 0x01, 0xc5, 0xb1, 0x0b, 0xc8, 0x9c, - 0x87, 0xe0, 0x1b, 0x2e, 0xb4, 0x03, 0x45, 0xaf, 0xa4, 0xef, 0xf5, 0x20, 0xa8, 0xa6, 0x65, 0xba, - 0x26, 0x75, 0x5b, 0x3a, 0xd4, 0x2c, 0x7f, 0xa2, 0x9a, 0x5d, 0x60, 0xf5, 0x7f, 0x0f, 0x64, 0x4d, - 0x60, 0x84, 0xb4, 0x8d, 0xc0, 0x05, 0x82, 0x3f, 0xc4, 0xba, 0xcb, 0x9d, 0x8e, 0x2e, 0x07, 0x00, - 0x3b, 0xf2, 0xe8, 0xec, 0xe0, 0xc9, 0xb9, 0xb2, 0xdc, 0x51, 0x2d, 0xf3, 0x54, 0x4a, 0xe5, 0x73, - 0x45, 0x6e, 0x2e, 0x0a, 0x02, 0xb5, 0xda, 0x55, 0xbc, 0xc6, 0x0e, 0xda, 0x84, 0xf3, 0x1d, 0xef, - 0xec, 0x4c, 0xd5, 0x60, 0x47, 0x46, 0xb3, 0x83, 0xa5, 0x91, 0x5a, 0xf6, 0xa8, 0x96, 0x7e, 0x2a, - 0x25, 0xf3, 0xb9, 0xa2, 0x97, 0x95, 0x99, 0x0e, 0x41, 0x86, 0xb3, 0x33, 0xd8, 0x41, 0x55, 0x18, - 0xf7, 0x11, 0xc3, 0xa1, 0xda, 0x18, 0x0b, 0xd5, 0x38, 0x50, 0x51, 0xd4, 0x40, 0xc6, 0x04, 0x6d, - 0x38, 0x56, 0x5b, 0x81, 0xbc, 0x67, 0x76, 0x42, 0xdb, 0x3b, 0x7e, 0xe2, 0xf6, 0x66, 0x99, 0x29, - 0x0a, 0xb6, 0xd3, 0x06, 0x7f, 0x95, 0xa1, 0xad, 0x24, 0x9a, 0xb5, 0x8b, 0x1d, 0x79, 0x82, 0x09, - 0xc5, 0x2b, 0x7d, 0x85, 0x42, 0xe1, 0x9c, 0x62, 0xbf, 0x14, 0xc6, 0xb6, 0x6a, 0xb9, 0xe4, 0x90, - 0x95, 0x44, 0x23, 0x26, 0x7d, 0x6b, 0x49, 0xf7, 0x51, 0xdf, 0xa3, 0x63, 0x81, 0xb5, 0x9c, 0x0c, - 0xac, 0x65, 0xd5, 0x20, 0xcb, 0x6c, 0x96, 0x5b, 0x4b, 0x93, 0x1e, 0x3b, 0x93, 0xd9, 0x86, 0xa6, - 0xab, 0xba, 0x67, 0x06, 0xd4, 0x50, 0x1f, 0x94, 0x3c, 0xc5, 0x8e, 0x7d, 0xae, 0xbf, 0xd1, 0x08, - 0xca, 0x1f, 0xca, 0x8c, 0x87, 0xb5, 0xa1, 0xe9, 0x3d, 0x73, 0x4e, 0xe1, 0xff, 0xc5, 0x20, 0x1d, - 0xd6, 0xd7, 0xfb, 0xe0, 0x3b, 0x08, 0x41, 0x22, 0x7f, 0x98, 0xef, 0x74, 0xb7, 0x90, 0xdd, 0x15, - 0x8e, 0x41, 0xe8, 0x7e, 0xcc, 0x0b, 0x76, 0x3f, 0x81, 0xf5, 0x25, 0x48, 0x92, 0x36, 0x8f, 0xb0, - 0x12, 0xa7, 0xed, 0x2e, 0x48, 0x10, 0x6f, 0x08, 0x2d, 0x40, 0x42, 0xdf, 0x51, 0xeb, 0xa6, 0x23, - 0xda, 0x56, 0x26, 0x7b, 0xee, 0xd5, 0x5b, 0x77, 0x4d, 0xc7, 0x55, 0x86, 0xf5, 0x1d, 0xfa, 0xff, - 0xee, 0x46, 0x92, 0x70, 0x5d, 0x69, 0x3d, 0x9e, 0x8c, 0xe7, 0x87, 0xd6, 0xe3, 0xc9, 0xa1, 0xfc, - 0xf0, 0x7a, 0x3c, 0x99, 0xca, 0xc3, 0x7a, 0x3c, 0x09, 0xf9, 0x74, 0xe1, 0x97, 0x09, 0x80, 0x90, - 0x31, 0x7c, 0x01, 0x12, 0x4d, 0x2f, 0x67, 0xcf, 0xbc, 0x8e, 0x0c, 0x4b, 0xf1, 0x7d, 0x33, 0x9e, - 0x1f, 0x95, 0x2f, 0x29, 0x62, 0x06, 0xdd, 0x86, 0x84, 0x30, 0x92, 0xb1, 0xd3, 0x1b, 0xc9, 0xd0, - 0x4e, 0x09, 0xf6, 0xe7, 0x69, 0x3f, 0xba, 0x0e, 0x39, 0xdd, 0x26, 0x04, 0xd7, 0xbd, 0x6b, 0xcf, - 0x34, 0x1c, 0x39, 0xce, 0x2a, 0x3f, 0x99, 0xa3, 0x5a, 0xea, 0xa9, 0x34, 0x5c, 0x8c, 0x93, 0x98, - 0x6c, 0x28, 0xd9, 0x10, 0xd1, 0x9a, 0xe1, 0x74, 0x36, 0x98, 0x0d, 0xfd, 0xae, 0xc1, 0xec, 0xb3, - 0x6e, 0x30, 0xfb, 0xb7, 0x18, 0x0c, 0x5b, 0xd8, 0x55, 0x4d, 0x83, 0xe9, 0x52, 0xa6, 0xf6, 0x0f, - 0xb1, 0xa7, 0xd5, 0xa9, 0xf5, 0x64, 0x71, 0x71, 0x71, 0x71, 0xf1, 0xda, 0x52, 0xd4, 0x5e, 0x0f, - 0x7e, 0x0e, 0xf6, 0x7a, 0xe9, 0xd3, 0xde, 0xeb, 0xa5, 0xcf, 0x6e, 0xaf, 0x87, 0x2c, 0xec, 0xae, - 0x19, 0xa1, 0xac, 0xfb, 0x7f, 0x25, 0x60, 0xa4, 0xc3, 0x33, 0x40, 0x6f, 0x04, 0x6a, 0xed, 0x69, - 0xec, 0x54, 0x9f, 0x82, 0x5d, 0x58, 0x49, 0x85, 0xba, 0x3f, 0x86, 0xa4, 0x6f, 0x0f, 0xbd, 0x0c, - 0xf4, 0xb5, 0xd3, 0x39, 0x24, 0xe5, 0xad, 0x76, 0x84, 0x99, 0xf4, 0xc1, 0x90, 0x02, 0x69, 0xd2, - 0x56, 0x45, 0x7b, 0x29, 0x2b, 0xdc, 0x9e, 0x1e, 0x5b, 0x69, 0x6f, 0x70, 0x46, 0x05, 0x88, 0xff, - 0x8c, 0xde, 0x80, 0x34, 0x35, 0xfa, 0xe6, 0x81, 0xd7, 0xef, 0x37, 0x7c, 0xe2, 0x4d, 0x09, 0x82, - 0x9c, 0xb9, 0xf8, 0x3d, 0x36, 0x25, 0x71, 0x0a, 0x9b, 0x72, 0x03, 0xc6, 0x45, 0x14, 0xe4, 0x35, - 0x4b, 0xf0, 0x24, 0x45, 0x8a, 0x15, 0xd5, 0xe8, 0x97, 0x5f, 0x1d, 0x94, 0xff, 0x57, 0x52, 0x10, - 0x0f, 0x7b, 0x3c, 0x22, 0xe6, 0x23, 0x14, 0x1e, 0x00, 0x04, 0xbb, 0x84, 0x6e, 0x42, 0xca, 0xbf, - 0x9d, 0x79, 0xd8, 0x27, 0xf7, 0x73, 0x70, 0xc2, 0x5b, 0x2a, 0xea, 0x80, 0xcc, 0xe4, 0x43, 0xe1, - 0x5f, 0x06, 0x01, 0x82, 0xfd, 0x41, 0x1b, 0x90, 0xde, 0xd5, 0x5c, 0xfc, 0x44, 0x3b, 0x54, 0x83, - 0x36, 0x82, 0x9e, 0xdc, 0xc9, 0x57, 0x3d, 0x92, 0xe8, 0xee, 0x01, 0xd8, 0x15, 0xb3, 0x0e, 0xba, - 0x04, 0x19, 0xf1, 0x9d, 0xc4, 0x71, 0x4c, 0xf6, 0x99, 0x31, 0x25, 0xcd, 0xc7, 0x14, 0xc7, 0x31, - 0x51, 0x1e, 0x06, 0x1d, 0x8b, 0x30, 0xbf, 0x3c, 0xa6, 0xd0, 0x47, 0xf4, 0x21, 0xc8, 0xfe, 0xed, - 0xda, 0xd4, 0xdc, 0x3d, 0x1a, 0x9f, 0x39, 0x2e, 0xd1, 0x4c, 0xcb, 0xe5, 0x2d, 0x5f, 0x3d, 0x5e, - 0xae, 0x70, 0x5f, 0x36, 0x35, 0x77, 0x6f, 0xd9, 0xa7, 0x0e, 0xb7, 0x63, 0x19, 0x91, 0x14, 0x74, - 0x81, 0x3c, 0xcf, 0xe0, 0xda, 0xfb, 0xd8, 0x62, 0x99, 0xdc, 0x8c, 0x92, 0xf6, 0xc6, 0xb6, 0xe8, - 0x10, 0xda, 0x87, 0x91, 0xa6, 0xa6, 0xef, 0x63, 0x57, 0xdd, 0x26, 0xf6, 0x3e, 0x26, 0x3c, 0x01, - 0x7a, 0xeb, 0xcc, 0xc2, 0x57, 0xde, 0x64, 0x30, 0x35, 0x86, 0xe2, 0x4b, 0x64, 0xa6, 0x19, 0x1a, - 0x2d, 0x9c, 0x83, 0xf1, 0x28, 0x2a, 0x76, 0x4b, 0xa7, 0xd9, 0x91, 0xa5, 0xbc, 0xdb, 0x78, 0x3d, - 0x9e, 0xcc, 0xe4, 0x47, 0xd6, 0xe3, 0xc9, 0x91, 0x7c, 0x76, 0x3d, 0x9e, 0xcc, 0xe7, 0x47, 0xd7, - 0xe3, 0xc9, 0xd1, 0x3c, 0x5a, 0x8f, 0x27, 0xc7, 0xf2, 0xe3, 0xeb, 0xf1, 0xe4, 0x78, 0x7e, 0x62, - 0x3d, 0x9e, 0xd4, 0xf3, 0x86, 0x7f, 0xc3, 0x7b, 0x77, 0x7b, 0x52, 0x20, 0x14, 0xbe, 0x1f, 0x87, - 0x5c, 0x97, 0x13, 0x8f, 0xd6, 0xbb, 0xb5, 0x7f, 0xf1, 0xb4, 0xfe, 0xbf, 0x30, 0x0b, 0x81, 0x31, - 0x88, 0x50, 0x91, 0xe1, 0x93, 0x55, 0xa4, 0xf0, 0x9f, 0x31, 0x48, 0x88, 0xe5, 0x6c, 0xc1, 0x50, - 0x43, 0xdd, 0x33, 0x08, 0x17, 0xc4, 0xeb, 0x67, 0x5d, 0x4c, 0x79, 0xe3, 0xf6, 0x8a, 0x12, 0xf6, - 0x07, 0x1a, 0xb7, 0x0d, 0x82, 0xde, 0x85, 0x34, 0x75, 0x19, 0xc5, 0x87, 0x7a, 0x1e, 0xc5, 0x1b, - 0x67, 0xc7, 0xae, 0x2e, 0xf3, 0xa6, 0x05, 0x05, 0x1a, 0x9a, 0xce, 0x9f, 0x0b, 0x2b, 0x10, 0xa7, - 0x6f, 0x45, 0xaf, 0xc2, 0x70, 0x43, 0xa5, 0x77, 0x05, 0x2f, 0xd5, 0xf7, 0xa4, 0x3a, 0x36, 0xb6, - 0x0e, 0x9b, 0xe1, 0xbe, 0xc7, 0xa1, 0x06, 0x1d, 0xf0, 0x5c, 0xb1, 0xc2, 0x7b, 0x00, 0x01, 0x3e, - 0xba, 0x08, 0xc3, 0x3b, 0x6a, 0xd3, 0x26, 0x2e, 0x2f, 0xd3, 0x07, 0x86, 0x62, 0x68, 0x67, 0xd3, - 0x26, 0x2e, 0x3a, 0x07, 0xb0, 0xd3, 0xaa, 0xd7, 0x79, 0x3d, 0xc2, 0xeb, 0x9b, 0x4e, 0xd2, 0x11, - 0xea, 0x2c, 0x77, 0x49, 0x80, 0xe7, 0xdd, 0x79, 0xfe, 0x5e, 0x3c, 0x9f, 0x0c, 0xcd, 0x52, 0x7f, - 0x2f, 0x91, 0x4f, 0x16, 0xfe, 0x56, 0x82, 0x91, 0x0e, 0x27, 0xbd, 0x5f, 0x83, 0x95, 0xf4, 0x19, - 0x35, 0x58, 0xc5, 0x9e, 0xb3, 0xc1, 0x2a, 0x74, 0xc3, 0x19, 0x90, 0xed, 0x8a, 0x37, 0x6e, 0xc3, - 0x30, 0x8f, 0x66, 0xa4, 0x13, 0x62, 0xe6, 0x0e, 0xc6, 0x50, 0xbf, 0x22, 0xe7, 0x0f, 0xbd, 0x85, - 0xc0, 0xcc, 0x31, 0xa1, 0x0f, 0x35, 0x72, 0xfb, 0x98, 0x37, 0xc1, 0x29, 0xf4, 0x11, 0x7d, 0x59, - 0x34, 0x6b, 0xf7, 0xe9, 0x35, 0x89, 0x5e, 0x83, 0x23, 0xba, 0xba, 0x63, 0xaf, 0x85, 0xba, 0xc2, - 0x8a, 0x3f, 0x97, 0x60, 0xc6, 0x6f, 0xed, 0xaa, 0xb6, 0xdc, 0x3d, 0x6a, 0x97, 0xbd, 0xe4, 0xcc, - 0xb2, 0x6d, 0x60, 0xb4, 0x18, 0xee, 0x0c, 0x4f, 0xd5, 0x0a, 0x47, 0xb5, 0x29, 0x32, 0x51, 0x19, - 0x7b, 0xff, 0x1d, 0x6d, 0xfe, 0x9b, 0xd5, 0xf9, 0xb7, 0x17, 0xe7, 0x5f, 0x7f, 0xef, 0xa3, 0x6b, - 0x2f, 0x2f, 0x55, 0x3e, 0x9e, 0xe3, 0xf8, 0xe8, 0x75, 0x00, 0xf6, 0x6b, 0x1f, 0x75, 0x87, 0xd8, - 0x0d, 0xbe, 0xc6, 0x63, 0x5b, 0xe1, 0x19, 0xf5, 0x2d, 0x62, 0x37, 0xd0, 0x75, 0x48, 0x7a, 0xac, - 0xae, 0xcd, 0x55, 0xeb, 0x38, 0xc6, 0x04, 0xa3, 0xdd, 0xb2, 0x43, 0x5f, 0xf3, 0x8f, 0x97, 0x20, - 0xe5, 0x7f, 0x0d, 0xba, 0x1d, 0x6e, 0x68, 0x9b, 0xeb, 0xdb, 0xd0, 0x16, 0xbe, 0x8b, 0xf2, 0x42, - 0xdf, 0x19, 0xe4, 0x40, 0x89, 0x77, 0xb4, 0x2d, 0x03, 0xe8, 0x04, 0x6b, 0xbc, 0xbd, 0xff, 0xc4, - 0x6f, 0xaa, 0x79, 0x2b, 0x1a, 0xc8, 0x0f, 0x28, 0x29, 0xce, 0x57, 0x75, 0x29, 0x48, 0xab, 0x69, - 0x08, 0x90, 0xc1, 0xb3, 0x80, 0x70, 0xbe, 0xaa, 0x8b, 0x66, 0x20, 0x6e, 0x69, 0x0d, 0xdc, 0xd9, - 0xa9, 0x56, 0x51, 0xd8, 0x20, 0xba, 0x0a, 0x69, 0x03, 0x3b, 0x3a, 0x31, 0xd9, 0xaf, 0x60, 0x98, - 0x2e, 0x7b, 0x3d, 0x6a, 0x64, 0x50, 0xfe, 0x45, 0x4e, 0x09, 0x4f, 0xa2, 0x6f, 0x4b, 0x00, 0x9a, - 0xeb, 0x12, 0x73, 0xbb, 0xe5, 0x62, 0xcf, 0xbc, 0xa6, 0x2b, 0x57, 0xfa, 0x6e, 0x52, 0xb9, 0xea, - 0xd3, 0x32, 0xb9, 0xac, 0x5d, 0x3f, 0xaa, 0x55, 0x7e, 0x20, 0x2d, 0xe4, 0xa1, 0x38, 0x47, 0x8a, - 0xf2, 0x5c, 0xe5, 0x02, 0x13, 0x09, 0x2a, 0x0f, 0xa5, 0x9b, 0x37, 0xde, 0x99, 0x7f, 0xef, 0xa6, - 0xf8, 0xf3, 0xca, 0x47, 0x95, 0x97, 0x3f, 0x9e, 0xbb, 0x4a, 0xd7, 0xf0, 0x33, 0x49, 0x09, 0xbd, - 0x13, 0xdd, 0x85, 0x34, 0xcf, 0xc5, 0x72, 0x27, 0xe8, 0xac, 0x8d, 0x87, 0x0a, 0x1c, 0x88, 0x31, - 0x1a, 0xaa, 0x21, 0x07, 0x13, 0xe6, 0x20, 0x35, 0x89, 0xbd, 0x63, 0xd6, 0x31, 0x0d, 0x07, 0x92, - 0x9d, 0x1d, 0x7d, 0x79, 0x4e, 0xb2, 0xe9, 0x51, 0xac, 0x19, 0xe8, 0xa7, 0x12, 0x4c, 0x8a, 0x34, - 0x13, 0x9d, 0xc4, 0x84, 0x45, 0x6d, 0xd8, 0x71, 0x98, 0xcb, 0x91, 0xaa, 0xfd, 0xbe, 0x74, 0x54, - 0xfb, 0xae, 0x44, 0x7e, 0x4f, 0xaa, 0xfc, 0x7f, 0xe9, 0xfd, 0xd2, 0xcd, 0x1b, 0xf4, 0xf3, 0x02, - 0xe1, 0xff, 0x56, 0xe8, 0x39, 0x78, 0x7c, 0x77, 0xfe, 0xbd, 0xab, 0xa1, 0x89, 0x2b, 0xef, 0x96, - 0xaf, 0x5c, 0xa5, 0x7c, 0xd5, 0xf9, 0xb7, 0xf9, 0xae, 0x7c, 0x2b, 0xf4, 0x1c, 0x3c, 0x32, 0xbe, - 0x60, 0xe2, 0x4a, 0xe9, 0xe6, 0x8d, 0x1b, 0xef, 0x70, 0x1d, 0xbb, 0xfe, 0xf1, 0x95, 0x9b, 0x73, - 0xdf, 0x7a, 0x7f, 0x4e, 0x19, 0xe7, 0xcb, 0x7d, 0xc0, 0x56, 0x5b, 0xf5, 0x16, 0x8b, 0xaa, 0x20, - 0x77, 0x7d, 0xc6, 0x3e, 0xde, 0x57, 0xeb, 0xda, 0x36, 0xae, 0xcb, 0x0b, 0x61, 0x41, 0xf8, 0x76, - 0x5e, 0x99, 0xe8, 0x40, 0xb8, 0x83, 0xf7, 0xef, 0x52, 0x32, 0xf4, 0x77, 0x12, 0x14, 0xc2, 0x49, - 0xde, 0xae, 0xed, 0x80, 0xcf, 0xe7, 0x76, 0xc8, 0xa1, 0x25, 0x77, 0x6e, 0xc9, 0x1a, 0x9c, 0x8b, - 0xf8, 0x9c, 0x60, 0x5b, 0x16, 0xbb, 0xb6, 0x65, 0xba, 0x07, 0xc9, 0xdf, 0x9a, 0x37, 0x60, 0x22, - 0x02, 0xca, 0x34, 0xe4, 0x6b, 0x61, 0xf9, 0x32, 0x94, 0xb1, 0x1e, 0x88, 0x35, 0x03, 0xfd, 0xb5, - 0x04, 0x63, 0x2c, 0xe9, 0xdb, 0xb5, 0xa1, 0xe9, 0xcf, 0xe7, 0x86, 0x8e, 0xd2, 0xb5, 0x76, 0xee, - 0xa4, 0x0b, 0xa9, 0xba, 0xed, 0x7d, 0x95, 0x23, 0x67, 0xa2, 0xb3, 0xbb, 0x81, 0xa9, 0xb8, 0x2b, - 0x48, 0x3d, 0x4b, 0xf1, 0xf2, 0x51, 0xed, 0xca, 0x0f, 0xa4, 0xcb, 0xa7, 0xb3, 0x13, 0x4a, 0xf0, - 0x22, 0x74, 0x0d, 0x12, 0xfc, 0x37, 0x7f, 0x72, 0x25, 0x3a, 0x9e, 0xdc, 0xf4, 0xa6, 0x15, 0x41, - 0x17, 0xd9, 0x7e, 0x3b, 0x72, 0xea, 0xf6, 0xdb, 0x6c, 0x9f, 0xf6, 0xdb, 0x9e, 0xd2, 0x51, 0xee, - 0xd3, 0x6f, 0x67, 0xce, 0x7f, 0x06, 0xed, 0xcc, 0xa3, 0x27, 0xb4, 0x33, 0xf7, 0x74, 0x02, 0xa3, - 0xd3, 0x74, 0x02, 0x8f, 0x9d, 0xa6, 0x13, 0x78, 0xfc, 0xd4, 0x9d, 0xc0, 0x13, 0x7d, 0x3a, 0x81, - 0xaf, 0x43, 0x8a, 0xd8, 0xb6, 0xab, 0xb2, 0xd4, 0xdd, 0x64, 0x74, 0x94, 0xaa, 0xd8, 0xb6, 0x7b, - 0x07, 0x1f, 0x3a, 0x4a, 0x92, 0xf0, 0xa7, 0x70, 0x2a, 0x68, 0xea, 0x77, 0xa9, 0xa0, 0xcf, 0x30, - 0x15, 0x84, 0xbe, 0x02, 0x99, 0x8e, 0x76, 0x74, 0xf9, 0xe4, 0x76, 0x74, 0x1a, 0x3c, 0xf9, 0x69, - 0x88, 0xeb, 0x90, 0x62, 0xfc, 0xd4, 0x57, 0xe5, 0xfd, 0x81, 0x72, 0x3f, 0x5f, 0x56, 0x49, 0x52, - 0x4e, 0x56, 0xbd, 0x5e, 0x81, 0x51, 0x51, 0x49, 0x0b, 0xd8, 0x5f, 0x3e, 0x81, 0x5d, 0x94, 0xf8, - 0x36, 0x04, 0xca, 0x35, 0x48, 0x38, 0x5e, 0xde, 0x57, 0x2e, 0x44, 0xdb, 0x16, 0x9e, 0x16, 0x56, - 0x04, 0x1d, 0x7a, 0x13, 0x04, 0x8a, 0x2a, 0x58, 0x67, 0x8e, 0x67, 0xcd, 0x72, 0x7a, 0xf1, 0xbb, - 0xe3, 0x39, 0xc8, 0xfa, 0xc5, 0x5d, 0x26, 0xfd, 0xac, 0xf5, 0x63, 0x44, 0xc9, 0xf0, 0x92, 0x2e, - 0x93, 0x7c, 0x74, 0x19, 0x72, 0x2d, 0x07, 0x1b, 0x01, 0x95, 0x23, 0x9f, 0x9f, 0x1d, 0x2c, 0x8d, - 0x28, 0x23, 0x74, 0x58, 0x90, 0x39, 0x94, 0x8e, 0xa1, 0x05, 0xca, 0xc4, 0x7a, 0x31, 0xf8, 0x6f, - 0x59, 0x7d, 0x4d, 0x42, 0x2f, 0x72, 0x3a, 0xf2, 0x21, 0xef, 0xf1, 0x5a, 0x64, 0xdd, 0x15, 0xfc, - 0xb5, 0xca, 0x87, 0xac, 0x77, 0x6b, 0xb1, 0x97, 0xec, 0x1a, 0xeb, 0x9a, 0xe8, 0x24, 0xbb, 0x86, - 0xbe, 0x06, 0x33, 0xdd, 0x05, 0xea, 0x70, 0x2a, 0xec, 0xd2, 0xe9, 0x4a, 0xdf, 0x7e, 0xfd, 0x5a, - 0x09, 0xf2, 0x62, 0x77, 0x20, 0xed, 0x15, 0xc2, 0xbc, 0x23, 0x2d, 0xf6, 0x31, 0x88, 0x94, 0x84, - 0x9d, 0x61, 0x2d, 0x2b, 0x0c, 0xe2, 0x27, 0xcf, 0xa6, 0x63, 0xf9, 0x01, 0x05, 0x9a, 0xfe, 0x1c, - 0x7a, 0x07, 0xd0, 0x36, 0xeb, 0xf7, 0x3f, 0x54, 0x9b, 0x98, 0xe8, 0xd8, 0x72, 0xb5, 0x5d, 0xcc, - 0x9b, 0x28, 0x8e, 0xed, 0xd7, 0xcb, 0x1d, 0xd5, 0x32, 0x00, 0xe7, 0x07, 0x06, 0xbe, 0x7d, 0x73, - 0x7e, 0x60, 0x60, 0x60, 0x40, 0x19, 0xe5, 0x38, 0x9b, 0x3e, 0x0c, 0x7a, 0x09, 0x72, 0x7e, 0x9a, - 0x89, 0x77, 0x02, 0xce, 0xcd, 0x4a, 0xa5, 0x21, 0x25, 0x2b, 0x86, 0x79, 0xb7, 0xdf, 0x49, 0xbf, - 0xed, 0x2d, 0x7d, 0x2a, 0xbf, 0xed, 0x45, 0xb7, 0x01, 0x42, 0x3f, 0x96, 0xb8, 0x72, 0xb6, 0x1f, - 0x4b, 0x28, 0x21, 0x5e, 0x74, 0x1f, 0xb2, 0x4d, 0x62, 0x1f, 0x98, 0x54, 0x5c, 0x3d, 0x07, 0xe7, - 0x2a, 0xbb, 0x43, 0xae, 0x1e, 0xd5, 0x5e, 0x22, 0x2f, 0xca, 0x73, 0x95, 0x4b, 0xc7, 0x5f, 0xdf, - 0xd4, 0x7f, 0x18, 0x09, 0x21, 0xac, 0x19, 0x4c, 0x5f, 0xc5, 0x00, 0xd5, 0x1d, 0x96, 0x85, 0xfd, - 0x02, 0x57, 0x9c, 0xee, 0x83, 0x78, 0xc0, 0xfe, 0x2d, 0x04, 0x25, 0x1f, 0xe6, 0xa0, 0x61, 0x2c, - 0x3a, 0x07, 0xa9, 0x46, 0xab, 0x4e, 0x43, 0x53, 0xc7, 0x95, 0xe7, 0xd9, 0x95, 0x11, 0x0c, 0xa0, - 0x5d, 0x98, 0xd6, 0xeb, 0x9a, 0xd9, 0x50, 0xb5, 0x8e, 0x08, 0x56, 0xd5, 0x6d, 0x03, 0xcb, 0xe5, - 0x13, 0xe2, 0x8a, 0xde, 0xa8, 0x97, 0x35, 0x17, 0x99, 0x8d, 0x88, 0x70, 0xb8, 0x0c, 0x63, 0xce, - 0xbe, 0xd9, 0x14, 0x09, 0x20, 0x55, 0x27, 0x87, 0x4d, 0xd7, 0x96, 0x97, 0xd8, 0x82, 0x46, 0xe9, - 0x14, 0xdf, 0xdf, 0x65, 0x36, 0x81, 0xde, 0x81, 0x73, 0x11, 0xf4, 0xaa, 0x7d, 0x80, 0x09, 0x31, - 0x0d, 0x2c, 0xbf, 0xd2, 0x47, 0x5d, 0x82, 0xb6, 0x9e, 0xe9, 0x1e, 0xd0, 0xb7, 0x38, 0x33, 0xfa, - 0x32, 0x64, 0x34, 0xdd, 0x35, 0x0f, 0x44, 0x48, 0x79, 0xfd, 0x44, 0xdd, 0x4b, 0xfb, 0xf4, 0x55, - 0x17, 0x7d, 0x09, 0x98, 0x66, 0xab, 0x0e, 0xc6, 0x16, 0x65, 0x7f, 0xf5, 0xe4, 0x2c, 0x36, 0xa5, - 0x7f, 0x80, 0xb1, 0x55, 0x75, 0xd1, 0x5b, 0x30, 0xe2, 0x60, 0x62, 0x6a, 0x75, 0xd5, 0x6a, 0x35, - 0xb6, 0x31, 0x91, 0xbf, 0xd8, 0x29, 0x28, 0x27, 0xf8, 0x79, 0xbf, 0x90, 0x24, 0x25, 0xe3, 0x01, - 0xdc, 0x63, 0xfc, 0xc8, 0x84, 0x69, 0x7a, 0x3a, 0xaa, 0x56, 0xaf, 0x9b, 0x9a, 0xd5, 0x11, 0xc5, - 0x39, 0xf2, 0x6b, 0x6c, 0x6d, 0xe5, 0xee, 0x33, 0xbc, 0x6b, 0x2b, 0x5a, 0x95, 0xd3, 0xfb, 0x21, - 0x5d, 0x10, 0x1e, 0x4e, 0x52, 0xd2, 0x9e, 0x79, 0xa7, 0xf0, 0x65, 0xc8, 0x75, 0x85, 0xb3, 0xe1, - 0x34, 0x4b, 0xca, 0x4b, 0xb3, 0x8c, 0x87, 0xd3, 0x2c, 0xa9, 0x50, 0xf6, 0xa4, 0xf0, 0x08, 0xb2, - 0x9d, 0x2e, 0x6e, 0x04, 0x77, 0xb9, 0x33, 0x49, 0x23, 0xf7, 0xae, 0xdc, 0x03, 0x88, 0xcc, 0xca, - 0xac, 0xc7, 0x93, 0x2f, 0xe6, 0x2f, 0xaf, 0xc7, 0x93, 0x97, 0xf3, 0x2f, 0xad, 0xc7, 0x93, 0x2f, - 0xe5, 0x4b, 0xc5, 0xdb, 0x00, 0xbe, 0xc0, 0x3a, 0xe8, 0x06, 0xa4, 0x83, 0x7f, 0xa6, 0x45, 0x24, - 0xa3, 0xa6, 0xfb, 0x4a, 0xb8, 0x02, 0xd8, 0xe7, 0x2d, 0x7e, 0x22, 0xc1, 0xc8, 0x8a, 0x57, 0x37, - 0xdb, 0x24, 0x78, 0xc7, 0x6c, 0xa3, 0x9f, 0x49, 0xa1, 0x6a, 0xa5, 0x57, 0x90, 0xfd, 0x53, 0xe9, - 0xb7, 0xa9, 0x5a, 0x19, 0x14, 0x02, 0x27, 0x61, 0xb8, 0x8e, 0xad, 0x5d, 0x77, 0xcf, 0xcb, 0x76, - 0x2a, 0xfc, 0xaf, 0xe2, 0xbb, 0x30, 0xb9, 0xcc, 0x12, 0x31, 0xc1, 0x9e, 0xf0, 0xe2, 0x70, 0x0d, - 0x20, 0xd8, 0x4a, 0xff, 0x97, 0x1f, 0xfd, 0x76, 0x32, 0x94, 0x10, 0x4e, 0xf9, 0x7b, 0x5a, 0xfc, - 0xbe, 0x04, 0x93, 0x0f, 0x59, 0x8a, 0xe6, 0xb3, 0x80, 0x47, 0xaf, 0x03, 0x04, 0xff, 0x8a, 0x4c, - 0xdf, 0xec, 0xd3, 0x2d, 0x4a, 0xb2, 0xa1, 0x39, 0xfb, 0x4a, 0x6a, 0x47, 0x3c, 0x16, 0xff, 0x24, - 0x06, 0x2f, 0xd4, 0x34, 0x57, 0xdf, 0xeb, 0x5a, 0xde, 0x5d, 0xae, 0xc8, 0x62, 0x99, 0x18, 0x12, - 0x5e, 0x8e, 0x49, 0x08, 0xd3, 0x9d, 0x9e, 0x46, 0xc3, 0x93, 0x51, 0xca, 0x3d, 0x13, 0x1e, 0xbd, - 0x22, 0xb0, 0x0b, 0x7f, 0x24, 0xc1, 0x54, 0x1f, 0x22, 0xf4, 0xe6, 0xd9, 0xb3, 0x75, 0x5d, 0xbf, - 0x3b, 0xed, 0x36, 0x68, 0xb1, 0xb3, 0x18, 0xb4, 0xe2, 0x8f, 0x25, 0x18, 0xa3, 0x7e, 0x6e, 0xf7, - 0x09, 0x6e, 0x41, 0x36, 0x38, 0x41, 0xf5, 0xd7, 0x5f, 0x62, 0x06, 0x07, 0xf3, 0xce, 0xf3, 0x9c, - 0xe9, 0xcf, 0x07, 0xe1, 0xc5, 0xf0, 0x42, 0x43, 0xaf, 0xbb, 0x65, 0x93, 0xd5, 0x87, 0x6b, 0x8e, - 0x58, 0xfa, 0x2f, 0x24, 0x48, 0x32, 0xef, 0x10, 0xb7, 0x4c, 0xae, 0xd8, 0x7f, 0x21, 0x3d, 0xad, - 0x5e, 0x5a, 0x47, 0xc5, 0x2f, 0x2e, 0xd6, 0x96, 0x56, 0xae, 0x7f, 0x71, 0x75, 0x65, 0xb1, 0xbf, - 0x82, 0x27, 0x3f, 0x07, 0x0a, 0xfe, 0x1a, 0x57, 0x70, 0xfa, 0x19, 0xab, 0x2d, 0x13, 0xfd, 0xbd, - 0x04, 0x54, 0xd9, 0xd9, 0x17, 0xc5, 0x7e, 0x9b, 0xbf, 0x68, 0xd8, 0xc0, 0x07, 0xab, 0x2d, 0xb3, - 0xf8, 0xfd, 0x41, 0x98, 0xb8, 0x6b, 0x3a, 0xc1, 0x71, 0xfa, 0xa7, 0xf7, 0x16, 0xe4, 0xc2, 0x5e, - 0x63, 0x20, 0x79, 0x97, 0x8f, 0xf1, 0x17, 0xc3, 0xd7, 0x5f, 0x56, 0x0b, 0x8f, 0x3f, 0x8f, 0xcc, - 0xa1, 0xbf, 0x92, 0x60, 0xc8, 0x26, 0x06, 0x26, 0x2c, 0x6f, 0x9d, 0xaa, 0xfd, 0x58, 0x3a, 0xaa, - 0xfd, 0x48, 0x22, 0x7f, 0x2c, 0x29, 0x03, 0x4a, 0xca, 0x57, 0x0d, 0x05, 0xe6, 0x83, 0x67, 0x5f, - 0xf2, 0x94, 0xd4, 0xbc, 0xff, 0x28, 0xce, 0x4e, 0x49, 0xce, 0x8b, 0x27, 0x96, 0xba, 0x56, 0x86, - 0xe6, 0xd9, 0xff, 0xc2, 0x29, 0x6a, 0x25, 0x33, 0x1f, 0xfe, 0x2b, 0x94, 0x81, 0x57, 0xd2, 0xf3, - 0xa1, 0x3f, 0x3a, 0x94, 0x5e, 0x19, 0x99, 0xef, 0xf8, 0xd3, 0x5b, 0x35, 0xba, 0x00, 0x43, 0xde, - 0x3f, 0xe5, 0x12, 0x0f, 0x17, 0xc1, 0xfe, 0x3d, 0xa1, 0x78, 0xc3, 0x08, 0x41, 0xbc, 0x49, 0x03, - 0x04, 0xaf, 0xfc, 0xc5, 0x9e, 0x8b, 0x7f, 0x20, 0xc1, 0xd8, 0x83, 0x08, 0x83, 0xf0, 0x1b, 0x36, - 0xe9, 0x7f, 0x26, 0xc1, 0x8c, 0x82, 0x1d, 0xec, 0x56, 0x2d, 0xe3, 0xb7, 0xc2, 0x5e, 0xfd, 0x44, - 0x82, 0x51, 0xff, 0x5d, 0x5b, 0xb8, 0xd1, 0xac, 0x53, 0x73, 0xff, 0x9b, 0xdd, 0x45, 0x54, 0x82, - 0x74, 0x43, 0x6b, 0xb2, 0x9e, 0x69, 0xea, 0xb9, 0x0d, 0x76, 0xa6, 0x71, 0x81, 0xcf, 0xdd, 0xc1, - 0x87, 0xc5, 0xbf, 0x0c, 0xdf, 0x59, 0x62, 0xf9, 0x5e, 0xf8, 0xe4, 0x57, 0x63, 0xa4, 0x4e, 0xf6, - 0xc8, 0x6a, 0x4c, 0x2c, 0x9c, 0x6d, 0xfe, 0x99, 0xd4, 0x59, 0x8d, 0xd9, 0x82, 0x1c, 0xf3, 0x75, - 0x71, 0xdb, 0xc5, 0x96, 0xc3, 0xd2, 0xac, 0x83, 0xac, 0xe0, 0xfd, 0x85, 0xa3, 0x5a, 0xe9, 0xa9, - 0xf4, 0x62, 0xde, 0x90, 0xa5, 0xe2, 0x45, 0x72, 0xbe, 0x32, 0xf3, 0x7e, 0xe9, 0xe6, 0x8d, 0x77, - 0xcb, 0xc2, 0x99, 0xfe, 0xe8, 0xda, 0xcb, 0xd7, 0x5e, 0xfd, 0xf8, 0xca, 0x47, 0xd7, 0x5e, 0xae, - 0x7c, 0x3c, 0xa7, 0x64, 0x29, 0xc6, 0xaa, 0x0f, 0x51, 0xfc, 0x1f, 0x09, 0xe4, 0x3e, 0x4b, 0x77, - 0xd0, 0xc7, 0x90, 0xf0, 0x02, 0x3f, 0x71, 0xe5, 0x5f, 0xef, 0xbb, 0xfb, 0x5d, 0xac, 0x65, 0xfe, - 0xff, 0x5f, 0x27, 0xbd, 0x2b, 0xde, 0x59, 0xd0, 0x21, 0x13, 0x86, 0x89, 0x70, 0xa1, 0x4f, 0xaa, - 0x73, 0xf6, 0x59, 0x5e, 0xc8, 0xa3, 0x2e, 0xfe, 0xb3, 0x04, 0x17, 0x97, 0x6d, 0xeb, 0x00, 0x13, - 0xb7, 0x87, 0x5a, 0xe8, 0xcb, 0x0a, 0xa4, 0xbc, 0x35, 0xd1, 0x68, 0xd7, 0x3b, 0xc8, 0x97, 0x8e, - 0x6a, 0xa7, 0xfb, 0x9a, 0xa4, 0xc7, 0xb9, 0x66, 0x50, 0x03, 0xc2, 0x02, 0x5b, 0x76, 0x27, 0x29, - 0xec, 0x19, 0x7d, 0x00, 0x93, 0x21, 0x4d, 0x0c, 0x97, 0xba, 0x06, 0xcf, 0x5e, 0xea, 0x1a, 0xc3, - 0x3d, 0x93, 0xce, 0xd5, 0x87, 0x00, 0x41, 0x3e, 0x04, 0x8d, 0xc2, 0xc8, 0xe6, 0x5b, 0x8f, 0x57, - 0x15, 0xf5, 0xe1, 0xbd, 0x3b, 0xf7, 0xde, 0x7a, 0x7c, 0x2f, 0x3f, 0x10, 0x0c, 0xd5, 0xaa, 0x5b, - 0x5b, 0xab, 0xca, 0xd7, 0xf3, 0x12, 0x42, 0x90, 0xf5, 0x86, 0x56, 0xbf, 0xb6, 0xb5, 0xaa, 0xdc, - 0xab, 0xde, 0xcd, 0xc7, 0x0a, 0x23, 0xbf, 0x7a, 0x36, 0x9d, 0x92, 0xa5, 0xab, 0x43, 0x6c, 0xa6, - 0x76, 0xfd, 0x6f, 0xfe, 0xf5, 0x82, 0xf4, 0xf6, 0xc2, 0x19, 0xae, 0x38, 0xd7, 0x6a, 0x6e, 0x6f, - 0x0f, 0x33, 0x95, 0x5b, 0xfa, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x11, 0x7b, 0xe7, 0x2b, 0x55, - 0x52, 0x00, 0x00, +func (x *ConvertEndDeviceTemplateRequest) GetEndDeviceVersionIds() *EndDeviceVersionIdentifiers { + if x != nil { + return x.EndDeviceVersionIds + } + return nil +} + +type MACParameters_Channel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Uplink frequency of the channel (Hz). + UplinkFrequency uint64 `protobuf:"varint,1,opt,name=uplink_frequency,json=uplinkFrequency,proto3" json:"uplink_frequency,omitempty"` + // Downlink frequency of the channel (Hz). + DownlinkFrequency uint64 `protobuf:"varint,2,opt,name=downlink_frequency,json=downlinkFrequency,proto3" json:"downlink_frequency,omitempty"` + // Index of the minimum data rate for uplink. + MinDataRateIndex DataRateIndex `protobuf:"varint,3,opt,name=min_data_rate_index,json=minDataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"min_data_rate_index,omitempty"` + // Index of the maximum data rate for uplink. + MaxDataRateIndex DataRateIndex `protobuf:"varint,4,opt,name=max_data_rate_index,json=maxDataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"max_data_rate_index,omitempty"` + // Channel can be used by device for uplink. + EnableUplink bool `protobuf:"varint,5,opt,name=enable_uplink,json=enableUplink,proto3" json:"enable_uplink,omitempty"` +} + +func (x *MACParameters_Channel) Reset() { + *x = MACParameters_Channel{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MACParameters_Channel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MACParameters_Channel) ProtoMessage() {} + +func (x *MACParameters_Channel) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MACParameters_Channel.ProtoReflect.Descriptor instead. +func (*MACParameters_Channel) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{2, 0} +} + +func (x *MACParameters_Channel) GetUplinkFrequency() uint64 { + if x != nil { + return x.UplinkFrequency + } + return 0 +} + +func (x *MACParameters_Channel) GetDownlinkFrequency() uint64 { + if x != nil { + return x.DownlinkFrequency + } + return 0 +} + +func (x *MACParameters_Channel) GetMinDataRateIndex() DataRateIndex { + if x != nil { + return x.MinDataRateIndex + } + return DataRateIndex_DATA_RATE_0 +} + +func (x *MACParameters_Channel) GetMaxDataRateIndex() DataRateIndex { + if x != nil { + return x.MaxDataRateIndex + } + return DataRateIndex_DATA_RATE_0 +} + +func (x *MACParameters_Channel) GetEnableUplink() bool { + if x != nil { + return x.EnableUplink + } + return false +} + +// Configuration options for static ADR. +type ADRSettings_StaticMode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Data rate index to use. + DataRateIndex DataRateIndex `protobuf:"varint,1,opt,name=data_rate_index,json=dataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"data_rate_index,omitempty"` + // Transmission power index to use. + TxPowerIndex uint32 `protobuf:"varint,2,opt,name=tx_power_index,json=txPowerIndex,proto3" json:"tx_power_index,omitempty"` + // Number of retransmissions. + NbTrans uint32 `protobuf:"varint,3,opt,name=nb_trans,json=nbTrans,proto3" json:"nb_trans,omitempty"` +} + +func (x *ADRSettings_StaticMode) Reset() { + *x = ADRSettings_StaticMode{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ADRSettings_StaticMode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ADRSettings_StaticMode) ProtoMessage() {} + +func (x *ADRSettings_StaticMode) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ADRSettings_StaticMode.ProtoReflect.Descriptor instead. +func (*ADRSettings_StaticMode) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{4, 0} +} + +func (x *ADRSettings_StaticMode) GetDataRateIndex() DataRateIndex { + if x != nil { + return x.DataRateIndex + } + return DataRateIndex_DATA_RATE_0 +} + +func (x *ADRSettings_StaticMode) GetTxPowerIndex() uint32 { + if x != nil { + return x.TxPowerIndex + } + return 0 +} + +func (x *ADRSettings_StaticMode) GetNbTrans() uint32 { + if x != nil { + return x.NbTrans + } + return 0 +} + +// Configuration options for dynamic ADR. +type ADRSettings_DynamicMode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ADR margin (dB) tells the network server how much margin it should add in ADR requests. + // A bigger margin is less efficient, but gives a better chance of successful reception. + // If unset, the default value from Network Server configuration will be used. + Margin *wrapperspb.FloatValue `protobuf:"bytes,1,opt,name=margin,proto3" json:"margin,omitempty"` + // Minimum data rate index. + // If unset, the default value from Network Server configuration will be used. + MinDataRateIndex *DataRateIndexValue `protobuf:"bytes,2,opt,name=min_data_rate_index,json=minDataRateIndex,proto3" json:"min_data_rate_index,omitempty"` + // Maximum data rate index. + // If unset, the default value from Network Server configuration will be used. + MaxDataRateIndex *DataRateIndexValue `protobuf:"bytes,3,opt,name=max_data_rate_index,json=maxDataRateIndex,proto3" json:"max_data_rate_index,omitempty"` + // Minimum transmission power index. + // If unset, the default value from Network Server configuration will be used. + MinTxPowerIndex *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=min_tx_power_index,json=minTxPowerIndex,proto3" json:"min_tx_power_index,omitempty"` + // Maximum transmission power index. + // If unset, the default value from Network Server configuration will be used. + MaxTxPowerIndex *wrapperspb.UInt32Value `protobuf:"bytes,5,opt,name=max_tx_power_index,json=maxTxPowerIndex,proto3" json:"max_tx_power_index,omitempty"` + // Minimum number of retransmissions. + // If unset, the default value from Network Server configuration will be used. + MinNbTrans *wrapperspb.UInt32Value `protobuf:"bytes,6,opt,name=min_nb_trans,json=minNbTrans,proto3" json:"min_nb_trans,omitempty"` + // Maximum number of retransmissions. + // If unset, the default value from Network Server configuration will be used. + MaxNbTrans *wrapperspb.UInt32Value `protobuf:"bytes,7,opt,name=max_nb_trans,json=maxNbTrans,proto3" json:"max_nb_trans,omitempty"` +} + +func (x *ADRSettings_DynamicMode) Reset() { + *x = ADRSettings_DynamicMode{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ADRSettings_DynamicMode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ADRSettings_DynamicMode) ProtoMessage() {} + +func (x *ADRSettings_DynamicMode) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ADRSettings_DynamicMode.ProtoReflect.Descriptor instead. +func (*ADRSettings_DynamicMode) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{4, 1} +} + +func (x *ADRSettings_DynamicMode) GetMargin() *wrapperspb.FloatValue { + if x != nil { + return x.Margin + } + return nil +} + +func (x *ADRSettings_DynamicMode) GetMinDataRateIndex() *DataRateIndexValue { + if x != nil { + return x.MinDataRateIndex + } + return nil +} + +func (x *ADRSettings_DynamicMode) GetMaxDataRateIndex() *DataRateIndexValue { + if x != nil { + return x.MaxDataRateIndex + } + return nil +} + +func (x *ADRSettings_DynamicMode) GetMinTxPowerIndex() *wrapperspb.UInt32Value { + if x != nil { + return x.MinTxPowerIndex + } + return nil +} + +func (x *ADRSettings_DynamicMode) GetMaxTxPowerIndex() *wrapperspb.UInt32Value { + if x != nil { + return x.MaxTxPowerIndex + } + return nil +} + +func (x *ADRSettings_DynamicMode) GetMinNbTrans() *wrapperspb.UInt32Value { + if x != nil { + return x.MinNbTrans + } + return nil +} + +func (x *ADRSettings_DynamicMode) GetMaxNbTrans() *wrapperspb.UInt32Value { + if x != nil { + return x.MaxNbTrans + } + return nil +} + +// Configuration options for cases in which ADR is to be disabled +// completely. +type ADRSettings_DisabledMode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ADRSettings_DisabledMode) Reset() { + *x = ADRSettings_DisabledMode{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ADRSettings_DisabledMode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ADRSettings_DisabledMode) ProtoMessage() {} + +func (x *ADRSettings_DisabledMode) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ADRSettings_DisabledMode.ProtoReflect.Descriptor instead. +func (*ADRSettings_DisabledMode) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{4, 2} +} + +type MACState_JoinRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DownlinkSettings *DLSettings `protobuf:"bytes,6,opt,name=downlink_settings,json=downlinkSettings,proto3" json:"downlink_settings,omitempty"` + RxDelay RxDelay `protobuf:"varint,7,opt,name=rx_delay,json=rxDelay,proto3,enum=ttn.lorawan.v3.RxDelay" json:"rx_delay,omitempty"` + CfList *CFList `protobuf:"bytes,8,opt,name=cf_list,json=cfList,proto3" json:"cf_list,omitempty"` +} + +func (x *MACState_JoinRequest) Reset() { + *x = MACState_JoinRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MACState_JoinRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MACState_JoinRequest) ProtoMessage() {} + +func (x *MACState_JoinRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MACState_JoinRequest.ProtoReflect.Descriptor instead. +func (*MACState_JoinRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{6, 0} +} + +func (x *MACState_JoinRequest) GetDownlinkSettings() *DLSettings { + if x != nil { + return x.DownlinkSettings + } + return nil +} + +func (x *MACState_JoinRequest) GetRxDelay() RxDelay { + if x != nil { + return x.RxDelay + } + return RxDelay_RX_DELAY_0 +} + +func (x *MACState_JoinRequest) GetCfList() *CFList { + if x != nil { + return x.CfList + } + return nil +} + +type MACState_JoinAccept struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Payload of the join-accept received from Join Server. + Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` + Request *MACState_JoinRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + // Network session keys associated with the join. + Keys *SessionKeys `protobuf:"bytes,3,opt,name=keys,proto3" json:"keys,omitempty"` + CorrelationIds []string `protobuf:"bytes,4,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` + DevAddr []byte `protobuf:"bytes,5,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` + NetId []byte `protobuf:"bytes,6,opt,name=net_id,json=netId,proto3" json:"net_id,omitempty"` +} + +func (x *MACState_JoinAccept) Reset() { + *x = MACState_JoinAccept{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MACState_JoinAccept) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MACState_JoinAccept) ProtoMessage() {} + +func (x *MACState_JoinAccept) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MACState_JoinAccept.ProtoReflect.Descriptor instead. +func (*MACState_JoinAccept) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{6, 1} +} + +func (x *MACState_JoinAccept) GetPayload() []byte { + if x != nil { + return x.Payload + } + return nil +} + +func (x *MACState_JoinAccept) GetRequest() *MACState_JoinRequest { + if x != nil { + return x.Request + } + return nil +} + +func (x *MACState_JoinAccept) GetKeys() *SessionKeys { + if x != nil { + return x.Keys + } + return nil +} + +func (x *MACState_JoinAccept) GetCorrelationIds() []string { + if x != nil { + return x.CorrelationIds + } + return nil +} + +func (x *MACState_JoinAccept) GetDevAddr() []byte { + if x != nil { + return x.DevAddr + } + return nil +} + +func (x *MACState_JoinAccept) GetNetId() []byte { + if x != nil { + return x.NetId + } + return nil +} + +// A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message. +// Used for type safe recent uplink storage. +type MACState_UplinkMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload *Message `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Settings *MACState_UplinkMessage_TxSettings `protobuf:"bytes,4,opt,name=settings,proto3" json:"settings,omitempty"` + RxMetadata []*MACState_UplinkMessage_RxMetadata `protobuf:"bytes,5,rep,name=rx_metadata,json=rxMetadata,proto3" json:"rx_metadata,omitempty"` + ReceivedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=received_at,json=receivedAt,proto3" json:"received_at,omitempty"` + CorrelationIds []string `protobuf:"bytes,7,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` + DeviceChannelIndex uint32 `protobuf:"varint,9,opt,name=device_channel_index,json=deviceChannelIndex,proto3" json:"device_channel_index,omitempty"` +} + +func (x *MACState_UplinkMessage) Reset() { + *x = MACState_UplinkMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MACState_UplinkMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MACState_UplinkMessage) ProtoMessage() {} + +func (x *MACState_UplinkMessage) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MACState_UplinkMessage.ProtoReflect.Descriptor instead. +func (*MACState_UplinkMessage) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{6, 2} +} + +func (x *MACState_UplinkMessage) GetPayload() *Message { + if x != nil { + return x.Payload + } + return nil +} + +func (x *MACState_UplinkMessage) GetSettings() *MACState_UplinkMessage_TxSettings { + if x != nil { + return x.Settings + } + return nil +} + +func (x *MACState_UplinkMessage) GetRxMetadata() []*MACState_UplinkMessage_RxMetadata { + if x != nil { + return x.RxMetadata + } + return nil +} + +func (x *MACState_UplinkMessage) GetReceivedAt() *timestamppb.Timestamp { + if x != nil { + return x.ReceivedAt + } + return nil +} + +func (x *MACState_UplinkMessage) GetCorrelationIds() []string { + if x != nil { + return x.CorrelationIds + } + return nil +} + +func (x *MACState_UplinkMessage) GetDeviceChannelIndex() uint32 { + if x != nil { + return x.DeviceChannelIndex + } + return 0 +} + +// A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message. +// Used for type safe recent downlink storage. +type MACState_DownlinkMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload *MACState_DownlinkMessage_Message `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + CorrelationIds []string `protobuf:"bytes,6,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` +} + +func (x *MACState_DownlinkMessage) Reset() { + *x = MACState_DownlinkMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MACState_DownlinkMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MACState_DownlinkMessage) ProtoMessage() {} + +func (x *MACState_DownlinkMessage) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MACState_DownlinkMessage.ProtoReflect.Descriptor instead. +func (*MACState_DownlinkMessage) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{6, 3} +} + +func (x *MACState_DownlinkMessage) GetPayload() *MACState_DownlinkMessage_Message { + if x != nil { + return x.Payload + } + return nil +} + +func (x *MACState_DownlinkMessage) GetCorrelationIds() []string { + if x != nil { + return x.CorrelationIds + } + return nil +} + +type MACState_DataRateRange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MinDataRateIndex DataRateIndex `protobuf:"varint,1,opt,name=min_data_rate_index,json=minDataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"min_data_rate_index,omitempty"` + MaxDataRateIndex DataRateIndex `protobuf:"varint,2,opt,name=max_data_rate_index,json=maxDataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"max_data_rate_index,omitempty"` +} + +func (x *MACState_DataRateRange) Reset() { + *x = MACState_DataRateRange{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MACState_DataRateRange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MACState_DataRateRange) ProtoMessage() {} + +func (x *MACState_DataRateRange) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MACState_DataRateRange.ProtoReflect.Descriptor instead. +func (*MACState_DataRateRange) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{6, 4} +} + +func (x *MACState_DataRateRange) GetMinDataRateIndex() DataRateIndex { + if x != nil { + return x.MinDataRateIndex + } + return DataRateIndex_DATA_RATE_0 +} + +func (x *MACState_DataRateRange) GetMaxDataRateIndex() DataRateIndex { + if x != nil { + return x.MaxDataRateIndex + } + return DataRateIndex_DATA_RATE_0 +} + +type MACState_DataRateRanges struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ranges []*MACState_DataRateRange `protobuf:"bytes,1,rep,name=ranges,proto3" json:"ranges,omitempty"` +} + +func (x *MACState_DataRateRanges) Reset() { + *x = MACState_DataRateRanges{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MACState_DataRateRanges) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MACState_DataRateRanges) ProtoMessage() {} + +func (x *MACState_DataRateRanges) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MACState_DataRateRanges.ProtoReflect.Descriptor instead. +func (*MACState_DataRateRanges) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{6, 5} +} + +func (x *MACState_DataRateRanges) GetRanges() []*MACState_DataRateRange { + if x != nil { + return x.Ranges + } + return nil +} + +type MACState_UplinkMessage_TxSettings struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DataRate *DataRate `protobuf:"bytes,1,opt,name=data_rate,json=dataRate,proto3" json:"data_rate,omitempty"` +} + +func (x *MACState_UplinkMessage_TxSettings) Reset() { + *x = MACState_UplinkMessage_TxSettings{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MACState_UplinkMessage_TxSettings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MACState_UplinkMessage_TxSettings) ProtoMessage() {} + +func (x *MACState_UplinkMessage_TxSettings) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MACState_UplinkMessage_TxSettings.ProtoReflect.Descriptor instead. +func (*MACState_UplinkMessage_TxSettings) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{6, 2, 0} +} + +func (x *MACState_UplinkMessage_TxSettings) GetDataRate() *DataRate { + if x != nil { + return x.DataRate + } + return nil +} + +type MACState_UplinkMessage_RxMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` + ChannelRssi float32 `protobuf:"fixed32,9,opt,name=channel_rssi,json=channelRssi,proto3" json:"channel_rssi,omitempty"` + Snr float32 `protobuf:"fixed32,11,opt,name=snr,proto3" json:"snr,omitempty"` + DownlinkPathConstraint DownlinkPathConstraint `protobuf:"varint,14,opt,name=downlink_path_constraint,json=downlinkPathConstraint,proto3,enum=ttn.lorawan.v3.DownlinkPathConstraint" json:"downlink_path_constraint,omitempty"` + UplinkToken []byte `protobuf:"bytes,15,opt,name=uplink_token,json=uplinkToken,proto3" json:"uplink_token,omitempty"` + PacketBroker *MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata `protobuf:"bytes,18,opt,name=packet_broker,json=packetBroker,proto3" json:"packet_broker,omitempty"` +} + +func (x *MACState_UplinkMessage_RxMetadata) Reset() { + *x = MACState_UplinkMessage_RxMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MACState_UplinkMessage_RxMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MACState_UplinkMessage_RxMetadata) ProtoMessage() {} + +func (x *MACState_UplinkMessage_RxMetadata) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MACState_UplinkMessage_RxMetadata.ProtoReflect.Descriptor instead. +func (*MACState_UplinkMessage_RxMetadata) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{6, 2, 1} +} + +func (x *MACState_UplinkMessage_RxMetadata) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds + } + return nil +} + +func (x *MACState_UplinkMessage_RxMetadata) GetChannelRssi() float32 { + if x != nil { + return x.ChannelRssi + } + return 0 +} + +func (x *MACState_UplinkMessage_RxMetadata) GetSnr() float32 { + if x != nil { + return x.Snr + } + return 0 +} + +func (x *MACState_UplinkMessage_RxMetadata) GetDownlinkPathConstraint() DownlinkPathConstraint { + if x != nil { + return x.DownlinkPathConstraint + } + return DownlinkPathConstraint_DOWNLINK_PATH_CONSTRAINT_NONE +} + +func (x *MACState_UplinkMessage_RxMetadata) GetUplinkToken() []byte { + if x != nil { + return x.UplinkToken + } + return nil +} + +func (x *MACState_UplinkMessage_RxMetadata) GetPacketBroker() *MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata { + if x != nil { + return x.PacketBroker + } + return nil +} + +type MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata) Reset() { + *x = MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata) ProtoMessage() {} + +func (x *MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata.ProtoReflect.Descriptor instead. +func (*MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{6, 2, 1, 0} +} + +type MACState_DownlinkMessage_Message struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MHdr *MACState_DownlinkMessage_Message_MHDR `protobuf:"bytes,1,opt,name=m_hdr,json=mHdr,proto3" json:"m_hdr,omitempty"` + MacPayload *MACState_DownlinkMessage_Message_MACPayload `protobuf:"bytes,3,opt,name=mac_payload,json=macPayload,proto3" json:"mac_payload,omitempty"` +} + +func (x *MACState_DownlinkMessage_Message) Reset() { + *x = MACState_DownlinkMessage_Message{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MACState_DownlinkMessage_Message) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MACState_DownlinkMessage_Message) ProtoMessage() {} + +func (x *MACState_DownlinkMessage_Message) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MACState_DownlinkMessage_Message.ProtoReflect.Descriptor instead. +func (*MACState_DownlinkMessage_Message) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{6, 3, 0} +} + +func (x *MACState_DownlinkMessage_Message) GetMHdr() *MACState_DownlinkMessage_Message_MHDR { + if x != nil { + return x.MHdr + } + return nil +} + +func (x *MACState_DownlinkMessage_Message) GetMacPayload() *MACState_DownlinkMessage_Message_MACPayload { + if x != nil { + return x.MacPayload + } + return nil +} + +type MACState_DownlinkMessage_Message_MHDR struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MType MType `protobuf:"varint,1,opt,name=m_type,json=mType,proto3,enum=ttn.lorawan.v3.MType" json:"m_type,omitempty"` +} + +func (x *MACState_DownlinkMessage_Message_MHDR) Reset() { + *x = MACState_DownlinkMessage_Message_MHDR{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MACState_DownlinkMessage_Message_MHDR) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MACState_DownlinkMessage_Message_MHDR) ProtoMessage() {} + +func (x *MACState_DownlinkMessage_Message_MHDR) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MACState_DownlinkMessage_Message_MHDR.ProtoReflect.Descriptor instead. +func (*MACState_DownlinkMessage_Message_MHDR) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{6, 3, 0, 0} +} + +func (x *MACState_DownlinkMessage_Message_MHDR) GetMType() MType { + if x != nil { + return x.MType + } + return MType_JOIN_REQUEST +} + +type MACState_DownlinkMessage_Message_MACPayload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FPort uint32 `protobuf:"varint,2,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` + FullFCnt uint32 `protobuf:"varint,5,opt,name=full_f_cnt,json=fullFCnt,proto3" json:"full_f_cnt,omitempty"` +} + +func (x *MACState_DownlinkMessage_Message_MACPayload) Reset() { + *x = MACState_DownlinkMessage_Message_MACPayload{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MACState_DownlinkMessage_Message_MACPayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MACState_DownlinkMessage_Message_MACPayload) ProtoMessage() {} + +func (x *MACState_DownlinkMessage_Message_MACPayload) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MACState_DownlinkMessage_Message_MACPayload.ProtoReflect.Descriptor instead. +func (*MACState_DownlinkMessage_Message_MACPayload) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{6, 3, 0, 1} +} + +func (x *MACState_DownlinkMessage_Message_MACPayload) GetFPort() uint32 { + if x != nil { + return x.FPort + } + return 0 +} + +func (x *MACState_DownlinkMessage_Message_MACPayload) GetFullFCnt() uint32 { + if x != nil { + return x.FullFCnt + } + return 0 +} + +type BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ids *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` + LastSeenAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=last_seen_at,json=lastSeenAt,proto3" json:"last_seen_at,omitempty"` +} + +func (x *BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) Reset() { + *x = BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) ProtoMessage() {} + +func (x *BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_end_device_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate.ProtoReflect.Descriptor instead. +func (*BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_end_device_proto_rawDescGZIP(), []int{13, 0} +} + +func (x *BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) GetIds() *EndDeviceIdentifiers { + if x != nil { + return x.Ids + } + return nil +} + +func (x *BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) GetLastSeenAt() *timestamppb.Timestamp { + if x != nil { + return x.LastSeenAt + } + return nil +} + +var File_lorawan_stack_api_end_device_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_end_device_proto_rawDesc = []byte{ + 0x0a, 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, + 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, + 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x69, 0x63, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, + 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x06, 0x0a, 0x07, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xed, 0x02, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd1, 0x02, 0xfa, 0x42, 0x06, 0x7a, + 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, + 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, + 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, + 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, + 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, + 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, + 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x92, 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, + 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, + 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x39, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, + 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6b, 0x65, 0x79, + 0x73, 0x12, 0x21, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, + 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x43, + 0x6e, 0x74, 0x55, 0x70, 0x12, 0x28, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6e, 0x5f, 0x66, + 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4e, 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x28, + 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, + 0x6f, 0x77, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x41, + 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x2e, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x65, 0x0a, 0x1c, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x1a, + 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, + 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x33, 0x0a, 0x09, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, + 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, + 0xc5, 0x0f, 0x0a, 0x0d, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x69, 0x72, 0x70, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x45, 0x69, 0x72, 0x70, 0x12, 0x56, 0x0a, 0x13, + 0x61, 0x64, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x10, 0x61, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x34, 0x0a, 0x12, 0x61, 0x64, 0x72, 0x5f, 0x74, 0x78, 0x5f, 0x70, + 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x0f, 0x61, 0x64, 0x72, 0x54, 0x78, + 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x29, 0x0a, 0x0c, 0x61, 0x64, + 0x72, 0x5f, 0x6e, 0x62, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x0a, 0x61, 0x64, 0x72, 0x4e, 0x62, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0d, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, + 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x0b, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, + 0x0d, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, + 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x3e, 0x0a, 0x09, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x65, 0x6c, + 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, + 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x78, 0x31, + 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x59, 0x0a, 0x14, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x72, + 0x78, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x12, 0x56, 0x0a, 0x13, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, + 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x72, 0x78, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2e, 0x0a, 0x0d, 0x72, 0x78, 0x32, 0x5f, + 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x09, 0xfa, 0x42, 0x06, 0x32, 0x04, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x0c, 0x72, 0x78, 0x32, 0x46, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x53, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, + 0x64, 0x75, 0x74, 0x79, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, 0x74, 0x79, + 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x0c, 0x6d, 0x61, 0x78, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x64, 0x0a, + 0x17, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x15, 0x72, 0x65, + 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, + 0x69, 0x74, 0x79, 0x12, 0x67, 0x0a, 0x18, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x16, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x13, + 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, 0x06, + 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x11, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, + 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x5b, 0x0a, 0x19, 0x70, 0x69, 0x6e, + 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x15, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x36, 0x0a, 0x10, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, 0x06, 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x0f, 0x62, + 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x4b, + 0x0a, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, + 0x01, 0x52, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x75, + 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, + 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x5d, 0x0a, + 0x16, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x65, + 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x5d, 0x0a, 0x16, + 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x65, 0x78, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, + 0x52, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x44, 0x65, + 0x6c, 0x61, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x67, 0x0a, 0x1f, 0x70, + 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x18, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, + 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xda, 0x02, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x12, 0x36, 0x0a, 0x10, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, + 0x06, 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x46, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x38, 0x0a, 0x12, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x32, 0x04, 0x28, 0xa0, 0x8d, 0x06, 0x52, + 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x12, 0x56, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x56, 0x0a, 0x13, 0x6d, 0x61, + 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x10, 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, + 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x02, 0x10, + 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xfa, 0x05, 0x0a, 0x10, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x03, + 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x4d, 0x0a, 0x0f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x13, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, + 0x70, 0x68, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x11, 0x66, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0f, + 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, + 0x20, 0x0a, 0x06, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x0a, 0x52, 0x06, 0x70, 0x68, 0x6f, 0x74, 0x6f, + 0x73, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x5f, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x12, 0x28, 0x0a, 0x10, 0x73, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x63, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x43, 0x12, 0x4d, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x61, 0x63, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6e, + 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, + 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, + 0x0a, 0x0d, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4a, + 0x6f, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x6a, 0x6f, + 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x10, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x4a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x6e, 0x63, 0x65, + 0x73, 0x12, 0x61, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x73, 0x22, 0xfc, 0x07, 0x0a, 0x0b, 0x41, 0x44, 0x52, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x40, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x12, 0x43, 0x0a, 0x07, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x6f, 0x64, 0x65, + 0x48, 0x00, 0x52, 0x07, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x12, 0x46, 0x0a, 0x08, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x44, 0x52, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x1a, 0xbc, 0x01, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x4f, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x2d, 0x0a, 0x0e, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x0c, 0x74, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x12, 0x24, 0x0a, 0x08, 0x6e, 0x62, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x2a, 0x04, 0x18, 0x0f, 0x28, 0x01, 0x52, + 0x07, 0x6e, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, + 0x10, 0x01, 0x1a, 0xb0, 0x04, 0x0a, 0x0b, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x51, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x51, 0x0a, 0x13, 0x6d, 0x61, + 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x6d, 0x61, 0x78, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x52, 0x0a, + 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, + 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0f, + 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x54, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x12, 0x52, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, + 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x54, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x49, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x62, 0x5f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x2a, 0x04, + 0x18, 0x03, 0x28, 0x01, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x4e, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x12, 0x49, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x62, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x2a, 0x04, 0x18, 0x03, 0x28, 0x01, 0x52, + 0x0a, 0x6d, 0x61, 0x78, 0x4e, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x01, 0x10, 0x01, 0x1a, 0x18, 0x0a, 0x0c, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x3a, + 0x0a, 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x20, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x6d, + 0x6f, 0x64, 0x65, 0x22, 0xf2, 0x15, 0x0a, 0x0b, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x62, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x54, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x57, 0x0a, 0x15, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, + 0x6c, 0x6f, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, + 0x65, 0x72, 0x69, 0x6f, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x70, 0x69, 0x6e, 0x67, + 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x12, + 0x5c, 0x0a, 0x19, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x56, 0x0a, + 0x13, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x5a, 0x65, 0x72, 0x6f, + 0x61, 0x62, 0x6c, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x11, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x46, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x51, 0x0a, 0x10, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, + 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x5a, 0x65, 0x72, 0x6f, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x41, 0x0a, 0x0f, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x5f, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x43, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x72, + 0x78, 0x31, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x72, 0x78, + 0x31, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x54, 0x0a, 0x14, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x72, 0x78, 0x31, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x51, 0x0a, 0x13, + 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x72, + 0x78, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, + 0x43, 0x0a, 0x0d, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x72, 0x78, 0x32, 0x46, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x12, 0x46, 0x0a, 0x1a, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, + 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, + 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x04, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, + 0x10, 0x60, 0x52, 0x18, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x72, 0x65, 0x73, 0x65, + 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0e, + 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, 0x74, 0x79, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, + 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, + 0x6d, 0x61, 0x78, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x15, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x33, 0x32, 0x5f, 0x62, 0x69, 0x74, 0x5f, + 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x6f, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, + 0x33, 0x32, 0x42, 0x69, 0x74, 0x46, 0x43, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x75, 0x73, 0x65, + 0x5f, 0x61, 0x64, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x75, 0x73, 0x65, 0x41, 0x64, + 0x72, 0x12, 0x3e, 0x0a, 0x0a, 0x61, 0x64, 0x72, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x61, 0x64, 0x72, 0x4d, 0x61, 0x72, 0x67, 0x69, + 0x6e, 0x12, 0x3b, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x66, 0x5f, 0x63, 0x6e, + 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x46, 0x43, 0x6e, 0x74, 0x12, 0x51, + 0x0a, 0x17, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, + 0x79, 0x12, 0x56, 0x0a, 0x18, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x16, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x12, 0x48, 0x0a, 0x11, 0x64, 0x65, 0x73, + 0x69, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x52, 0x78, 0x31, 0x44, 0x65, + 0x6c, 0x61, 0x79, 0x12, 0x63, 0x0a, 0x1c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x72, + 0x78, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, + 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x52, 0x78, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, + 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x60, 0x0a, 0x1b, 0x64, 0x65, 0x73, 0x69, + 0x72, 0x65, 0x64, 0x5f, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, + 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x17, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x52, 0x78, 0x32, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x52, 0x0a, 0x15, 0x64, 0x65, + 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x64, 0x65, 0x73, 0x69, 0x72, + 0x65, 0x64, 0x52, 0x78, 0x32, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x5d, + 0x0a, 0x16, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, + 0x74, 0x79, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, + 0x63, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, + 0x64, 0x4d, 0x61, 0x78, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x6c, 0x0a, + 0x1e, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, + 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, + 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x1a, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x41, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x6c, 0x0a, 0x1e, 0x64, + 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x64, + 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x18, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, + 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, 0x64, + 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x41, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, + 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x6b, 0x0a, 0x21, 0x64, 0x65, 0x73, + 0x69, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x1b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, + 0x64, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x65, 0x0a, 0x1b, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, + 0x64, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x5a, 0x65, 0x72, + 0x6f, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x18, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x50, 0x69, 0x6e, 0x67, + 0x53, 0x6c, 0x6f, 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x60, 0x0a, + 0x18, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, + 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x5a, 0x65, 0x72, 0x6f, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, + 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, + 0x49, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65, + 0x69, 0x72, 0x70, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x45, 0x49, 0x52, 0x50, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x64, 0x65, 0x73, 0x69, + 0x72, 0x65, 0x64, 0x4d, 0x61, 0x78, 0x45, 0x69, 0x72, 0x70, 0x12, 0x57, 0x0a, 0x1b, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x5f, 0x62, 0x5f, 0x63, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x42, 0x43, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x12, 0x45, 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x77, + 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, + 0x6b, 0x44, 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x77, 0x65, 0x6c, + 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x03, 0x61, 0x64, 0x72, 0x18, 0x22, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x03, 0x61, 0x64, 0x72, 0x12, 0x48, 0x0a, 0x12, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x3a, 0x08, + 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x96, 0x28, 0x0a, 0x08, 0x4d, 0x41, 0x43, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x56, 0x0a, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x56, 0x0a, + 0x12, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x0f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x1a, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, + 0x74, 0x12, 0x35, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x76, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x46, 0x43, 0x6e, 0x74, 0x55, 0x70, 0x12, 0x57, 0x0a, 0x15, 0x70, 0x69, 0x6e, 0x67, + 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, + 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, + 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x70, 0x69, + 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, + 0x79, 0x12, 0x65, 0x0a, 0x1c, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, + 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x1a, 0x70, 0x65, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x45, 0x0a, 0x10, 0x71, 0x75, 0x65, 0x75, + 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x0f, + 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, + 0x45, 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x12, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, + 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4a, 0x6f, 0x69, + 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x10, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x4a, + 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x56, 0x0a, 0x14, 0x70, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x12, 0x70, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x78, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x5f, + 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x12, 0x72, 0x78, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x4d, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x70, + 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, 0x69, 0x6e, + 0x6b, 0x73, 0x12, 0x53, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, + 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x66, 0x0a, 0x22, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x1e, 0x6c, 0x61, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x74, 0x12, + 0x72, 0x0a, 0x1e, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x72, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, + 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, 0x01, 0x09, 0x10, 0x0f, + 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x1a, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x41, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x1d, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x64, 0x72, 0x5f, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, + 0x01, 0x08, 0x10, 0x0f, 0x22, 0x04, 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x19, 0x72, 0x65, 0x6a, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x41, 0x64, 0x72, 0x54, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x14, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x13, 0x20, + 0x03, 0x28, 0x04, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x22, 0x06, 0x32, 0x04, 0x28, + 0xa0, 0x8d, 0x06, 0x52, 0x13, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x46, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x74, 0x18, 0x14, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, + 0x6c, 0x61, 0x73, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x74, 0x12, 0x6f, + 0x0a, 0x19, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x6a, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, + 0x35, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x18, 0x16, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x64, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x46, 0x43, 0x6e, 0x74, 0x55, 0x70, 0x12, 0x69, 0x0a, 0x1e, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, + 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x52, 0x1b, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x63, 0x43, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x1a, 0x83, 0x02, 0x0a, 0x0b, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x51, 0x0a, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x4c, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x72, 0x78, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x72, 0x78, 0x44, 0x65, 0x6c, + 0x61, 0x79, 0x12, 0x2f, 0x0a, 0x07, 0x63, 0x66, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x46, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x06, 0x63, 0x66, 0x4c, + 0x69, 0x73, 0x74, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, + 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, + 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x09, 0x10, + 0x0a, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x1a, 0xd1, 0x07, 0x0a, 0x0a, 0x4a, 0x6f, 0x69, 0x6e, + 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x23, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x10, 0x11, + 0x18, 0x21, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, + 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, + 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, + 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0xed, 0x02, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd1, 0x02, 0xfa, 0x42, 0x06, + 0x7a, 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, + 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, + 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, + 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, + 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, + 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, + 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x92, 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, + 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, + 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0xe7, 0x02, 0x0a, 0x06, 0x6e, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, + 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, + 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, + 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, + 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, + 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, + 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, + 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, + 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, + 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, + 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x6e, 0x65, 0x74, 0x49, + 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x1a, 0xf9, 0x07, 0x0a, 0x0d, + 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, + 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x57, 0x0a, 0x08, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, + 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x2e, 0x54, 0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0x52, 0x0a, 0x0b, 0x72, 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x2e, 0x52, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x72, 0x78, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, + 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, + 0x18, 0xff, 0x01, 0x52, 0x12, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0x53, 0x0a, 0x0a, 0x54, 0x78, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, + 0x74, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x0a, 0x1a, 0xe0, 0x03, 0x0a, + 0x0a, 0x52, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x0b, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x73, 0x73, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x73, 0x73, 0x69, 0x12, 0x10, 0x0a, + 0x03, 0x73, 0x6e, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x73, 0x6e, 0x72, 0x12, + 0x6a, 0x0a, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x43, + 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x16, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, + 0x68, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x75, + 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0b, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x6b, + 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, + 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x52, 0x78, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, + 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x1a, 0x1c, 0x0a, 0x14, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x09, 0x4a, + 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x0d, 0x10, + 0x0e, 0x4a, 0x04, 0x08, 0x10, 0x10, 0x11, 0x4a, 0x04, 0x08, 0x11, 0x10, 0x12, 0x4a, 0x04, 0x08, + 0x13, 0x10, 0x14, 0x4a, 0x04, 0x08, 0x14, 0x10, 0x15, 0x4a, 0x04, 0x08, 0x63, 0x10, 0x64, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x08, 0x10, + 0x09, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x1a, 0x97, 0x04, 0x0a, 0x0f, 0x44, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4a, 0x0a, 0x07, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, + 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, + 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, + 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x1a, 0xee, + 0x02, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x54, 0x0a, 0x05, 0x6d, 0x5f, + 0x68, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x48, 0x44, 0x52, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6d, 0x48, 0x64, 0x72, + 0x12, 0x5c, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0x44, + 0x0a, 0x04, 0x4d, 0x48, 0x44, 0x52, 0x12, 0x36, 0x0a, 0x06, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x4a, 0x04, + 0x08, 0x02, 0x10, 0x03, 0x1a, 0x5d, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x12, 0x1f, 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x05, 0x66, 0x50, + 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x66, 0x5f, 0x63, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x46, 0x43, 0x6e, + 0x74, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, + 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x08, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x07, 0x10, + 0x08, 0x1a, 0xc9, 0x01, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x12, 0x56, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x56, 0x0a, 0x13, 0x6d, + 0x61, 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x1a, 0x64, 0x0a, + 0x0e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, + 0x48, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, + 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, + 0x01, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x01, 0x10, 0x01, 0x1a, 0x72, 0x0a, 0x1b, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, + 0x01, 0x22, 0xcb, 0x01, 0x0a, 0x1b, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, + 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x32, 0x13, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, + 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x33, 0x32, 0x7d, 0x24, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x66, 0x72, 0x6f, + 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x35, + 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x54, 0x6f, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, + 0xd7, 0x21, 0x0a, 0x09, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, 0x0a, + 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, + 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, + 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x80, 0x01, 0x0a, 0x0a, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, + 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, + 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4c, 0x0a, + 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, + 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x12, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, + 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x49, 0x64, 0x12, 0xc5, 0x01, 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, + 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, + 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, + 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, + 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, + 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, + 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, + 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x14, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x41, 0x0a, 0x18, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x6b, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x15, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0xcd, 0x01, + 0x0a, 0x1a, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, + 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, + 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, + 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, + 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, + 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, + 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, + 0x7c, 0x5e, 0x24, 0x52, 0x18, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, + 0x1c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x30, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x19, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x4b, 0x65, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x3b, 0x0a, 0x15, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x31, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, + 0x52, 0x13, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0xbf, 0x01, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, + 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, + 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, + 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, + 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, + 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, + 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, + 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x11, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x74, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x42, 0x2c, 0xfa, 0x42, 0x29, 0x9a, 0x01, 0x26, 0x22, 0x24, 0x72, 0x22, + 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, + 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, + 0x7d, 0x24, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, + 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, + 0x12, 0x28, 0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x5f, 0x62, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x63, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x43, 0x12, 0x4d, 0x0a, 0x0f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, + 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x0e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x13, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, 0x70, + 0x68, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x50, + 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x11, 0x66, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0f, 0x66, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x23, + 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x2c, 0x0a, + 0x12, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, + 0x63, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72, 0x65, 0x73, 0x65, 0x74, + 0x73, 0x4a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x72, + 0x6f, 0x6f, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x52, 0x6f, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x4b, 0x65, + 0x79, 0x73, 0x12, 0xe7, 0x02, 0x0a, 0x06, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x17, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, + 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, + 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, + 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, + 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, + 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, + 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, + 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0c, + 0x6d, 0x61, 0x63, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x18, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x0b, 0x6d, 0x61, 0x63, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x35, 0x0a, 0x09, + 0x6d, 0x61, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x6d, 0x61, 0x63, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, + 0x61, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x4d, 0x61, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0f, + 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0e, + 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, + 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, + 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x76, 0x4e, + 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x76, + 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0d, 0x75, + 0x73, 0x65, 0x64, 0x44, 0x65, 0x76, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, + 0x1e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x4e, + 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x6a, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x30, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6c, + 0x61, 0x73, 0x74, 0x52, 0x6a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x30, 0x12, 0x25, 0x0a, 0x0f, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x72, 0x6a, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x31, 0x18, 0x20, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x6a, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x31, 0x12, 0x58, 0x0a, 0x1b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x76, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4b, 0x0a, 0x0b, + 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0e, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x02, 0x10, 0x00, 0x52, 0x0a, 0x70, + 0x6f, 0x77, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x62, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, + 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x0a, 0x0a, 0x1d, 0x00, 0x00, 0x80, 0x3f, 0x2d, 0x00, + 0x00, 0x00, 0x00, 0x52, 0x11, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x50, 0x65, 0x72, 0x63, + 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x24, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, + 0x65, 0x0a, 0x1c, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, + 0x28, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x1a, 0x71, 0x75, 0x65, 0x75, + 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x73, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, + 0x12, 0x51, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, + 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, + 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, + 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x75, + 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x12, 0x67, 0x0a, 0x19, 0x63, 0x6c, 0x61, 0x69, 0x6d, + 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x17, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x41, 0x75, + 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x5f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, + 0x6b, 0x69, 0x70, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, + 0x12, 0x5b, 0x0a, 0x1c, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x5f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x19, 0x73, 0x6b, 0x69, 0x70, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, + 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x3d, 0x0a, + 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x35, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3c, 0x0a, 0x0c, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x36, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, + 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x41, 0x74, 0x12, 0x4f, 0x0a, 0x0d, 0x73, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x37, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x0c, 0x73, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x69, 0x0a, 0x19, 0x6c, + 0x6f, 0x72, 0x61, 0x5f, 0x61, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4c, 0x6f, 0x52, 0x61, 0x41, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x16, + 0x6c, 0x6f, 0x72, 0x61, 0x41, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x56, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x25, 0x10, 0x26, 0x4a, 0x04, 0x08, + 0x26, 0x10, 0x27, 0x4a, 0x04, 0x08, 0x27, 0x10, 0x28, 0x22, 0x48, 0x0a, 0x0a, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0a, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x22, 0xf2, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x50, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0xc8, 0x01, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xac, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, + 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, + 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, + 0x72, 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x19, 0x4a, 0x0a, + 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, + 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, + 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x5c, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x22, 0xa8, 0x02, 0x0a, 0x23, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x65, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, + 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, + 0x99, 0x01, 0x0a, 0x17, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x73, + 0x74, 0x53, 0x65, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x03, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x3c, 0x0a, + 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x41, 0x74, 0x22, 0xa6, 0x01, 0x0a, 0x13, + 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xcb, 0x03, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x46, 0x6f, 0x72, 0x45, 0x55, 0x49, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0xd0, + 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, + 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, + 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, + 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, + 0x69, 0x12, 0xce, 0x01, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, + 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, + 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, + 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, + 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, + 0x75, 0x69, 0x22, 0x97, 0x03, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x0f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, + 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0xbd, 0x01, 0x0a, 0x05, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0xa6, 0x01, 0xfa, 0x42, 0xa2, 0x01, 0x72, + 0x9f, 0x01, 0x52, 0x00, 0x52, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x52, + 0x0a, 0x2d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x52, 0x08, 0x6a, 0x6f, 0x69, + 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x09, 0x2d, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, + 0x52, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x08, 0x2d, 0x64, 0x65, 0x76, 0x5f, + 0x65, 0x75, 0x69, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x2d, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, + 0x61, 0x74, 0x52, 0x0d, 0x2d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61, + 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, + 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x22, 0x94, 0x01, 0x0a, + 0x13, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x22, 0xae, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x41, 0x6e, 0x64, + 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xbc, 0x01, 0x0a, 0x11, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x65, 0x6e, + 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x39, + 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x28, 0x0a, 0x0b, 0x6d, 0x61, 0x70, + 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0a, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, + 0x4b, 0x65, 0x79, 0x22, 0xb8, 0x01, 0x0a, 0x17, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, + 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x0f, 0x66, 0x69, 0x6c, 0x65, + 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x42, 0x2b, 0xfa, 0x42, 0x28, 0x92, 0x01, 0x25, 0x10, 0x64, 0x18, 0x01, 0x22, 0x1f, 0x72, + 0x1d, 0x32, 0x1b, 0x5e, 0x28, 0x3f, 0x3a, 0x5c, 0x2e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x7b, 0x31, 0x2c, 0x31, 0x36, 0x7d, 0x29, 0x7b, 0x31, 0x2c, 0x32, 0x7d, 0x24, 0x52, 0x0e, + 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xfe, + 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x7d, 0x0a, 0x07, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x42, 0x2c, 0xfa, 0x42, 0x29, 0x9a, 0x01, 0x26, 0x22, 0x24, 0x72, 0x22, 0x18, + 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, + 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, + 0x24, 0x52, 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x1a, 0x63, 0x0a, 0x0c, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0xdd, 0x01, 0x0a, 0x1f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, + 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, + 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, + 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x60, 0x0a, + 0x16, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x13, 0x65, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x2a, + 0x55, 0x0a, 0x0a, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x11, 0x0a, + 0x0d, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, + 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x42, 0x41, 0x54, 0x54, 0x45, 0x52, + 0x59, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x45, 0x58, 0x54, + 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x18, 0x01, 0x2a, + 0x05, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_end_device_proto_rawDescOnce sync.Once + file_lorawan_stack_api_end_device_proto_rawDescData = file_lorawan_stack_api_end_device_proto_rawDesc +) + +func file_lorawan_stack_api_end_device_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_end_device_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_end_device_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_end_device_proto_rawDescData) + }) + return file_lorawan_stack_api_end_device_proto_rawDescData +} + +var file_lorawan_stack_api_end_device_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_lorawan_stack_api_end_device_proto_msgTypes = make([]protoimpl.MessageInfo, 44) +var file_lorawan_stack_api_end_device_proto_goTypes = []interface{}{ + (PowerState)(0), // 0: ttn.lorawan.v3.PowerState + (*Session)(nil), // 1: ttn.lorawan.v3.Session + (*BoolValue)(nil), // 2: ttn.lorawan.v3.BoolValue + (*MACParameters)(nil), // 3: ttn.lorawan.v3.MACParameters + (*EndDeviceVersion)(nil), // 4: ttn.lorawan.v3.EndDeviceVersion + (*ADRSettings)(nil), // 5: ttn.lorawan.v3.ADRSettings + (*MACSettings)(nil), // 6: ttn.lorawan.v3.MACSettings + (*MACState)(nil), // 7: ttn.lorawan.v3.MACState + (*EndDeviceAuthenticationCode)(nil), // 8: ttn.lorawan.v3.EndDeviceAuthenticationCode + (*EndDevice)(nil), // 9: ttn.lorawan.v3.EndDevice + (*EndDevices)(nil), // 10: ttn.lorawan.v3.EndDevices + (*DevAddrPrefix)(nil), // 11: ttn.lorawan.v3.DevAddrPrefix + (*CreateEndDeviceRequest)(nil), // 12: ttn.lorawan.v3.CreateEndDeviceRequest + (*UpdateEndDeviceRequest)(nil), // 13: ttn.lorawan.v3.UpdateEndDeviceRequest + (*BatchUpdateEndDeviceLastSeenRequest)(nil), // 14: ttn.lorawan.v3.BatchUpdateEndDeviceLastSeenRequest + (*GetEndDeviceRequest)(nil), // 15: ttn.lorawan.v3.GetEndDeviceRequest + (*GetEndDeviceIdentifiersForEUIsRequest)(nil), // 16: ttn.lorawan.v3.GetEndDeviceIdentifiersForEUIsRequest + (*ListEndDevicesRequest)(nil), // 17: ttn.lorawan.v3.ListEndDevicesRequest + (*SetEndDeviceRequest)(nil), // 18: ttn.lorawan.v3.SetEndDeviceRequest + (*ResetAndGetEndDeviceRequest)(nil), // 19: ttn.lorawan.v3.ResetAndGetEndDeviceRequest + (*EndDeviceTemplate)(nil), // 20: ttn.lorawan.v3.EndDeviceTemplate + (*EndDeviceTemplateFormat)(nil), // 21: ttn.lorawan.v3.EndDeviceTemplateFormat + (*EndDeviceTemplateFormats)(nil), // 22: ttn.lorawan.v3.EndDeviceTemplateFormats + (*ConvertEndDeviceTemplateRequest)(nil), // 23: ttn.lorawan.v3.ConvertEndDeviceTemplateRequest + (*MACParameters_Channel)(nil), // 24: ttn.lorawan.v3.MACParameters.Channel + (*ADRSettings_StaticMode)(nil), // 25: ttn.lorawan.v3.ADRSettings.StaticMode + (*ADRSettings_DynamicMode)(nil), // 26: ttn.lorawan.v3.ADRSettings.DynamicMode + (*ADRSettings_DisabledMode)(nil), // 27: ttn.lorawan.v3.ADRSettings.DisabledMode + (*MACState_JoinRequest)(nil), // 28: ttn.lorawan.v3.MACState.JoinRequest + (*MACState_JoinAccept)(nil), // 29: ttn.lorawan.v3.MACState.JoinAccept + (*MACState_UplinkMessage)(nil), // 30: ttn.lorawan.v3.MACState.UplinkMessage + (*MACState_DownlinkMessage)(nil), // 31: ttn.lorawan.v3.MACState.DownlinkMessage + (*MACState_DataRateRange)(nil), // 32: ttn.lorawan.v3.MACState.DataRateRange + (*MACState_DataRateRanges)(nil), // 33: ttn.lorawan.v3.MACState.DataRateRanges + nil, // 34: ttn.lorawan.v3.MACState.RejectedDataRateRangesEntry + (*MACState_UplinkMessage_TxSettings)(nil), // 35: ttn.lorawan.v3.MACState.UplinkMessage.TxSettings + (*MACState_UplinkMessage_RxMetadata)(nil), // 36: ttn.lorawan.v3.MACState.UplinkMessage.RxMetadata + (*MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata)(nil), // 37: ttn.lorawan.v3.MACState.UplinkMessage.RxMetadata.PacketBrokerMetadata + (*MACState_DownlinkMessage_Message)(nil), // 38: ttn.lorawan.v3.MACState.DownlinkMessage.Message + (*MACState_DownlinkMessage_Message_MHDR)(nil), // 39: ttn.lorawan.v3.MACState.DownlinkMessage.Message.MHDR + (*MACState_DownlinkMessage_Message_MACPayload)(nil), // 40: ttn.lorawan.v3.MACState.DownlinkMessage.Message.MACPayload + nil, // 41: ttn.lorawan.v3.EndDevice.AttributesEntry + nil, // 42: ttn.lorawan.v3.EndDevice.LocationsEntry + (*BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate)(nil), // 43: ttn.lorawan.v3.BatchUpdateEndDeviceLastSeenRequest.EndDeviceLastSeenUpdate + nil, // 44: ttn.lorawan.v3.EndDeviceTemplateFormats.FormatsEntry + (*SessionKeys)(nil), // 45: ttn.lorawan.v3.SessionKeys + (*timestamppb.Timestamp)(nil), // 46: google.protobuf.Timestamp + (*ApplicationDownlink)(nil), // 47: ttn.lorawan.v3.ApplicationDownlink + (DataRateIndex)(0), // 48: ttn.lorawan.v3.DataRateIndex + (RxDelay)(0), // 49: ttn.lorawan.v3.RxDelay + (DataRateOffset)(0), // 50: ttn.lorawan.v3.DataRateOffset + (AggregatedDutyCycle)(0), // 51: ttn.lorawan.v3.AggregatedDutyCycle + (RejoinTimeExponent)(0), // 52: ttn.lorawan.v3.RejoinTimeExponent + (RejoinCountExponent)(0), // 53: ttn.lorawan.v3.RejoinCountExponent + (*ADRAckLimitExponentValue)(nil), // 54: ttn.lorawan.v3.ADRAckLimitExponentValue + (*ADRAckDelayExponentValue)(nil), // 55: ttn.lorawan.v3.ADRAckDelayExponentValue + (*DataRateIndexValue)(nil), // 56: ttn.lorawan.v3.DataRateIndexValue + (*EndDeviceVersionIdentifiers)(nil), // 57: ttn.lorawan.v3.EndDeviceVersionIdentifiers + (MACVersion)(0), // 58: ttn.lorawan.v3.MACVersion + (PHYVersion)(0), // 59: ttn.lorawan.v3.PHYVersion + (*MessagePayloadFormatters)(nil), // 60: ttn.lorawan.v3.MessagePayloadFormatters + (*durationpb.Duration)(nil), // 61: google.protobuf.Duration + (*PingSlotPeriodValue)(nil), // 62: ttn.lorawan.v3.PingSlotPeriodValue + (*ZeroableFrequencyValue)(nil), // 63: ttn.lorawan.v3.ZeroableFrequencyValue + (*RxDelayValue)(nil), // 64: ttn.lorawan.v3.RxDelayValue + (*DataRateOffsetValue)(nil), // 65: ttn.lorawan.v3.DataRateOffsetValue + (*FrequencyValue)(nil), // 66: ttn.lorawan.v3.FrequencyValue + (*AggregatedDutyCycleValue)(nil), // 67: ttn.lorawan.v3.AggregatedDutyCycleValue + (*wrapperspb.FloatValue)(nil), // 68: google.protobuf.FloatValue + (*wrapperspb.UInt32Value)(nil), // 69: google.protobuf.UInt32Value + (*DeviceEIRPValue)(nil), // 70: ttn.lorawan.v3.DeviceEIRPValue + (Class)(0), // 71: ttn.lorawan.v3.Class + (*MACCommand)(nil), // 72: ttn.lorawan.v3.MACCommand + (MACCommandIdentifier)(0), // 73: ttn.lorawan.v3.MACCommandIdentifier + (*EndDeviceIdentifiers)(nil), // 74: ttn.lorawan.v3.EndDeviceIdentifiers + (*Picture)(nil), // 75: ttn.lorawan.v3.Picture + (*RootKeys)(nil), // 76: ttn.lorawan.v3.RootKeys + (*structpb.Struct)(nil), // 77: google.protobuf.Struct + (*wrapperspb.BoolValue)(nil), // 78: google.protobuf.BoolValue + (*LoRaAllianceProfileIdentifiers)(nil), // 79: ttn.lorawan.v3.LoRaAllianceProfileIdentifiers + (*fieldmaskpb.FieldMask)(nil), // 80: google.protobuf.FieldMask + (*ApplicationIdentifiers)(nil), // 81: ttn.lorawan.v3.ApplicationIdentifiers + (*DLSettings)(nil), // 82: ttn.lorawan.v3.DLSettings + (*CFList)(nil), // 83: ttn.lorawan.v3.CFList + (*Message)(nil), // 84: ttn.lorawan.v3.Message + (*DataRate)(nil), // 85: ttn.lorawan.v3.DataRate + (*GatewayIdentifiers)(nil), // 86: ttn.lorawan.v3.GatewayIdentifiers + (DownlinkPathConstraint)(0), // 87: ttn.lorawan.v3.DownlinkPathConstraint + (MType)(0), // 88: ttn.lorawan.v3.MType + (*Location)(nil), // 89: ttn.lorawan.v3.Location +} +var file_lorawan_stack_api_end_device_proto_depIdxs = []int32{ + 45, // 0: ttn.lorawan.v3.Session.keys:type_name -> ttn.lorawan.v3.SessionKeys + 46, // 1: ttn.lorawan.v3.Session.started_at:type_name -> google.protobuf.Timestamp + 47, // 2: ttn.lorawan.v3.Session.queued_application_downlinks:type_name -> ttn.lorawan.v3.ApplicationDownlink + 48, // 3: ttn.lorawan.v3.MACParameters.adr_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 49, // 4: ttn.lorawan.v3.MACParameters.rx1_delay:type_name -> ttn.lorawan.v3.RxDelay + 50, // 5: ttn.lorawan.v3.MACParameters.rx1_data_rate_offset:type_name -> ttn.lorawan.v3.DataRateOffset + 48, // 6: ttn.lorawan.v3.MACParameters.rx2_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 51, // 7: ttn.lorawan.v3.MACParameters.max_duty_cycle:type_name -> ttn.lorawan.v3.AggregatedDutyCycle + 52, // 8: ttn.lorawan.v3.MACParameters.rejoin_time_periodicity:type_name -> ttn.lorawan.v3.RejoinTimeExponent + 53, // 9: ttn.lorawan.v3.MACParameters.rejoin_count_periodicity:type_name -> ttn.lorawan.v3.RejoinCountExponent + 48, // 10: ttn.lorawan.v3.MACParameters.ping_slot_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 24, // 11: ttn.lorawan.v3.MACParameters.channels:type_name -> ttn.lorawan.v3.MACParameters.Channel + 2, // 12: ttn.lorawan.v3.MACParameters.uplink_dwell_time:type_name -> ttn.lorawan.v3.BoolValue + 2, // 13: ttn.lorawan.v3.MACParameters.downlink_dwell_time:type_name -> ttn.lorawan.v3.BoolValue + 54, // 14: ttn.lorawan.v3.MACParameters.adr_ack_limit_exponent:type_name -> ttn.lorawan.v3.ADRAckLimitExponentValue + 55, // 15: ttn.lorawan.v3.MACParameters.adr_ack_delay_exponent:type_name -> ttn.lorawan.v3.ADRAckDelayExponentValue + 56, // 16: ttn.lorawan.v3.MACParameters.ping_slot_data_rate_index_value:type_name -> ttn.lorawan.v3.DataRateIndexValue + 57, // 17: ttn.lorawan.v3.EndDeviceVersion.ids:type_name -> ttn.lorawan.v3.EndDeviceVersionIdentifiers + 58, // 18: ttn.lorawan.v3.EndDeviceVersion.lorawan_version:type_name -> ttn.lorawan.v3.MACVersion + 59, // 19: ttn.lorawan.v3.EndDeviceVersion.lorawan_phy_version:type_name -> ttn.lorawan.v3.PHYVersion + 6, // 20: ttn.lorawan.v3.EndDeviceVersion.default_mac_settings:type_name -> ttn.lorawan.v3.MACSettings + 60, // 21: ttn.lorawan.v3.EndDeviceVersion.default_formatters:type_name -> ttn.lorawan.v3.MessagePayloadFormatters + 25, // 22: ttn.lorawan.v3.ADRSettings.static:type_name -> ttn.lorawan.v3.ADRSettings.StaticMode + 26, // 23: ttn.lorawan.v3.ADRSettings.dynamic:type_name -> ttn.lorawan.v3.ADRSettings.DynamicMode + 27, // 24: ttn.lorawan.v3.ADRSettings.disabled:type_name -> ttn.lorawan.v3.ADRSettings.DisabledMode + 61, // 25: ttn.lorawan.v3.MACSettings.class_b_timeout:type_name -> google.protobuf.Duration + 62, // 26: ttn.lorawan.v3.MACSettings.ping_slot_periodicity:type_name -> ttn.lorawan.v3.PingSlotPeriodValue + 56, // 27: ttn.lorawan.v3.MACSettings.ping_slot_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndexValue + 63, // 28: ttn.lorawan.v3.MACSettings.ping_slot_frequency:type_name -> ttn.lorawan.v3.ZeroableFrequencyValue + 63, // 29: ttn.lorawan.v3.MACSettings.beacon_frequency:type_name -> ttn.lorawan.v3.ZeroableFrequencyValue + 61, // 30: ttn.lorawan.v3.MACSettings.class_c_timeout:type_name -> google.protobuf.Duration + 64, // 31: ttn.lorawan.v3.MACSettings.rx1_delay:type_name -> ttn.lorawan.v3.RxDelayValue + 65, // 32: ttn.lorawan.v3.MACSettings.rx1_data_rate_offset:type_name -> ttn.lorawan.v3.DataRateOffsetValue + 56, // 33: ttn.lorawan.v3.MACSettings.rx2_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndexValue + 66, // 34: ttn.lorawan.v3.MACSettings.rx2_frequency:type_name -> ttn.lorawan.v3.FrequencyValue + 67, // 35: ttn.lorawan.v3.MACSettings.max_duty_cycle:type_name -> ttn.lorawan.v3.AggregatedDutyCycleValue + 2, // 36: ttn.lorawan.v3.MACSettings.supports_32_bit_f_cnt:type_name -> ttn.lorawan.v3.BoolValue + 2, // 37: ttn.lorawan.v3.MACSettings.use_adr:type_name -> ttn.lorawan.v3.BoolValue + 68, // 38: ttn.lorawan.v3.MACSettings.adr_margin:type_name -> google.protobuf.FloatValue + 2, // 39: ttn.lorawan.v3.MACSettings.resets_f_cnt:type_name -> ttn.lorawan.v3.BoolValue + 61, // 40: ttn.lorawan.v3.MACSettings.status_time_periodicity:type_name -> google.protobuf.Duration + 69, // 41: ttn.lorawan.v3.MACSettings.status_count_periodicity:type_name -> google.protobuf.UInt32Value + 64, // 42: ttn.lorawan.v3.MACSettings.desired_rx1_delay:type_name -> ttn.lorawan.v3.RxDelayValue + 65, // 43: ttn.lorawan.v3.MACSettings.desired_rx1_data_rate_offset:type_name -> ttn.lorawan.v3.DataRateOffsetValue + 56, // 44: ttn.lorawan.v3.MACSettings.desired_rx2_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndexValue + 66, // 45: ttn.lorawan.v3.MACSettings.desired_rx2_frequency:type_name -> ttn.lorawan.v3.FrequencyValue + 67, // 46: ttn.lorawan.v3.MACSettings.desired_max_duty_cycle:type_name -> ttn.lorawan.v3.AggregatedDutyCycleValue + 54, // 47: ttn.lorawan.v3.MACSettings.desired_adr_ack_limit_exponent:type_name -> ttn.lorawan.v3.ADRAckLimitExponentValue + 55, // 48: ttn.lorawan.v3.MACSettings.desired_adr_ack_delay_exponent:type_name -> ttn.lorawan.v3.ADRAckDelayExponentValue + 56, // 49: ttn.lorawan.v3.MACSettings.desired_ping_slot_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndexValue + 63, // 50: ttn.lorawan.v3.MACSettings.desired_ping_slot_frequency:type_name -> ttn.lorawan.v3.ZeroableFrequencyValue + 63, // 51: ttn.lorawan.v3.MACSettings.desired_beacon_frequency:type_name -> ttn.lorawan.v3.ZeroableFrequencyValue + 70, // 52: ttn.lorawan.v3.MACSettings.desired_max_eirp:type_name -> ttn.lorawan.v3.DeviceEIRPValue + 61, // 53: ttn.lorawan.v3.MACSettings.class_b_c_downlink_interval:type_name -> google.protobuf.Duration + 2, // 54: ttn.lorawan.v3.MACSettings.uplink_dwell_time:type_name -> ttn.lorawan.v3.BoolValue + 2, // 55: ttn.lorawan.v3.MACSettings.downlink_dwell_time:type_name -> ttn.lorawan.v3.BoolValue + 5, // 56: ttn.lorawan.v3.MACSettings.adr:type_name -> ttn.lorawan.v3.ADRSettings + 2, // 57: ttn.lorawan.v3.MACSettings.schedule_downlinks:type_name -> ttn.lorawan.v3.BoolValue + 3, // 58: ttn.lorawan.v3.MACState.current_parameters:type_name -> ttn.lorawan.v3.MACParameters + 3, // 59: ttn.lorawan.v3.MACState.desired_parameters:type_name -> ttn.lorawan.v3.MACParameters + 71, // 60: ttn.lorawan.v3.MACState.device_class:type_name -> ttn.lorawan.v3.Class + 58, // 61: ttn.lorawan.v3.MACState.lorawan_version:type_name -> ttn.lorawan.v3.MACVersion + 46, // 62: ttn.lorawan.v3.MACState.last_confirmed_downlink_at:type_name -> google.protobuf.Timestamp + 62, // 63: ttn.lorawan.v3.MACState.ping_slot_periodicity:type_name -> ttn.lorawan.v3.PingSlotPeriodValue + 47, // 64: ttn.lorawan.v3.MACState.pending_application_downlink:type_name -> ttn.lorawan.v3.ApplicationDownlink + 72, // 65: ttn.lorawan.v3.MACState.queued_responses:type_name -> ttn.lorawan.v3.MACCommand + 72, // 66: ttn.lorawan.v3.MACState.pending_requests:type_name -> ttn.lorawan.v3.MACCommand + 29, // 67: ttn.lorawan.v3.MACState.queued_join_accept:type_name -> ttn.lorawan.v3.MACState.JoinAccept + 28, // 68: ttn.lorawan.v3.MACState.pending_join_request:type_name -> ttn.lorawan.v3.MACState.JoinRequest + 30, // 69: ttn.lorawan.v3.MACState.recent_uplinks:type_name -> ttn.lorawan.v3.MACState.UplinkMessage + 31, // 70: ttn.lorawan.v3.MACState.recent_downlinks:type_name -> ttn.lorawan.v3.MACState.DownlinkMessage + 46, // 71: ttn.lorawan.v3.MACState.last_network_initiated_downlink_at:type_name -> google.protobuf.Timestamp + 48, // 72: ttn.lorawan.v3.MACState.rejected_adr_data_rate_indexes:type_name -> ttn.lorawan.v3.DataRateIndex + 46, // 73: ttn.lorawan.v3.MACState.last_downlink_at:type_name -> google.protobuf.Timestamp + 34, // 74: ttn.lorawan.v3.MACState.rejected_data_rate_ranges:type_name -> ttn.lorawan.v3.MACState.RejectedDataRateRangesEntry + 73, // 75: ttn.lorawan.v3.MACState.recent_mac_command_identifiers:type_name -> ttn.lorawan.v3.MACCommandIdentifier + 46, // 76: ttn.lorawan.v3.EndDeviceAuthenticationCode.valid_from:type_name -> google.protobuf.Timestamp + 46, // 77: ttn.lorawan.v3.EndDeviceAuthenticationCode.valid_to:type_name -> google.protobuf.Timestamp + 74, // 78: ttn.lorawan.v3.EndDevice.ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 46, // 79: ttn.lorawan.v3.EndDevice.created_at:type_name -> google.protobuf.Timestamp + 46, // 80: ttn.lorawan.v3.EndDevice.updated_at:type_name -> google.protobuf.Timestamp + 41, // 81: ttn.lorawan.v3.EndDevice.attributes:type_name -> ttn.lorawan.v3.EndDevice.AttributesEntry + 57, // 82: ttn.lorawan.v3.EndDevice.version_ids:type_name -> ttn.lorawan.v3.EndDeviceVersionIdentifiers + 42, // 83: ttn.lorawan.v3.EndDevice.locations:type_name -> ttn.lorawan.v3.EndDevice.LocationsEntry + 75, // 84: ttn.lorawan.v3.EndDevice.picture:type_name -> ttn.lorawan.v3.Picture + 58, // 85: ttn.lorawan.v3.EndDevice.lorawan_version:type_name -> ttn.lorawan.v3.MACVersion + 59, // 86: ttn.lorawan.v3.EndDevice.lorawan_phy_version:type_name -> ttn.lorawan.v3.PHYVersion + 76, // 87: ttn.lorawan.v3.EndDevice.root_keys:type_name -> ttn.lorawan.v3.RootKeys + 6, // 88: ttn.lorawan.v3.EndDevice.mac_settings:type_name -> ttn.lorawan.v3.MACSettings + 7, // 89: ttn.lorawan.v3.EndDevice.mac_state:type_name -> ttn.lorawan.v3.MACState + 7, // 90: ttn.lorawan.v3.EndDevice.pending_mac_state:type_name -> ttn.lorawan.v3.MACState + 1, // 91: ttn.lorawan.v3.EndDevice.session:type_name -> ttn.lorawan.v3.Session + 1, // 92: ttn.lorawan.v3.EndDevice.pending_session:type_name -> ttn.lorawan.v3.Session + 46, // 93: ttn.lorawan.v3.EndDevice.last_dev_status_received_at:type_name -> google.protobuf.Timestamp + 0, // 94: ttn.lorawan.v3.EndDevice.power_state:type_name -> ttn.lorawan.v3.PowerState + 68, // 95: ttn.lorawan.v3.EndDevice.battery_percentage:type_name -> google.protobuf.FloatValue + 47, // 96: ttn.lorawan.v3.EndDevice.queued_application_downlinks:type_name -> ttn.lorawan.v3.ApplicationDownlink + 60, // 97: ttn.lorawan.v3.EndDevice.formatters:type_name -> ttn.lorawan.v3.MessagePayloadFormatters + 77, // 98: ttn.lorawan.v3.EndDevice.provisioning_data:type_name -> google.protobuf.Struct + 8, // 99: ttn.lorawan.v3.EndDevice.claim_authentication_code:type_name -> ttn.lorawan.v3.EndDeviceAuthenticationCode + 78, // 100: ttn.lorawan.v3.EndDevice.skip_payload_crypto_override:type_name -> google.protobuf.BoolValue + 46, // 101: ttn.lorawan.v3.EndDevice.activated_at:type_name -> google.protobuf.Timestamp + 46, // 102: ttn.lorawan.v3.EndDevice.last_seen_at:type_name -> google.protobuf.Timestamp + 79, // 103: ttn.lorawan.v3.EndDevice.lora_alliance_profile_ids:type_name -> ttn.lorawan.v3.LoRaAllianceProfileIdentifiers + 9, // 104: ttn.lorawan.v3.EndDevices.end_devices:type_name -> ttn.lorawan.v3.EndDevice + 9, // 105: ttn.lorawan.v3.CreateEndDeviceRequest.end_device:type_name -> ttn.lorawan.v3.EndDevice + 9, // 106: ttn.lorawan.v3.UpdateEndDeviceRequest.end_device:type_name -> ttn.lorawan.v3.EndDevice + 80, // 107: ttn.lorawan.v3.UpdateEndDeviceRequest.field_mask:type_name -> google.protobuf.FieldMask + 43, // 108: ttn.lorawan.v3.BatchUpdateEndDeviceLastSeenRequest.updates:type_name -> ttn.lorawan.v3.BatchUpdateEndDeviceLastSeenRequest.EndDeviceLastSeenUpdate + 74, // 109: ttn.lorawan.v3.GetEndDeviceRequest.end_device_ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 80, // 110: ttn.lorawan.v3.GetEndDeviceRequest.field_mask:type_name -> google.protobuf.FieldMask + 81, // 111: ttn.lorawan.v3.ListEndDevicesRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 80, // 112: ttn.lorawan.v3.ListEndDevicesRequest.field_mask:type_name -> google.protobuf.FieldMask + 9, // 113: ttn.lorawan.v3.SetEndDeviceRequest.end_device:type_name -> ttn.lorawan.v3.EndDevice + 80, // 114: ttn.lorawan.v3.SetEndDeviceRequest.field_mask:type_name -> google.protobuf.FieldMask + 74, // 115: ttn.lorawan.v3.ResetAndGetEndDeviceRequest.end_device_ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 80, // 116: ttn.lorawan.v3.ResetAndGetEndDeviceRequest.field_mask:type_name -> google.protobuf.FieldMask + 9, // 117: ttn.lorawan.v3.EndDeviceTemplate.end_device:type_name -> ttn.lorawan.v3.EndDevice + 80, // 118: ttn.lorawan.v3.EndDeviceTemplate.field_mask:type_name -> google.protobuf.FieldMask + 44, // 119: ttn.lorawan.v3.EndDeviceTemplateFormats.formats:type_name -> ttn.lorawan.v3.EndDeviceTemplateFormats.FormatsEntry + 57, // 120: ttn.lorawan.v3.ConvertEndDeviceTemplateRequest.end_device_version_ids:type_name -> ttn.lorawan.v3.EndDeviceVersionIdentifiers + 48, // 121: ttn.lorawan.v3.MACParameters.Channel.min_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 48, // 122: ttn.lorawan.v3.MACParameters.Channel.max_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 48, // 123: ttn.lorawan.v3.ADRSettings.StaticMode.data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 68, // 124: ttn.lorawan.v3.ADRSettings.DynamicMode.margin:type_name -> google.protobuf.FloatValue + 56, // 125: ttn.lorawan.v3.ADRSettings.DynamicMode.min_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndexValue + 56, // 126: ttn.lorawan.v3.ADRSettings.DynamicMode.max_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndexValue + 69, // 127: ttn.lorawan.v3.ADRSettings.DynamicMode.min_tx_power_index:type_name -> google.protobuf.UInt32Value + 69, // 128: ttn.lorawan.v3.ADRSettings.DynamicMode.max_tx_power_index:type_name -> google.protobuf.UInt32Value + 69, // 129: ttn.lorawan.v3.ADRSettings.DynamicMode.min_nb_trans:type_name -> google.protobuf.UInt32Value + 69, // 130: ttn.lorawan.v3.ADRSettings.DynamicMode.max_nb_trans:type_name -> google.protobuf.UInt32Value + 82, // 131: ttn.lorawan.v3.MACState.JoinRequest.downlink_settings:type_name -> ttn.lorawan.v3.DLSettings + 49, // 132: ttn.lorawan.v3.MACState.JoinRequest.rx_delay:type_name -> ttn.lorawan.v3.RxDelay + 83, // 133: ttn.lorawan.v3.MACState.JoinRequest.cf_list:type_name -> ttn.lorawan.v3.CFList + 28, // 134: ttn.lorawan.v3.MACState.JoinAccept.request:type_name -> ttn.lorawan.v3.MACState.JoinRequest + 45, // 135: ttn.lorawan.v3.MACState.JoinAccept.keys:type_name -> ttn.lorawan.v3.SessionKeys + 84, // 136: ttn.lorawan.v3.MACState.UplinkMessage.payload:type_name -> ttn.lorawan.v3.Message + 35, // 137: ttn.lorawan.v3.MACState.UplinkMessage.settings:type_name -> ttn.lorawan.v3.MACState.UplinkMessage.TxSettings + 36, // 138: ttn.lorawan.v3.MACState.UplinkMessage.rx_metadata:type_name -> ttn.lorawan.v3.MACState.UplinkMessage.RxMetadata + 46, // 139: ttn.lorawan.v3.MACState.UplinkMessage.received_at:type_name -> google.protobuf.Timestamp + 38, // 140: ttn.lorawan.v3.MACState.DownlinkMessage.payload:type_name -> ttn.lorawan.v3.MACState.DownlinkMessage.Message + 48, // 141: ttn.lorawan.v3.MACState.DataRateRange.min_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 48, // 142: ttn.lorawan.v3.MACState.DataRateRange.max_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 32, // 143: ttn.lorawan.v3.MACState.DataRateRanges.ranges:type_name -> ttn.lorawan.v3.MACState.DataRateRange + 33, // 144: ttn.lorawan.v3.MACState.RejectedDataRateRangesEntry.value:type_name -> ttn.lorawan.v3.MACState.DataRateRanges + 85, // 145: ttn.lorawan.v3.MACState.UplinkMessage.TxSettings.data_rate:type_name -> ttn.lorawan.v3.DataRate + 86, // 146: ttn.lorawan.v3.MACState.UplinkMessage.RxMetadata.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 87, // 147: ttn.lorawan.v3.MACState.UplinkMessage.RxMetadata.downlink_path_constraint:type_name -> ttn.lorawan.v3.DownlinkPathConstraint + 37, // 148: ttn.lorawan.v3.MACState.UplinkMessage.RxMetadata.packet_broker:type_name -> ttn.lorawan.v3.MACState.UplinkMessage.RxMetadata.PacketBrokerMetadata + 39, // 149: ttn.lorawan.v3.MACState.DownlinkMessage.Message.m_hdr:type_name -> ttn.lorawan.v3.MACState.DownlinkMessage.Message.MHDR + 40, // 150: ttn.lorawan.v3.MACState.DownlinkMessage.Message.mac_payload:type_name -> ttn.lorawan.v3.MACState.DownlinkMessage.Message.MACPayload + 88, // 151: ttn.lorawan.v3.MACState.DownlinkMessage.Message.MHDR.m_type:type_name -> ttn.lorawan.v3.MType + 89, // 152: ttn.lorawan.v3.EndDevice.LocationsEntry.value:type_name -> ttn.lorawan.v3.Location + 74, // 153: ttn.lorawan.v3.BatchUpdateEndDeviceLastSeenRequest.EndDeviceLastSeenUpdate.ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 46, // 154: ttn.lorawan.v3.BatchUpdateEndDeviceLastSeenRequest.EndDeviceLastSeenUpdate.last_seen_at:type_name -> google.protobuf.Timestamp + 21, // 155: ttn.lorawan.v3.EndDeviceTemplateFormats.FormatsEntry.value:type_name -> ttn.lorawan.v3.EndDeviceTemplateFormat + 156, // [156:156] is the sub-list for method output_type + 156, // [156:156] is the sub-list for method input_type + 156, // [156:156] is the sub-list for extension type_name + 156, // [156:156] is the sub-list for extension extendee + 0, // [0:156] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_end_device_proto_init() } +func file_lorawan_stack_api_end_device_proto_init() { + if File_lorawan_stack_api_end_device_proto != nil { + return + } + file_lorawan_stack_api_enums_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_keys_proto_init() + file_lorawan_stack_api_lorawan_proto_init() + file_lorawan_stack_api_messages_proto_init() + file_lorawan_stack_api_metadata_proto_init() + file_lorawan_stack_api_picture_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_end_device_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Session); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BoolValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACParameters); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceVersion); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ADRSettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACSettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceAuthenticationCode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDevice); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDevices); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DevAddrPrefix); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateEndDeviceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateEndDeviceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BatchUpdateEndDeviceLastSeenRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetEndDeviceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetEndDeviceIdentifiersForEUIsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListEndDevicesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetEndDeviceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResetAndGetEndDeviceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceTemplate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceTemplateFormat); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceTemplateFormats); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConvertEndDeviceTemplateRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACParameters_Channel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ADRSettings_StaticMode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ADRSettings_DynamicMode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ADRSettings_DisabledMode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACState_JoinRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACState_JoinAccept); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACState_UplinkMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACState_DownlinkMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACState_DataRateRange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACState_DataRateRanges); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACState_UplinkMessage_TxSettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACState_UplinkMessage_RxMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACState_DownlinkMessage_Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACState_DownlinkMessage_Message_MHDR); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACState_DownlinkMessage_Message_MACPayload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_lorawan_stack_api_end_device_proto_msgTypes[4].OneofWrappers = []interface{}{ + (*ADRSettings_Static)(nil), + (*ADRSettings_Dynamic)(nil), + (*ADRSettings_Disabled)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_end_device_proto_rawDesc, + NumEnums: 1, + NumMessages: 44, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_end_device_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_end_device_proto_depIdxs, + EnumInfos: file_lorawan_stack_api_end_device_proto_enumTypes, + MessageInfos: file_lorawan_stack_api_end_device_proto_msgTypes, + }.Build() + File_lorawan_stack_api_end_device_proto = out.File + file_lorawan_stack_api_end_device_proto_rawDesc = nil + file_lorawan_stack_api_end_device_proto_goTypes = nil + file_lorawan_stack_api_end_device_proto_depIdxs = nil } diff --git a/pkg/ttnpb/end_device.pb.setters.fm.go b/pkg/ttnpb/end_device.pb.setters.fm.go index 043c9e54a7..57ee6d1987 100644 --- a/pkg/ttnpb/end_device.pb.setters.fm.go +++ b/pkg/ttnpb/end_device.pb.setters.fm.go @@ -148,8 +148,7 @@ func (dst *MACParameters) SetFields(src *MACParameters, paths ...string) error { if src != nil { dst.AdrDataRateIndex = src.AdrDataRateIndex } else { - var zero DataRateIndex - dst.AdrDataRateIndex = zero + dst.AdrDataRateIndex = 0 } case "adr_tx_power_index": if len(subs) > 0 { @@ -198,8 +197,7 @@ func (dst *MACParameters) SetFields(src *MACParameters, paths ...string) error { if src != nil { dst.Rx1Delay = src.Rx1Delay } else { - var zero RxDelay - dst.Rx1Delay = zero + dst.Rx1Delay = 0 } case "rx1_data_rate_offset": if len(subs) > 0 { @@ -208,8 +206,7 @@ func (dst *MACParameters) SetFields(src *MACParameters, paths ...string) error { if src != nil { dst.Rx1DataRateOffset = src.Rx1DataRateOffset } else { - var zero DataRateOffset - dst.Rx1DataRateOffset = zero + dst.Rx1DataRateOffset = 0 } case "rx2_data_rate_index": if len(subs) > 0 { @@ -218,8 +215,7 @@ func (dst *MACParameters) SetFields(src *MACParameters, paths ...string) error { if src != nil { dst.Rx2DataRateIndex = src.Rx2DataRateIndex } else { - var zero DataRateIndex - dst.Rx2DataRateIndex = zero + dst.Rx2DataRateIndex = 0 } case "rx2_frequency": if len(subs) > 0 { @@ -238,8 +234,7 @@ func (dst *MACParameters) SetFields(src *MACParameters, paths ...string) error { if src != nil { dst.MaxDutyCycle = src.MaxDutyCycle } else { - var zero AggregatedDutyCycle - dst.MaxDutyCycle = zero + dst.MaxDutyCycle = 0 } case "rejoin_time_periodicity": if len(subs) > 0 { @@ -248,8 +243,7 @@ func (dst *MACParameters) SetFields(src *MACParameters, paths ...string) error { if src != nil { dst.RejoinTimePeriodicity = src.RejoinTimePeriodicity } else { - var zero RejoinTimeExponent - dst.RejoinTimePeriodicity = zero + dst.RejoinTimePeriodicity = 0 } case "rejoin_count_periodicity": if len(subs) > 0 { @@ -258,8 +252,7 @@ func (dst *MACParameters) SetFields(src *MACParameters, paths ...string) error { if src != nil { dst.RejoinCountPeriodicity = src.RejoinCountPeriodicity } else { - var zero RejoinCountExponent - dst.RejoinCountPeriodicity = zero + dst.RejoinCountPeriodicity = 0 } case "ping_slot_frequency": if len(subs) > 0 { @@ -278,8 +271,7 @@ func (dst *MACParameters) SetFields(src *MACParameters, paths ...string) error { if src != nil { dst.PingSlotDataRateIndex = src.PingSlotDataRateIndex } else { - var zero DataRateIndex - dst.PingSlotDataRateIndex = zero + dst.PingSlotDataRateIndex = 0 } case "beacon_frequency": if len(subs) > 0 { @@ -468,8 +460,7 @@ func (dst *EndDeviceVersion) SetFields(src *EndDeviceVersion, paths ...string) e if src != nil { dst.LorawanVersion = src.LorawanVersion } else { - var zero MACVersion - dst.LorawanVersion = zero + dst.LorawanVersion = 0 } case "lorawan_phy_version": if len(subs) > 0 { @@ -478,8 +469,7 @@ func (dst *EndDeviceVersion) SetFields(src *EndDeviceVersion, paths ...string) e if src != nil { dst.LorawanPhyVersion = src.LorawanPhyVersion } else { - var zero PHYVersion - dst.LorawanPhyVersion = zero + dst.LorawanPhyVersion = 0 } case "frequency_plan_id": if len(subs) > 0 { @@ -1567,8 +1557,7 @@ func (dst *MACState) SetFields(src *MACState, paths ...string) error { if src != nil { dst.DeviceClass = src.DeviceClass } else { - var zero Class - dst.DeviceClass = zero + dst.DeviceClass = 0 } case "lorawan_version": if len(subs) > 0 { @@ -1577,8 +1566,7 @@ func (dst *MACState) SetFields(src *MACState, paths ...string) error { if src != nil { dst.LorawanVersion = src.LorawanVersion } else { - var zero MACVersion - dst.LorawanVersion = zero + dst.LorawanVersion = 0 } case "last_confirmed_downlink_at": if len(subs) > 0 { @@ -2096,8 +2084,7 @@ func (dst *EndDevice) SetFields(src *EndDevice, paths ...string) error { if src != nil { dst.LorawanVersion = src.LorawanVersion } else { - var zero MACVersion - dst.LorawanVersion = zero + dst.LorawanVersion = 0 } case "lorawan_phy_version": if len(subs) > 0 { @@ -2106,8 +2093,7 @@ func (dst *EndDevice) SetFields(src *EndDevice, paths ...string) error { if src != nil { dst.LorawanPhyVersion = src.LorawanPhyVersion } else { - var zero PHYVersion - dst.LorawanPhyVersion = zero + dst.LorawanPhyVersion = 0 } case "frequency_plan_id": if len(subs) > 0 { @@ -2383,8 +2369,7 @@ func (dst *EndDevice) SetFields(src *EndDevice, paths ...string) error { if src != nil { dst.PowerState = src.PowerState } else { - var zero PowerState - dst.PowerState = zero + dst.PowerState = 0 } case "battery_percentage": if len(subs) > 0 { @@ -3163,8 +3148,7 @@ func (dst *MACParameters_Channel) SetFields(src *MACParameters_Channel, paths .. if src != nil { dst.MinDataRateIndex = src.MinDataRateIndex } else { - var zero DataRateIndex - dst.MinDataRateIndex = zero + dst.MinDataRateIndex = 0 } case "max_data_rate_index": if len(subs) > 0 { @@ -3173,8 +3157,7 @@ func (dst *MACParameters_Channel) SetFields(src *MACParameters_Channel, paths .. if src != nil { dst.MaxDataRateIndex = src.MaxDataRateIndex } else { - var zero DataRateIndex - dst.MaxDataRateIndex = zero + dst.MaxDataRateIndex = 0 } case "enable_uplink": if len(subs) > 0 { @@ -3204,8 +3187,7 @@ func (dst *ADRSettings_StaticMode) SetFields(src *ADRSettings_StaticMode, paths if src != nil { dst.DataRateIndex = src.DataRateIndex } else { - var zero DataRateIndex - dst.DataRateIndex = zero + dst.DataRateIndex = 0 } case "tx_power_index": if len(subs) > 0 { @@ -3383,8 +3365,7 @@ func (dst *MACState_JoinRequest) SetFields(src *MACState_JoinRequest, paths ...s if src != nil { dst.RxDelay = src.RxDelay } else { - var zero RxDelay - dst.RxDelay = zero + dst.RxDelay = 0 } case "cf_list": if len(subs) > 0 { @@ -3669,8 +3650,7 @@ func (dst *MACState_DataRateRange) SetFields(src *MACState_DataRateRange, paths if src != nil { dst.MinDataRateIndex = src.MinDataRateIndex } else { - var zero DataRateIndex - dst.MinDataRateIndex = zero + dst.MinDataRateIndex = 0 } case "max_data_rate_index": if len(subs) > 0 { @@ -3679,8 +3659,7 @@ func (dst *MACState_DataRateRange) SetFields(src *MACState_DataRateRange, paths if src != nil { dst.MaxDataRateIndex = src.MaxDataRateIndex } else { - var zero DataRateIndex - dst.MaxDataRateIndex = zero + dst.MaxDataRateIndex = 0 } default: @@ -3801,8 +3780,7 @@ func (dst *MACState_UplinkMessage_RxMetadata) SetFields(src *MACState_UplinkMess if src != nil { dst.DownlinkPathConstraint = src.DownlinkPathConstraint } else { - var zero DownlinkPathConstraint - dst.DownlinkPathConstraint = zero + dst.DownlinkPathConstraint = 0 } case "uplink_token": if len(subs) > 0 { @@ -3924,8 +3902,7 @@ func (dst *MACState_DownlinkMessage_Message_MHDR) SetFields(src *MACState_Downli if src != nil { dst.MType = src.MType } else { - var zero MType - dst.MType = zero + dst.MType = 0 } default: diff --git a/pkg/ttnpb/end_device.pb.validate.go b/pkg/ttnpb/end_device.pb.validate.go index c7f8d33df8..26b943135a 100644 --- a/pkg/ttnpb/end_device.pb.validate.go +++ b/pkg/ttnpb/end_device.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _end_device_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on Session with the rules defined in // the proto definition for this message. If any rules are violated, an error // is returned. diff --git a/pkg/ttnpb/end_device_flags.pb.go b/pkg/ttnpb/end_device_flags.pb.go index 7d2791b720..c6fd7ad730 100644 --- a/pkg/ttnpb/end_device_flags.pb.go +++ b/pkg/ttnpb/end_device_flags.pb.go @@ -1,17 +1,17 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/end_device.proto package ttnpb import ( flagsplugin "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - gogo "github.com/TheThingsIndustries/protoc-gen-go-flags/gogo" - types "github.com/gogo/protobuf/types" + golang "github.com/TheThingsIndustries/protoc-gen-go-flags/golang" pflag "github.com/spf13/pflag" customflags "go.thethings.network/lorawan-stack/v3/cmd/ttn-lw-cli/customflags" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) // AddSelectFlagsForSession adds flags to select fields in Session. @@ -134,7 +134,7 @@ func (m *Session) SetFromFlags(flags *pflag.FlagSet, prefix string) (paths []str if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("started_at", prefix)); err != nil { return nil, err } else if changed { - m.StartedAt = gogo.SetTimestamp(val) + m.StartedAt = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("started_at", prefix)) } // FIXME: Skipping QueuedApplicationDownlinks because it does not seem to implement AddSetFlags. @@ -791,7 +791,7 @@ func (m *ADRSettings_DynamicMode) SetFromFlags(flags *pflag.FlagSet, prefix stri if val, changed, err := flagsplugin.GetFloat32(flags, flagsplugin.Prefix("margin", prefix)); err != nil { return nil, err } else if changed { - m.Margin = &types.FloatValue{Value: val} + m.Margin = &wrapperspb.FloatValue{Value: val} paths = append(paths, flagsplugin.Prefix("margin", prefix)) } if changed := flagsplugin.IsAnyPrefixSet(flags, flagsplugin.Prefix("min_data_rate_index", prefix)); changed { @@ -817,25 +817,25 @@ func (m *ADRSettings_DynamicMode) SetFromFlags(flags *pflag.FlagSet, prefix stri if val, changed, err := flagsplugin.GetUint32(flags, flagsplugin.Prefix("min_tx_power_index", prefix)); err != nil { return nil, err } else if changed { - m.MinTxPowerIndex = &types.UInt32Value{Value: val} + m.MinTxPowerIndex = &wrapperspb.UInt32Value{Value: val} paths = append(paths, flagsplugin.Prefix("min_tx_power_index", prefix)) } if val, changed, err := flagsplugin.GetUint32(flags, flagsplugin.Prefix("max_tx_power_index", prefix)); err != nil { return nil, err } else if changed { - m.MaxTxPowerIndex = &types.UInt32Value{Value: val} + m.MaxTxPowerIndex = &wrapperspb.UInt32Value{Value: val} paths = append(paths, flagsplugin.Prefix("max_tx_power_index", prefix)) } if val, changed, err := flagsplugin.GetUint32(flags, flagsplugin.Prefix("min_nb_trans", prefix)); err != nil { return nil, err } else if changed { - m.MinNbTrans = &types.UInt32Value{Value: val} + m.MinNbTrans = &wrapperspb.UInt32Value{Value: val} paths = append(paths, flagsplugin.Prefix("min_nb_trans", prefix)) } if val, changed, err := flagsplugin.GetUint32(flags, flagsplugin.Prefix("max_nb_trans", prefix)); err != nil { return nil, err } else if changed { - m.MaxNbTrans = &types.UInt32Value{Value: val} + m.MaxNbTrans = &wrapperspb.UInt32Value{Value: val} paths = append(paths, flagsplugin.Prefix("max_nb_trans", prefix)) } return paths, nil @@ -1405,7 +1405,7 @@ func (m *MACSettings) SetFromFlags(flags *pflag.FlagSet, prefix string) (paths [ if val, changed, err := flagsplugin.GetDuration(flags, flagsplugin.Prefix("class_b_timeout", prefix)); err != nil { return nil, err } else if changed { - m.ClassBTimeout = gogo.SetDuration(val) + m.ClassBTimeout = golang.SetDuration(val) paths = append(paths, flagsplugin.Prefix("class_b_timeout", prefix)) } if changed := flagsplugin.IsAnyPrefixSet(flags, flagsplugin.Prefix("ping_slot_periodicity", prefix)); changed { @@ -1451,7 +1451,7 @@ func (m *MACSettings) SetFromFlags(flags *pflag.FlagSet, prefix string) (paths [ if val, changed, err := flagsplugin.GetDuration(flags, flagsplugin.Prefix("class_c_timeout", prefix)); err != nil { return nil, err } else if changed { - m.ClassCTimeout = gogo.SetDuration(val) + m.ClassCTimeout = golang.SetDuration(val) paths = append(paths, flagsplugin.Prefix("class_c_timeout", prefix)) } if changed := flagsplugin.IsAnyPrefixSet(flags, flagsplugin.Prefix("rx1_delay", prefix)); changed { @@ -1533,7 +1533,7 @@ func (m *MACSettings) SetFromFlags(flags *pflag.FlagSet, prefix string) (paths [ if val, changed, err := flagsplugin.GetFloat32(flags, flagsplugin.Prefix("adr_margin", prefix)); err != nil { return nil, err } else if changed { - m.AdrMargin = &types.FloatValue{Value: val} + m.AdrMargin = &wrapperspb.FloatValue{Value: val} paths = append(paths, flagsplugin.Prefix("adr_margin", prefix)) } if changed := flagsplugin.IsAnyPrefixSet(flags, flagsplugin.Prefix("resets_f_cnt", prefix)); changed { @@ -1549,13 +1549,13 @@ func (m *MACSettings) SetFromFlags(flags *pflag.FlagSet, prefix string) (paths [ if val, changed, err := flagsplugin.GetDuration(flags, flagsplugin.Prefix("status_time_periodicity", prefix)); err != nil { return nil, err } else if changed { - m.StatusTimePeriodicity = gogo.SetDuration(val) + m.StatusTimePeriodicity = golang.SetDuration(val) paths = append(paths, flagsplugin.Prefix("status_time_periodicity", prefix)) } if val, changed, err := flagsplugin.GetUint32(flags, flagsplugin.Prefix("status_count_periodicity", prefix)); err != nil { return nil, err } else if changed { - m.StatusCountPeriodicity = &types.UInt32Value{Value: val} + m.StatusCountPeriodicity = &wrapperspb.UInt32Value{Value: val} paths = append(paths, flagsplugin.Prefix("status_count_periodicity", prefix)) } if changed := flagsplugin.IsAnyPrefixSet(flags, flagsplugin.Prefix("desired_rx1_delay", prefix)); changed { @@ -1671,7 +1671,7 @@ func (m *MACSettings) SetFromFlags(flags *pflag.FlagSet, prefix string) (paths [ if val, changed, err := flagsplugin.GetDuration(flags, flagsplugin.Prefix("class_b_c_downlink_interval", prefix)); err != nil { return nil, err } else if changed { - m.ClassBCDownlinkInterval = gogo.SetDuration(val) + m.ClassBCDownlinkInterval = golang.SetDuration(val) paths = append(paths, flagsplugin.Prefix("class_b_c_downlink_interval", prefix)) } if changed := flagsplugin.IsAnyPrefixSet(flags, flagsplugin.Prefix("uplink_dwell_time", prefix)); changed { @@ -2248,7 +2248,7 @@ func (m *MACState) SetFromFlags(flags *pflag.FlagSet, prefix string) (paths []st if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("last_confirmed_downlink_at", prefix)); err != nil { return nil, err } else if changed { - m.LastConfirmedDownlinkAt = gogo.SetTimestamp(val) + m.LastConfirmedDownlinkAt = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("last_confirmed_downlink_at", prefix)) } if val, changed, err := flagsplugin.GetUint32(flags, flagsplugin.Prefix("last_dev_status_f_cnt_up", prefix)); err != nil { @@ -2310,7 +2310,7 @@ func (m *MACState) SetFromFlags(flags *pflag.FlagSet, prefix string) (paths []st if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("last_network_initiated_downlink_at", prefix)); err != nil { return nil, err } else if changed { - m.LastNetworkInitiatedDownlinkAt = gogo.SetTimestamp(val) + m.LastNetworkInitiatedDownlinkAt = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("last_network_initiated_downlink_at", prefix)) } if val, changed, err := flagsplugin.GetStringSlice(flags, flagsplugin.Prefix("rejected_adr_data_rate_indexes", prefix)); err != nil { @@ -2341,7 +2341,7 @@ func (m *MACState) SetFromFlags(flags *pflag.FlagSet, prefix string) (paths []st if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("last_downlink_at", prefix)); err != nil { return nil, err } else if changed { - m.LastDownlinkAt = gogo.SetTimestamp(val) + m.LastDownlinkAt = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("last_downlink_at", prefix)) } // FIXME: Skipping RejectedDataRateRanges because maps with uint64 key types are currently not supported. @@ -2412,13 +2412,13 @@ func (m *EndDeviceAuthenticationCode) SetFromFlags(flags *pflag.FlagSet, prefix if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("valid_from", prefix)); err != nil { return nil, err } else if changed { - m.ValidFrom = gogo.SetTimestamp(val) + m.ValidFrom = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("valid_from", prefix)) } if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("valid_to", prefix)); err != nil { return nil, err } else if changed { - m.ValidTo = gogo.SetTimestamp(val) + m.ValidTo = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("valid_to", prefix)) } return paths, nil @@ -3090,13 +3090,13 @@ func (m *EndDevice) SetFromFlags(flags *pflag.FlagSet, prefix string) (paths []s if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("last_dev_status_received_at", prefix)); err != nil { return nil, err } else if changed { - m.LastDevStatusReceivedAt = gogo.SetTimestamp(val) + m.LastDevStatusReceivedAt = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("last_dev_status_received_at", prefix)) } if val, changed, err := flagsplugin.GetFloat32(flags, flagsplugin.Prefix("battery_percentage", prefix)); err != nil { return nil, err } else if changed { - m.BatteryPercentage = &types.FloatValue{Value: val} + m.BatteryPercentage = &wrapperspb.FloatValue{Value: val} paths = append(paths, flagsplugin.Prefix("battery_percentage", prefix)) } if val, changed, err := flagsplugin.GetInt32(flags, flagsplugin.Prefix("downlink_margin", prefix)); err != nil { @@ -3148,19 +3148,19 @@ func (m *EndDevice) SetFromFlags(flags *pflag.FlagSet, prefix string) (paths []s if val, changed, err := flagsplugin.GetBool(flags, flagsplugin.Prefix("skip_payload_crypto_override", prefix)); err != nil { return nil, err } else if changed { - m.SkipPayloadCryptoOverride = &types.BoolValue{Value: val} + m.SkipPayloadCryptoOverride = &wrapperspb.BoolValue{Value: val} paths = append(paths, flagsplugin.Prefix("skip_payload_crypto_override", prefix)) } if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("activated_at", prefix)); err != nil { return nil, err } else if changed { - m.ActivatedAt = gogo.SetTimestamp(val) + m.ActivatedAt = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("activated_at", prefix)) } if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("last_seen_at", prefix)); err != nil { return nil, err } else if changed { - m.LastSeenAt = gogo.SetTimestamp(val) + m.LastSeenAt = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("last_seen_at", prefix)) } if val, changed, err := flagsplugin.GetString(flags, flagsplugin.Prefix("serial_number", prefix)); err != nil { diff --git a/pkg/ttnpb/end_device_json.pb.go b/pkg/ttnpb/end_device_json.pb.go index 7c50764f02..362d538439 100644 --- a/pkg/ttnpb/end_device_json.pb.go +++ b/pkg/ttnpb/end_device_json.pb.go @@ -1,16 +1,16 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/end_device.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" - types1 "github.com/gogo/protobuf/types" types "go.thethings.network/lorawan-stack/v3/pkg/types" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) // MarshalProtoJSON marshals the PowerState to JSON. @@ -104,7 +104,7 @@ func (x *Session) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.StartedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.StartedAt) + golang.MarshalTimestamp(s, x.StartedAt) } } if len(x.QueuedApplicationDownlinks) > 0 || s.HasField("queued_application_downlinks") { @@ -163,7 +163,7 @@ func (x *Session) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.StartedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -566,7 +566,7 @@ func (x *EndDeviceVersion) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("ids") // NOTE: EndDeviceVersionIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Ids) + golang.MarshalMessage(s, x.Ids) } if x.LorawanVersion != 0 || s.HasField("lorawan_version") { s.WriteMoreIf(&wroteField) @@ -653,7 +653,7 @@ func (x *EndDeviceVersion) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: EndDeviceVersionIdentifiers does not seem to implement UnmarshalProtoJSON. var v EndDeviceVersionIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Ids = &v case "lorawan_version", "lorawanVersion": s.AddField("lorawan_version") @@ -860,7 +860,7 @@ func (x *ADRSettings_DynamicMode) UnmarshalProtoJSON(s *jsonplugin.UnmarshalStat if s.Err() != nil { return } - x.Margin = &types1.FloatValue{Value: v} + x.Margin = &wrapperspb.FloatValue{Value: v} case "min_data_rate_index", "minDataRateIndex": s.AddField("min_data_rate_index") if s.ReadNil() { @@ -887,7 +887,7 @@ func (x *ADRSettings_DynamicMode) UnmarshalProtoJSON(s *jsonplugin.UnmarshalStat if s.Err() != nil { return } - x.MinTxPowerIndex = &types1.UInt32Value{Value: v} + x.MinTxPowerIndex = &wrapperspb.UInt32Value{Value: v} case "max_tx_power_index", "maxTxPowerIndex": s.AddField("max_tx_power_index") if s.ReadNil() { @@ -898,7 +898,7 @@ func (x *ADRSettings_DynamicMode) UnmarshalProtoJSON(s *jsonplugin.UnmarshalStat if s.Err() != nil { return } - x.MaxTxPowerIndex = &types1.UInt32Value{Value: v} + x.MaxTxPowerIndex = &wrapperspb.UInt32Value{Value: v} case "min_nb_trans", "minNbTrans": s.AddField("min_nb_trans") if s.ReadNil() { @@ -909,7 +909,7 @@ func (x *ADRSettings_DynamicMode) UnmarshalProtoJSON(s *jsonplugin.UnmarshalStat if s.Err() != nil { return } - x.MinNbTrans = &types1.UInt32Value{Value: v} + x.MinNbTrans = &wrapperspb.UInt32Value{Value: v} case "max_nb_trans", "maxNbTrans": s.AddField("max_nb_trans") if s.ReadNil() { @@ -920,7 +920,7 @@ func (x *ADRSettings_DynamicMode) UnmarshalProtoJSON(s *jsonplugin.UnmarshalStat if s.Err() != nil { return } - x.MaxNbTrans = &types1.UInt32Value{Value: v} + x.MaxNbTrans = &wrapperspb.UInt32Value{Value: v} } }) } @@ -952,7 +952,7 @@ func (x *ADRSettings) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("disabled") // NOTE: ADRSettings_DisabledMode does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.Disabled) + golang.MarshalMessage(s, ov.Disabled) } } s.WriteObjectEnd() @@ -1000,7 +1000,7 @@ func (x *ADRSettings) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ADRSettings_DisabledMode does not seem to implement UnmarshalProtoJSON. var v ADRSettings_DisabledMode - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.Disabled = &v } }) @@ -1025,7 +1025,7 @@ func (x *MACSettings) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ClassBTimeout == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.ClassBTimeout) + golang.MarshalDuration(s, x.ClassBTimeout) } } if x.PingSlotPeriodicity != nil || s.HasField("ping_slot_periodicity") { @@ -1054,7 +1054,7 @@ func (x *MACSettings) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ClassCTimeout == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.ClassCTimeout) + golang.MarshalDuration(s, x.ClassCTimeout) } } if x.Rx1Delay != nil || s.HasField("rx1_delay") { @@ -1117,7 +1117,7 @@ func (x *MACSettings) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.StatusTimePeriodicity == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.StatusTimePeriodicity) + golang.MarshalDuration(s, x.StatusTimePeriodicity) } } if x.StatusCountPeriodicity != nil || s.HasField("status_count_periodicity") { @@ -1190,7 +1190,7 @@ func (x *MACSettings) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ClassBCDownlinkInterval == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.ClassBCDownlinkInterval) + golang.MarshalDuration(s, x.ClassBCDownlinkInterval) } } if x.UplinkDwellTime != nil || s.HasField("uplink_dwell_time") { @@ -1236,7 +1236,7 @@ func (x *MACSettings) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ClassBTimeout = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -1279,7 +1279,7 @@ func (x *MACSettings) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ClassCTimeout = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -1357,7 +1357,7 @@ func (x *MACSettings) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { if s.Err() != nil { return } - x.AdrMargin = &types1.FloatValue{Value: v} + x.AdrMargin = &wrapperspb.FloatValue{Value: v} case "resets_f_cnt", "resetsFCnt": s.AddField("resets_f_cnt") if s.ReadNil() { @@ -1372,7 +1372,7 @@ func (x *MACSettings) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.StatusTimePeriodicity = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -1387,7 +1387,7 @@ func (x *MACSettings) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { if s.Err() != nil { return } - x.StatusCountPeriodicity = &types1.UInt32Value{Value: v} + x.StatusCountPeriodicity = &wrapperspb.UInt32Value{Value: v} case "desired_rx1_delay", "desiredRx1Delay": s.AddField("desired_rx1_delay") if s.ReadNil() { @@ -1482,7 +1482,7 @@ func (x *MACSettings) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ClassBCDownlinkInterval = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -1724,7 +1724,7 @@ func (x *MACState_UplinkMessage_RxMetadata) MarshalProtoJSON(s *jsonplugin.Marsh s.WriteMoreIf(&wroteField) s.WriteObjectField("packet_broker") // NOTE: MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.PacketBroker) + golang.MarshalMessage(s, x.PacketBroker) } s.WriteObjectEnd() } @@ -1770,7 +1770,7 @@ func (x *MACState_UplinkMessage_RxMetadata) UnmarshalProtoJSON(s *jsonplugin.Unm } // NOTE: MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata does not seem to implement UnmarshalProtoJSON. var v MACState_UplinkMessage_RxMetadata_PacketBrokerMetadata - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.PacketBroker = &v } }) @@ -1798,7 +1798,7 @@ func (x *MACState_UplinkMessage) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("settings") // NOTE: MACState_UplinkMessage_TxSettings does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Settings) + golang.MarshalMessage(s, x.Settings) } if len(x.RxMetadata) > 0 || s.HasField("rx_metadata") { s.WriteMoreIf(&wroteField) @@ -1817,7 +1817,7 @@ func (x *MACState_UplinkMessage) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ReceivedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ReceivedAt) + golang.MarshalTimestamp(s, x.ReceivedAt) } } if len(x.CorrelationIds) > 0 || s.HasField("correlation_ids") { @@ -1862,7 +1862,7 @@ func (x *MACState_UplinkMessage) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState } // NOTE: MACState_UplinkMessage_TxSettings does not seem to implement UnmarshalProtoJSON. var v MACState_UplinkMessage_TxSettings - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Settings = &v case "rx_metadata", "rxMetadata": s.AddField("rx_metadata") @@ -1888,7 +1888,7 @@ func (x *MACState_UplinkMessage) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState x.ReceivedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -1971,7 +1971,7 @@ func (x *MACState_DownlinkMessage_Message) MarshalProtoJSON(s *jsonplugin.Marsha s.WriteMoreIf(&wroteField) s.WriteObjectField("mac_payload") // NOTE: MACState_DownlinkMessage_Message_MACPayload does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.MacPayload) + golang.MarshalMessage(s, x.MacPayload) } s.WriteObjectEnd() } @@ -2005,7 +2005,7 @@ func (x *MACState_DownlinkMessage_Message) UnmarshalProtoJSON(s *jsonplugin.Unma } // NOTE: MACState_DownlinkMessage_Message_MACPayload does not seem to implement UnmarshalProtoJSON. var v MACState_DownlinkMessage_Message_MACPayload - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.MacPayload = &v } }) @@ -2221,7 +2221,7 @@ func (x *MACState) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.LastConfirmedDownlinkAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.LastConfirmedDownlinkAt) + golang.MarshalTimestamp(s, x.LastConfirmedDownlinkAt) } } if x.LastDevStatusFCntUp != 0 || s.HasField("last_dev_status_f_cnt_up") { @@ -2304,7 +2304,7 @@ func (x *MACState) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.LastNetworkInitiatedDownlinkAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.LastNetworkInitiatedDownlinkAt) + golang.MarshalTimestamp(s, x.LastNetworkInitiatedDownlinkAt) } } if len(x.RejectedAdrDataRateIndexes) > 0 || s.HasField("rejected_adr_data_rate_indexes") { @@ -2334,7 +2334,7 @@ func (x *MACState) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.LastDownlinkAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.LastDownlinkAt) + golang.MarshalTimestamp(s, x.LastDownlinkAt) } } if x.RejectedDataRateRanges != nil || s.HasField("rejected_data_rate_ranges") { @@ -2408,7 +2408,7 @@ func (x *MACState) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.LastConfirmedDownlinkAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -2526,7 +2526,7 @@ func (x *MACState) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.LastNetworkInitiatedDownlinkAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -2562,7 +2562,7 @@ func (x *MACState) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.LastDownlinkAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -2621,7 +2621,7 @@ func (x *EndDevice) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.CreatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.CreatedAt) + golang.MarshalTimestamp(s, x.CreatedAt) } } if x.UpdatedAt != nil || s.HasField("updated_at") { @@ -2630,7 +2630,7 @@ func (x *EndDevice) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.UpdatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.UpdatedAt) + golang.MarshalTimestamp(s, x.UpdatedAt) } } if x.Name != "" || s.HasField("name") { @@ -2659,7 +2659,7 @@ func (x *EndDevice) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("version_ids") // NOTE: EndDeviceVersionIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.VersionIds) + golang.MarshalMessage(s, x.VersionIds) } if x.ServiceProfileId != "" || s.HasField("service_profile_id") { s.WriteMoreIf(&wroteField) @@ -2712,7 +2712,7 @@ func (x *EndDevice) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("picture") // NOTE: Picture does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Picture) + golang.MarshalMessage(s, x.Picture) } if x.SupportsClassB || s.HasField("supports_class_b") { s.WriteMoreIf(&wroteField) @@ -2825,7 +2825,7 @@ func (x *EndDevice) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.LastDevStatusReceivedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.LastDevStatusReceivedAt) + golang.MarshalTimestamp(s, x.LastDevStatusReceivedAt) } } if x.PowerState != 0 || s.HasField("power_state") { @@ -2874,7 +2874,7 @@ func (x *EndDevice) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ProvisioningData == nil { s.WriteNil() } else { - gogo.MarshalStruct(s, x.ProvisioningData) + golang.MarshalStruct(s, x.ProvisioningData) } } if x.Multicast || s.HasField("multicast") { @@ -2886,7 +2886,7 @@ func (x *EndDevice) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("claim_authentication_code") // NOTE: EndDeviceAuthenticationCode does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ClaimAuthenticationCode) + golang.MarshalMessage(s, x.ClaimAuthenticationCode) } if x.SkipPayloadCrypto || s.HasField("skip_payload_crypto") { s.WriteMoreIf(&wroteField) @@ -2908,7 +2908,7 @@ func (x *EndDevice) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ActivatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ActivatedAt) + golang.MarshalTimestamp(s, x.ActivatedAt) } } if x.LastSeenAt != nil || s.HasField("last_seen_at") { @@ -2917,7 +2917,7 @@ func (x *EndDevice) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.LastSeenAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.LastSeenAt) + golang.MarshalTimestamp(s, x.LastSeenAt) } } if x.SerialNumber != "" || s.HasField("serial_number") { @@ -2929,7 +2929,7 @@ func (x *EndDevice) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("lora_alliance_profile_ids") // NOTE: LoRaAllianceProfileIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.LoraAllianceProfileIds) + golang.MarshalMessage(s, x.LoraAllianceProfileIds) } s.WriteObjectEnd() } @@ -2961,7 +2961,7 @@ func (x *EndDevice) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.CreatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -2972,7 +2972,7 @@ func (x *EndDevice) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.UpdatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -3001,7 +3001,7 @@ func (x *EndDevice) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: EndDeviceVersionIdentifiers does not seem to implement UnmarshalProtoJSON. var v EndDeviceVersionIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.VersionIds = &v case "service_profile_id", "serviceProfileId": s.AddField("service_profile_id") @@ -3044,7 +3044,7 @@ func (x *EndDevice) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: Picture does not seem to implement UnmarshalProtoJSON. var v Picture - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Picture = &v case "supports_class_b", "supportsClassB": s.AddField("supports_class_b") @@ -3143,7 +3143,7 @@ func (x *EndDevice) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.LastDevStatusReceivedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -3161,7 +3161,7 @@ func (x *EndDevice) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { if s.Err() != nil { return } - x.BatteryPercentage = &types1.FloatValue{Value: v} + x.BatteryPercentage = &wrapperspb.FloatValue{Value: v} case "downlink_margin", "downlinkMargin": s.AddField("downlink_margin") x.DownlinkMargin = s.ReadInt32() @@ -3199,7 +3199,7 @@ func (x *EndDevice) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ProvisioningData = nil return } - v := gogo.UnmarshalStruct(s) + v := golang.UnmarshalStruct(s) if s.Err() != nil { return } @@ -3215,7 +3215,7 @@ func (x *EndDevice) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: EndDeviceAuthenticationCode does not seem to implement UnmarshalProtoJSON. var v EndDeviceAuthenticationCode - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ClaimAuthenticationCode = &v case "skip_payload_crypto", "skipPayloadCrypto": s.AddField("skip_payload_crypto") @@ -3230,14 +3230,14 @@ func (x *EndDevice) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { if s.Err() != nil { return } - x.SkipPayloadCryptoOverride = &types1.BoolValue{Value: v} + x.SkipPayloadCryptoOverride = &wrapperspb.BoolValue{Value: v} case "activated_at", "activatedAt": s.AddField("activated_at") if s.ReadNil() { x.ActivatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -3248,7 +3248,7 @@ func (x *EndDevice) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.LastSeenAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -3264,7 +3264,7 @@ func (x *EndDevice) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: LoRaAllianceProfileIdentifiers does not seem to implement UnmarshalProtoJSON. var v LoRaAllianceProfileIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.LoraAllianceProfileIds = &v } }) @@ -3453,7 +3453,7 @@ func (x *UpdateEndDeviceRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -3486,7 +3486,7 @@ func (x *UpdateEndDeviceRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -3519,7 +3519,7 @@ func (x *BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) MarshalPro if x.LastSeenAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.LastSeenAt) + golang.MarshalTimestamp(s, x.LastSeenAt) } } s.WriteObjectEnd() @@ -3552,7 +3552,7 @@ func (x *BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate) UnmarshalP x.LastSeenAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -3648,7 +3648,7 @@ func (x *GetEndDeviceRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -3681,7 +3681,7 @@ func (x *GetEndDeviceRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -3745,6 +3745,100 @@ func (x *GetEndDeviceIdentifiersForEUIsRequest) UnmarshalJSON(b []byte) error { return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) } +// MarshalProtoJSON marshals the ListEndDevicesRequest message to JSON. +func (x *ListEndDevicesRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.ApplicationIds != nil || s.HasField("application_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("application_ids") + // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.ApplicationIds) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + if x.Order != "" || s.HasField("order") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("order") + s.WriteString(x.Order) + } + if x.Limit != 0 || s.HasField("limit") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("limit") + s.WriteUint32(x.Limit) + } + if x.Page != 0 || s.HasField("page") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("page") + s.WriteUint32(x.Page) + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the ListEndDevicesRequest to JSON. +func (x *ListEndDevicesRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the ListEndDevicesRequest message from JSON. +func (x *ListEndDevicesRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "application_ids", "applicationIds": + s.AddField("application_ids") + if s.ReadNil() { + x.ApplicationIds = nil + return + } + // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationIdentifiers + golang.UnmarshalMessage(s, &v) + x.ApplicationIds = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + case "order": + s.AddField("order") + x.Order = s.ReadString() + case "limit": + s.AddField("limit") + x.Limit = s.ReadUint32() + case "page": + s.AddField("page") + x.Page = s.ReadUint32() + } + }) +} + +// UnmarshalJSON unmarshals the ListEndDevicesRequest from JSON. +func (x *ListEndDevicesRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + // MarshalProtoJSON marshals the SetEndDeviceRequest message to JSON. func (x *SetEndDeviceRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x == nil { @@ -3764,7 +3858,7 @@ func (x *SetEndDeviceRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -3797,7 +3891,7 @@ func (x *SetEndDeviceRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -3830,7 +3924,7 @@ func (x *ResetAndGetEndDeviceRequest) MarshalProtoJSON(s *jsonplugin.MarshalStat if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -3863,7 +3957,7 @@ func (x *ResetAndGetEndDeviceRequest) UnmarshalProtoJSON(s *jsonplugin.Unmarshal x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -3896,7 +3990,7 @@ func (x *EndDeviceTemplate) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } if x.MappingKey != "" || s.HasField("mapping_key") { @@ -3934,7 +4028,7 @@ func (x *EndDeviceTemplate) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } diff --git a/pkg/ttnpb/end_device_services.pb.go b/pkg/ttnpb/end_device_services.pb.go index c4c8bad7c1..ec1780013d 100644 --- a/pkg/ttnpb/end_device_services.pb.go +++ b/pkg/ttnpb/end_device_services.pb.go @@ -1,554 +1,210 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/end_device_services.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + reflect "reflect" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -func init() { - proto.RegisterFile("lorawan-stack/api/end_device_services.proto", fileDescriptor_36b7c5a531ab03ac) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/end_device_services.proto", fileDescriptor_36b7c5a531ab03ac) -} - -var fileDescriptor_36b7c5a531ab03ac = []byte{ - // 584 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xcb, 0x6e, 0xd3, 0x4c, - 0x14, 0x96, 0xff, 0x1f, 0x05, 0x34, 0x08, 0x10, 0x83, 0x8a, 0xc0, 0x20, 0x24, 0x5c, 0x40, 0xa8, - 0xa8, 0x33, 0xa8, 0x51, 0x11, 0xea, 0x82, 0x45, 0x9b, 0x34, 0x6a, 0xd5, 0x05, 0x02, 0xba, 0x61, - 0x93, 0x8e, 0xed, 0x13, 0x67, 0x94, 0x64, 0xc6, 0x78, 0x4e, 0x52, 0x45, 0x55, 0x37, 0xec, 0xd8, - 0xc2, 0x12, 0xf1, 0x0c, 0x6c, 0x59, 0xf2, 0x0e, 0x3c, 0x02, 0xbc, 0x07, 0x28, 0xe3, 0x4b, 0xd2, - 0x18, 0x97, 0x06, 0xb1, 0xb2, 0x67, 0xe6, 0x3b, 0xdf, 0xe5, 0xcc, 0x85, 0x3c, 0xea, 0xeb, 0x44, - 0x1c, 0x0a, 0xb5, 0x6a, 0x50, 0x04, 0x3d, 0x2e, 0x62, 0xc9, 0x41, 0x85, 0xed, 0x10, 0x46, 0x32, - 0x80, 0xb6, 0x81, 0x64, 0xf2, 0x35, 0x2c, 0x4e, 0x34, 0x6a, 0x7a, 0x19, 0x51, 0xb1, 0xac, 0x80, - 0x8d, 0xea, 0xee, 0x6a, 0x24, 0xb1, 0x3b, 0xf4, 0x59, 0xa0, 0x07, 0x3c, 0xd2, 0x91, 0xe6, 0x16, - 0xe6, 0x0f, 0x3b, 0x76, 0x64, 0x07, 0xf6, 0x2f, 0x2d, 0x77, 0x6f, 0x47, 0x5a, 0x47, 0x7d, 0xb0, - 0x22, 0x42, 0x29, 0x8d, 0x02, 0xa5, 0x56, 0x19, 0xb9, 0x7b, 0x2b, 0x5b, 0x2d, 0x38, 0x60, 0x10, - 0xe3, 0x38, 0x5b, 0xf4, 0x4e, 0xb3, 0x99, 0x61, 0x96, 0xcb, 0x18, 0x19, 0x82, 0x42, 0xd9, 0x91, - 0x90, 0x64, 0x2a, 0x6b, 0x1f, 0x2f, 0x90, 0xab, 0x4d, 0x15, 0x36, 0x6c, 0xe1, 0x0b, 0x88, 0xa4, - 0xc1, 0x64, 0x4c, 0x3f, 0x39, 0xa4, 0xb6, 0x95, 0x80, 0x40, 0xa0, 0x0f, 0xd8, 0xc9, 0x90, 0x2c, - 0x9d, 0x9f, 0xa9, 0x79, 0x33, 0x04, 0x83, 0xee, 0xcd, 0x79, 0x5c, 0x81, 0xf0, 0x9e, 0xbf, 0xfd, - 0xf6, 0xe3, 0xc3, 0x7f, 0xbb, 0x5e, 0x93, 0x8b, 0x38, 0xee, 0xcb, 0x20, 0x8d, 0xc9, 0x8f, 0x66, - 0x1c, 0xcb, 0xd0, 0xb0, 0x99, 0xc5, 0x76, 0x79, 0x7c, 0xcc, 0x53, 0xa8, 0xd9, 0x70, 0x56, 0xe8, - 0x67, 0x87, 0xfc, 0xdf, 0x02, 0xa4, 0xcb, 0xf3, 0xa2, 0x2d, 0xc0, 0x45, 0x9c, 0x75, 0xad, 0x33, - 0x9f, 0x1e, 0x54, 0x3a, 0x6b, 0x2f, 0xe0, 0xac, 0x54, 0x57, 0xfc, 0x1e, 0x53, 0x24, 0x4b, 0x2d, - 0xc0, 0x9d, 0x69, 0xff, 0xb7, 0x75, 0xd2, 0xdc, 0xdf, 0x31, 0x74, 0xfd, 0xb4, 0x08, 0x65, 0x7c, - 0x1e, 0xea, 0x5e, 0x65, 0xa8, 0x99, 0x1a, 0xfa, 0xce, 0x21, 0xe7, 0xf6, 0xa4, 0x41, 0x7a, 0x7f, - 0x1e, 0x3e, 0x99, 0x2d, 0x4a, 0x0a, 0x56, 0xb7, 0x92, 0xd5, 0x78, 0xcf, 0x6c, 0xaf, 0x9e, 0xd2, - 0x27, 0x73, 0xbd, 0x3a, 0x63, 0x73, 0xe8, 0x17, 0x87, 0xd4, 0xf6, 0xe3, 0xf0, 0xb7, 0x67, 0x2a, - 0x9d, 0x5f, 0x64, 0xe7, 0x7a, 0xd6, 0x0d, 0xb8, 0x07, 0xff, 0xe4, 0x4c, 0x95, 0xea, 0xa6, 0x3b, - 0x37, 0x39, 0x6e, 0x3e, 0xb9, 0xb6, 0x29, 0x30, 0xe8, 0xa6, 0x36, 0xf7, 0x84, 0xc1, 0x97, 0x00, - 0x8a, 0xd6, 0xe7, 0xed, 0xcd, 0x80, 0x0a, 0xa7, 0x39, 0x3a, 0xcf, 0x74, 0x9d, 0xa5, 0xf7, 0x9a, - 0xe5, 0xf7, 0x9a, 0x35, 0x27, 0xf7, 0x9a, 0xbe, 0x77, 0x48, 0xad, 0x01, 0x7d, 0x40, 0xa0, 0x67, - 0xda, 0xdb, 0x2a, 0x22, 0x6f, 0xd7, 0x76, 0xa6, 0xb1, 0xb2, 0xf9, 0x77, 0xfb, 0xc4, 0x8f, 0xa6, - 0xd9, 0xd7, 0x7e, 0x3a, 0xc4, 0x2d, 0xc4, 0x5f, 0xc1, 0x20, 0xee, 0x0b, 0x84, 0x2d, 0xad, 0x46, - 0x90, 0x20, 0x24, 0xb4, 0x43, 0x2e, 0x4e, 0xce, 0xd1, 0xb6, 0x4e, 0x06, 0x02, 0x0d, 0xad, 0x70, - 0xe4, 0x3e, 0xac, 0xcc, 0x93, 0x53, 0x66, 0x0c, 0xde, 0x92, 0xf5, 0x7e, 0x85, 0x5e, 0xe2, 0x10, - 0x62, 0xc0, 0x3b, 0x19, 0xf1, 0x98, 0x9c, 0xcf, 0x44, 0x29, 0x2f, 0x3d, 0x47, 0xe9, 0x42, 0x89, - 0x32, 0xef, 0xf7, 0xdd, 0x3f, 0x8a, 0x7b, 0x37, 0xac, 0x2a, 0xf5, 0x32, 0xd5, 0x20, 0x65, 0xdc, - 0x70, 0x56, 0x1e, 0x3b, 0x9b, 0xeb, 0x5f, 0xbf, 0xdf, 0x71, 0x5e, 0xf3, 0x48, 0x33, 0xec, 0x02, - 0x76, 0xa5, 0x8a, 0x0c, 0x53, 0x80, 0x87, 0x3a, 0xe9, 0xf1, 0x93, 0xef, 0xeb, 0xa8, 0xce, 0xe3, - 0x5e, 0xc4, 0x11, 0x55, 0xec, 0xfb, 0x35, 0xdb, 0x82, 0xfa, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x8c, 0x53, 0x9c, 0xaf, 0x4f, 0x06, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// EndDeviceRegistryClient is the client API for EndDeviceRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type EndDeviceRegistryClient interface { - // Create a new end device within an application. - // - // After registering an end device, it also needs to be registered in - // the NsEndDeviceRegistry that is exposed by the Network Server, - // the AsEndDeviceRegistry that is exposed by the Application Server, - // and the JsEndDeviceRegistry that is exposed by the Join Server. - Create(ctx context.Context, in *CreateEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) - // Get the end device with the given identifiers, selecting the fields specified - // in the field mask. - // More or less fields may be returned, depending on the rights of the caller. - Get(ctx context.Context, in *GetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) - // Get the identifiers of the end device that has the given EUIs registered. - GetIdentifiersForEUIs(ctx context.Context, in *GetEndDeviceIdentifiersForEUIsRequest, opts ...grpc.CallOption) (*EndDeviceIdentifiers, error) - // List end devices in the given application. - // Similar to Get, this selects the fields given by the field mask. - // More or less fields may be returned, depending on the rights of the caller. - List(ctx context.Context, in *ListEndDevicesRequest, opts ...grpc.CallOption) (*EndDevices, error) - // Update the end device, changing the fields specified by the field mask to the provided values. - Update(ctx context.Context, in *UpdateEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) - // Update the last seen timestamp for a batch of end devices. - BatchUpdateLastSeen(ctx context.Context, in *BatchUpdateEndDeviceLastSeenRequest, opts ...grpc.CallOption) (*types.Empty, error) - // Delete the end device with the given IDs. - // - // Before deleting an end device it first needs to be deleted from the - // NsEndDeviceRegistry, the AsEndDeviceRegistry and the JsEndDeviceRegistry. - // This is NOT done automatically. - Delete(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) -} - -type endDeviceRegistryClient struct { - cc *grpc.ClientConn -} - -func NewEndDeviceRegistryClient(cc *grpc.ClientConn) EndDeviceRegistryClient { - return &endDeviceRegistryClient{cc} -} - -func (c *endDeviceRegistryClient) Create(ctx context.Context, in *CreateEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { - out := new(EndDevice) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceRegistry/Create", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *endDeviceRegistryClient) Get(ctx context.Context, in *GetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { - out := new(EndDevice) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceRegistry/Get", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *endDeviceRegistryClient) GetIdentifiersForEUIs(ctx context.Context, in *GetEndDeviceIdentifiersForEUIsRequest, opts ...grpc.CallOption) (*EndDeviceIdentifiers, error) { - out := new(EndDeviceIdentifiers) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceRegistry/GetIdentifiersForEUIs", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *endDeviceRegistryClient) List(ctx context.Context, in *ListEndDevicesRequest, opts ...grpc.CallOption) (*EndDevices, error) { - out := new(EndDevices) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceRegistry/List", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *endDeviceRegistryClient) Update(ctx context.Context, in *UpdateEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { - out := new(EndDevice) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceRegistry/Update", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *endDeviceRegistryClient) BatchUpdateLastSeen(ctx context.Context, in *BatchUpdateEndDeviceLastSeenRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceRegistry/BatchUpdateLastSeen", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *endDeviceRegistryClient) Delete(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceRegistry/Delete", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// EndDeviceRegistryServer is the server API for EndDeviceRegistry service. -type EndDeviceRegistryServer interface { - // Create a new end device within an application. - // - // After registering an end device, it also needs to be registered in - // the NsEndDeviceRegistry that is exposed by the Network Server, - // the AsEndDeviceRegistry that is exposed by the Application Server, - // and the JsEndDeviceRegistry that is exposed by the Join Server. - Create(context.Context, *CreateEndDeviceRequest) (*EndDevice, error) - // Get the end device with the given identifiers, selecting the fields specified - // in the field mask. - // More or less fields may be returned, depending on the rights of the caller. - Get(context.Context, *GetEndDeviceRequest) (*EndDevice, error) - // Get the identifiers of the end device that has the given EUIs registered. - GetIdentifiersForEUIs(context.Context, *GetEndDeviceIdentifiersForEUIsRequest) (*EndDeviceIdentifiers, error) - // List end devices in the given application. - // Similar to Get, this selects the fields given by the field mask. - // More or less fields may be returned, depending on the rights of the caller. - List(context.Context, *ListEndDevicesRequest) (*EndDevices, error) - // Update the end device, changing the fields specified by the field mask to the provided values. - Update(context.Context, *UpdateEndDeviceRequest) (*EndDevice, error) - // Update the last seen timestamp for a batch of end devices. - BatchUpdateLastSeen(context.Context, *BatchUpdateEndDeviceLastSeenRequest) (*types.Empty, error) - // Delete the end device with the given IDs. - // - // Before deleting an end device it first needs to be deleted from the - // NsEndDeviceRegistry, the AsEndDeviceRegistry and the JsEndDeviceRegistry. - // This is NOT done automatically. - Delete(context.Context, *EndDeviceIdentifiers) (*types.Empty, error) -} - -// UnimplementedEndDeviceRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedEndDeviceRegistryServer struct { -} - -func (*UnimplementedEndDeviceRegistryServer) Create(ctx context.Context, req *CreateEndDeviceRequest) (*EndDevice, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (*UnimplementedEndDeviceRegistryServer) Get(ctx context.Context, req *GetEndDeviceRequest) (*EndDevice, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") -} -func (*UnimplementedEndDeviceRegistryServer) GetIdentifiersForEUIs(ctx context.Context, req *GetEndDeviceIdentifiersForEUIsRequest) (*EndDeviceIdentifiers, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetIdentifiersForEUIs not implemented") -} -func (*UnimplementedEndDeviceRegistryServer) List(ctx context.Context, req *ListEndDevicesRequest) (*EndDevices, error) { - return nil, status.Errorf(codes.Unimplemented, "method List not implemented") -} -func (*UnimplementedEndDeviceRegistryServer) Update(ctx context.Context, req *UpdateEndDeviceRequest) (*EndDevice, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") -} -func (*UnimplementedEndDeviceRegistryServer) BatchUpdateLastSeen(ctx context.Context, req *BatchUpdateEndDeviceLastSeenRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method BatchUpdateLastSeen not implemented") -} -func (*UnimplementedEndDeviceRegistryServer) Delete(ctx context.Context, req *EndDeviceIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} - -func RegisterEndDeviceRegistryServer(s *grpc.Server, srv EndDeviceRegistryServer) { - s.RegisterService(&_EndDeviceRegistry_serviceDesc, srv) -} - -func _EndDeviceRegistry_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateEndDeviceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceRegistryServer).Create(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceRegistry/Create", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceRegistryServer).Create(ctx, req.(*CreateEndDeviceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EndDeviceRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetEndDeviceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceRegistryServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceRegistry/Get", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceRegistryServer).Get(ctx, req.(*GetEndDeviceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EndDeviceRegistry_GetIdentifiersForEUIs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetEndDeviceIdentifiersForEUIsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceRegistryServer).GetIdentifiersForEUIs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceRegistry/GetIdentifiersForEUIs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceRegistryServer).GetIdentifiersForEUIs(ctx, req.(*GetEndDeviceIdentifiersForEUIsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EndDeviceRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListEndDevicesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceRegistryServer).List(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceRegistry/List", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceRegistryServer).List(ctx, req.(*ListEndDevicesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EndDeviceRegistry_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateEndDeviceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceRegistryServer).Update(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceRegistry/Update", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceRegistryServer).Update(ctx, req.(*UpdateEndDeviceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EndDeviceRegistry_BatchUpdateLastSeen_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchUpdateEndDeviceLastSeenRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceRegistryServer).BatchUpdateLastSeen(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceRegistry/BatchUpdateLastSeen", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceRegistryServer).BatchUpdateLastSeen(ctx, req.(*BatchUpdateEndDeviceLastSeenRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EndDeviceRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(EndDeviceIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceRegistryServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceRegistry/Delete", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceRegistryServer).Delete(ctx, req.(*EndDeviceIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -var _EndDeviceRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.EndDeviceRegistry", - HandlerType: (*EndDeviceRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Create", - Handler: _EndDeviceRegistry_Create_Handler, - }, - { - MethodName: "Get", - Handler: _EndDeviceRegistry_Get_Handler, - }, - { - MethodName: "GetIdentifiersForEUIs", - Handler: _EndDeviceRegistry_GetIdentifiersForEUIs_Handler, - }, - { - MethodName: "List", - Handler: _EndDeviceRegistry_List_Handler, - }, - { - MethodName: "Update", - Handler: _EndDeviceRegistry_Update_Handler, - }, - { - MethodName: "BatchUpdateLastSeen", - Handler: _EndDeviceRegistry_BatchUpdateLastSeen_Handler, - }, - { - MethodName: "Delete", - Handler: _EndDeviceRegistry_Delete_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/end_device_services.proto", -} - -// EndDeviceTemplateConverterClient is the client API for EndDeviceTemplateConverter service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type EndDeviceTemplateConverterClient interface { - // Returns the configured formats to convert from. - ListFormats(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*EndDeviceTemplateFormats, error) - // Converts the binary data to a stream of end device templates. - Convert(ctx context.Context, in *ConvertEndDeviceTemplateRequest, opts ...grpc.CallOption) (EndDeviceTemplateConverter_ConvertClient, error) -} - -type endDeviceTemplateConverterClient struct { - cc *grpc.ClientConn -} - -func NewEndDeviceTemplateConverterClient(cc *grpc.ClientConn) EndDeviceTemplateConverterClient { - return &endDeviceTemplateConverterClient{cc} -} - -func (c *endDeviceTemplateConverterClient) ListFormats(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*EndDeviceTemplateFormats, error) { - out := new(EndDeviceTemplateFormats) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceTemplateConverter/ListFormats", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *endDeviceTemplateConverterClient) Convert(ctx context.Context, in *ConvertEndDeviceTemplateRequest, opts ...grpc.CallOption) (EndDeviceTemplateConverter_ConvertClient, error) { - stream, err := c.cc.NewStream(ctx, &_EndDeviceTemplateConverter_serviceDesc.Streams[0], "/ttn.lorawan.v3.EndDeviceTemplateConverter/Convert", opts...) - if err != nil { - return nil, err - } - x := &endDeviceTemplateConverterConvertClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type EndDeviceTemplateConverter_ConvertClient interface { - Recv() (*EndDeviceTemplate, error) - grpc.ClientStream -} - -type endDeviceTemplateConverterConvertClient struct { - grpc.ClientStream -} - -func (x *endDeviceTemplateConverterConvertClient) Recv() (*EndDeviceTemplate, error) { - m := new(EndDeviceTemplate) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// EndDeviceTemplateConverterServer is the server API for EndDeviceTemplateConverter service. -type EndDeviceTemplateConverterServer interface { - // Returns the configured formats to convert from. - ListFormats(context.Context, *types.Empty) (*EndDeviceTemplateFormats, error) - // Converts the binary data to a stream of end device templates. - Convert(*ConvertEndDeviceTemplateRequest, EndDeviceTemplateConverter_ConvertServer) error -} - -// UnimplementedEndDeviceTemplateConverterServer can be embedded to have forward compatible implementations. -type UnimplementedEndDeviceTemplateConverterServer struct { -} - -func (*UnimplementedEndDeviceTemplateConverterServer) ListFormats(ctx context.Context, req *types.Empty) (*EndDeviceTemplateFormats, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListFormats not implemented") -} -func (*UnimplementedEndDeviceTemplateConverterServer) Convert(req *ConvertEndDeviceTemplateRequest, srv EndDeviceTemplateConverter_ConvertServer) error { - return status.Errorf(codes.Unimplemented, "method Convert not implemented") -} - -func RegisterEndDeviceTemplateConverterServer(s *grpc.Server, srv EndDeviceTemplateConverterServer) { - s.RegisterService(&_EndDeviceTemplateConverter_serviceDesc, srv) -} - -func _EndDeviceTemplateConverter_ListFormats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceTemplateConverterServer).ListFormats(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceTemplateConverter/ListFormats", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceTemplateConverterServer).ListFormats(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) -} - -func _EndDeviceTemplateConverter_Convert_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(ConvertEndDeviceTemplateRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(EndDeviceTemplateConverterServer).Convert(m, &endDeviceTemplateConverterConvertServer{stream}) -} - -type EndDeviceTemplateConverter_ConvertServer interface { - Send(*EndDeviceTemplate) error - grpc.ServerStream -} - -type endDeviceTemplateConverterConvertServer struct { - grpc.ServerStream -} - -func (x *endDeviceTemplateConverterConvertServer) Send(m *EndDeviceTemplate) error { - return x.ServerStream.SendMsg(m) -} +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -var _EndDeviceTemplateConverter_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.EndDeviceTemplateConverter", - HandlerType: (*EndDeviceTemplateConverterServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListFormats", - Handler: _EndDeviceTemplateConverter_ListFormats_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "Convert", - Handler: _EndDeviceTemplateConverter_Convert_Handler, - ServerStreams: true, +var File_lorawan_stack_api_end_device_services_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_end_device_services_proto_rawDesc = []byte{ + 0x0a, 0x2b, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x2d, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, + 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x32, 0x9b, 0x08, 0x0a, 0x11, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x9d, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x22, 0x45, 0x2f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xaf, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x23, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x68, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x62, 0x12, 0x60, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, + 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x74, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x55, 0x49, + 0x73, 0x12, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x55, 0x49, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x89, + 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x38, 0x12, 0x36, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0xb8, 0x01, 0x0a, 0x06, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, + 0x1a, 0x60, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x62, 0x0a, 0x13, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x33, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x92, 0x01, 0x0a, 0x06, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x2a, 0x42, 0x2f, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x32, 0xff, + 0x01, 0x0a, 0x1a, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x72, 0x12, 0x66, 0x0a, + 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x22, 0x15, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x65, 0x64, 0x74, 0x63, 0x2f, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x79, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, + 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x22, 0x0d, 0x2f, 0x65, + 0x64, 0x74, 0x63, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x30, 0x01, + 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, + 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var file_lorawan_stack_api_end_device_services_proto_goTypes = []interface{}{ + (*CreateEndDeviceRequest)(nil), // 0: ttn.lorawan.v3.CreateEndDeviceRequest + (*GetEndDeviceRequest)(nil), // 1: ttn.lorawan.v3.GetEndDeviceRequest + (*GetEndDeviceIdentifiersForEUIsRequest)(nil), // 2: ttn.lorawan.v3.GetEndDeviceIdentifiersForEUIsRequest + (*ListEndDevicesRequest)(nil), // 3: ttn.lorawan.v3.ListEndDevicesRequest + (*UpdateEndDeviceRequest)(nil), // 4: ttn.lorawan.v3.UpdateEndDeviceRequest + (*BatchUpdateEndDeviceLastSeenRequest)(nil), // 5: ttn.lorawan.v3.BatchUpdateEndDeviceLastSeenRequest + (*EndDeviceIdentifiers)(nil), // 6: ttn.lorawan.v3.EndDeviceIdentifiers + (*emptypb.Empty)(nil), // 7: google.protobuf.Empty + (*ConvertEndDeviceTemplateRequest)(nil), // 8: ttn.lorawan.v3.ConvertEndDeviceTemplateRequest + (*EndDevice)(nil), // 9: ttn.lorawan.v3.EndDevice + (*EndDevices)(nil), // 10: ttn.lorawan.v3.EndDevices + (*EndDeviceTemplateFormats)(nil), // 11: ttn.lorawan.v3.EndDeviceTemplateFormats + (*EndDeviceTemplate)(nil), // 12: ttn.lorawan.v3.EndDeviceTemplate +} +var file_lorawan_stack_api_end_device_services_proto_depIdxs = []int32{ + 0, // 0: ttn.lorawan.v3.EndDeviceRegistry.Create:input_type -> ttn.lorawan.v3.CreateEndDeviceRequest + 1, // 1: ttn.lorawan.v3.EndDeviceRegistry.Get:input_type -> ttn.lorawan.v3.GetEndDeviceRequest + 2, // 2: ttn.lorawan.v3.EndDeviceRegistry.GetIdentifiersForEUIs:input_type -> ttn.lorawan.v3.GetEndDeviceIdentifiersForEUIsRequest + 3, // 3: ttn.lorawan.v3.EndDeviceRegistry.List:input_type -> ttn.lorawan.v3.ListEndDevicesRequest + 4, // 4: ttn.lorawan.v3.EndDeviceRegistry.Update:input_type -> ttn.lorawan.v3.UpdateEndDeviceRequest + 5, // 5: ttn.lorawan.v3.EndDeviceRegistry.BatchUpdateLastSeen:input_type -> ttn.lorawan.v3.BatchUpdateEndDeviceLastSeenRequest + 6, // 6: ttn.lorawan.v3.EndDeviceRegistry.Delete:input_type -> ttn.lorawan.v3.EndDeviceIdentifiers + 7, // 7: ttn.lorawan.v3.EndDeviceTemplateConverter.ListFormats:input_type -> google.protobuf.Empty + 8, // 8: ttn.lorawan.v3.EndDeviceTemplateConverter.Convert:input_type -> ttn.lorawan.v3.ConvertEndDeviceTemplateRequest + 9, // 9: ttn.lorawan.v3.EndDeviceRegistry.Create:output_type -> ttn.lorawan.v3.EndDevice + 9, // 10: ttn.lorawan.v3.EndDeviceRegistry.Get:output_type -> ttn.lorawan.v3.EndDevice + 6, // 11: ttn.lorawan.v3.EndDeviceRegistry.GetIdentifiersForEUIs:output_type -> ttn.lorawan.v3.EndDeviceIdentifiers + 10, // 12: ttn.lorawan.v3.EndDeviceRegistry.List:output_type -> ttn.lorawan.v3.EndDevices + 9, // 13: ttn.lorawan.v3.EndDeviceRegistry.Update:output_type -> ttn.lorawan.v3.EndDevice + 7, // 14: ttn.lorawan.v3.EndDeviceRegistry.BatchUpdateLastSeen:output_type -> google.protobuf.Empty + 7, // 15: ttn.lorawan.v3.EndDeviceRegistry.Delete:output_type -> google.protobuf.Empty + 11, // 16: ttn.lorawan.v3.EndDeviceTemplateConverter.ListFormats:output_type -> ttn.lorawan.v3.EndDeviceTemplateFormats + 12, // 17: ttn.lorawan.v3.EndDeviceTemplateConverter.Convert:output_type -> ttn.lorawan.v3.EndDeviceTemplate + 9, // [9:18] is the sub-list for method output_type + 0, // [0:9] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_end_device_services_proto_init() } +func file_lorawan_stack_api_end_device_services_proto_init() { + if File_lorawan_stack_api_end_device_services_proto != nil { + return + } + file_lorawan_stack_api_end_device_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_end_device_services_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 2, }, - }, - Metadata: "lorawan-stack/api/end_device_services.proto", + GoTypes: file_lorawan_stack_api_end_device_services_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_end_device_services_proto_depIdxs, + }.Build() + File_lorawan_stack_api_end_device_services_proto = out.File + file_lorawan_stack_api_end_device_services_proto_rawDesc = nil + file_lorawan_stack_api_end_device_services_proto_goTypes = nil + file_lorawan_stack_api_end_device_services_proto_depIdxs = nil } diff --git a/pkg/ttnpb/end_device_services.pb.gw.go b/pkg/ttnpb/end_device_services.pb.gw.go index b288dbb248..0db1ceebb7 100644 --- a/pkg/ttnpb/end_device_services.pb.gw.go +++ b/pkg/ttnpb/end_device_services.pb.gw.go @@ -13,16 +13,15 @@ import ( "io" "net/http" - "github.com/gogo/protobuf/types" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/emptypb" ) // Suppress "imported and not used" errors @@ -31,7 +30,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join func request_EndDeviceRegistry_Create_0(ctx context.Context, marshaler runtime.Marshaler, client EndDeviceRegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -59,7 +57,6 @@ func request_EndDeviceRegistry_Create_0(ctx context.Context, marshaler runtime.M } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.application_ids.application_id", err) } @@ -94,7 +91,6 @@ func local_request_EndDeviceRegistry_Create_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.application_ids.application_id", err) } @@ -125,7 +121,6 @@ func request_EndDeviceRegistry_Get_0(ctx context.Context, marshaler runtime.Mars } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -136,7 +131,6 @@ func request_EndDeviceRegistry_Get_0(ctx context.Context, marshaler runtime.Mars } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -170,7 +164,6 @@ func local_request_EndDeviceRegistry_Get_0(ctx context.Context, marshaler runtim } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -181,7 +174,6 @@ func local_request_EndDeviceRegistry_Get_0(ctx context.Context, marshaler runtim } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -219,7 +211,6 @@ func request_EndDeviceRegistry_List_0(ctx context.Context, marshaler runtime.Mar } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -253,7 +244,6 @@ func local_request_EndDeviceRegistry_List_0(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -295,7 +285,6 @@ func request_EndDeviceRegistry_Update_0(ctx context.Context, marshaler runtime.M } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.application_ids.application_id", err) } @@ -306,7 +295,6 @@ func request_EndDeviceRegistry_Update_0(ctx context.Context, marshaler runtime.M } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.device_id", err) } @@ -341,7 +329,6 @@ func local_request_EndDeviceRegistry_Update_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.application_ids.application_id", err) } @@ -352,7 +339,6 @@ func local_request_EndDeviceRegistry_Update_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.device_id", err) } @@ -383,7 +369,6 @@ func request_EndDeviceRegistry_Delete_0(ctx context.Context, marshaler runtime.M } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -394,7 +379,6 @@ func request_EndDeviceRegistry_Delete_0(ctx context.Context, marshaler runtime.M } protoReq.DeviceId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "device_id", err) } @@ -428,7 +412,6 @@ func local_request_EndDeviceRegistry_Delete_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -439,7 +422,6 @@ func local_request_EndDeviceRegistry_Delete_0(ctx context.Context, marshaler run } protoReq.DeviceId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "device_id", err) } @@ -457,7 +439,7 @@ func local_request_EndDeviceRegistry_Delete_0(ctx context.Context, marshaler run } func request_EndDeviceTemplateConverter_ListFormats_0(ctx context.Context, marshaler runtime.Marshaler, client EndDeviceTemplateConverterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := client.ListFormats(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -466,7 +448,7 @@ func request_EndDeviceTemplateConverter_ListFormats_0(ctx context.Context, marsh } func local_request_EndDeviceTemplateConverter_ListFormats_0(ctx context.Context, marshaler runtime.Marshaler, server EndDeviceTemplateConverterServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := server.ListFormats(ctx, &protoReq) @@ -511,20 +493,22 @@ func RegisterEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime.Se var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceRegistry/Create", runtime.WithHTTPPathPattern("/applications/{end_device.ids.application_ids.application_id}/devices")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceRegistry_Create_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceRegistry_Create_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceRegistry_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceRegistry_Create_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -534,20 +518,22 @@ func RegisterEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime.Se var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceRegistry/Get", runtime.WithHTTPPathPattern("/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceRegistry_Get_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceRegistry_Get_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -557,20 +543,22 @@ func RegisterEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime.Se var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceRegistry/List", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/devices")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceRegistry_List_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceRegistry_List_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -580,20 +568,22 @@ func RegisterEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime.Se var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceRegistry/Update", runtime.WithHTTPPathPattern("/applications/{end_device.ids.application_ids.application_id}/devices/{end_device.ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceRegistry_Update_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceRegistry_Update_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceRegistry_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceRegistry_Update_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -603,20 +593,22 @@ func RegisterEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime.Se var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceRegistry/Delete", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/devices/{device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceRegistry_Delete_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceRegistry_Delete_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -635,20 +627,22 @@ func RegisterEndDeviceTemplateConverterHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceTemplateConverter/ListFormats", runtime.WithHTTPPathPattern("/edtc/formats")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceTemplateConverter_ListFormats_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceTemplateConverter_ListFormats_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceTemplateConverter_ListFormats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceTemplateConverter_ListFormats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -704,19 +698,21 @@ func RegisterEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime.Se ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceRegistry/Create", runtime.WithHTTPPathPattern("/applications/{end_device.ids.application_ids.application_id}/devices")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceRegistry_Create_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceRegistry_Create_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceRegistry_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceRegistry_Create_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -724,19 +720,21 @@ func RegisterEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime.Se ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceRegistry/Get", runtime.WithHTTPPathPattern("/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceRegistry_Get_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceRegistry_Get_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -744,19 +742,21 @@ func RegisterEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime.Se ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceRegistry/List", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/devices")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceRegistry_List_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceRegistry_List_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -764,19 +764,21 @@ func RegisterEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime.Se ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceRegistry/Update", runtime.WithHTTPPathPattern("/applications/{end_device.ids.application_ids.application_id}/devices/{end_device.ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceRegistry_Update_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceRegistry_Update_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceRegistry_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceRegistry_Update_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -784,19 +786,21 @@ func RegisterEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime.Se ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceRegistry/Delete", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/devices/{device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceRegistry_Delete_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceRegistry_Delete_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -804,15 +808,15 @@ func RegisterEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime.Se } var ( - pattern_EndDeviceRegistry_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "end_device.ids.application_ids.application_id", "devices"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceRegistry_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "end_device.ids.application_ids.application_id", "devices"}, "")) - pattern_EndDeviceRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id"}, "")) - pattern_EndDeviceRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_ids.application_id", "devices"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"applications", "application_ids.application_id", "devices"}, "")) - pattern_EndDeviceRegistry_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"applications", "end_device.ids.application_ids.application_id", "devices", "end_device.ids.device_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceRegistry_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"applications", "end_device.ids.application_ids.application_id", "devices", "end_device.ids.device_id"}, "")) - pattern_EndDeviceRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"applications", "application_ids.application_id", "devices", "device_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"applications", "application_ids.application_id", "devices", "device_id"}, "")) ) var ( @@ -869,19 +873,21 @@ func RegisterEndDeviceTemplateConverterHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceTemplateConverter/ListFormats", runtime.WithHTTPPathPattern("/edtc/formats")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceTemplateConverter_ListFormats_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceTemplateConverter_ListFormats_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceTemplateConverter_ListFormats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceTemplateConverter_ListFormats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -889,19 +895,21 @@ func RegisterEndDeviceTemplateConverterHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceTemplateConverter/Convert", runtime.WithHTTPPathPattern("/edtc/convert")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceTemplateConverter_Convert_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceTemplateConverter_Convert_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceTemplateConverter_Convert_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) + forward_EndDeviceTemplateConverter_Convert_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) }) @@ -909,9 +917,9 @@ func RegisterEndDeviceTemplateConverterHandlerClient(ctx context.Context, mux *r } var ( - pattern_EndDeviceTemplateConverter_ListFormats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"edtc", "formats"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceTemplateConverter_ListFormats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"edtc", "formats"}, "")) - pattern_EndDeviceTemplateConverter_Convert_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"edtc", "convert"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceTemplateConverter_Convert_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"edtc", "convert"}, "")) ) var ( diff --git a/pkg/ttnpb/end_device_services.pb.validate.go b/pkg/ttnpb/end_device_services.pb.validate.go index 4e66dfa917..90a1820015 100644 --- a/pkg/ttnpb/end_device_services.pb.validate.go +++ b/pkg/ttnpb/end_device_services.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,8 +29,5 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) - -// define the regex for a UUID once up-front -var _end_device_services_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") diff --git a/pkg/ttnpb/end_device_services_grpc.pb.go b/pkg/ttnpb/end_device_services_grpc.pb.go new file mode 100644 index 0000000000..0dcadb6102 --- /dev/null +++ b/pkg/ttnpb/end_device_services_grpc.pb.go @@ -0,0 +1,517 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/end_device_services.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// EndDeviceRegistryClient is the client API for EndDeviceRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type EndDeviceRegistryClient interface { + // Create a new end device within an application. + // + // After registering an end device, it also needs to be registered in + // the NsEndDeviceRegistry that is exposed by the Network Server, + // the AsEndDeviceRegistry that is exposed by the Application Server, + // and the JsEndDeviceRegistry that is exposed by the Join Server. + Create(ctx context.Context, in *CreateEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) + // Get the end device with the given identifiers, selecting the fields specified + // in the field mask. + // More or less fields may be returned, depending on the rights of the caller. + Get(ctx context.Context, in *GetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) + // Get the identifiers of the end device that has the given EUIs registered. + GetIdentifiersForEUIs(ctx context.Context, in *GetEndDeviceIdentifiersForEUIsRequest, opts ...grpc.CallOption) (*EndDeviceIdentifiers, error) + // List end devices in the given application. + // Similar to Get, this selects the fields given by the field mask. + // More or less fields may be returned, depending on the rights of the caller. + List(ctx context.Context, in *ListEndDevicesRequest, opts ...grpc.CallOption) (*EndDevices, error) + // Update the end device, changing the fields specified by the field mask to the provided values. + Update(ctx context.Context, in *UpdateEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) + // Update the last seen timestamp for a batch of end devices. + BatchUpdateLastSeen(ctx context.Context, in *BatchUpdateEndDeviceLastSeenRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Delete the end device with the given IDs. + // + // Before deleting an end device it first needs to be deleted from the + // NsEndDeviceRegistry, the AsEndDeviceRegistry and the JsEndDeviceRegistry. + // This is NOT done automatically. + Delete(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type endDeviceRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewEndDeviceRegistryClient(cc grpc.ClientConnInterface) EndDeviceRegistryClient { + return &endDeviceRegistryClient{cc} +} + +func (c *endDeviceRegistryClient) Create(ctx context.Context, in *CreateEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { + out := new(EndDevice) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceRegistry/Create", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *endDeviceRegistryClient) Get(ctx context.Context, in *GetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { + out := new(EndDevice) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceRegistry/Get", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *endDeviceRegistryClient) GetIdentifiersForEUIs(ctx context.Context, in *GetEndDeviceIdentifiersForEUIsRequest, opts ...grpc.CallOption) (*EndDeviceIdentifiers, error) { + out := new(EndDeviceIdentifiers) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceRegistry/GetIdentifiersForEUIs", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *endDeviceRegistryClient) List(ctx context.Context, in *ListEndDevicesRequest, opts ...grpc.CallOption) (*EndDevices, error) { + out := new(EndDevices) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceRegistry/List", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *endDeviceRegistryClient) Update(ctx context.Context, in *UpdateEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { + out := new(EndDevice) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceRegistry/Update", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *endDeviceRegistryClient) BatchUpdateLastSeen(ctx context.Context, in *BatchUpdateEndDeviceLastSeenRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceRegistry/BatchUpdateLastSeen", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *endDeviceRegistryClient) Delete(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceRegistry/Delete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// EndDeviceRegistryServer is the server API for EndDeviceRegistry service. +// All implementations must embed UnimplementedEndDeviceRegistryServer +// for forward compatibility +type EndDeviceRegistryServer interface { + // Create a new end device within an application. + // + // After registering an end device, it also needs to be registered in + // the NsEndDeviceRegistry that is exposed by the Network Server, + // the AsEndDeviceRegistry that is exposed by the Application Server, + // and the JsEndDeviceRegistry that is exposed by the Join Server. + Create(context.Context, *CreateEndDeviceRequest) (*EndDevice, error) + // Get the end device with the given identifiers, selecting the fields specified + // in the field mask. + // More or less fields may be returned, depending on the rights of the caller. + Get(context.Context, *GetEndDeviceRequest) (*EndDevice, error) + // Get the identifiers of the end device that has the given EUIs registered. + GetIdentifiersForEUIs(context.Context, *GetEndDeviceIdentifiersForEUIsRequest) (*EndDeviceIdentifiers, error) + // List end devices in the given application. + // Similar to Get, this selects the fields given by the field mask. + // More or less fields may be returned, depending on the rights of the caller. + List(context.Context, *ListEndDevicesRequest) (*EndDevices, error) + // Update the end device, changing the fields specified by the field mask to the provided values. + Update(context.Context, *UpdateEndDeviceRequest) (*EndDevice, error) + // Update the last seen timestamp for a batch of end devices. + BatchUpdateLastSeen(context.Context, *BatchUpdateEndDeviceLastSeenRequest) (*emptypb.Empty, error) + // Delete the end device with the given IDs. + // + // Before deleting an end device it first needs to be deleted from the + // NsEndDeviceRegistry, the AsEndDeviceRegistry and the JsEndDeviceRegistry. + // This is NOT done automatically. + Delete(context.Context, *EndDeviceIdentifiers) (*emptypb.Empty, error) + mustEmbedUnimplementedEndDeviceRegistryServer() +} + +// UnimplementedEndDeviceRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedEndDeviceRegistryServer struct { +} + +func (UnimplementedEndDeviceRegistryServer) Create(context.Context, *CreateEndDeviceRequest) (*EndDevice, error) { + return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") +} +func (UnimplementedEndDeviceRegistryServer) Get(context.Context, *GetEndDeviceRequest) (*EndDevice, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (UnimplementedEndDeviceRegistryServer) GetIdentifiersForEUIs(context.Context, *GetEndDeviceIdentifiersForEUIsRequest) (*EndDeviceIdentifiers, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetIdentifiersForEUIs not implemented") +} +func (UnimplementedEndDeviceRegistryServer) List(context.Context, *ListEndDevicesRequest) (*EndDevices, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedEndDeviceRegistryServer) Update(context.Context, *UpdateEndDeviceRequest) (*EndDevice, error) { + return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") +} +func (UnimplementedEndDeviceRegistryServer) BatchUpdateLastSeen(context.Context, *BatchUpdateEndDeviceLastSeenRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method BatchUpdateLastSeen not implemented") +} +func (UnimplementedEndDeviceRegistryServer) Delete(context.Context, *EndDeviceIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedEndDeviceRegistryServer) mustEmbedUnimplementedEndDeviceRegistryServer() {} + +// UnsafeEndDeviceRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to EndDeviceRegistryServer will +// result in compilation errors. +type UnsafeEndDeviceRegistryServer interface { + mustEmbedUnimplementedEndDeviceRegistryServer() +} + +func RegisterEndDeviceRegistryServer(s grpc.ServiceRegistrar, srv EndDeviceRegistryServer) { + s.RegisterService(&EndDeviceRegistry_ServiceDesc, srv) +} + +func _EndDeviceRegistry_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateEndDeviceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceRegistryServer).Create(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceRegistry/Create", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceRegistryServer).Create(ctx, req.(*CreateEndDeviceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EndDeviceRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetEndDeviceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceRegistryServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceRegistry/Get", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceRegistryServer).Get(ctx, req.(*GetEndDeviceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EndDeviceRegistry_GetIdentifiersForEUIs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetEndDeviceIdentifiersForEUIsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceRegistryServer).GetIdentifiersForEUIs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceRegistry/GetIdentifiersForEUIs", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceRegistryServer).GetIdentifiersForEUIs(ctx, req.(*GetEndDeviceIdentifiersForEUIsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EndDeviceRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListEndDevicesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceRegistryServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceRegistry/List", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceRegistryServer).List(ctx, req.(*ListEndDevicesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EndDeviceRegistry_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateEndDeviceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceRegistryServer).Update(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceRegistry/Update", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceRegistryServer).Update(ctx, req.(*UpdateEndDeviceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EndDeviceRegistry_BatchUpdateLastSeen_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BatchUpdateEndDeviceLastSeenRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceRegistryServer).BatchUpdateLastSeen(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceRegistry/BatchUpdateLastSeen", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceRegistryServer).BatchUpdateLastSeen(ctx, req.(*BatchUpdateEndDeviceLastSeenRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EndDeviceRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EndDeviceIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceRegistryServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceRegistry/Delete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceRegistryServer).Delete(ctx, req.(*EndDeviceIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// EndDeviceRegistry_ServiceDesc is the grpc.ServiceDesc for EndDeviceRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var EndDeviceRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.EndDeviceRegistry", + HandlerType: (*EndDeviceRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Create", + Handler: _EndDeviceRegistry_Create_Handler, + }, + { + MethodName: "Get", + Handler: _EndDeviceRegistry_Get_Handler, + }, + { + MethodName: "GetIdentifiersForEUIs", + Handler: _EndDeviceRegistry_GetIdentifiersForEUIs_Handler, + }, + { + MethodName: "List", + Handler: _EndDeviceRegistry_List_Handler, + }, + { + MethodName: "Update", + Handler: _EndDeviceRegistry_Update_Handler, + }, + { + MethodName: "BatchUpdateLastSeen", + Handler: _EndDeviceRegistry_BatchUpdateLastSeen_Handler, + }, + { + MethodName: "Delete", + Handler: _EndDeviceRegistry_Delete_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/end_device_services.proto", +} + +// EndDeviceTemplateConverterClient is the client API for EndDeviceTemplateConverter service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type EndDeviceTemplateConverterClient interface { + // Returns the configured formats to convert from. + ListFormats(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*EndDeviceTemplateFormats, error) + // Converts the binary data to a stream of end device templates. + Convert(ctx context.Context, in *ConvertEndDeviceTemplateRequest, opts ...grpc.CallOption) (EndDeviceTemplateConverter_ConvertClient, error) +} + +type endDeviceTemplateConverterClient struct { + cc grpc.ClientConnInterface +} + +func NewEndDeviceTemplateConverterClient(cc grpc.ClientConnInterface) EndDeviceTemplateConverterClient { + return &endDeviceTemplateConverterClient{cc} +} + +func (c *endDeviceTemplateConverterClient) ListFormats(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*EndDeviceTemplateFormats, error) { + out := new(EndDeviceTemplateFormats) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceTemplateConverter/ListFormats", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *endDeviceTemplateConverterClient) Convert(ctx context.Context, in *ConvertEndDeviceTemplateRequest, opts ...grpc.CallOption) (EndDeviceTemplateConverter_ConvertClient, error) { + stream, err := c.cc.NewStream(ctx, &EndDeviceTemplateConverter_ServiceDesc.Streams[0], "/ttn.lorawan.v3.EndDeviceTemplateConverter/Convert", opts...) + if err != nil { + return nil, err + } + x := &endDeviceTemplateConverterConvertClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type EndDeviceTemplateConverter_ConvertClient interface { + Recv() (*EndDeviceTemplate, error) + grpc.ClientStream +} + +type endDeviceTemplateConverterConvertClient struct { + grpc.ClientStream +} + +func (x *endDeviceTemplateConverterConvertClient) Recv() (*EndDeviceTemplate, error) { + m := new(EndDeviceTemplate) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// EndDeviceTemplateConverterServer is the server API for EndDeviceTemplateConverter service. +// All implementations must embed UnimplementedEndDeviceTemplateConverterServer +// for forward compatibility +type EndDeviceTemplateConverterServer interface { + // Returns the configured formats to convert from. + ListFormats(context.Context, *emptypb.Empty) (*EndDeviceTemplateFormats, error) + // Converts the binary data to a stream of end device templates. + Convert(*ConvertEndDeviceTemplateRequest, EndDeviceTemplateConverter_ConvertServer) error + mustEmbedUnimplementedEndDeviceTemplateConverterServer() +} + +// UnimplementedEndDeviceTemplateConverterServer must be embedded to have forward compatible implementations. +type UnimplementedEndDeviceTemplateConverterServer struct { +} + +func (UnimplementedEndDeviceTemplateConverterServer) ListFormats(context.Context, *emptypb.Empty) (*EndDeviceTemplateFormats, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListFormats not implemented") +} +func (UnimplementedEndDeviceTemplateConverterServer) Convert(*ConvertEndDeviceTemplateRequest, EndDeviceTemplateConverter_ConvertServer) error { + return status.Errorf(codes.Unimplemented, "method Convert not implemented") +} +func (UnimplementedEndDeviceTemplateConverterServer) mustEmbedUnimplementedEndDeviceTemplateConverterServer() { +} + +// UnsafeEndDeviceTemplateConverterServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to EndDeviceTemplateConverterServer will +// result in compilation errors. +type UnsafeEndDeviceTemplateConverterServer interface { + mustEmbedUnimplementedEndDeviceTemplateConverterServer() +} + +func RegisterEndDeviceTemplateConverterServer(s grpc.ServiceRegistrar, srv EndDeviceTemplateConverterServer) { + s.RegisterService(&EndDeviceTemplateConverter_ServiceDesc, srv) +} + +func _EndDeviceTemplateConverter_ListFormats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceTemplateConverterServer).ListFormats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceTemplateConverter/ListFormats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceTemplateConverterServer).ListFormats(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _EndDeviceTemplateConverter_Convert_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(ConvertEndDeviceTemplateRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(EndDeviceTemplateConverterServer).Convert(m, &endDeviceTemplateConverterConvertServer{stream}) +} + +type EndDeviceTemplateConverter_ConvertServer interface { + Send(*EndDeviceTemplate) error + grpc.ServerStream +} + +type endDeviceTemplateConverterConvertServer struct { + grpc.ServerStream +} + +func (x *endDeviceTemplateConverterConvertServer) Send(m *EndDeviceTemplate) error { + return x.ServerStream.SendMsg(m) +} + +// EndDeviceTemplateConverter_ServiceDesc is the grpc.ServiceDesc for EndDeviceTemplateConverter service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var EndDeviceTemplateConverter_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.EndDeviceTemplateConverter", + HandlerType: (*EndDeviceTemplateConverterServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListFormats", + Handler: _EndDeviceTemplateConverter_ListFormats_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "Convert", + Handler: _EndDeviceTemplateConverter_Convert_Handler, + ServerStreams: true, + }, + }, + Metadata: "lorawan-stack/api/end_device_services.proto", +} diff --git a/pkg/ttnpb/enums.pb.go b/pkg/ttnpb/enums.pb.go index eaecbd61fc..38ffcbc529 100644 --- a/pkg/ttnpb/enums.pb.go +++ b/pkg/ttnpb/enums.pb.go @@ -1,28 +1,40 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/enums.proto package ttnpb import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - golang_proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type DownlinkPathConstraint int32 @@ -35,24 +47,45 @@ const ( DownlinkPathConstraint_DOWNLINK_PATH_CONSTRAINT_NEVER DownlinkPathConstraint = 2 ) -var DownlinkPathConstraint_name = map[int32]string{ - 0: "DOWNLINK_PATH_CONSTRAINT_NONE", - 1: "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER", - 2: "DOWNLINK_PATH_CONSTRAINT_NEVER", -} +// Enum value maps for DownlinkPathConstraint. +var ( + DownlinkPathConstraint_name = map[int32]string{ + 0: "DOWNLINK_PATH_CONSTRAINT_NONE", + 1: "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER", + 2: "DOWNLINK_PATH_CONSTRAINT_NEVER", + } + DownlinkPathConstraint_value = map[string]int32{ + "DOWNLINK_PATH_CONSTRAINT_NONE": 0, + "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER": 1, + "DOWNLINK_PATH_CONSTRAINT_NEVER": 2, + } +) -var DownlinkPathConstraint_value = map[string]int32{ - "DOWNLINK_PATH_CONSTRAINT_NONE": 0, - "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER": 1, - "DOWNLINK_PATH_CONSTRAINT_NEVER": 2, +func (x DownlinkPathConstraint) Enum() *DownlinkPathConstraint { + p := new(DownlinkPathConstraint) + *p = x + return p } func (x DownlinkPathConstraint) String() string { - return proto.EnumName(DownlinkPathConstraint_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DownlinkPathConstraint) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_enums_proto_enumTypes[0].Descriptor() +} + +func (DownlinkPathConstraint) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_enums_proto_enumTypes[0] } +func (x DownlinkPathConstraint) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DownlinkPathConstraint.Descriptor instead. func (DownlinkPathConstraint) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_e36318a1e2f407cb, []int{0} + return file_lorawan_stack_api_enums_proto_rawDescGZIP(), []int{0} } // State enum defines states that an entity can be in. @@ -71,28 +104,49 @@ const ( State_STATE_SUSPENDED State = 4 ) -var State_name = map[int32]string{ - 0: "STATE_REQUESTED", - 1: "STATE_APPROVED", - 2: "STATE_REJECTED", - 3: "STATE_FLAGGED", - 4: "STATE_SUSPENDED", -} +// Enum value maps for State. +var ( + State_name = map[int32]string{ + 0: "STATE_REQUESTED", + 1: "STATE_APPROVED", + 2: "STATE_REJECTED", + 3: "STATE_FLAGGED", + 4: "STATE_SUSPENDED", + } + State_value = map[string]int32{ + "STATE_REQUESTED": 0, + "STATE_APPROVED": 1, + "STATE_REJECTED": 2, + "STATE_FLAGGED": 3, + "STATE_SUSPENDED": 4, + } +) -var State_value = map[string]int32{ - "STATE_REQUESTED": 0, - "STATE_APPROVED": 1, - "STATE_REJECTED": 2, - "STATE_FLAGGED": 3, - "STATE_SUSPENDED": 4, +func (x State) Enum() *State { + p := new(State) + *p = x + return p } func (x State) String() string { - return proto.EnumName(State_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (State) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_enums_proto_enumTypes[1].Descriptor() +} + +func (State) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_enums_proto_enumTypes[1] +} + +func (x State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use State.Descriptor instead. func (State) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_e36318a1e2f407cb, []int{1} + return file_lorawan_stack_api_enums_proto_rawDescGZIP(), []int{1} } type ClusterRole int32 @@ -114,99 +168,175 @@ const ( ClusterRole_DEVICE_REPOSITORY ClusterRole = 13 ) -var ClusterRole_name = map[int32]string{ - 0: "NONE", - 1: "ENTITY_REGISTRY", - 2: "ACCESS", - 3: "GATEWAY_SERVER", - 4: "NETWORK_SERVER", - 5: "APPLICATION_SERVER", - 6: "JOIN_SERVER", - 7: "CRYPTO_SERVER", - 8: "DEVICE_TEMPLATE_CONVERTER", - 9: "DEVICE_CLAIMING_SERVER", - 10: "GATEWAY_CONFIGURATION_SERVER", - 11: "QR_CODE_GENERATOR", - 12: "PACKET_BROKER_AGENT", - 13: "DEVICE_REPOSITORY", -} - -var ClusterRole_value = map[string]int32{ - "NONE": 0, - "ENTITY_REGISTRY": 1, - "ACCESS": 2, - "GATEWAY_SERVER": 3, - "NETWORK_SERVER": 4, - "APPLICATION_SERVER": 5, - "JOIN_SERVER": 6, - "CRYPTO_SERVER": 7, - "DEVICE_TEMPLATE_CONVERTER": 8, - "DEVICE_CLAIMING_SERVER": 9, - "GATEWAY_CONFIGURATION_SERVER": 10, - "QR_CODE_GENERATOR": 11, - "PACKET_BROKER_AGENT": 12, - "DEVICE_REPOSITORY": 13, +// Enum value maps for ClusterRole. +var ( + ClusterRole_name = map[int32]string{ + 0: "NONE", + 1: "ENTITY_REGISTRY", + 2: "ACCESS", + 3: "GATEWAY_SERVER", + 4: "NETWORK_SERVER", + 5: "APPLICATION_SERVER", + 6: "JOIN_SERVER", + 7: "CRYPTO_SERVER", + 8: "DEVICE_TEMPLATE_CONVERTER", + 9: "DEVICE_CLAIMING_SERVER", + 10: "GATEWAY_CONFIGURATION_SERVER", + 11: "QR_CODE_GENERATOR", + 12: "PACKET_BROKER_AGENT", + 13: "DEVICE_REPOSITORY", + } + ClusterRole_value = map[string]int32{ + "NONE": 0, + "ENTITY_REGISTRY": 1, + "ACCESS": 2, + "GATEWAY_SERVER": 3, + "NETWORK_SERVER": 4, + "APPLICATION_SERVER": 5, + "JOIN_SERVER": 6, + "CRYPTO_SERVER": 7, + "DEVICE_TEMPLATE_CONVERTER": 8, + "DEVICE_CLAIMING_SERVER": 9, + "GATEWAY_CONFIGURATION_SERVER": 10, + "QR_CODE_GENERATOR": 11, + "PACKET_BROKER_AGENT": 12, + "DEVICE_REPOSITORY": 13, + } +) + +func (x ClusterRole) Enum() *ClusterRole { + p := new(ClusterRole) + *p = x + return p } func (x ClusterRole) String() string { - return proto.EnumName(ClusterRole_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ClusterRole) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_enums_proto_enumTypes[2].Descriptor() +} + +func (ClusterRole) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_enums_proto_enumTypes[2] +} + +func (x ClusterRole) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use ClusterRole.Descriptor instead. func (ClusterRole) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_e36318a1e2f407cb, []int{2} -} - -func init() { - proto.RegisterEnum("ttn.lorawan.v3.DownlinkPathConstraint", DownlinkPathConstraint_name, DownlinkPathConstraint_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.DownlinkPathConstraint", DownlinkPathConstraint_name, DownlinkPathConstraint_value) - proto.RegisterEnum("ttn.lorawan.v3.State", State_name, State_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.State", State_name, State_value) - proto.RegisterEnum("ttn.lorawan.v3.ClusterRole", ClusterRole_name, ClusterRole_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.ClusterRole", ClusterRole_name, ClusterRole_value) -} - -func init() { proto.RegisterFile("lorawan-stack/api/enums.proto", fileDescriptor_e36318a1e2f407cb) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/enums.proto", fileDescriptor_e36318a1e2f407cb) -} - -var fileDescriptor_e36318a1e2f407cb = []byte{ - // 578 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x93, 0xdf, 0x4e, 0xdb, 0x3e, - 0x14, 0xc7, 0x69, 0xf9, 0xf3, 0x03, 0xf3, 0x03, 0x82, 0xd1, 0x18, 0x54, 0x80, 0xd8, 0xa4, 0x5d, - 0xac, 0x52, 0x9b, 0x0b, 0xb4, 0x07, 0x30, 0xce, 0x21, 0x98, 0x16, 0x3b, 0x38, 0xa6, 0xa8, 0xbb, - 0x89, 0x52, 0x96, 0xa5, 0x59, 0x8b, 0x5d, 0x35, 0x2e, 0x5c, 0xec, 0x8d, 0xd0, 0x1e, 0x82, 0x77, - 0xd9, 0x1d, 0x4f, 0x31, 0x25, 0x6d, 0xc7, 0xb8, 0xe0, 0xce, 0xe7, 0x73, 0xbe, 0xe7, 0xf8, 0x7b, - 0xac, 0x63, 0x74, 0x38, 0x34, 0xe3, 0xf8, 0x21, 0xd6, 0x8d, 0xdc, 0xc6, 0xb7, 0x03, 0x37, 0x1e, - 0x65, 0x6e, 0xa2, 0x27, 0x77, 0x79, 0x73, 0x34, 0x36, 0xd6, 0xe0, 0x4d, 0x6b, 0x75, 0x73, 0x26, - 0x69, 0xde, 0x9f, 0xd4, 0x1a, 0x69, 0x66, 0xfb, 0x93, 0x5e, 0xf3, 0xd6, 0xdc, 0xb9, 0xa9, 0x49, - 0x8d, 0x5b, 0xca, 0x7a, 0x93, 0xef, 0x65, 0x54, 0x06, 0xe5, 0x69, 0x5a, 0x5e, 0xa3, 0xff, 0xc8, - 0x55, 0x3f, 0x51, 0xfd, 0x4c, 0xa7, 0x39, 0xd3, 0xdf, 0x26, 0xb9, 0x1d, 0x67, 0x49, 0x3e, 0xad, - 0xbe, 0x6d, 0xa4, 0x89, 0x6e, 0xa4, 0xa6, 0xf1, 0x23, 0x37, 0xda, 0x8d, 0xb5, 0x36, 0x36, 0xb6, - 0x99, 0xd1, 0x33, 0x0f, 0xf5, 0x5f, 0x15, 0xb4, 0xeb, 0x99, 0x07, 0x3d, 0xcc, 0xf4, 0x20, 0x88, - 0x6d, 0x9f, 0x1a, 0x9d, 0xdb, 0x71, 0x9c, 0x69, 0x8b, 0x3f, 0xa0, 0x43, 0x4f, 0xdc, 0xf0, 0x36, - 0xe3, 0xad, 0x28, 0x20, 0xea, 0x3c, 0xa2, 0x82, 0x87, 0x4a, 0x12, 0xc6, 0x55, 0xc4, 0x05, 0x07, - 0x67, 0x01, 0x7f, 0x46, 0x9f, 0xde, 0x94, 0x04, 0x12, 0xce, 0x40, 0x46, 0x42, 0x9d, 0x83, 0x74, - 0x2a, 0xf8, 0x23, 0x3a, 0x7a, 0xbb, 0x1b, 0x74, 0x40, 0x3a, 0xd5, 0xda, 0xf1, 0xf3, 0xe3, 0xfe, - 0xc1, 0x5e, 0xa5, 0xbe, 0xf7, 0x96, 0xb2, 0xfe, 0x13, 0x2d, 0x87, 0x36, 0xb6, 0x09, 0xde, 0x41, - 0x5b, 0xa1, 0x22, 0x0a, 0x22, 0x09, 0x57, 0xd7, 0x10, 0x2a, 0xf0, 0x9c, 0x05, 0x8c, 0xd1, 0xe6, - 0x14, 0x92, 0x20, 0x90, 0xa2, 0x03, 0x9e, 0x53, 0x79, 0x61, 0x12, 0x2e, 0x80, 0x16, 0xba, 0x2a, - 0xde, 0x46, 0x1b, 0x53, 0x76, 0xd6, 0x26, 0xbe, 0x0f, 0x9e, 0xb3, 0xf8, 0xd2, 0x2f, 0xbc, 0x0e, - 0x03, 0xe0, 0x1e, 0x78, 0xce, 0x52, 0x6d, 0xe3, 0xf9, 0x71, 0x7f, 0x6d, 0xaf, 0x52, 0x5f, 0x2e, - 0x53, 0xf5, 0xa7, 0x2a, 0x5a, 0xa7, 0xc3, 0x49, 0x6e, 0x93, 0xb1, 0x34, 0xc3, 0x04, 0xaf, 0xa2, - 0xa5, 0xd9, 0x3b, 0xec, 0xa0, 0x2d, 0xe0, 0x8a, 0xa9, 0x6e, 0x24, 0xc1, 0x67, 0xa1, 0x92, 0x5d, - 0xa7, 0x82, 0x11, 0x5a, 0x21, 0x94, 0x42, 0x18, 0x3a, 0xd5, 0xc2, 0x85, 0x4f, 0x14, 0xdc, 0x90, - 0x6e, 0x14, 0x82, 0x2c, 0xa6, 0x5d, 0x2c, 0x18, 0x07, 0x75, 0x23, 0x64, 0x6b, 0xce, 0x96, 0xf0, - 0x2e, 0xc2, 0x24, 0x08, 0xda, 0x8c, 0x12, 0xc5, 0x04, 0x9f, 0xf3, 0x65, 0xbc, 0x85, 0xd6, 0x2f, - 0x04, 0xfb, 0x0b, 0x56, 0x8a, 0x11, 0xa8, 0xec, 0x06, 0x4a, 0xcc, 0xd1, 0x7f, 0xf8, 0x10, 0xed, - 0x7b, 0xd0, 0x61, 0x14, 0x22, 0x05, 0x97, 0x41, 0xbb, 0x18, 0x86, 0x0a, 0xde, 0x01, 0xa9, 0x40, - 0x3a, 0xab, 0xb8, 0x86, 0x76, 0x67, 0x69, 0xda, 0x26, 0xec, 0x92, 0x71, 0x7f, 0x5e, 0xba, 0x86, - 0x8f, 0xd1, 0xc1, 0xdc, 0x1e, 0x15, 0xfc, 0x8c, 0xf9, 0xd7, 0xf2, 0x95, 0x01, 0x84, 0xdf, 0xa1, - 0xed, 0x2b, 0x19, 0x51, 0xe1, 0x41, 0xe4, 0x03, 0x07, 0x49, 0x94, 0x90, 0xce, 0x3a, 0x7e, 0x8f, - 0x76, 0x02, 0x42, 0x5b, 0xa0, 0xa2, 0x53, 0x29, 0x5a, 0x20, 0x23, 0xe2, 0x03, 0x57, 0xce, 0xff, - 0x85, 0x7e, 0x76, 0x9b, 0x84, 0x40, 0x84, 0x4c, 0x09, 0xd9, 0x75, 0x36, 0x4e, 0xbf, 0x3c, 0xfd, - 0x3e, 0xaa, 0x7c, 0x75, 0x53, 0xd3, 0xb4, 0xfd, 0xc4, 0x96, 0x1b, 0xdb, 0xd4, 0x89, 0x7d, 0x30, - 0xe3, 0x81, 0xfb, 0xfa, 0xb3, 0xdc, 0x9f, 0xb8, 0xa3, 0x41, 0xea, 0x5a, 0xab, 0x47, 0xbd, 0xde, - 0x4a, 0xb9, 0xac, 0x27, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x7e, 0x76, 0x60, 0x67, 0x51, 0x03, - 0x00, 0x00, + return file_lorawan_stack_api_enums_proto_rawDescGZIP(), []int{2} +} + +var File_lorawan_stack_api_enums_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_enums_proto_rawDesc = []byte{ + 0x0a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, + 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, + 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2a, 0xac, 0x01, 0x0a, 0x16, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x21, + 0x0a, 0x1d, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, + 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, + 0x00, 0x12, 0x29, 0x0a, 0x25, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x50, 0x41, + 0x54, 0x48, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x52, + 0x45, 0x46, 0x45, 0x52, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, + 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x43, 0x4f, + 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54, 0x5f, 0x4e, 0x45, 0x56, 0x45, 0x52, 0x10, 0x02, + 0x1a, 0x20, 0xea, 0xaa, 0x19, 0x1c, 0x18, 0x01, 0x2a, 0x18, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x49, + 0x4e, 0x4b, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, + 0x4e, 0x54, 0x2a, 0x7b, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, + 0x45, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, + 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x04, + 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x18, 0x01, 0x2a, 0x05, 0x53, 0x54, 0x41, 0x54, 0x45, 0x2a, + 0xc0, 0x02, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x12, + 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x54, + 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x59, 0x10, 0x01, 0x12, 0x0a, + 0x0a, 0x06, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x47, 0x41, + 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x03, 0x12, 0x12, + 0x0a, 0x0e, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, + 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x4a, 0x4f, + 0x49, 0x4e, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x43, + 0x52, 0x59, 0x50, 0x54, 0x4f, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x07, 0x12, 0x1d, + 0x0a, 0x19, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x4c, 0x41, 0x54, + 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x54, 0x45, 0x52, 0x10, 0x08, 0x12, 0x1a, 0x0a, + 0x16, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x49, 0x4e, 0x47, + 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x09, 0x12, 0x20, 0x0a, 0x1c, 0x47, 0x41, 0x54, + 0x45, 0x57, 0x41, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x0a, 0x12, 0x15, 0x0a, 0x11, 0x51, + 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, + 0x10, 0x0b, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x42, 0x52, 0x4f, + 0x4b, 0x45, 0x52, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x10, 0x0c, 0x12, 0x15, 0x0a, 0x11, 0x44, + 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x4f, 0x52, 0x59, + 0x10, 0x0d, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_lorawan_stack_api_enums_proto_rawDescOnce sync.Once + file_lorawan_stack_api_enums_proto_rawDescData = file_lorawan_stack_api_enums_proto_rawDesc +) + +func file_lorawan_stack_api_enums_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_enums_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_enums_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_enums_proto_rawDescData) + }) + return file_lorawan_stack_api_enums_proto_rawDescData +} + +var file_lorawan_stack_api_enums_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_lorawan_stack_api_enums_proto_goTypes = []interface{}{ + (DownlinkPathConstraint)(0), // 0: ttn.lorawan.v3.DownlinkPathConstraint + (State)(0), // 1: ttn.lorawan.v3.State + (ClusterRole)(0), // 2: ttn.lorawan.v3.ClusterRole +} +var file_lorawan_stack_api_enums_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_enums_proto_init() } +func file_lorawan_stack_api_enums_proto_init() { + if File_lorawan_stack_api_enums_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_enums_proto_rawDesc, + NumEnums: 3, + NumMessages: 0, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_enums_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_enums_proto_depIdxs, + EnumInfos: file_lorawan_stack_api_enums_proto_enumTypes, + }.Build() + File_lorawan_stack_api_enums_proto = out.File + file_lorawan_stack_api_enums_proto_rawDesc = nil + file_lorawan_stack_api_enums_proto_goTypes = nil + file_lorawan_stack_api_enums_proto_depIdxs = nil } diff --git a/pkg/ttnpb/enums.pb.validate.go b/pkg/ttnpb/enums.pb.validate.go index c7b8e87145..90a1820015 100644 --- a/pkg/ttnpb/enums.pb.validate.go +++ b/pkg/ttnpb/enums.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,8 +29,5 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) - -// define the regex for a UUID once up-front -var _enums_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") diff --git a/pkg/ttnpb/enums_json.pb.go b/pkg/ttnpb/enums_json.pb.go index 2722c726ac..3e5c842ff5 100644 --- a/pkg/ttnpb/enums_json.pb.go +++ b/pkg/ttnpb/enums_json.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/enums.proto package ttnpb diff --git a/pkg/ttnpb/error.pb.go b/pkg/ttnpb/error.pb.go index 7e88574d05..721f529fd3 100644 --- a/pkg/ttnpb/error.pb.go +++ b/pkg/ttnpb/error.pb.go @@ -1,33 +1,50 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/error.proto package ttnpb import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" + structpb "google.golang.org/protobuf/types/known/structpb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // Error details that are communicated over gRPC (and HTTP) APIs. // The messages (for translation) are stored as "error::". type ErrorDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Namespace of the error (typically the package name in The Things Stack). Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` // Name of the error. @@ -37,7 +54,7 @@ type ErrorDetails struct { MessageFormat string `protobuf:"bytes,3,opt,name=message_format,json=messageFormat,proto3" json:"message_format,omitempty"` // Attributes that should be filled into the message format. Any extra attributes // can be displayed as error details. - Attributes *types.Struct `protobuf:"bytes,4,opt,name=attributes,proto3" json:"attributes,omitempty"` + Attributes *structpb.Struct `protobuf:"bytes,4,opt,name=attributes,proto3" json:"attributes,omitempty"` // The correlation ID of the error can be used to correlate the error to stack // traces the network may (or may not) store about recent errors. CorrelationId string `protobuf:"bytes,5,opt,name=correlation_id,json=correlationId,proto3" json:"correlation_id,omitempty"` @@ -46,128 +63,205 @@ type ErrorDetails struct { // The status code of the error. Code uint32 `protobuf:"varint,7,opt,name=code,proto3" json:"code,omitempty"` // The details of the error. - Details []*types.Any `protobuf:"bytes,8,rep,name=details,proto3" json:"details,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Details []*anypb.Any `protobuf:"bytes,8,rep,name=details,proto3" json:"details,omitempty"` } -func (m *ErrorDetails) Reset() { *m = ErrorDetails{} } -func (m *ErrorDetails) String() string { return proto.CompactTextString(m) } -func (*ErrorDetails) ProtoMessage() {} -func (*ErrorDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_e3054776e06fb477, []int{0} -} -func (m *ErrorDetails) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ErrorDetails.Unmarshal(m, b) -} -func (m *ErrorDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ErrorDetails.Marshal(b, m, deterministic) -} -func (m *ErrorDetails) XXX_Merge(src proto.Message) { - xxx_messageInfo_ErrorDetails.Merge(m, src) +func (x *ErrorDetails) Reset() { + *x = ErrorDetails{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_error_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ErrorDetails) XXX_Size() int { - return xxx_messageInfo_ErrorDetails.Size(m) + +func (x *ErrorDetails) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ErrorDetails) XXX_DiscardUnknown() { - xxx_messageInfo_ErrorDetails.DiscardUnknown(m) + +func (*ErrorDetails) ProtoMessage() {} + +func (x *ErrorDetails) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_error_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ErrorDetails proto.InternalMessageInfo +// Deprecated: Use ErrorDetails.ProtoReflect.Descriptor instead. +func (*ErrorDetails) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_error_proto_rawDescGZIP(), []int{0} +} -func (m *ErrorDetails) GetNamespace() string { - if m != nil { - return m.Namespace +func (x *ErrorDetails) GetNamespace() string { + if x != nil { + return x.Namespace } return "" } -func (m *ErrorDetails) GetName() string { - if m != nil { - return m.Name +func (x *ErrorDetails) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *ErrorDetails) GetMessageFormat() string { - if m != nil { - return m.MessageFormat +func (x *ErrorDetails) GetMessageFormat() string { + if x != nil { + return x.MessageFormat } return "" } -func (m *ErrorDetails) GetAttributes() *types.Struct { - if m != nil { - return m.Attributes +func (x *ErrorDetails) GetAttributes() *structpb.Struct { + if x != nil { + return x.Attributes } return nil } -func (m *ErrorDetails) GetCorrelationId() string { - if m != nil { - return m.CorrelationId +func (x *ErrorDetails) GetCorrelationId() string { + if x != nil { + return x.CorrelationId } return "" } -func (m *ErrorDetails) GetCause() *ErrorDetails { - if m != nil { - return m.Cause +func (x *ErrorDetails) GetCause() *ErrorDetails { + if x != nil { + return x.Cause } return nil } -func (m *ErrorDetails) GetCode() uint32 { - if m != nil { - return m.Code +func (x *ErrorDetails) GetCode() uint32 { + if x != nil { + return x.Code } return 0 } -func (m *ErrorDetails) GetDetails() []*types.Any { - if m != nil { - return m.Details +func (x *ErrorDetails) GetDetails() []*anypb.Any { + if x != nil { + return x.Details } return nil } -func init() { - proto.RegisterType((*ErrorDetails)(nil), "ttn.lorawan.v3.ErrorDetails") - golang_proto.RegisterType((*ErrorDetails)(nil), "ttn.lorawan.v3.ErrorDetails") -} - -func init() { proto.RegisterFile("lorawan-stack/api/error.proto", fileDescriptor_e3054776e06fb477) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/error.proto", fileDescriptor_e3054776e06fb477) -} - -var fileDescriptor_e3054776e06fb477 = []byte{ - // 404 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x52, 0x51, 0x6a, 0x1b, 0x31, - 0x10, 0xcd, 0x3a, 0x8e, 0xe3, 0x28, 0x4d, 0x28, 0xa2, 0x50, 0x39, 0xb8, 0xc5, 0x14, 0x0a, 0xfe, - 0x59, 0x09, 0x62, 0x4a, 0x21, 0x7f, 0x0d, 0x69, 0x21, 0xbf, 0xdb, 0x7c, 0xf5, 0x27, 0x68, 0xb5, - 0x63, 0x59, 0x78, 0xad, 0x59, 0xa4, 0xd9, 0x84, 0x5c, 0x29, 0xa7, 0xe8, 0x15, 0x7a, 0x86, 0xde, - 0x20, 0x27, 0x28, 0xd6, 0x3a, 0xc4, 0x6e, 0xfe, 0x66, 0xde, 0x7b, 0xf3, 0x78, 0xa3, 0x11, 0xfb, - 0x50, 0x63, 0xd0, 0xf7, 0xda, 0xe7, 0x91, 0xb4, 0x59, 0x2a, 0xdd, 0x38, 0x05, 0x21, 0x60, 0x90, - 0x4d, 0x40, 0x42, 0x7e, 0x4a, 0xe4, 0xe5, 0x46, 0x22, 0xef, 0x66, 0x67, 0x57, 0xd6, 0xd1, 0xa2, - 0x2d, 0xa5, 0xc1, 0x95, 0xba, 0x59, 0xc0, 0xcd, 0xc2, 0x79, 0x1b, 0xaf, 0x7d, 0xd5, 0x46, 0x0a, - 0x0e, 0xa2, 0x4a, 0x53, 0x26, 0xb7, 0xe0, 0x73, 0x8b, 0xf9, 0xbc, 0xd6, 0x36, 0x2a, 0xed, 0x3d, - 0x92, 0x26, 0x87, 0x3e, 0x76, 0xae, 0x67, 0xf9, 0x96, 0x8b, 0x45, 0x8b, 0xdd, 0x58, 0xd9, 0xce, - 0x53, 0x97, 0x9a, 0x54, 0x6d, 0xe4, 0x23, 0x8b, 0x68, 0x6b, 0x78, 0x51, 0x69, 0xff, 0xb0, 0xa1, - 0xc6, 0xff, 0x53, 0x91, 0x42, 0x6b, 0xa8, 0x63, 0x3f, 0xfd, 0xe9, 0xb1, 0x37, 0xdf, 0xd7, 0xdb, - 0x5c, 0x01, 0x69, 0x57, 0x47, 0x3e, 0x66, 0x47, 0x5e, 0xaf, 0x20, 0x36, 0xda, 0x80, 0xc8, 0x26, - 0xd9, 0xf4, 0xa8, 0x78, 0x01, 0x38, 0x67, 0xfd, 0x75, 0x23, 0x7a, 0x89, 0x48, 0x35, 0xff, 0xcc, - 0x4e, 0x57, 0x10, 0xa3, 0xb6, 0x70, 0x3b, 0xc7, 0xb0, 0xd2, 0x24, 0xf6, 0x13, 0x7b, 0xb2, 0x41, - 0x7f, 0x24, 0x90, 0x7f, 0x65, 0x4c, 0x13, 0x05, 0x57, 0xb6, 0x04, 0x51, 0xf4, 0x27, 0xd9, 0xf4, - 0xf8, 0xfc, 0xbd, 0xec, 0xc2, 0xc9, 0xe7, 0x70, 0xf2, 0x67, 0x0a, 0x57, 0x6c, 0x49, 0xd7, 0xfe, - 0x06, 0x43, 0x80, 0x3a, 0x3d, 0xd0, 0xad, 0xab, 0xc4, 0x41, 0xe7, 0xbf, 0x85, 0x5e, 0x57, 0xfc, - 0x82, 0x1d, 0x18, 0xdd, 0x46, 0x10, 0x83, 0x64, 0x3d, 0x96, 0xbb, 0x77, 0x91, 0xdb, 0x5b, 0x5e, - 0x0e, 0x9e, 0x1e, 0x47, 0xbd, 0xe1, 0x5e, 0xd1, 0x8d, 0xac, 0xd7, 0x32, 0x58, 0x81, 0x38, 0x9c, - 0x64, 0xd3, 0x93, 0x22, 0xd5, 0x5c, 0xb2, 0xc3, 0xaa, 0x53, 0x8b, 0xe1, 0x64, 0x7f, 0x7a, 0x7c, - 0xfe, 0xee, 0x55, 0xd8, 0x6f, 0xfe, 0xa1, 0x78, 0x16, 0x5d, 0x0c, 0x9f, 0x1e, 0x47, 0xfd, 0x61, - 0xf6, 0x76, 0xef, 0xf2, 0xcb, 0xef, 0xbf, 0x1f, 0xb3, 0x5f, 0xca, 0xa2, 0xa4, 0x05, 0x50, 0xba, - 0xbf, 0xf4, 0x40, 0xf7, 0x18, 0x96, 0x6a, 0xf7, 0x2f, 0xdd, 0xcd, 0x54, 0xb3, 0xb4, 0x8a, 0xc8, - 0x37, 0x65, 0x39, 0x48, 0xbe, 0xb3, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x7a, 0x04, 0xf2, - 0x70, 0x02, 0x00, 0x00, +var File_lorawan_stack_api_error_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_error_proto_rawDesc = []byte{ + 0x0a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, + 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd1, 0x02, + 0x0a, 0x0c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1c, + 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x37, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x42, 0x06, 0xf2, 0xaa, 0x19, 0x02, 0x08, 0x00, 0x52, 0x05, 0x63, 0x61, + 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, + 0x00, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, + 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_error_proto_rawDescOnce sync.Once + file_lorawan_stack_api_error_proto_rawDescData = file_lorawan_stack_api_error_proto_rawDesc +) + +func file_lorawan_stack_api_error_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_error_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_error_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_error_proto_rawDescData) + }) + return file_lorawan_stack_api_error_proto_rawDescData +} + +var file_lorawan_stack_api_error_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_lorawan_stack_api_error_proto_goTypes = []interface{}{ + (*ErrorDetails)(nil), // 0: ttn.lorawan.v3.ErrorDetails + (*structpb.Struct)(nil), // 1: google.protobuf.Struct + (*anypb.Any)(nil), // 2: google.protobuf.Any +} +var file_lorawan_stack_api_error_proto_depIdxs = []int32{ + 1, // 0: ttn.lorawan.v3.ErrorDetails.attributes:type_name -> google.protobuf.Struct + 0, // 1: ttn.lorawan.v3.ErrorDetails.cause:type_name -> ttn.lorawan.v3.ErrorDetails + 2, // 2: ttn.lorawan.v3.ErrorDetails.details:type_name -> google.protobuf.Any + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_error_proto_init() } +func file_lorawan_stack_api_error_proto_init() { + if File_lorawan_stack_api_error_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_error_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ErrorDetails); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_error_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_error_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_error_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_error_proto_msgTypes, + }.Build() + File_lorawan_stack_api_error_proto = out.File + file_lorawan_stack_api_error_proto_rawDesc = nil + file_lorawan_stack_api_error_proto_goTypes = nil + file_lorawan_stack_api_error_proto_depIdxs = nil } diff --git a/pkg/ttnpb/error.pb.validate.go b/pkg/ttnpb/error.pb.validate.go index 8f7dfa8384..1085c77c73 100644 --- a/pkg/ttnpb/error.pb.validate.go +++ b/pkg/ttnpb/error.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _error_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on ErrorDetails with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/error_flags.pb.go b/pkg/ttnpb/error_flags.pb.go index 8bdc0e860d..7a49183d88 100644 --- a/pkg/ttnpb/error_flags.pb.go +++ b/pkg/ttnpb/error_flags.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/error.proto package ttnpb diff --git a/pkg/ttnpb/events.pb.go b/pkg/ttnpb/events.pb.go index 4c223e9bdf..2096ac5140 100644 --- a/pkg/ttnpb/events.pb.go +++ b/pkg/ttnpb/events.pb.go @@ -1,44 +1,57 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/events.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type Event struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Name of the event. This can be used to find the (localized) event description. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Time at which the event was triggered. - Time *types.Timestamp `protobuf:"bytes,2,opt,name=time,proto3" json:"time,omitempty"` + Time *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=time,proto3" json:"time,omitempty"` // Identifiers of the entity (or entities) involved. Identifiers []*EntityIdentifiers `protobuf:"bytes,3,rep,name=identifiers,proto3" json:"identifiers,omitempty"` // Optional data attached to the event. - Data *types.Any `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` + Data *anypb.Any `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` // Correlation IDs can be used to find related events and actions such as API calls. CorrelationIds []string `protobuf:"bytes,5,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` // The origin of the event. Typically the hostname of the server that created it. @@ -54,178 +67,130 @@ type Event struct { // The IP address of the caller that triggered this event. UserAgent string `protobuf:"bytes,11,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"` // The unique identifier of the event, assigned on creation. - UniqueId string `protobuf:"bytes,12,opt,name=unique_id,json=uniqueId,proto3" json:"unique_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Event) Reset() { *m = Event{} } -func (m *Event) String() string { return proto.CompactTextString(m) } -func (*Event) ProtoMessage() {} -func (*Event) Descriptor() ([]byte, []int) { - return fileDescriptor_4fd8551d68f51e44, []int{0} -} -func (m *Event) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Event.Unmarshal(m, b) -} -func (m *Event) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Event.Marshal(b, m, deterministic) -} -func (m *Event) XXX_Merge(src proto.Message) { - xxx_messageInfo_Event.Merge(m, src) -} -func (m *Event) XXX_Size() int { - return xxx_messageInfo_Event.Size(m) -} -func (m *Event) XXX_DiscardUnknown() { - xxx_messageInfo_Event.DiscardUnknown(m) + UniqueId string `protobuf:"bytes,12,opt,name=unique_id,json=uniqueId,proto3" json:"unique_id,omitempty"` } -var xxx_messageInfo_Event proto.InternalMessageInfo - -func (m *Event) GetName() string { - if m != nil { - return m.Name +func (x *Event) Reset() { + *x = Event{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_events_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (m *Event) GetTime() *types.Timestamp { - if m != nil { - return m.Time - } - return nil +func (x *Event) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Event) GetIdentifiers() []*EntityIdentifiers { - if m != nil { - return m.Identifiers - } - return nil -} +func (*Event) ProtoMessage() {} -func (m *Event) GetData() *types.Any { - if m != nil { - return m.Data +func (x *Event) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_events_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *Event) GetCorrelationIds() []string { - if m != nil { - return m.CorrelationIds - } - return nil +// Deprecated: Use Event.ProtoReflect.Descriptor instead. +func (*Event) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_events_proto_rawDescGZIP(), []int{0} } -func (m *Event) GetOrigin() string { - if m != nil { - return m.Origin +func (x *Event) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *Event) GetContext() map[string][]byte { - if m != nil { - return m.Context +func (x *Event) GetTime() *timestamppb.Timestamp { + if x != nil { + return x.Time } return nil } -func (m *Event) GetVisibility() *Rights { - if m != nil { - return m.Visibility +func (x *Event) GetIdentifiers() []*EntityIdentifiers { + if x != nil { + return x.Identifiers } return nil } -func (m *Event) GetAuthentication() *Event_Authentication { - if m != nil { - return m.Authentication +func (x *Event) GetData() *anypb.Any { + if x != nil { + return x.Data } return nil } -func (m *Event) GetRemoteIp() string { - if m != nil { - return m.RemoteIp +func (x *Event) GetCorrelationIds() []string { + if x != nil { + return x.CorrelationIds } - return "" + return nil } -func (m *Event) GetUserAgent() string { - if m != nil { - return m.UserAgent +func (x *Event) GetOrigin() string { + if x != nil { + return x.Origin } return "" } -func (m *Event) GetUniqueId() string { - if m != nil { - return m.UniqueId +func (x *Event) GetContext() map[string][]byte { + if x != nil { + return x.Context } - return "" + return nil } -type Event_Authentication struct { - // The type of authentication that was used. This is typically a bearer token. - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - // The type of token that was used. Common types are APIKey, AccessToken and SessionToken. - TokenType string `protobuf:"bytes,2,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` - // The ID of the token that was used. - TokenId string `protobuf:"bytes,3,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *Event) GetVisibility() *Rights { + if x != nil { + return x.Visibility + } + return nil } -func (m *Event_Authentication) Reset() { *m = Event_Authentication{} } -func (m *Event_Authentication) String() string { return proto.CompactTextString(m) } -func (*Event_Authentication) ProtoMessage() {} -func (*Event_Authentication) Descriptor() ([]byte, []int) { - return fileDescriptor_4fd8551d68f51e44, []int{0, 1} -} -func (m *Event_Authentication) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Event_Authentication.Unmarshal(m, b) -} -func (m *Event_Authentication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Event_Authentication.Marshal(b, m, deterministic) -} -func (m *Event_Authentication) XXX_Merge(src proto.Message) { - xxx_messageInfo_Event_Authentication.Merge(m, src) -} -func (m *Event_Authentication) XXX_Size() int { - return xxx_messageInfo_Event_Authentication.Size(m) -} -func (m *Event_Authentication) XXX_DiscardUnknown() { - xxx_messageInfo_Event_Authentication.DiscardUnknown(m) +func (x *Event) GetAuthentication() *Event_Authentication { + if x != nil { + return x.Authentication + } + return nil } -var xxx_messageInfo_Event_Authentication proto.InternalMessageInfo - -func (m *Event_Authentication) GetType() string { - if m != nil { - return m.Type +func (x *Event) GetRemoteIp() string { + if x != nil { + return x.RemoteIp } return "" } -func (m *Event_Authentication) GetTokenType() string { - if m != nil { - return m.TokenType +func (x *Event) GetUserAgent() string { + if x != nil { + return x.UserAgent } return "" } -func (m *Event_Authentication) GetTokenId() string { - if m != nil { - return m.TokenId +func (x *Event) GetUniqueId() string { + if x != nil { + return x.UniqueId } return "" } type StreamEventsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Identifiers []*EntityIdentifiers `protobuf:"bytes,1,rep,name=identifiers,proto3" json:"identifiers,omitempty"` // If greater than zero, this will return historical events, up to this maximum when the stream starts. // If used in combination with "after", the limit that is reached first, is used. @@ -234,362 +199,474 @@ type StreamEventsRequest struct { // If not empty, this will return historical events after the given time when the stream starts. // If used in combination with "tail", the limit that is reached first, is used. // The availability of historical events depends on server support and retention policy. - After *types.Timestamp `protobuf:"bytes,3,opt,name=after,proto3" json:"after,omitempty"` + After *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=after,proto3" json:"after,omitempty"` // If provided, this will filter events, so that only events with the given names are returned. // Names can be provided as either exact event names (e.g. 'gs.up.receive'), // or as regular expressions (e.g. '/^gs\..+/'). - Names []string `protobuf:"bytes,4,rep,name=names,proto3" json:"names,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Names []string `protobuf:"bytes,4,rep,name=names,proto3" json:"names,omitempty"` } -func (m *StreamEventsRequest) Reset() { *m = StreamEventsRequest{} } -func (m *StreamEventsRequest) String() string { return proto.CompactTextString(m) } -func (*StreamEventsRequest) ProtoMessage() {} -func (*StreamEventsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_4fd8551d68f51e44, []int{1} -} -func (m *StreamEventsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_StreamEventsRequest.Unmarshal(m, b) -} -func (m *StreamEventsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_StreamEventsRequest.Marshal(b, m, deterministic) -} -func (m *StreamEventsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_StreamEventsRequest.Merge(m, src) +func (x *StreamEventsRequest) Reset() { + *x = StreamEventsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_events_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *StreamEventsRequest) XXX_Size() int { - return xxx_messageInfo_StreamEventsRequest.Size(m) + +func (x *StreamEventsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *StreamEventsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_StreamEventsRequest.DiscardUnknown(m) + +func (*StreamEventsRequest) ProtoMessage() {} + +func (x *StreamEventsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_events_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_StreamEventsRequest proto.InternalMessageInfo +// Deprecated: Use StreamEventsRequest.ProtoReflect.Descriptor instead. +func (*StreamEventsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_events_proto_rawDescGZIP(), []int{1} +} -func (m *StreamEventsRequest) GetIdentifiers() []*EntityIdentifiers { - if m != nil { - return m.Identifiers +func (x *StreamEventsRequest) GetIdentifiers() []*EntityIdentifiers { + if x != nil { + return x.Identifiers } return nil } -func (m *StreamEventsRequest) GetTail() uint32 { - if m != nil { - return m.Tail +func (x *StreamEventsRequest) GetTail() uint32 { + if x != nil { + return x.Tail } return 0 } -func (m *StreamEventsRequest) GetAfter() *types.Timestamp { - if m != nil { - return m.After +func (x *StreamEventsRequest) GetAfter() *timestamppb.Timestamp { + if x != nil { + return x.After } return nil } -func (m *StreamEventsRequest) GetNames() []string { - if m != nil { - return m.Names +func (x *StreamEventsRequest) GetNames() []string { + if x != nil { + return x.Names } return nil } type FindRelatedEventsRequest struct { - CorrelationId string `protobuf:"bytes,1,opt,name=correlation_id,json=correlationId,proto3" json:"correlation_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *FindRelatedEventsRequest) Reset() { *m = FindRelatedEventsRequest{} } -func (m *FindRelatedEventsRequest) String() string { return proto.CompactTextString(m) } -func (*FindRelatedEventsRequest) ProtoMessage() {} -func (*FindRelatedEventsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_4fd8551d68f51e44, []int{2} -} -func (m *FindRelatedEventsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FindRelatedEventsRequest.Unmarshal(m, b) -} -func (m *FindRelatedEventsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FindRelatedEventsRequest.Marshal(b, m, deterministic) -} -func (m *FindRelatedEventsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_FindRelatedEventsRequest.Merge(m, src) + CorrelationId string `protobuf:"bytes,1,opt,name=correlation_id,json=correlationId,proto3" json:"correlation_id,omitempty"` } -func (m *FindRelatedEventsRequest) XXX_Size() int { - return xxx_messageInfo_FindRelatedEventsRequest.Size(m) + +func (x *FindRelatedEventsRequest) Reset() { + *x = FindRelatedEventsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_events_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *FindRelatedEventsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_FindRelatedEventsRequest.DiscardUnknown(m) + +func (x *FindRelatedEventsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_FindRelatedEventsRequest proto.InternalMessageInfo +func (*FindRelatedEventsRequest) ProtoMessage() {} -func (m *FindRelatedEventsRequest) GetCorrelationId() string { - if m != nil { - return m.CorrelationId +func (x *FindRelatedEventsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_events_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -type FindRelatedEventsResponse struct { - Events []*Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use FindRelatedEventsRequest.ProtoReflect.Descriptor instead. +func (*FindRelatedEventsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_events_proto_rawDescGZIP(), []int{2} } -func (m *FindRelatedEventsResponse) Reset() { *m = FindRelatedEventsResponse{} } -func (m *FindRelatedEventsResponse) String() string { return proto.CompactTextString(m) } -func (*FindRelatedEventsResponse) ProtoMessage() {} -func (*FindRelatedEventsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_4fd8551d68f51e44, []int{3} -} -func (m *FindRelatedEventsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FindRelatedEventsResponse.Unmarshal(m, b) -} -func (m *FindRelatedEventsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FindRelatedEventsResponse.Marshal(b, m, deterministic) -} -func (m *FindRelatedEventsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_FindRelatedEventsResponse.Merge(m, src) -} -func (m *FindRelatedEventsResponse) XXX_Size() int { - return xxx_messageInfo_FindRelatedEventsResponse.Size(m) -} -func (m *FindRelatedEventsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_FindRelatedEventsResponse.DiscardUnknown(m) +func (x *FindRelatedEventsRequest) GetCorrelationId() string { + if x != nil { + return x.CorrelationId + } + return "" } -var xxx_messageInfo_FindRelatedEventsResponse proto.InternalMessageInfo +type FindRelatedEventsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *FindRelatedEventsResponse) GetEvents() []*Event { - if m != nil { - return m.Events - } - return nil + Events []*Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` } -func init() { - proto.RegisterType((*Event)(nil), "ttn.lorawan.v3.Event") - golang_proto.RegisterType((*Event)(nil), "ttn.lorawan.v3.Event") - proto.RegisterMapType((map[string][]byte)(nil), "ttn.lorawan.v3.Event.ContextEntry") - golang_proto.RegisterMapType((map[string][]byte)(nil), "ttn.lorawan.v3.Event.ContextEntry") - proto.RegisterType((*Event_Authentication)(nil), "ttn.lorawan.v3.Event.Authentication") - golang_proto.RegisterType((*Event_Authentication)(nil), "ttn.lorawan.v3.Event.Authentication") - proto.RegisterType((*StreamEventsRequest)(nil), "ttn.lorawan.v3.StreamEventsRequest") - golang_proto.RegisterType((*StreamEventsRequest)(nil), "ttn.lorawan.v3.StreamEventsRequest") - proto.RegisterType((*FindRelatedEventsRequest)(nil), "ttn.lorawan.v3.FindRelatedEventsRequest") - golang_proto.RegisterType((*FindRelatedEventsRequest)(nil), "ttn.lorawan.v3.FindRelatedEventsRequest") - proto.RegisterType((*FindRelatedEventsResponse)(nil), "ttn.lorawan.v3.FindRelatedEventsResponse") - golang_proto.RegisterType((*FindRelatedEventsResponse)(nil), "ttn.lorawan.v3.FindRelatedEventsResponse") -} - -func init() { proto.RegisterFile("lorawan-stack/api/events.proto", fileDescriptor_4fd8551d68f51e44) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/events.proto", fileDescriptor_4fd8551d68f51e44) -} - -var fileDescriptor_4fd8551d68f51e44 = []byte{ - // 794 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0xcd, 0x8e, 0x1b, 0x45, - 0x10, 0xd6, 0xf8, 0x67, 0xd6, 0x6e, 0x3b, 0x4e, 0x68, 0x42, 0xe8, 0x1d, 0x20, 0x2c, 0x13, 0x0e, - 0x06, 0xc9, 0x33, 0xab, 0x5d, 0x05, 0x45, 0x2b, 0x2e, 0x76, 0xb4, 0x48, 0x46, 0x39, 0x35, 0x39, - 0xe5, 0x80, 0xd5, 0xf6, 0xf4, 0x8e, 0x5b, 0xb6, 0xbb, 0x27, 0x3d, 0x35, 0x4e, 0x46, 0xdc, 0x78, - 0x04, 0x78, 0x13, 0x0e, 0x9c, 0x79, 0x00, 0x6e, 0x3c, 0x01, 0x82, 0xa7, 0xd8, 0x13, 0xea, 0xee, - 0xf1, 0xe2, 0x3f, 0x10, 0xe2, 0xd6, 0xd5, 0xf5, 0x55, 0xd5, 0x57, 0xdf, 0x7c, 0xd3, 0xe8, 0xf1, - 0x52, 0x69, 0xf6, 0x86, 0xc9, 0x41, 0x0e, 0x6c, 0xb6, 0x88, 0x59, 0x26, 0x62, 0xbe, 0xe6, 0x12, - 0xf2, 0x28, 0xd3, 0x0a, 0x14, 0xee, 0x01, 0xc8, 0xa8, 0xc2, 0x44, 0xeb, 0xcb, 0x60, 0x98, 0x0a, - 0x98, 0x17, 0xd3, 0x68, 0xa6, 0x56, 0x31, 0x97, 0x6b, 0x55, 0x66, 0x5a, 0xbd, 0x2d, 0x63, 0x0b, - 0x9e, 0x0d, 0x52, 0x2e, 0x07, 0x6b, 0xb6, 0x14, 0x09, 0x03, 0x1e, 0x1f, 0x1c, 0x5c, 0xcb, 0x60, - 0xb0, 0xd5, 0x22, 0x55, 0xa9, 0x72, 0xc5, 0xd3, 0xe2, 0xc6, 0x46, 0x36, 0xb0, 0xa7, 0x0a, 0xfe, - 0x61, 0xaa, 0x54, 0xba, 0xe4, 0x96, 0x1a, 0x93, 0x52, 0x01, 0x03, 0xa1, 0x64, 0xc5, 0x2f, 0x38, - 0xad, 0xb2, 0x77, 0x3d, 0x98, 0x2c, 0xab, 0xd4, 0xc7, 0xfb, 0x29, 0x10, 0x2b, 0x9e, 0x03, 0x5b, - 0x65, 0x15, 0xe0, 0xc9, 0xe1, 0xee, 0x22, 0xe1, 0x12, 0xc4, 0x8d, 0xe0, 0x7a, 0x33, 0xe0, 0x88, - 0x40, 0x5a, 0xa4, 0xf3, 0x8d, 0x40, 0xe1, 0xaf, 0x4d, 0xd4, 0xbc, 0x36, 0x8a, 0x61, 0x8c, 0x1a, - 0x92, 0xad, 0x38, 0xf1, 0xce, 0xbc, 0x7e, 0x9b, 0xda, 0x33, 0x7e, 0x86, 0x1a, 0x66, 0x2a, 0xa9, - 0x9d, 0x79, 0xfd, 0xce, 0x45, 0x10, 0x39, 0x4a, 0xd1, 0x86, 0x52, 0xf4, 0x72, 0x43, 0x69, 0xd4, - 0xba, 0x1d, 0x35, 0x7f, 0xf2, 0x6a, 0x2d, 0x8f, 0xda, 0x0a, 0xfc, 0x1c, 0x75, 0xb6, 0xc8, 0x90, - 0xfa, 0x59, 0xbd, 0xdf, 0xb9, 0xf8, 0x24, 0xda, 0xfd, 0x1c, 0xd1, 0xb5, 0x04, 0x01, 0xe5, 0xf8, - 0x6f, 0x20, 0xdd, 0xae, 0xc2, 0x7d, 0xd4, 0x48, 0x18, 0x30, 0xd2, 0xb0, 0xe3, 0x1f, 0x1e, 0x8c, - 0x1f, 0xca, 0x92, 0x5a, 0x04, 0x7e, 0x8a, 0xee, 0xcf, 0x94, 0xd6, 0x7c, 0x69, 0xd5, 0x9d, 0x88, - 0x24, 0x27, 0xcd, 0xb3, 0x7a, 0xbf, 0x3d, 0xea, 0xde, 0x8e, 0xda, 0x3f, 0x78, 0x7e, 0xd8, 0xd0, - 0x35, 0x92, 0xd0, 0xde, 0x16, 0x68, 0x9c, 0xe4, 0xf8, 0x11, 0xf2, 0x95, 0x16, 0xa9, 0x90, 0xc4, - 0xb7, 0x5b, 0x57, 0x11, 0xfe, 0x12, 0x9d, 0xcc, 0x94, 0x04, 0xfe, 0x16, 0xc8, 0x89, 0x65, 0x1e, - 0x1e, 0x30, 0x37, 0x9a, 0x45, 0xcf, 0x1d, 0xe8, 0x5a, 0x82, 0x2e, 0xe9, 0xa6, 0x04, 0x7f, 0x81, - 0xd0, 0x5a, 0xe4, 0x62, 0x2a, 0x96, 0x02, 0x4a, 0xd2, 0xb2, 0xe4, 0x1f, 0xed, 0x37, 0xa0, 0xf6, - 0x2b, 0xd0, 0x2d, 0x24, 0x7e, 0x81, 0x7a, 0xac, 0x80, 0xb9, 0xd9, 0x7f, 0x66, 0x29, 0x92, 0xb6, - 0xad, 0xfd, 0xf4, 0xf8, 0xf0, 0xe1, 0x0e, 0x96, 0xee, 0xd5, 0xe2, 0x0f, 0x50, 0x5b, 0xf3, 0x95, - 0x02, 0x3e, 0x11, 0x19, 0x41, 0x76, 0xbd, 0x96, 0xbb, 0x18, 0x67, 0xf8, 0x23, 0x84, 0x8a, 0x9c, - 0xeb, 0x09, 0x4b, 0xb9, 0x04, 0xd2, 0xb1, 0xd9, 0xb6, 0xb9, 0x19, 0x9a, 0x0b, 0x53, 0x5b, 0x48, - 0xf1, 0xba, 0xe0, 0x13, 0x91, 0x90, 0xae, 0xab, 0x75, 0x17, 0xe3, 0x24, 0xb8, 0x42, 0xdd, 0xed, - 0xbd, 0xf1, 0x03, 0x54, 0x5f, 0xf0, 0xb2, 0xf2, 0x8d, 0x39, 0xe2, 0x87, 0xa8, 0xb9, 0x66, 0xcb, - 0xc2, 0xf9, 0xa6, 0x4b, 0x5d, 0x70, 0x55, 0x7b, 0xe6, 0x05, 0xdf, 0xa2, 0xde, 0x2e, 0x6d, 0x63, - 0x3b, 0x28, 0xb3, 0x3b, 0xdb, 0x99, 0xb3, 0x61, 0x07, 0x6a, 0xc1, 0xe5, 0xc4, 0x66, 0x6a, 0x8e, - 0x9d, 0xbd, 0x79, 0x69, 0xd2, 0xa7, 0xa8, 0xe5, 0xd2, 0x22, 0x21, 0x75, 0x9b, 0x3c, 0xb1, 0xf1, - 0x38, 0x09, 0x7f, 0xf6, 0xd0, 0xbb, 0xdf, 0x80, 0xe6, 0x6c, 0x65, 0x35, 0xca, 0x29, 0x7f, 0x5d, - 0xf0, 0x1c, 0xf6, 0xed, 0xe8, 0xfd, 0x2f, 0x3b, 0x1a, 0xaa, 0x4c, 0x2c, 0x2d, 0xa1, 0x7b, 0xd4, - 0x9e, 0xf1, 0x39, 0x6a, 0xb2, 0x1b, 0xe0, 0xda, 0x12, 0xf9, 0xd7, 0x5f, 0x84, 0x3a, 0xa0, 0x11, - 0xc7, 0xfc, 0x5b, 0x39, 0x69, 0x18, 0x83, 0x52, 0x17, 0x84, 0x2f, 0x10, 0xf9, 0x4a, 0xc8, 0x84, - 0x1a, 0x73, 0xf2, 0x64, 0x97, 0xfc, 0x39, 0xea, 0xed, 0x9a, 0xdb, 0x89, 0x35, 0x6a, 0xdf, 0x8e, - 0x7c, 0xdd, 0x78, 0xe0, 0x91, 0x84, 0xde, 0xdb, 0x31, 0x76, 0xf8, 0x35, 0x3a, 0x3d, 0xd2, 0x2d, - 0xcf, 0x94, 0xcc, 0x39, 0x1e, 0x20, 0xdf, 0xbd, 0x91, 0x95, 0x0c, 0xef, 0x1d, 0xb5, 0x17, 0xad, - 0x40, 0x17, 0xbf, 0x7b, 0xc8, 0x77, 0x1d, 0xf0, 0x2b, 0xe4, 0x3b, 0x71, 0xf1, 0x93, 0xfd, 0x9a, - 0x23, 0xa2, 0x07, 0xc7, 0x1b, 0x87, 0xf8, 0xfb, 0xdf, 0xfe, 0xfc, 0xb1, 0xd6, 0x0d, 0x4f, 0xaa, - 0xa7, 0xfa, 0xca, 0xfb, 0xfc, 0xdc, 0xc3, 0xdf, 0xa1, 0xce, 0x16, 0x65, 0xdc, 0xdf, 0xaf, 0xfd, - 0x27, 0x75, 0x82, 0xcf, 0xfe, 0x03, 0xd2, 0x6d, 0x1e, 0xbe, 0x6f, 0x27, 0xbf, 0x83, 0xef, 0x57, - 0x93, 0x63, 0xed, 0x60, 0xa3, 0xa7, 0xbf, 0xfc, 0xf1, 0xd8, 0x7b, 0x15, 0xa7, 0x2a, 0x82, 0x39, - 0x87, 0xb9, 0x90, 0x69, 0x1e, 0x49, 0x0e, 0x6f, 0x94, 0x5e, 0xc4, 0xbb, 0x0f, 0xe8, 0xfa, 0x32, - 0xce, 0x16, 0x69, 0x0c, 0x20, 0xb3, 0xe9, 0xd4, 0xb7, 0x5f, 0xf9, 0xf2, 0xaf, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x6d, 0xe0, 0x4c, 0x16, 0x86, 0x06, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// EventsClient is the client API for Events service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type EventsClient interface { - // Stream live events, optionally with a tail of historical events (depending on server support and retention policy). - // Events may arrive out-of-order. - Stream(ctx context.Context, in *StreamEventsRequest, opts ...grpc.CallOption) (Events_StreamClient, error) - FindRelated(ctx context.Context, in *FindRelatedEventsRequest, opts ...grpc.CallOption) (*FindRelatedEventsResponse, error) +func (x *FindRelatedEventsResponse) Reset() { + *x = FindRelatedEventsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_events_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -type eventsClient struct { - cc *grpc.ClientConn +func (x *FindRelatedEventsResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func NewEventsClient(cc *grpc.ClientConn) EventsClient { - return &eventsClient{cc} -} +func (*FindRelatedEventsResponse) ProtoMessage() {} -func (c *eventsClient) Stream(ctx context.Context, in *StreamEventsRequest, opts ...grpc.CallOption) (Events_StreamClient, error) { - stream, err := c.cc.NewStream(ctx, &_Events_serviceDesc.Streams[0], "/ttn.lorawan.v3.Events/Stream", opts...) - if err != nil { - return nil, err - } - x := &eventsStreamClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err +func (x *FindRelatedEventsResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_events_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil + return mi.MessageOf(x) } -type Events_StreamClient interface { - Recv() (*Event, error) - grpc.ClientStream +// Deprecated: Use FindRelatedEventsResponse.ProtoReflect.Descriptor instead. +func (*FindRelatedEventsResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_events_proto_rawDescGZIP(), []int{3} } -type eventsStreamClient struct { - grpc.ClientStream +func (x *FindRelatedEventsResponse) GetEvents() []*Event { + if x != nil { + return x.Events + } + return nil } -func (x *eventsStreamClient) Recv() (*Event, error) { - m := new(Event) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil +type Event_Authentication struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The type of authentication that was used. This is typically a bearer token. + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + // The type of token that was used. Common types are APIKey, AccessToken and SessionToken. + TokenType string `protobuf:"bytes,2,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` + // The ID of the token that was used. + TokenId string `protobuf:"bytes,3,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` } -func (c *eventsClient) FindRelated(ctx context.Context, in *FindRelatedEventsRequest, opts ...grpc.CallOption) (*FindRelatedEventsResponse, error) { - out := new(FindRelatedEventsResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Events/FindRelated", in, out, opts...) - if err != nil { - return nil, err +func (x *Event_Authentication) Reset() { + *x = Event_Authentication{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_events_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return out, nil } -// EventsServer is the server API for Events service. -type EventsServer interface { - // Stream live events, optionally with a tail of historical events (depending on server support and retention policy). - // Events may arrive out-of-order. - Stream(*StreamEventsRequest, Events_StreamServer) error - FindRelated(context.Context, *FindRelatedEventsRequest) (*FindRelatedEventsResponse, error) +func (x *Event_Authentication) String() string { + return protoimpl.X.MessageStringOf(x) } -// UnimplementedEventsServer can be embedded to have forward compatible implementations. -type UnimplementedEventsServer struct { -} +func (*Event_Authentication) ProtoMessage() {} -func (*UnimplementedEventsServer) Stream(req *StreamEventsRequest, srv Events_StreamServer) error { - return status.Errorf(codes.Unimplemented, "method Stream not implemented") -} -func (*UnimplementedEventsServer) FindRelated(ctx context.Context, req *FindRelatedEventsRequest) (*FindRelatedEventsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method FindRelated not implemented") +func (x *Event_Authentication) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_events_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func RegisterEventsServer(s *grpc.Server, srv EventsServer) { - s.RegisterService(&_Events_serviceDesc, srv) +// Deprecated: Use Event_Authentication.ProtoReflect.Descriptor instead. +func (*Event_Authentication) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_events_proto_rawDescGZIP(), []int{0, 1} } -func _Events_Stream_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(StreamEventsRequest) - if err := stream.RecvMsg(m); err != nil { - return err +func (x *Event_Authentication) GetType() string { + if x != nil { + return x.Type } - return srv.(EventsServer).Stream(m, &eventsStreamServer{stream}) + return "" } -type Events_StreamServer interface { - Send(*Event) error - grpc.ServerStream +func (x *Event_Authentication) GetTokenType() string { + if x != nil { + return x.TokenType + } + return "" } -type eventsStreamServer struct { - grpc.ServerStream +func (x *Event_Authentication) GetTokenId() string { + if x != nil { + return x.TokenId + } + return "" } -func (x *eventsStreamServer) Send(m *Event) error { - return x.ServerStream.SendMsg(m) -} +var File_lorawan_stack_api_events_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_events_proto_rawDesc = []byte{ + 0x0a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, + 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, + 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, + 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0xcc, 0x05, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x38, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, + 0x02, 0x08, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x28, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, + 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, + 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x3c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x36, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x4c, 0x0a, + 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x75, 0x74, + 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x61, 0x75, 0x74, + 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, + 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x6e, 0x69, 0x71, 0x75, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x6e, 0x69, 0x71, + 0x75, 0x65, 0x49, 0x64, 0x1a, 0x3a, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x5e, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, + 0x22, 0xb6, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x61, 0x69, + 0x6c, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, + 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x4c, 0x0a, 0x18, 0x46, 0x69, 0x6e, + 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, + 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x19, 0x46, 0x69, 0x6e, 0x64, 0x52, + 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x32, 0xe1, 0x01, 0x0a, 0x06, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x5a, + 0x0a, 0x06, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x22, 0x07, 0x2f, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x30, 0x01, 0x12, 0x7b, 0x0a, 0x0b, 0x46, 0x69, + 0x6e, 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, + 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_events_proto_rawDescOnce sync.Once + file_lorawan_stack_api_events_proto_rawDescData = file_lorawan_stack_api_events_proto_rawDesc +) -func _Events_FindRelated_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(FindRelatedEventsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EventsServer).FindRelated(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Events/FindRelated", +func file_lorawan_stack_api_events_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_events_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_events_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_events_proto_rawDescData) + }) + return file_lorawan_stack_api_events_proto_rawDescData +} + +var file_lorawan_stack_api_events_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_lorawan_stack_api_events_proto_goTypes = []interface{}{ + (*Event)(nil), // 0: ttn.lorawan.v3.Event + (*StreamEventsRequest)(nil), // 1: ttn.lorawan.v3.StreamEventsRequest + (*FindRelatedEventsRequest)(nil), // 2: ttn.lorawan.v3.FindRelatedEventsRequest + (*FindRelatedEventsResponse)(nil), // 3: ttn.lorawan.v3.FindRelatedEventsResponse + nil, // 4: ttn.lorawan.v3.Event.ContextEntry + (*Event_Authentication)(nil), // 5: ttn.lorawan.v3.Event.Authentication + (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp + (*EntityIdentifiers)(nil), // 7: ttn.lorawan.v3.EntityIdentifiers + (*anypb.Any)(nil), // 8: google.protobuf.Any + (*Rights)(nil), // 9: ttn.lorawan.v3.Rights +} +var file_lorawan_stack_api_events_proto_depIdxs = []int32{ + 6, // 0: ttn.lorawan.v3.Event.time:type_name -> google.protobuf.Timestamp + 7, // 1: ttn.lorawan.v3.Event.identifiers:type_name -> ttn.lorawan.v3.EntityIdentifiers + 8, // 2: ttn.lorawan.v3.Event.data:type_name -> google.protobuf.Any + 4, // 3: ttn.lorawan.v3.Event.context:type_name -> ttn.lorawan.v3.Event.ContextEntry + 9, // 4: ttn.lorawan.v3.Event.visibility:type_name -> ttn.lorawan.v3.Rights + 5, // 5: ttn.lorawan.v3.Event.authentication:type_name -> ttn.lorawan.v3.Event.Authentication + 7, // 6: ttn.lorawan.v3.StreamEventsRequest.identifiers:type_name -> ttn.lorawan.v3.EntityIdentifiers + 6, // 7: ttn.lorawan.v3.StreamEventsRequest.after:type_name -> google.protobuf.Timestamp + 0, // 8: ttn.lorawan.v3.FindRelatedEventsResponse.events:type_name -> ttn.lorawan.v3.Event + 1, // 9: ttn.lorawan.v3.Events.Stream:input_type -> ttn.lorawan.v3.StreamEventsRequest + 2, // 10: ttn.lorawan.v3.Events.FindRelated:input_type -> ttn.lorawan.v3.FindRelatedEventsRequest + 0, // 11: ttn.lorawan.v3.Events.Stream:output_type -> ttn.lorawan.v3.Event + 3, // 12: ttn.lorawan.v3.Events.FindRelated:output_type -> ttn.lorawan.v3.FindRelatedEventsResponse + 11, // [11:13] is the sub-list for method output_type + 9, // [9:11] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_events_proto_init() } +func file_lorawan_stack_api_events_proto_init() { + if File_lorawan_stack_api_events_proto != nil { + return } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EventsServer).FindRelated(ctx, req.(*FindRelatedEventsRequest)) + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_rights_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_events_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Event); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_events_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamEventsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_events_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FindRelatedEventsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_events_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FindRelatedEventsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_events_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Event_Authentication); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } - return interceptor(ctx, in, info, handler) -} - -var _Events_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.Events", - HandlerType: (*EventsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "FindRelated", - Handler: _Events_FindRelated_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "Stream", - Handler: _Events_Stream_Handler, - ServerStreams: true, + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_events_proto_rawDesc, + NumEnums: 0, + NumMessages: 6, + NumExtensions: 0, + NumServices: 1, }, - }, - Metadata: "lorawan-stack/api/events.proto", + GoTypes: file_lorawan_stack_api_events_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_events_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_events_proto_msgTypes, + }.Build() + File_lorawan_stack_api_events_proto = out.File + file_lorawan_stack_api_events_proto_rawDesc = nil + file_lorawan_stack_api_events_proto_goTypes = nil + file_lorawan_stack_api_events_proto_depIdxs = nil } diff --git a/pkg/ttnpb/events.pb.gw.go b/pkg/ttnpb/events.pb.gw.go index 0e7f4f7013..e5affb4eeb 100644 --- a/pkg/ttnpb/events.pb.gw.go +++ b/pkg/ttnpb/events.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join func request_Events_Stream_0(ctx context.Context, marshaler runtime.Marshaler, client EventsClient, req *http.Request, pathParams map[string]string) (Events_StreamClient, runtime.ServerMetadata, error) { @@ -113,20 +111,22 @@ func RegisterEventsHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Events/FindRelated", runtime.WithHTTPPathPattern("/events/related")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Events_FindRelated_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Events_FindRelated_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Events_FindRelated_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Events_FindRelated_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -175,19 +175,21 @@ func RegisterEventsHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Events/Stream", runtime.WithHTTPPathPattern("/events")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Events_Stream_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Events_Stream_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Events_Stream_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) + forward_Events_Stream_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) }) @@ -195,19 +197,21 @@ func RegisterEventsHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Events/FindRelated", runtime.WithHTTPPathPattern("/events/related")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Events_FindRelated_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Events_FindRelated_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Events_FindRelated_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Events_FindRelated_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -215,9 +219,9 @@ func RegisterEventsHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli } var ( - pattern_Events_Stream_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"events"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Events_Stream_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"events"}, "")) - pattern_Events_FindRelated_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"events", "related"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Events_FindRelated_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"events", "related"}, "")) ) var ( diff --git a/pkg/ttnpb/events.pb.validate.go b/pkg/ttnpb/events.pb.validate.go index 81159f6ad1..d4a12710e1 100644 --- a/pkg/ttnpb/events.pb.validate.go +++ b/pkg/ttnpb/events.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _events_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on Event with the rules defined in // the proto definition for this message. If any rules are violated, an error // is returned. diff --git a/pkg/ttnpb/events_grpc.pb.go b/pkg/ttnpb/events_grpc.pb.go new file mode 100644 index 0000000000..c5619f8997 --- /dev/null +++ b/pkg/ttnpb/events_grpc.pb.go @@ -0,0 +1,173 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/events.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// EventsClient is the client API for Events service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type EventsClient interface { + // Stream live events, optionally with a tail of historical events (depending on server support and retention policy). + // Events may arrive out-of-order. + Stream(ctx context.Context, in *StreamEventsRequest, opts ...grpc.CallOption) (Events_StreamClient, error) + FindRelated(ctx context.Context, in *FindRelatedEventsRequest, opts ...grpc.CallOption) (*FindRelatedEventsResponse, error) +} + +type eventsClient struct { + cc grpc.ClientConnInterface +} + +func NewEventsClient(cc grpc.ClientConnInterface) EventsClient { + return &eventsClient{cc} +} + +func (c *eventsClient) Stream(ctx context.Context, in *StreamEventsRequest, opts ...grpc.CallOption) (Events_StreamClient, error) { + stream, err := c.cc.NewStream(ctx, &Events_ServiceDesc.Streams[0], "/ttn.lorawan.v3.Events/Stream", opts...) + if err != nil { + return nil, err + } + x := &eventsStreamClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type Events_StreamClient interface { + Recv() (*Event, error) + grpc.ClientStream +} + +type eventsStreamClient struct { + grpc.ClientStream +} + +func (x *eventsStreamClient) Recv() (*Event, error) { + m := new(Event) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *eventsClient) FindRelated(ctx context.Context, in *FindRelatedEventsRequest, opts ...grpc.CallOption) (*FindRelatedEventsResponse, error) { + out := new(FindRelatedEventsResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Events/FindRelated", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// EventsServer is the server API for Events service. +// All implementations must embed UnimplementedEventsServer +// for forward compatibility +type EventsServer interface { + // Stream live events, optionally with a tail of historical events (depending on server support and retention policy). + // Events may arrive out-of-order. + Stream(*StreamEventsRequest, Events_StreamServer) error + FindRelated(context.Context, *FindRelatedEventsRequest) (*FindRelatedEventsResponse, error) + mustEmbedUnimplementedEventsServer() +} + +// UnimplementedEventsServer must be embedded to have forward compatible implementations. +type UnimplementedEventsServer struct { +} + +func (UnimplementedEventsServer) Stream(*StreamEventsRequest, Events_StreamServer) error { + return status.Errorf(codes.Unimplemented, "method Stream not implemented") +} +func (UnimplementedEventsServer) FindRelated(context.Context, *FindRelatedEventsRequest) (*FindRelatedEventsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method FindRelated not implemented") +} +func (UnimplementedEventsServer) mustEmbedUnimplementedEventsServer() {} + +// UnsafeEventsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to EventsServer will +// result in compilation errors. +type UnsafeEventsServer interface { + mustEmbedUnimplementedEventsServer() +} + +func RegisterEventsServer(s grpc.ServiceRegistrar, srv EventsServer) { + s.RegisterService(&Events_ServiceDesc, srv) +} + +func _Events_Stream_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(StreamEventsRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(EventsServer).Stream(m, &eventsStreamServer{stream}) +} + +type Events_StreamServer interface { + Send(*Event) error + grpc.ServerStream +} + +type eventsStreamServer struct { + grpc.ServerStream +} + +func (x *eventsStreamServer) Send(m *Event) error { + return x.ServerStream.SendMsg(m) +} + +func _Events_FindRelated_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(FindRelatedEventsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EventsServer).FindRelated(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Events/FindRelated", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EventsServer).FindRelated(ctx, req.(*FindRelatedEventsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Events_ServiceDesc is the grpc.ServiceDesc for Events service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Events_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.Events", + HandlerType: (*EventsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "FindRelated", + Handler: _Events_FindRelated_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "Stream", + Handler: _Events_Stream_Handler, + ServerStreams: true, + }, + }, + Metadata: "lorawan-stack/api/events.proto", +} diff --git a/pkg/ttnpb/events_json.pb.go b/pkg/ttnpb/events_json.pb.go index 10d8146778..86376c2b47 100644 --- a/pkg/ttnpb/events_json.pb.go +++ b/pkg/ttnpb/events_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/events.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" ) @@ -30,7 +30,7 @@ func (x *Event) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.Time == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.Time) + golang.MarshalTimestamp(s, x.Time) } } if len(x.Identifiers) > 0 || s.HasField("identifiers") { @@ -50,7 +50,7 @@ func (x *Event) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.Data == nil { s.WriteNil() } else { - gogo.MarshalAny(s, x.Data) + golang.MarshalAny(s, x.Data, true) } } if len(x.CorrelationIds) > 0 || s.HasField("correlation_ids") { @@ -84,7 +84,7 @@ func (x *Event) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("authentication") // NOTE: Event_Authentication does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Authentication) + golang.MarshalMessage(s, x.Authentication) } if x.RemoteIp != "" || s.HasField("remote_ip") { s.WriteMoreIf(&wroteField) @@ -127,7 +127,7 @@ func (x *Event) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.Time = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -156,7 +156,7 @@ func (x *Event) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.Data = nil return } - v := gogo.UnmarshalAny(s) + v := golang.UnmarshalAny(s) if s.Err() != nil { return } @@ -196,7 +196,7 @@ func (x *Event) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: Event_Authentication does not seem to implement UnmarshalProtoJSON. var v Event_Authentication - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Authentication = &v case "remote_ip", "remoteIp": s.AddField("remote_ip") @@ -246,7 +246,7 @@ func (x *StreamEventsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.After == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.After) + golang.MarshalTimestamp(s, x.After) } } if len(x.Names) > 0 || s.HasField("names") { @@ -298,7 +298,7 @@ func (x *StreamEventsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.After = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } diff --git a/pkg/ttnpb/gateway.pb.go b/pkg/ttnpb/gateway.pb.go index 5a4467fee0..32991f6191 100644 --- a/pkg/ttnpb/gateway.pb.go +++ b/pkg/ttnpb/gateway.pb.go @@ -1,32 +1,47 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/gateway.proto package ttnpb import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + structpb "google.golang.org/protobuf/types/known/structpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type GatewayAntennaPlacement int32 @@ -36,395 +51,411 @@ const ( GatewayAntennaPlacement_OUTDOOR GatewayAntennaPlacement = 2 ) -var GatewayAntennaPlacement_name = map[int32]string{ - 0: "PLACEMENT_UNKNOWN", - 1: "INDOOR", - 2: "OUTDOOR", -} +// Enum value maps for GatewayAntennaPlacement. +var ( + GatewayAntennaPlacement_name = map[int32]string{ + 0: "PLACEMENT_UNKNOWN", + 1: "INDOOR", + 2: "OUTDOOR", + } + GatewayAntennaPlacement_value = map[string]int32{ + "PLACEMENT_UNKNOWN": 0, + "INDOOR": 1, + "OUTDOOR": 2, + } +) -var GatewayAntennaPlacement_value = map[string]int32{ - "PLACEMENT_UNKNOWN": 0, - "INDOOR": 1, - "OUTDOOR": 2, +func (x GatewayAntennaPlacement) Enum() *GatewayAntennaPlacement { + p := new(GatewayAntennaPlacement) + *p = x + return p } func (x GatewayAntennaPlacement) String() string { - return proto.EnumName(GatewayAntennaPlacement_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GatewayAntennaPlacement) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_gateway_proto_enumTypes[0].Descriptor() +} + +func (GatewayAntennaPlacement) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_gateway_proto_enumTypes[0] +} + +func (x GatewayAntennaPlacement) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use GatewayAntennaPlacement.Descriptor instead. func (GatewayAntennaPlacement) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{0} + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{0} } type GatewayBrand struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` // Logos contains file names of brand logos. - Logos []string `protobuf:"bytes,4,rep,name=logos,proto3" json:"logos,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Logos []string `protobuf:"bytes,4,rep,name=logos,proto3" json:"logos,omitempty"` } -func (m *GatewayBrand) Reset() { *m = GatewayBrand{} } -func (m *GatewayBrand) String() string { return proto.CompactTextString(m) } -func (*GatewayBrand) ProtoMessage() {} -func (*GatewayBrand) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{0} -} -func (m *GatewayBrand) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayBrand.Unmarshal(m, b) -} -func (m *GatewayBrand) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayBrand.Marshal(b, m, deterministic) -} -func (m *GatewayBrand) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayBrand.Merge(m, src) +func (x *GatewayBrand) Reset() { + *x = GatewayBrand{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GatewayBrand) XXX_Size() int { - return xxx_messageInfo_GatewayBrand.Size(m) + +func (x *GatewayBrand) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GatewayBrand) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayBrand.DiscardUnknown(m) + +func (*GatewayBrand) ProtoMessage() {} + +func (x *GatewayBrand) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GatewayBrand proto.InternalMessageInfo +// Deprecated: Use GatewayBrand.ProtoReflect.Descriptor instead. +func (*GatewayBrand) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{0} +} -func (m *GatewayBrand) GetId() string { - if m != nil { - return m.Id +func (x *GatewayBrand) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *GatewayBrand) GetName() string { - if m != nil { - return m.Name +func (x *GatewayBrand) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *GatewayBrand) GetUrl() string { - if m != nil { - return m.Url +func (x *GatewayBrand) GetUrl() string { + if x != nil { + return x.Url } return "" } -func (m *GatewayBrand) GetLogos() []string { - if m != nil { - return m.Logos +func (x *GatewayBrand) GetLogos() []string { + if x != nil { + return x.Logos } return nil } type GatewayModel struct { - BrandId string `protobuf:"bytes,1,opt,name=brand_id,json=brandId,proto3" json:"brand_id,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GatewayModel) Reset() { *m = GatewayModel{} } -func (m *GatewayModel) String() string { return proto.CompactTextString(m) } -func (*GatewayModel) ProtoMessage() {} -func (*GatewayModel) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{1} -} -func (m *GatewayModel) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayModel.Unmarshal(m, b) + BrandId string `protobuf:"bytes,1,opt,name=brand_id,json=brandId,proto3" json:"brand_id,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` } -func (m *GatewayModel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayModel.Marshal(b, m, deterministic) -} -func (m *GatewayModel) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayModel.Merge(m, src) + +func (x *GatewayModel) Reset() { + *x = GatewayModel{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GatewayModel) XXX_Size() int { - return xxx_messageInfo_GatewayModel.Size(m) + +func (x *GatewayModel) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GatewayModel) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayModel.DiscardUnknown(m) + +func (*GatewayModel) ProtoMessage() {} + +func (x *GatewayModel) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GatewayModel proto.InternalMessageInfo +// Deprecated: Use GatewayModel.ProtoReflect.Descriptor instead. +func (*GatewayModel) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{1} +} -func (m *GatewayModel) GetBrandId() string { - if m != nil { - return m.BrandId +func (x *GatewayModel) GetBrandId() string { + if x != nil { + return x.BrandId } return "" } -func (m *GatewayModel) GetId() string { - if m != nil { - return m.Id +func (x *GatewayModel) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *GatewayModel) GetName() string { - if m != nil { - return m.Name +func (x *GatewayModel) GetName() string { + if x != nil { + return x.Name } return "" } // Identifies an end device model with version information. type GatewayVersionIdentifiers struct { - BrandId string `protobuf:"bytes,1,opt,name=brand_id,json=brandId,proto3" json:"brand_id,omitempty"` - ModelId string `protobuf:"bytes,2,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"` - HardwareVersion string `protobuf:"bytes,3,opt,name=hardware_version,json=hardwareVersion,proto3" json:"hardware_version,omitempty"` - FirmwareVersion string `protobuf:"bytes,4,opt,name=firmware_version,json=firmwareVersion,proto3" json:"firmware_version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GatewayVersionIdentifiers) Reset() { *m = GatewayVersionIdentifiers{} } -func (m *GatewayVersionIdentifiers) String() string { return proto.CompactTextString(m) } -func (*GatewayVersionIdentifiers) ProtoMessage() {} -func (*GatewayVersionIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{2} -} -func (m *GatewayVersionIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayVersionIdentifiers.Unmarshal(m, b) -} -func (m *GatewayVersionIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayVersionIdentifiers.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BrandId string `protobuf:"bytes,1,opt,name=brand_id,json=brandId,proto3" json:"brand_id,omitempty"` + ModelId string `protobuf:"bytes,2,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"` + HardwareVersion string `protobuf:"bytes,3,opt,name=hardware_version,json=hardwareVersion,proto3" json:"hardware_version,omitempty"` + FirmwareVersion string `protobuf:"bytes,4,opt,name=firmware_version,json=firmwareVersion,proto3" json:"firmware_version,omitempty"` } -func (m *GatewayVersionIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayVersionIdentifiers.Merge(m, src) + +func (x *GatewayVersionIdentifiers) Reset() { + *x = GatewayVersionIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GatewayVersionIdentifiers) XXX_Size() int { - return xxx_messageInfo_GatewayVersionIdentifiers.Size(m) + +func (x *GatewayVersionIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GatewayVersionIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayVersionIdentifiers.DiscardUnknown(m) + +func (*GatewayVersionIdentifiers) ProtoMessage() {} + +func (x *GatewayVersionIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GatewayVersionIdentifiers proto.InternalMessageInfo +// Deprecated: Use GatewayVersionIdentifiers.ProtoReflect.Descriptor instead. +func (*GatewayVersionIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{2} +} -func (m *GatewayVersionIdentifiers) GetBrandId() string { - if m != nil { - return m.BrandId +func (x *GatewayVersionIdentifiers) GetBrandId() string { + if x != nil { + return x.BrandId } return "" } -func (m *GatewayVersionIdentifiers) GetModelId() string { - if m != nil { - return m.ModelId +func (x *GatewayVersionIdentifiers) GetModelId() string { + if x != nil { + return x.ModelId } return "" } -func (m *GatewayVersionIdentifiers) GetHardwareVersion() string { - if m != nil { - return m.HardwareVersion +func (x *GatewayVersionIdentifiers) GetHardwareVersion() string { + if x != nil { + return x.HardwareVersion } return "" } -func (m *GatewayVersionIdentifiers) GetFirmwareVersion() string { - if m != nil { - return m.FirmwareVersion +func (x *GatewayVersionIdentifiers) GetFirmwareVersion() string { + if x != nil { + return x.FirmwareVersion } return "" } type GatewayRadio struct { - Enable bool `protobuf:"varint,1,opt,name=enable,proto3" json:"enable,omitempty"` - ChipType string `protobuf:"bytes,2,opt,name=chip_type,json=chipType,proto3" json:"chip_type,omitempty"` - Frequency uint64 `protobuf:"varint,3,opt,name=frequency,proto3" json:"frequency,omitempty"` - RssiOffset float32 `protobuf:"fixed32,4,opt,name=rssi_offset,json=rssiOffset,proto3" json:"rssi_offset,omitempty"` - TxConfiguration *GatewayRadio_TxConfiguration `protobuf:"bytes,5,opt,name=tx_configuration,json=txConfiguration,proto3" json:"tx_configuration,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GatewayRadio) Reset() { *m = GatewayRadio{} } -func (m *GatewayRadio) String() string { return proto.CompactTextString(m) } -func (*GatewayRadio) ProtoMessage() {} -func (*GatewayRadio) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{3} -} -func (m *GatewayRadio) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayRadio.Unmarshal(m, b) -} -func (m *GatewayRadio) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayRadio.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Enable bool `protobuf:"varint,1,opt,name=enable,proto3" json:"enable,omitempty"` + ChipType string `protobuf:"bytes,2,opt,name=chip_type,json=chipType,proto3" json:"chip_type,omitempty"` + Frequency uint64 `protobuf:"varint,3,opt,name=frequency,proto3" json:"frequency,omitempty"` + RssiOffset float32 `protobuf:"fixed32,4,opt,name=rssi_offset,json=rssiOffset,proto3" json:"rssi_offset,omitempty"` + TxConfiguration *GatewayRadio_TxConfiguration `protobuf:"bytes,5,opt,name=tx_configuration,json=txConfiguration,proto3" json:"tx_configuration,omitempty"` } -func (m *GatewayRadio) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayRadio.Merge(m, src) + +func (x *GatewayRadio) Reset() { + *x = GatewayRadio{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GatewayRadio) XXX_Size() int { - return xxx_messageInfo_GatewayRadio.Size(m) + +func (x *GatewayRadio) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GatewayRadio) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayRadio.DiscardUnknown(m) + +func (*GatewayRadio) ProtoMessage() {} + +func (x *GatewayRadio) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GatewayRadio proto.InternalMessageInfo +// Deprecated: Use GatewayRadio.ProtoReflect.Descriptor instead. +func (*GatewayRadio) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{3} +} -func (m *GatewayRadio) GetEnable() bool { - if m != nil { - return m.Enable +func (x *GatewayRadio) GetEnable() bool { + if x != nil { + return x.Enable } return false } -func (m *GatewayRadio) GetChipType() string { - if m != nil { - return m.ChipType +func (x *GatewayRadio) GetChipType() string { + if x != nil { + return x.ChipType } return "" } -func (m *GatewayRadio) GetFrequency() uint64 { - if m != nil { - return m.Frequency +func (x *GatewayRadio) GetFrequency() uint64 { + if x != nil { + return x.Frequency } return 0 } -func (m *GatewayRadio) GetRssiOffset() float32 { - if m != nil { - return m.RssiOffset +func (x *GatewayRadio) GetRssiOffset() float32 { + if x != nil { + return x.RssiOffset } return 0 } -func (m *GatewayRadio) GetTxConfiguration() *GatewayRadio_TxConfiguration { - if m != nil { - return m.TxConfiguration +func (x *GatewayRadio) GetTxConfiguration() *GatewayRadio_TxConfiguration { + if x != nil { + return x.TxConfiguration } return nil } -type GatewayRadio_TxConfiguration struct { - MinFrequency uint64 `protobuf:"varint,1,opt,name=min_frequency,json=minFrequency,proto3" json:"min_frequency,omitempty"` - MaxFrequency uint64 `protobuf:"varint,2,opt,name=max_frequency,json=maxFrequency,proto3" json:"max_frequency,omitempty"` - NotchFrequency uint64 `protobuf:"varint,3,opt,name=notch_frequency,json=notchFrequency,proto3" json:"notch_frequency,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +// Authentication code for claiming gateways. +type GatewayClaimAuthenticationCode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GatewayRadio_TxConfiguration) Reset() { *m = GatewayRadio_TxConfiguration{} } -func (m *GatewayRadio_TxConfiguration) String() string { return proto.CompactTextString(m) } -func (*GatewayRadio_TxConfiguration) ProtoMessage() {} -func (*GatewayRadio_TxConfiguration) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{3, 0} -} -func (m *GatewayRadio_TxConfiguration) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayRadio_TxConfiguration.Unmarshal(m, b) + Secret *Secret `protobuf:"bytes,1,opt,name=secret,proto3" json:"secret,omitempty"` + ValidFrom *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=valid_from,json=validFrom,proto3" json:"valid_from,omitempty"` + ValidTo *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=valid_to,json=validTo,proto3" json:"valid_to,omitempty"` } -func (m *GatewayRadio_TxConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayRadio_TxConfiguration.Marshal(b, m, deterministic) -} -func (m *GatewayRadio_TxConfiguration) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayRadio_TxConfiguration.Merge(m, src) -} -func (m *GatewayRadio_TxConfiguration) XXX_Size() int { - return xxx_messageInfo_GatewayRadio_TxConfiguration.Size(m) -} -func (m *GatewayRadio_TxConfiguration) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayRadio_TxConfiguration.DiscardUnknown(m) -} - -var xxx_messageInfo_GatewayRadio_TxConfiguration proto.InternalMessageInfo -func (m *GatewayRadio_TxConfiguration) GetMinFrequency() uint64 { - if m != nil { - return m.MinFrequency +func (x *GatewayClaimAuthenticationCode) Reset() { + *x = GatewayClaimAuthenticationCode{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (m *GatewayRadio_TxConfiguration) GetMaxFrequency() uint64 { - if m != nil { - return m.MaxFrequency - } - return 0 +func (x *GatewayClaimAuthenticationCode) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GatewayRadio_TxConfiguration) GetNotchFrequency() uint64 { - if m != nil { - return m.NotchFrequency - } - return 0 -} +func (*GatewayClaimAuthenticationCode) ProtoMessage() {} -// Authentication code for claiming gateways. -type GatewayClaimAuthenticationCode struct { - Secret *Secret `protobuf:"bytes,1,opt,name=secret,proto3" json:"secret,omitempty"` - ValidFrom *types.Timestamp `protobuf:"bytes,2,opt,name=valid_from,json=validFrom,proto3" json:"valid_from,omitempty"` - ValidTo *types.Timestamp `protobuf:"bytes,3,opt,name=valid_to,json=validTo,proto3" json:"valid_to,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *GatewayClaimAuthenticationCode) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *GatewayClaimAuthenticationCode) Reset() { *m = GatewayClaimAuthenticationCode{} } -func (m *GatewayClaimAuthenticationCode) String() string { return proto.CompactTextString(m) } -func (*GatewayClaimAuthenticationCode) ProtoMessage() {} +// Deprecated: Use GatewayClaimAuthenticationCode.ProtoReflect.Descriptor instead. func (*GatewayClaimAuthenticationCode) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{4} -} -func (m *GatewayClaimAuthenticationCode) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayClaimAuthenticationCode.Unmarshal(m, b) -} -func (m *GatewayClaimAuthenticationCode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayClaimAuthenticationCode.Marshal(b, m, deterministic) -} -func (m *GatewayClaimAuthenticationCode) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayClaimAuthenticationCode.Merge(m, src) -} -func (m *GatewayClaimAuthenticationCode) XXX_Size() int { - return xxx_messageInfo_GatewayClaimAuthenticationCode.Size(m) + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{4} } -func (m *GatewayClaimAuthenticationCode) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayClaimAuthenticationCode.DiscardUnknown(m) -} - -var xxx_messageInfo_GatewayClaimAuthenticationCode proto.InternalMessageInfo -func (m *GatewayClaimAuthenticationCode) GetSecret() *Secret { - if m != nil { - return m.Secret +func (x *GatewayClaimAuthenticationCode) GetSecret() *Secret { + if x != nil { + return x.Secret } return nil } -func (m *GatewayClaimAuthenticationCode) GetValidFrom() *types.Timestamp { - if m != nil { - return m.ValidFrom +func (x *GatewayClaimAuthenticationCode) GetValidFrom() *timestamppb.Timestamp { + if x != nil { + return x.ValidFrom } return nil } -func (m *GatewayClaimAuthenticationCode) GetValidTo() *types.Timestamp { - if m != nil { - return m.ValidTo +func (x *GatewayClaimAuthenticationCode) GetValidTo() *timestamppb.Timestamp { + if x != nil { + return x.ValidTo } return nil } // Gateway is the message that defines a gateway on the network. type Gateway struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The identifiers of the gateway. These are public and can be seen by any authenticated user in the network. Ids *GatewayIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` // When the gateway was created. This information is public and can be seen by any authenticated user in the network. - CreatedAt *types.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // When the gateway was last updated. This information is public and can be seen by any authenticated user in the network. - UpdatedAt *types.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // When the gateway was deleted. This information is public and can be seen by any authenticated user in the network. - DeletedAt *types.Timestamp `protobuf:"bytes,26,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` + DeletedAt *timestamppb.Timestamp `protobuf:"bytes,26,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` // The name of the gateway. This information is public and can be seen by any authenticated user in the network. Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` // A description for the gateway. This information is public and can be seen by any authenticated user in the network. @@ -433,7 +464,9 @@ type Gateway struct { Attributes map[string]string `protobuf:"bytes,6,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Contact information for this gateway. Typically used to indicate who to contact with technical/security questions about the gateway. // This field is deprecated. Use administrative_contact and technical_contact instead. - ContactInfo []*ContactInfo `protobuf:"bytes,7,rep,name=contact_info,json=contactInfo,proto3" json:"contact_info,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Do not use. + ContactInfo []*ContactInfo `protobuf:"bytes,7,rep,name=contact_info,json=contactInfo,proto3" json:"contact_info,omitempty"` AdministrativeContact *OrganizationOrUserIdentifiers `protobuf:"bytes,30,opt,name=administrative_contact,json=administrativeContact,proto3" json:"administrative_contact,omitempty"` TechnicalContact *OrganizationOrUserIdentifiers `protobuf:"bytes,31,opt,name=technical_contact,json=technicalContact,proto3" json:"technical_contact,omitempty"` VersionIds *GatewayVersionIdentifiers `protobuf:"bytes,8,opt,name=version_ids,json=versionIds,proto3" json:"version_ids,omitempty"` @@ -471,7 +504,7 @@ type Gateway struct { EnforceDutyCycle bool `protobuf:"varint,17,opt,name=enforce_duty_cycle,json=enforceDutyCycle,proto3" json:"enforce_duty_cycle,omitempty"` DownlinkPathConstraint DownlinkPathConstraint `protobuf:"varint,18,opt,name=downlink_path_constraint,json=downlinkPathConstraint,proto3,enum=ttn.lorawan.v3.DownlinkPathConstraint" json:"downlink_path_constraint,omitempty"` // Adjust the time that GS schedules class C messages in advance. This is useful for gateways that have a known high latency backhaul, like 3G and satellite. - ScheduleAnytimeDelay *types.Duration `protobuf:"bytes,19,opt,name=schedule_anytime_delay,json=scheduleAnytimeDelay,proto3" json:"schedule_anytime_delay,omitempty"` + ScheduleAnytimeDelay *durationpb.Duration `protobuf:"bytes,19,opt,name=schedule_anytime_delay,json=scheduleAnytimeDelay,proto3" json:"schedule_anytime_delay,omitempty"` // Update the location of this gateway from status messages. This only works for gateways connecting with authentication; gateways connected over UDP are not supported. UpdateLocationFromStatus bool `protobuf:"varint,21,opt,name=update_location_from_status,json=updateLocationFromStatus,proto3" json:"update_location_from_status,omitempty"` // The LoRa Basics Station LNS secret. @@ -494,423 +527,419 @@ type Gateway struct { RequireAuthenticatedConnection bool `protobuf:"varint,27,opt,name=require_authenticated_connection,json=requireAuthenticatedConnection,proto3" json:"require_authenticated_connection,omitempty"` Lrfhss *Gateway_LRFHSS `protobuf:"bytes,28,opt,name=lrfhss,proto3" json:"lrfhss,omitempty"` DisablePacketBrokerForwarding bool `protobuf:"varint,29,opt,name=disable_packet_broker_forwarding,json=disablePacketBrokerForwarding,proto3" json:"disable_packet_broker_forwarding,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Gateway) Reset() { *m = Gateway{} } -func (m *Gateway) String() string { return proto.CompactTextString(m) } -func (*Gateway) ProtoMessage() {} -func (*Gateway) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{5} -} -func (m *Gateway) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Gateway.Unmarshal(m, b) -} -func (m *Gateway) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Gateway.Marshal(b, m, deterministic) -} -func (m *Gateway) XXX_Merge(src proto.Message) { - xxx_messageInfo_Gateway.Merge(m, src) +func (x *Gateway) Reset() { + *x = Gateway{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Gateway) XXX_Size() int { - return xxx_messageInfo_Gateway.Size(m) + +func (x *Gateway) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Gateway) XXX_DiscardUnknown() { - xxx_messageInfo_Gateway.DiscardUnknown(m) + +func (*Gateway) ProtoMessage() {} + +func (x *Gateway) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Gateway proto.InternalMessageInfo +// Deprecated: Use Gateway.ProtoReflect.Descriptor instead. +func (*Gateway) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{5} +} -func (m *Gateway) GetIds() *GatewayIdentifiers { - if m != nil { - return m.Ids +func (x *Gateway) GetIds() *GatewayIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *Gateway) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *Gateway) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *Gateway) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *Gateway) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *Gateway) GetDeletedAt() *types.Timestamp { - if m != nil { - return m.DeletedAt +func (x *Gateway) GetDeletedAt() *timestamppb.Timestamp { + if x != nil { + return x.DeletedAt } return nil } -func (m *Gateway) GetName() string { - if m != nil { - return m.Name +func (x *Gateway) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *Gateway) GetDescription() string { - if m != nil { - return m.Description +func (x *Gateway) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Gateway) GetAttributes() map[string]string { - if m != nil { - return m.Attributes +func (x *Gateway) GetAttributes() map[string]string { + if x != nil { + return x.Attributes } return nil } // Deprecated: Do not use. -func (m *Gateway) GetContactInfo() []*ContactInfo { - if m != nil { - return m.ContactInfo +func (x *Gateway) GetContactInfo() []*ContactInfo { + if x != nil { + return x.ContactInfo } return nil } -func (m *Gateway) GetAdministrativeContact() *OrganizationOrUserIdentifiers { - if m != nil { - return m.AdministrativeContact +func (x *Gateway) GetAdministrativeContact() *OrganizationOrUserIdentifiers { + if x != nil { + return x.AdministrativeContact } return nil } -func (m *Gateway) GetTechnicalContact() *OrganizationOrUserIdentifiers { - if m != nil { - return m.TechnicalContact +func (x *Gateway) GetTechnicalContact() *OrganizationOrUserIdentifiers { + if x != nil { + return x.TechnicalContact } return nil } -func (m *Gateway) GetVersionIds() *GatewayVersionIdentifiers { - if m != nil { - return m.VersionIds +func (x *Gateway) GetVersionIds() *GatewayVersionIdentifiers { + if x != nil { + return x.VersionIds } return nil } -func (m *Gateway) GetGatewayServerAddress() string { - if m != nil { - return m.GatewayServerAddress +func (x *Gateway) GetGatewayServerAddress() string { + if x != nil { + return x.GatewayServerAddress } return "" } -func (m *Gateway) GetAutoUpdate() bool { - if m != nil { - return m.AutoUpdate +func (x *Gateway) GetAutoUpdate() bool { + if x != nil { + return x.AutoUpdate } return false } -func (m *Gateway) GetUpdateChannel() string { - if m != nil { - return m.UpdateChannel +func (x *Gateway) GetUpdateChannel() string { + if x != nil { + return x.UpdateChannel } return "" } -func (m *Gateway) GetFrequencyPlanId() string { - if m != nil { - return m.FrequencyPlanId +func (x *Gateway) GetFrequencyPlanId() string { + if x != nil { + return x.FrequencyPlanId } return "" } -func (m *Gateway) GetFrequencyPlanIds() []string { - if m != nil { - return m.FrequencyPlanIds +func (x *Gateway) GetFrequencyPlanIds() []string { + if x != nil { + return x.FrequencyPlanIds } return nil } -func (m *Gateway) GetAntennas() []*GatewayAntenna { - if m != nil { - return m.Antennas +func (x *Gateway) GetAntennas() []*GatewayAntenna { + if x != nil { + return x.Antennas } return nil } -func (m *Gateway) GetStatusPublic() bool { - if m != nil { - return m.StatusPublic +func (x *Gateway) GetStatusPublic() bool { + if x != nil { + return x.StatusPublic } return false } -func (m *Gateway) GetLocationPublic() bool { - if m != nil { - return m.LocationPublic +func (x *Gateway) GetLocationPublic() bool { + if x != nil { + return x.LocationPublic } return false } -func (m *Gateway) GetScheduleDownlinkLate() bool { - if m != nil { - return m.ScheduleDownlinkLate +func (x *Gateway) GetScheduleDownlinkLate() bool { + if x != nil { + return x.ScheduleDownlinkLate } return false } -func (m *Gateway) GetEnforceDutyCycle() bool { - if m != nil { - return m.EnforceDutyCycle +func (x *Gateway) GetEnforceDutyCycle() bool { + if x != nil { + return x.EnforceDutyCycle } return false } -func (m *Gateway) GetDownlinkPathConstraint() DownlinkPathConstraint { - if m != nil { - return m.DownlinkPathConstraint +func (x *Gateway) GetDownlinkPathConstraint() DownlinkPathConstraint { + if x != nil { + return x.DownlinkPathConstraint } return DownlinkPathConstraint_DOWNLINK_PATH_CONSTRAINT_NONE } -func (m *Gateway) GetScheduleAnytimeDelay() *types.Duration { - if m != nil { - return m.ScheduleAnytimeDelay +func (x *Gateway) GetScheduleAnytimeDelay() *durationpb.Duration { + if x != nil { + return x.ScheduleAnytimeDelay } return nil } -func (m *Gateway) GetUpdateLocationFromStatus() bool { - if m != nil { - return m.UpdateLocationFromStatus +func (x *Gateway) GetUpdateLocationFromStatus() bool { + if x != nil { + return x.UpdateLocationFromStatus } return false } -func (m *Gateway) GetLbsLnsSecret() *Secret { - if m != nil { - return m.LbsLnsSecret +func (x *Gateway) GetLbsLnsSecret() *Secret { + if x != nil { + return x.LbsLnsSecret } return nil } -func (m *Gateway) GetClaimAuthenticationCode() *GatewayClaimAuthenticationCode { - if m != nil { - return m.ClaimAuthenticationCode +func (x *Gateway) GetClaimAuthenticationCode() *GatewayClaimAuthenticationCode { + if x != nil { + return x.ClaimAuthenticationCode } return nil } -func (m *Gateway) GetTargetCupsUri() string { - if m != nil { - return m.TargetCupsUri +func (x *Gateway) GetTargetCupsUri() string { + if x != nil { + return x.TargetCupsUri } return "" } -func (m *Gateway) GetTargetCupsKey() *Secret { - if m != nil { - return m.TargetCupsKey +func (x *Gateway) GetTargetCupsKey() *Secret { + if x != nil { + return x.TargetCupsKey } return nil } -func (m *Gateway) GetRequireAuthenticatedConnection() bool { - if m != nil { - return m.RequireAuthenticatedConnection +func (x *Gateway) GetRequireAuthenticatedConnection() bool { + if x != nil { + return x.RequireAuthenticatedConnection } return false } -func (m *Gateway) GetLrfhss() *Gateway_LRFHSS { - if m != nil { - return m.Lrfhss +func (x *Gateway) GetLrfhss() *Gateway_LRFHSS { + if x != nil { + return x.Lrfhss } return nil } -func (m *Gateway) GetDisablePacketBrokerForwarding() bool { - if m != nil { - return m.DisablePacketBrokerForwarding +func (x *Gateway) GetDisablePacketBrokerForwarding() bool { + if x != nil { + return x.DisablePacketBrokerForwarding } return false } -// LR-FHSS gateway capabilities. -type Gateway_LRFHSS struct { - // The gateway supports the LR-FHSS uplink channels. - Supported bool `protobuf:"varint,1,opt,name=supported,proto3" json:"supported,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type Gateways struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Gateway_LRFHSS) Reset() { *m = Gateway_LRFHSS{} } -func (m *Gateway_LRFHSS) String() string { return proto.CompactTextString(m) } -func (*Gateway_LRFHSS) ProtoMessage() {} -func (*Gateway_LRFHSS) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{5, 1} -} -func (m *Gateway_LRFHSS) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Gateway_LRFHSS.Unmarshal(m, b) -} -func (m *Gateway_LRFHSS) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Gateway_LRFHSS.Marshal(b, m, deterministic) + Gateways []*Gateway `protobuf:"bytes,1,rep,name=gateways,proto3" json:"gateways,omitempty"` } -func (m *Gateway_LRFHSS) XXX_Merge(src proto.Message) { - xxx_messageInfo_Gateway_LRFHSS.Merge(m, src) -} -func (m *Gateway_LRFHSS) XXX_Size() int { - return xxx_messageInfo_Gateway_LRFHSS.Size(m) + +func (x *Gateways) Reset() { + *x = Gateways{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Gateway_LRFHSS) XXX_DiscardUnknown() { - xxx_messageInfo_Gateway_LRFHSS.DiscardUnknown(m) + +func (x *Gateways) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_Gateway_LRFHSS proto.InternalMessageInfo +func (*Gateways) ProtoMessage() {} -func (m *Gateway_LRFHSS) GetSupported() bool { - if m != nil { - return m.Supported +func (x *Gateways) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false -} - -type Gateways struct { - Gateways []*Gateway `protobuf:"bytes,1,rep,name=gateways,proto3" json:"gateways,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + return mi.MessageOf(x) } -func (m *Gateways) Reset() { *m = Gateways{} } -func (m *Gateways) String() string { return proto.CompactTextString(m) } -func (*Gateways) ProtoMessage() {} +// Deprecated: Use Gateways.ProtoReflect.Descriptor instead. func (*Gateways) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{6} -} -func (m *Gateways) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Gateways.Unmarshal(m, b) + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{6} } -func (m *Gateways) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Gateways.Marshal(b, m, deterministic) -} -func (m *Gateways) XXX_Merge(src proto.Message) { - xxx_messageInfo_Gateways.Merge(m, src) -} -func (m *Gateways) XXX_Size() int { - return xxx_messageInfo_Gateways.Size(m) -} -func (m *Gateways) XXX_DiscardUnknown() { - xxx_messageInfo_Gateways.DiscardUnknown(m) -} - -var xxx_messageInfo_Gateways proto.InternalMessageInfo -func (m *Gateways) GetGateways() []*Gateway { - if m != nil { - return m.Gateways +func (x *Gateways) GetGateways() []*Gateway { + if x != nil { + return x.Gateways } return nil } type GetGatewayRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` // The names of the gateway fields that should be returned. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *GetGatewayRequest) Reset() { *m = GetGatewayRequest{} } -func (m *GetGatewayRequest) String() string { return proto.CompactTextString(m) } -func (*GetGatewayRequest) ProtoMessage() {} -func (*GetGatewayRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{7} -} -func (m *GetGatewayRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetGatewayRequest.Unmarshal(m, b) -} -func (m *GetGatewayRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetGatewayRequest.Marshal(b, m, deterministic) -} -func (m *GetGatewayRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetGatewayRequest.Merge(m, src) +func (x *GetGatewayRequest) Reset() { + *x = GetGatewayRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetGatewayRequest) XXX_Size() int { - return xxx_messageInfo_GetGatewayRequest.Size(m) + +func (x *GetGatewayRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetGatewayRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetGatewayRequest.DiscardUnknown(m) + +func (*GetGatewayRequest) ProtoMessage() {} + +func (x *GetGatewayRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetGatewayRequest proto.InternalMessageInfo +// Deprecated: Use GetGatewayRequest.ProtoReflect.Descriptor instead. +func (*GetGatewayRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{7} +} -func (m *GetGatewayRequest) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds +func (x *GetGatewayRequest) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds } return nil } -func (m *GetGatewayRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *GetGatewayRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type GetGatewayIdentifiersForEUIRequest struct { - Eui []byte `protobuf:"bytes,1,opt,name=eui,proto3" json:"eui,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GetGatewayIdentifiersForEUIRequest) Reset() { *m = GetGatewayIdentifiersForEUIRequest{} } -func (m *GetGatewayIdentifiersForEUIRequest) String() string { return proto.CompactTextString(m) } -func (*GetGatewayIdentifiersForEUIRequest) ProtoMessage() {} -func (*GetGatewayIdentifiersForEUIRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{8} -} -func (m *GetGatewayIdentifiersForEUIRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetGatewayIdentifiersForEUIRequest.Unmarshal(m, b) -} -func (m *GetGatewayIdentifiersForEUIRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetGatewayIdentifiersForEUIRequest.Marshal(b, m, deterministic) + Eui []byte `protobuf:"bytes,1,opt,name=eui,proto3" json:"eui,omitempty"` } -func (m *GetGatewayIdentifiersForEUIRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetGatewayIdentifiersForEUIRequest.Merge(m, src) + +func (x *GetGatewayIdentifiersForEUIRequest) Reset() { + *x = GetGatewayIdentifiersForEUIRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetGatewayIdentifiersForEUIRequest) XXX_Size() int { - return xxx_messageInfo_GetGatewayIdentifiersForEUIRequest.Size(m) + +func (x *GetGatewayIdentifiersForEUIRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetGatewayIdentifiersForEUIRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetGatewayIdentifiersForEUIRequest.DiscardUnknown(m) + +func (*GetGatewayIdentifiersForEUIRequest) ProtoMessage() {} + +func (x *GetGatewayIdentifiersForEUIRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetGatewayIdentifiersForEUIRequest proto.InternalMessageInfo +// Deprecated: Use GetGatewayIdentifiersForEUIRequest.ProtoReflect.Descriptor instead. +func (*GetGatewayIdentifiersForEUIRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{8} +} -func (m *GetGatewayIdentifiersForEUIRequest) GetEui() []byte { - if m != nil { - return m.Eui +func (x *GetGatewayIdentifiersForEUIRequest) GetEui() []byte { + if x != nil { + return x.Eui } return nil } type ListGatewaysRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // By default we list all gateways the caller has rights on. // Set the user or the organization (not both) to instead list the gateways // where the user or organization is collaborator on. Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,1,opt,name=collaborator,proto3" json:"collaborator,omitempty"` // The names of the gateway fields that should be returned. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. Order string `protobuf:"bytes,3,opt,name=order,proto3" json:"order,omitempty"` @@ -919,173 +948,200 @@ type ListGatewaysRequest struct { // Page number for pagination. 0 is interpreted as 1. Page uint32 `protobuf:"varint,5,opt,name=page,proto3" json:"page,omitempty"` // Only return recently deleted gateways. - Deleted bool `protobuf:"varint,6,opt,name=deleted,proto3" json:"deleted,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Deleted bool `protobuf:"varint,6,opt,name=deleted,proto3" json:"deleted,omitempty"` } -func (m *ListGatewaysRequest) Reset() { *m = ListGatewaysRequest{} } -func (m *ListGatewaysRequest) String() string { return proto.CompactTextString(m) } -func (*ListGatewaysRequest) ProtoMessage() {} -func (*ListGatewaysRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{9} -} -func (m *ListGatewaysRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListGatewaysRequest.Unmarshal(m, b) -} -func (m *ListGatewaysRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListGatewaysRequest.Marshal(b, m, deterministic) -} -func (m *ListGatewaysRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListGatewaysRequest.Merge(m, src) +func (x *ListGatewaysRequest) Reset() { + *x = ListGatewaysRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListGatewaysRequest) XXX_Size() int { - return xxx_messageInfo_ListGatewaysRequest.Size(m) + +func (x *ListGatewaysRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListGatewaysRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListGatewaysRequest.DiscardUnknown(m) + +func (*ListGatewaysRequest) ProtoMessage() {} + +func (x *ListGatewaysRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListGatewaysRequest proto.InternalMessageInfo +// Deprecated: Use ListGatewaysRequest.ProtoReflect.Descriptor instead. +func (*ListGatewaysRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{9} +} -func (m *ListGatewaysRequest) GetCollaborator() *OrganizationOrUserIdentifiers { - if m != nil { - return m.Collaborator +func (x *ListGatewaysRequest) GetCollaborator() *OrganizationOrUserIdentifiers { + if x != nil { + return x.Collaborator } return nil } -func (m *ListGatewaysRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *ListGatewaysRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *ListGatewaysRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListGatewaysRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *ListGatewaysRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListGatewaysRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListGatewaysRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListGatewaysRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *ListGatewaysRequest) GetDeleted() bool { - if m != nil { - return m.Deleted +func (x *ListGatewaysRequest) GetDeleted() bool { + if x != nil { + return x.Deleted } return false } type CreateGatewayRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Gateway *Gateway `protobuf:"bytes,1,opt,name=gateway,proto3" json:"gateway,omitempty"` // Collaborator to grant all rights on the newly created gateway. - Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` } -func (m *CreateGatewayRequest) Reset() { *m = CreateGatewayRequest{} } -func (m *CreateGatewayRequest) String() string { return proto.CompactTextString(m) } -func (*CreateGatewayRequest) ProtoMessage() {} -func (*CreateGatewayRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{10} -} -func (m *CreateGatewayRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateGatewayRequest.Unmarshal(m, b) -} -func (m *CreateGatewayRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateGatewayRequest.Marshal(b, m, deterministic) -} -func (m *CreateGatewayRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateGatewayRequest.Merge(m, src) +func (x *CreateGatewayRequest) Reset() { + *x = CreateGatewayRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateGatewayRequest) XXX_Size() int { - return xxx_messageInfo_CreateGatewayRequest.Size(m) + +func (x *CreateGatewayRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateGatewayRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateGatewayRequest.DiscardUnknown(m) + +func (*CreateGatewayRequest) ProtoMessage() {} + +func (x *CreateGatewayRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CreateGatewayRequest proto.InternalMessageInfo +// Deprecated: Use CreateGatewayRequest.ProtoReflect.Descriptor instead. +func (*CreateGatewayRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{10} +} -func (m *CreateGatewayRequest) GetGateway() *Gateway { - if m != nil { - return m.Gateway +func (x *CreateGatewayRequest) GetGateway() *Gateway { + if x != nil { + return x.Gateway } return nil } -func (m *CreateGatewayRequest) GetCollaborator() *OrganizationOrUserIdentifiers { - if m != nil { - return m.Collaborator +func (x *CreateGatewayRequest) GetCollaborator() *OrganizationOrUserIdentifiers { + if x != nil { + return x.Collaborator } return nil } type UpdateGatewayRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Gateway *Gateway `protobuf:"bytes,1,opt,name=gateway,proto3" json:"gateway,omitempty"` // The names of the gateway fields that should be updated. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *UpdateGatewayRequest) Reset() { *m = UpdateGatewayRequest{} } -func (m *UpdateGatewayRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateGatewayRequest) ProtoMessage() {} -func (*UpdateGatewayRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{11} -} -func (m *UpdateGatewayRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateGatewayRequest.Unmarshal(m, b) -} -func (m *UpdateGatewayRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateGatewayRequest.Marshal(b, m, deterministic) -} -func (m *UpdateGatewayRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateGatewayRequest.Merge(m, src) +func (x *UpdateGatewayRequest) Reset() { + *x = UpdateGatewayRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UpdateGatewayRequest) XXX_Size() int { - return xxx_messageInfo_UpdateGatewayRequest.Size(m) + +func (x *UpdateGatewayRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UpdateGatewayRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateGatewayRequest.DiscardUnknown(m) + +func (*UpdateGatewayRequest) ProtoMessage() {} + +func (x *UpdateGatewayRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UpdateGatewayRequest proto.InternalMessageInfo +// Deprecated: Use UpdateGatewayRequest.ProtoReflect.Descriptor instead. +func (*UpdateGatewayRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{11} +} -func (m *UpdateGatewayRequest) GetGateway() *Gateway { - if m != nil { - return m.Gateway +func (x *UpdateGatewayRequest) GetGateway() *Gateway { + if x != nil { + return x.Gateway } return nil } -func (m *UpdateGatewayRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *UpdateGatewayRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type ListGatewayAPIKeysRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` // Order the results by this field path. // Default ordering is by ID. Prepend with a minus (-) to reverse the order. @@ -1093,229 +1149,265 @@ type ListGatewayAPIKeysRequest struct { // Limit the number of results per page. Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` } -func (m *ListGatewayAPIKeysRequest) Reset() { *m = ListGatewayAPIKeysRequest{} } -func (m *ListGatewayAPIKeysRequest) String() string { return proto.CompactTextString(m) } -func (*ListGatewayAPIKeysRequest) ProtoMessage() {} -func (*ListGatewayAPIKeysRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{12} -} -func (m *ListGatewayAPIKeysRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListGatewayAPIKeysRequest.Unmarshal(m, b) -} -func (m *ListGatewayAPIKeysRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListGatewayAPIKeysRequest.Marshal(b, m, deterministic) -} -func (m *ListGatewayAPIKeysRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListGatewayAPIKeysRequest.Merge(m, src) +func (x *ListGatewayAPIKeysRequest) Reset() { + *x = ListGatewayAPIKeysRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListGatewayAPIKeysRequest) XXX_Size() int { - return xxx_messageInfo_ListGatewayAPIKeysRequest.Size(m) + +func (x *ListGatewayAPIKeysRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListGatewayAPIKeysRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListGatewayAPIKeysRequest.DiscardUnknown(m) + +func (*ListGatewayAPIKeysRequest) ProtoMessage() {} + +func (x *ListGatewayAPIKeysRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListGatewayAPIKeysRequest proto.InternalMessageInfo +// Deprecated: Use ListGatewayAPIKeysRequest.ProtoReflect.Descriptor instead. +func (*ListGatewayAPIKeysRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{12} +} -func (m *ListGatewayAPIKeysRequest) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds +func (x *ListGatewayAPIKeysRequest) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds } return nil } -func (m *ListGatewayAPIKeysRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListGatewayAPIKeysRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *ListGatewayAPIKeysRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListGatewayAPIKeysRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListGatewayAPIKeysRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListGatewayAPIKeysRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } type GetGatewayAPIKeyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` // Unique public identifier for the API key. - KeyId string `protobuf:"bytes,2,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + KeyId string `protobuf:"bytes,2,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` } -func (m *GetGatewayAPIKeyRequest) Reset() { *m = GetGatewayAPIKeyRequest{} } -func (m *GetGatewayAPIKeyRequest) String() string { return proto.CompactTextString(m) } -func (*GetGatewayAPIKeyRequest) ProtoMessage() {} -func (*GetGatewayAPIKeyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{13} -} -func (m *GetGatewayAPIKeyRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetGatewayAPIKeyRequest.Unmarshal(m, b) -} -func (m *GetGatewayAPIKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetGatewayAPIKeyRequest.Marshal(b, m, deterministic) -} -func (m *GetGatewayAPIKeyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetGatewayAPIKeyRequest.Merge(m, src) +func (x *GetGatewayAPIKeyRequest) Reset() { + *x = GetGatewayAPIKeyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetGatewayAPIKeyRequest) XXX_Size() int { - return xxx_messageInfo_GetGatewayAPIKeyRequest.Size(m) + +func (x *GetGatewayAPIKeyRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetGatewayAPIKeyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetGatewayAPIKeyRequest.DiscardUnknown(m) + +func (*GetGatewayAPIKeyRequest) ProtoMessage() {} + +func (x *GetGatewayAPIKeyRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetGatewayAPIKeyRequest proto.InternalMessageInfo +// Deprecated: Use GetGatewayAPIKeyRequest.ProtoReflect.Descriptor instead. +func (*GetGatewayAPIKeyRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{13} +} -func (m *GetGatewayAPIKeyRequest) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds +func (x *GetGatewayAPIKeyRequest) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds } return nil } -func (m *GetGatewayAPIKeyRequest) GetKeyId() string { - if m != nil { - return m.KeyId +func (x *GetGatewayAPIKeyRequest) GetKeyId() string { + if x != nil { + return x.KeyId } return "" } type CreateGatewayAPIKeyRequest struct { - GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Rights []Right `protobuf:"varint,3,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` - ExpiresAt *types.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateGatewayAPIKeyRequest) Reset() { *m = CreateGatewayAPIKeyRequest{} } -func (m *CreateGatewayAPIKeyRequest) String() string { return proto.CompactTextString(m) } -func (*CreateGatewayAPIKeyRequest) ProtoMessage() {} -func (*CreateGatewayAPIKeyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{14} -} -func (m *CreateGatewayAPIKeyRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateGatewayAPIKeyRequest.Unmarshal(m, b) -} -func (m *CreateGatewayAPIKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateGatewayAPIKeyRequest.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Rights []Right `protobuf:"varint,3,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` + ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` } -func (m *CreateGatewayAPIKeyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateGatewayAPIKeyRequest.Merge(m, src) + +func (x *CreateGatewayAPIKeyRequest) Reset() { + *x = CreateGatewayAPIKeyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateGatewayAPIKeyRequest) XXX_Size() int { - return xxx_messageInfo_CreateGatewayAPIKeyRequest.Size(m) + +func (x *CreateGatewayAPIKeyRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateGatewayAPIKeyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateGatewayAPIKeyRequest.DiscardUnknown(m) + +func (*CreateGatewayAPIKeyRequest) ProtoMessage() {} + +func (x *CreateGatewayAPIKeyRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CreateGatewayAPIKeyRequest proto.InternalMessageInfo +// Deprecated: Use CreateGatewayAPIKeyRequest.ProtoReflect.Descriptor instead. +func (*CreateGatewayAPIKeyRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{14} +} -func (m *CreateGatewayAPIKeyRequest) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds +func (x *CreateGatewayAPIKeyRequest) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds } return nil } -func (m *CreateGatewayAPIKeyRequest) GetName() string { - if m != nil { - return m.Name +func (x *CreateGatewayAPIKeyRequest) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *CreateGatewayAPIKeyRequest) GetRights() []Right { - if m != nil { - return m.Rights +func (x *CreateGatewayAPIKeyRequest) GetRights() []Right { + if x != nil { + return x.Rights } return nil } -func (m *CreateGatewayAPIKeyRequest) GetExpiresAt() *types.Timestamp { - if m != nil { - return m.ExpiresAt +func (x *CreateGatewayAPIKeyRequest) GetExpiresAt() *timestamppb.Timestamp { + if x != nil { + return x.ExpiresAt } return nil } type UpdateGatewayAPIKeyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` ApiKey *APIKey `protobuf:"bytes,2,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` // The names of the api key fields that should be updated. - FieldMask *types.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *UpdateGatewayAPIKeyRequest) Reset() { *m = UpdateGatewayAPIKeyRequest{} } -func (m *UpdateGatewayAPIKeyRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateGatewayAPIKeyRequest) ProtoMessage() {} -func (*UpdateGatewayAPIKeyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{15} -} -func (m *UpdateGatewayAPIKeyRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateGatewayAPIKeyRequest.Unmarshal(m, b) -} -func (m *UpdateGatewayAPIKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateGatewayAPIKeyRequest.Marshal(b, m, deterministic) -} -func (m *UpdateGatewayAPIKeyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateGatewayAPIKeyRequest.Merge(m, src) +func (x *UpdateGatewayAPIKeyRequest) Reset() { + *x = UpdateGatewayAPIKeyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UpdateGatewayAPIKeyRequest) XXX_Size() int { - return xxx_messageInfo_UpdateGatewayAPIKeyRequest.Size(m) + +func (x *UpdateGatewayAPIKeyRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UpdateGatewayAPIKeyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateGatewayAPIKeyRequest.DiscardUnknown(m) + +func (*UpdateGatewayAPIKeyRequest) ProtoMessage() {} + +func (x *UpdateGatewayAPIKeyRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UpdateGatewayAPIKeyRequest proto.InternalMessageInfo +// Deprecated: Use UpdateGatewayAPIKeyRequest.ProtoReflect.Descriptor instead. +func (*UpdateGatewayAPIKeyRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{15} +} -func (m *UpdateGatewayAPIKeyRequest) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds +func (x *UpdateGatewayAPIKeyRequest) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds } return nil } -func (m *UpdateGatewayAPIKeyRequest) GetApiKey() *APIKey { - if m != nil { - return m.ApiKey +func (x *UpdateGatewayAPIKeyRequest) GetApiKey() *APIKey { + if x != nil { + return x.ApiKey } return nil } -func (m *UpdateGatewayAPIKeyRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *UpdateGatewayAPIKeyRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type ListGatewayCollaboratorsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` // Limit the number of results per page. Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` @@ -1323,228 +1415,265 @@ type ListGatewayCollaboratorsRequest struct { Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. - Order string `protobuf:"bytes,4,opt,name=order,proto3" json:"order,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Order string `protobuf:"bytes,4,opt,name=order,proto3" json:"order,omitempty"` } -func (m *ListGatewayCollaboratorsRequest) Reset() { *m = ListGatewayCollaboratorsRequest{} } -func (m *ListGatewayCollaboratorsRequest) String() string { return proto.CompactTextString(m) } -func (*ListGatewayCollaboratorsRequest) ProtoMessage() {} -func (*ListGatewayCollaboratorsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{16} -} -func (m *ListGatewayCollaboratorsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListGatewayCollaboratorsRequest.Unmarshal(m, b) -} -func (m *ListGatewayCollaboratorsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListGatewayCollaboratorsRequest.Marshal(b, m, deterministic) -} -func (m *ListGatewayCollaboratorsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListGatewayCollaboratorsRequest.Merge(m, src) +func (x *ListGatewayCollaboratorsRequest) Reset() { + *x = ListGatewayCollaboratorsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListGatewayCollaboratorsRequest) XXX_Size() int { - return xxx_messageInfo_ListGatewayCollaboratorsRequest.Size(m) + +func (x *ListGatewayCollaboratorsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListGatewayCollaboratorsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListGatewayCollaboratorsRequest.DiscardUnknown(m) + +func (*ListGatewayCollaboratorsRequest) ProtoMessage() {} + +func (x *ListGatewayCollaboratorsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListGatewayCollaboratorsRequest proto.InternalMessageInfo +// Deprecated: Use ListGatewayCollaboratorsRequest.ProtoReflect.Descriptor instead. +func (*ListGatewayCollaboratorsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{16} +} -func (m *ListGatewayCollaboratorsRequest) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds +func (x *ListGatewayCollaboratorsRequest) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds } return nil } -func (m *ListGatewayCollaboratorsRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListGatewayCollaboratorsRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListGatewayCollaboratorsRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListGatewayCollaboratorsRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *ListGatewayCollaboratorsRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListGatewayCollaboratorsRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } type GetGatewayCollaboratorRequest struct { - GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` - Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GetGatewayCollaboratorRequest) Reset() { *m = GetGatewayCollaboratorRequest{} } -func (m *GetGatewayCollaboratorRequest) String() string { return proto.CompactTextString(m) } -func (*GetGatewayCollaboratorRequest) ProtoMessage() {} -func (*GetGatewayCollaboratorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{17} -} -func (m *GetGatewayCollaboratorRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetGatewayCollaboratorRequest.Unmarshal(m, b) + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` + Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` } -func (m *GetGatewayCollaboratorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetGatewayCollaboratorRequest.Marshal(b, m, deterministic) -} -func (m *GetGatewayCollaboratorRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetGatewayCollaboratorRequest.Merge(m, src) + +func (x *GetGatewayCollaboratorRequest) Reset() { + *x = GetGatewayCollaboratorRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetGatewayCollaboratorRequest) XXX_Size() int { - return xxx_messageInfo_GetGatewayCollaboratorRequest.Size(m) + +func (x *GetGatewayCollaboratorRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetGatewayCollaboratorRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetGatewayCollaboratorRequest.DiscardUnknown(m) + +func (*GetGatewayCollaboratorRequest) ProtoMessage() {} + +func (x *GetGatewayCollaboratorRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetGatewayCollaboratorRequest proto.InternalMessageInfo +// Deprecated: Use GetGatewayCollaboratorRequest.ProtoReflect.Descriptor instead. +func (*GetGatewayCollaboratorRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{17} +} -func (m *GetGatewayCollaboratorRequest) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds +func (x *GetGatewayCollaboratorRequest) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds } return nil } -func (m *GetGatewayCollaboratorRequest) GetCollaborator() *OrganizationOrUserIdentifiers { - if m != nil { - return m.Collaborator +func (x *GetGatewayCollaboratorRequest) GetCollaborator() *OrganizationOrUserIdentifiers { + if x != nil { + return x.Collaborator } return nil } type SetGatewayCollaboratorRequest struct { - GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` - Collaborator *Collaborator `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SetGatewayCollaboratorRequest) Reset() { *m = SetGatewayCollaboratorRequest{} } -func (m *SetGatewayCollaboratorRequest) String() string { return proto.CompactTextString(m) } -func (*SetGatewayCollaboratorRequest) ProtoMessage() {} -func (*SetGatewayCollaboratorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{18} -} -func (m *SetGatewayCollaboratorRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetGatewayCollaboratorRequest.Unmarshal(m, b) + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` + Collaborator *Collaborator `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` } -func (m *SetGatewayCollaboratorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetGatewayCollaboratorRequest.Marshal(b, m, deterministic) -} -func (m *SetGatewayCollaboratorRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetGatewayCollaboratorRequest.Merge(m, src) + +func (x *SetGatewayCollaboratorRequest) Reset() { + *x = SetGatewayCollaboratorRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SetGatewayCollaboratorRequest) XXX_Size() int { - return xxx_messageInfo_SetGatewayCollaboratorRequest.Size(m) + +func (x *SetGatewayCollaboratorRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SetGatewayCollaboratorRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetGatewayCollaboratorRequest.DiscardUnknown(m) + +func (*SetGatewayCollaboratorRequest) ProtoMessage() {} + +func (x *SetGatewayCollaboratorRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SetGatewayCollaboratorRequest proto.InternalMessageInfo +// Deprecated: Use SetGatewayCollaboratorRequest.ProtoReflect.Descriptor instead. +func (*SetGatewayCollaboratorRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{18} +} -func (m *SetGatewayCollaboratorRequest) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds +func (x *SetGatewayCollaboratorRequest) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds } return nil } -func (m *SetGatewayCollaboratorRequest) GetCollaborator() *Collaborator { - if m != nil { - return m.Collaborator +func (x *SetGatewayCollaboratorRequest) GetCollaborator() *Collaborator { + if x != nil { + return x.Collaborator } return nil } // GatewayAntenna is the message that defines a gateway antenna. type GatewayAntenna struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Antenna gain relative to the gateway, in dBi. Gain float32 `protobuf:"fixed32,1,opt,name=gain,proto3" json:"gain,omitempty"` // location is the antenna's location. - Location *Location `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty"` - Attributes map[string]string `protobuf:"bytes,3,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Deprecated: Do not use. - Placement GatewayAntennaPlacement `protobuf:"varint,4,opt,name=placement,proto3,enum=ttn.lorawan.v3.GatewayAntennaPlacement" json:"placement,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Location *Location `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty"` + // Deprecated: Do not use. + Attributes map[string]string `protobuf:"bytes,3,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Placement GatewayAntennaPlacement `protobuf:"varint,4,opt,name=placement,proto3,enum=ttn.lorawan.v3.GatewayAntennaPlacement" json:"placement,omitempty"` } -func (m *GatewayAntenna) Reset() { *m = GatewayAntenna{} } -func (m *GatewayAntenna) String() string { return proto.CompactTextString(m) } -func (*GatewayAntenna) ProtoMessage() {} -func (*GatewayAntenna) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{19} -} -func (m *GatewayAntenna) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayAntenna.Unmarshal(m, b) -} -func (m *GatewayAntenna) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayAntenna.Marshal(b, m, deterministic) -} -func (m *GatewayAntenna) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayAntenna.Merge(m, src) +func (x *GatewayAntenna) Reset() { + *x = GatewayAntenna{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GatewayAntenna) XXX_Size() int { - return xxx_messageInfo_GatewayAntenna.Size(m) + +func (x *GatewayAntenna) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GatewayAntenna) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayAntenna.DiscardUnknown(m) + +func (*GatewayAntenna) ProtoMessage() {} + +func (x *GatewayAntenna) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GatewayAntenna proto.InternalMessageInfo +// Deprecated: Use GatewayAntenna.ProtoReflect.Descriptor instead. +func (*GatewayAntenna) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{19} +} -func (m *GatewayAntenna) GetGain() float32 { - if m != nil { - return m.Gain +func (x *GatewayAntenna) GetGain() float32 { + if x != nil { + return x.Gain } return 0 } -func (m *GatewayAntenna) GetLocation() *Location { - if m != nil { - return m.Location +func (x *GatewayAntenna) GetLocation() *Location { + if x != nil { + return x.Location } return nil } // Deprecated: Do not use. -func (m *GatewayAntenna) GetAttributes() map[string]string { - if m != nil { - return m.Attributes +func (x *GatewayAntenna) GetAttributes() map[string]string { + if x != nil { + return x.Attributes } return nil } -func (m *GatewayAntenna) GetPlacement() GatewayAntennaPlacement { - if m != nil { - return m.Placement +func (x *GatewayAntenna) GetPlacement() GatewayAntennaPlacement { + if x != nil { + return x.Placement } return GatewayAntennaPlacement_PLACEMENT_UNKNOWN } type GatewayStatus struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Current time of the gateway - Time *types.Timestamp `protobuf:"bytes,1,opt,name=time,proto3" json:"time,omitempty"` + Time *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=time,proto3" json:"time,omitempty"` // Boot time of the gateway // - can be left out to save bandwidth; old value will be kept - BootTime *types.Timestamp `protobuf:"bytes,2,opt,name=boot_time,json=bootTime,proto3" json:"boot_time,omitempty"` + BootTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=boot_time,json=bootTime,proto3" json:"boot_time,omitempty"` // Versions of gateway subsystems // - each field can be left out to save bandwidth; old value will be kept // - map keys are written in snake_case @@ -1568,653 +1697,1608 @@ type GatewayStatus struct { // Advanced metadata fields // - can be used for advanced information or experimental features that are not yet formally defined in the API // - field names are written in snake_case - Advanced *types.Struct `protobuf:"bytes,99,opt,name=advanced,proto3" json:"advanced,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Advanced *structpb.Struct `protobuf:"bytes,99,opt,name=advanced,proto3" json:"advanced,omitempty"` } -func (m *GatewayStatus) Reset() { *m = GatewayStatus{} } -func (m *GatewayStatus) String() string { return proto.CompactTextString(m) } -func (*GatewayStatus) ProtoMessage() {} -func (*GatewayStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{20} -} -func (m *GatewayStatus) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayStatus.Unmarshal(m, b) -} -func (m *GatewayStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayStatus.Marshal(b, m, deterministic) -} -func (m *GatewayStatus) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayStatus.Merge(m, src) +func (x *GatewayStatus) Reset() { + *x = GatewayStatus{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GatewayStatus) XXX_Size() int { - return xxx_messageInfo_GatewayStatus.Size(m) + +func (x *GatewayStatus) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GatewayStatus) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayStatus.DiscardUnknown(m) + +func (*GatewayStatus) ProtoMessage() {} + +func (x *GatewayStatus) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GatewayStatus proto.InternalMessageInfo +// Deprecated: Use GatewayStatus.ProtoReflect.Descriptor instead. +func (*GatewayStatus) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{20} +} -func (m *GatewayStatus) GetTime() *types.Timestamp { - if m != nil { - return m.Time +func (x *GatewayStatus) GetTime() *timestamppb.Timestamp { + if x != nil { + return x.Time } return nil } -func (m *GatewayStatus) GetBootTime() *types.Timestamp { - if m != nil { - return m.BootTime +func (x *GatewayStatus) GetBootTime() *timestamppb.Timestamp { + if x != nil { + return x.BootTime } return nil } -func (m *GatewayStatus) GetVersions() map[string]string { - if m != nil { - return m.Versions +func (x *GatewayStatus) GetVersions() map[string]string { + if x != nil { + return x.Versions } return nil } -func (m *GatewayStatus) GetAntennaLocations() []*Location { - if m != nil { - return m.AntennaLocations +func (x *GatewayStatus) GetAntennaLocations() []*Location { + if x != nil { + return x.AntennaLocations } return nil } -func (m *GatewayStatus) GetIp() []string { - if m != nil { - return m.Ip +func (x *GatewayStatus) GetIp() []string { + if x != nil { + return x.Ip } return nil } -func (m *GatewayStatus) GetMetrics() map[string]float32 { - if m != nil { - return m.Metrics +func (x *GatewayStatus) GetMetrics() map[string]float32 { + if x != nil { + return x.Metrics } return nil } -func (m *GatewayStatus) GetAdvanced() *types.Struct { - if m != nil { - return m.Advanced +func (x *GatewayStatus) GetAdvanced() *structpb.Struct { + if x != nil { + return x.Advanced } return nil } // Remote Address of the Gateway, as seen by the Gateway Server. type GatewayRemoteAddress struct { - Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GatewayRemoteAddress) Reset() { *m = GatewayRemoteAddress{} } -func (m *GatewayRemoteAddress) String() string { return proto.CompactTextString(m) } -func (*GatewayRemoteAddress) ProtoMessage() {} -func (*GatewayRemoteAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{21} -} -func (m *GatewayRemoteAddress) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayRemoteAddress.Unmarshal(m, b) -} -func (m *GatewayRemoteAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayRemoteAddress.Marshal(b, m, deterministic) + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` // IPv4 or IPv6 address. } -func (m *GatewayRemoteAddress) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayRemoteAddress.Merge(m, src) + +func (x *GatewayRemoteAddress) Reset() { + *x = GatewayRemoteAddress{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GatewayRemoteAddress) XXX_Size() int { - return xxx_messageInfo_GatewayRemoteAddress.Size(m) + +func (x *GatewayRemoteAddress) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GatewayRemoteAddress) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayRemoteAddress.DiscardUnknown(m) + +func (*GatewayRemoteAddress) ProtoMessage() {} + +func (x *GatewayRemoteAddress) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GatewayRemoteAddress proto.InternalMessageInfo +// Deprecated: Use GatewayRemoteAddress.ProtoReflect.Descriptor instead. +func (*GatewayRemoteAddress) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{21} +} -func (m *GatewayRemoteAddress) GetIp() string { - if m != nil { - return m.Ip +func (x *GatewayRemoteAddress) GetIp() string { + if x != nil { + return x.Ip } return "" } // Connection stats as monitored by the Gateway Server. type GatewayConnectionStats struct { - ConnectedAt *types.Timestamp `protobuf:"bytes,1,opt,name=connected_at,json=connectedAt,proto3" json:"connected_at,omitempty"` - DisconnectedAt *types.Timestamp `protobuf:"bytes,11,opt,name=disconnected_at,json=disconnectedAt,proto3" json:"disconnected_at,omitempty"` - Protocol string `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"` - LastStatusReceivedAt *types.Timestamp `protobuf:"bytes,3,opt,name=last_status_received_at,json=lastStatusReceivedAt,proto3" json:"last_status_received_at,omitempty"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ConnectedAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=connected_at,json=connectedAt,proto3" json:"connected_at,omitempty"` + DisconnectedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=disconnected_at,json=disconnectedAt,proto3" json:"disconnected_at,omitempty"` + Protocol string `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"` // Protocol used to connect (for example, udp, mqtt, grpc) + LastStatusReceivedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=last_status_received_at,json=lastStatusReceivedAt,proto3" json:"last_status_received_at,omitempty"` LastStatus *GatewayStatus `protobuf:"bytes,4,opt,name=last_status,json=lastStatus,proto3" json:"last_status,omitempty"` - LastUplinkReceivedAt *types.Timestamp `protobuf:"bytes,5,opt,name=last_uplink_received_at,json=lastUplinkReceivedAt,proto3" json:"last_uplink_received_at,omitempty"` + LastUplinkReceivedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_uplink_received_at,json=lastUplinkReceivedAt,proto3" json:"last_uplink_received_at,omitempty"` UplinkCount uint64 `protobuf:"varint,6,opt,name=uplink_count,json=uplinkCount,proto3" json:"uplink_count,omitempty"` - LastDownlinkReceivedAt *types.Timestamp `protobuf:"bytes,7,opt,name=last_downlink_received_at,json=lastDownlinkReceivedAt,proto3" json:"last_downlink_received_at,omitempty"` + LastDownlinkReceivedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=last_downlink_received_at,json=lastDownlinkReceivedAt,proto3" json:"last_downlink_received_at,omitempty"` DownlinkCount uint64 `protobuf:"varint,8,opt,name=downlink_count,json=downlinkCount,proto3" json:"downlink_count,omitempty"` RoundTripTimes *GatewayConnectionStats_RoundTripTimes `protobuf:"bytes,9,opt,name=round_trip_times,json=roundTripTimes,proto3" json:"round_trip_times,omitempty"` // Statistics for each sub band. SubBands []*GatewayConnectionStats_SubBand `protobuf:"bytes,10,rep,name=sub_bands,json=subBands,proto3" json:"sub_bands,omitempty"` // Gateway Remote Address. GatewayRemoteAddress *GatewayRemoteAddress `protobuf:"bytes,12,opt,name=gateway_remote_address,json=gatewayRemoteAddress,proto3" json:"gateway_remote_address,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *GatewayConnectionStats) Reset() { *m = GatewayConnectionStats{} } -func (m *GatewayConnectionStats) String() string { return proto.CompactTextString(m) } -func (*GatewayConnectionStats) ProtoMessage() {} -func (*GatewayConnectionStats) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{22} -} -func (m *GatewayConnectionStats) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayConnectionStats.Unmarshal(m, b) -} -func (m *GatewayConnectionStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayConnectionStats.Marshal(b, m, deterministic) -} -func (m *GatewayConnectionStats) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayConnectionStats.Merge(m, src) +func (x *GatewayConnectionStats) Reset() { + *x = GatewayConnectionStats{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GatewayConnectionStats) XXX_Size() int { - return xxx_messageInfo_GatewayConnectionStats.Size(m) + +func (x *GatewayConnectionStats) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GatewayConnectionStats) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayConnectionStats.DiscardUnknown(m) + +func (*GatewayConnectionStats) ProtoMessage() {} + +func (x *GatewayConnectionStats) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GatewayConnectionStats proto.InternalMessageInfo +// Deprecated: Use GatewayConnectionStats.ProtoReflect.Descriptor instead. +func (*GatewayConnectionStats) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{22} +} -func (m *GatewayConnectionStats) GetConnectedAt() *types.Timestamp { - if m != nil { - return m.ConnectedAt +func (x *GatewayConnectionStats) GetConnectedAt() *timestamppb.Timestamp { + if x != nil { + return x.ConnectedAt } return nil } -func (m *GatewayConnectionStats) GetDisconnectedAt() *types.Timestamp { - if m != nil { - return m.DisconnectedAt +func (x *GatewayConnectionStats) GetDisconnectedAt() *timestamppb.Timestamp { + if x != nil { + return x.DisconnectedAt } return nil } -func (m *GatewayConnectionStats) GetProtocol() string { - if m != nil { - return m.Protocol +func (x *GatewayConnectionStats) GetProtocol() string { + if x != nil { + return x.Protocol } return "" } -func (m *GatewayConnectionStats) GetLastStatusReceivedAt() *types.Timestamp { - if m != nil { - return m.LastStatusReceivedAt +func (x *GatewayConnectionStats) GetLastStatusReceivedAt() *timestamppb.Timestamp { + if x != nil { + return x.LastStatusReceivedAt } return nil } -func (m *GatewayConnectionStats) GetLastStatus() *GatewayStatus { - if m != nil { - return m.LastStatus +func (x *GatewayConnectionStats) GetLastStatus() *GatewayStatus { + if x != nil { + return x.LastStatus } return nil } -func (m *GatewayConnectionStats) GetLastUplinkReceivedAt() *types.Timestamp { - if m != nil { - return m.LastUplinkReceivedAt +func (x *GatewayConnectionStats) GetLastUplinkReceivedAt() *timestamppb.Timestamp { + if x != nil { + return x.LastUplinkReceivedAt } return nil } -func (m *GatewayConnectionStats) GetUplinkCount() uint64 { - if m != nil { - return m.UplinkCount +func (x *GatewayConnectionStats) GetUplinkCount() uint64 { + if x != nil { + return x.UplinkCount } return 0 } -func (m *GatewayConnectionStats) GetLastDownlinkReceivedAt() *types.Timestamp { - if m != nil { - return m.LastDownlinkReceivedAt +func (x *GatewayConnectionStats) GetLastDownlinkReceivedAt() *timestamppb.Timestamp { + if x != nil { + return x.LastDownlinkReceivedAt } return nil } -func (m *GatewayConnectionStats) GetDownlinkCount() uint64 { - if m != nil { - return m.DownlinkCount +func (x *GatewayConnectionStats) GetDownlinkCount() uint64 { + if x != nil { + return x.DownlinkCount } return 0 } -func (m *GatewayConnectionStats) GetRoundTripTimes() *GatewayConnectionStats_RoundTripTimes { - if m != nil { - return m.RoundTripTimes +func (x *GatewayConnectionStats) GetRoundTripTimes() *GatewayConnectionStats_RoundTripTimes { + if x != nil { + return x.RoundTripTimes } return nil } -func (m *GatewayConnectionStats) GetSubBands() []*GatewayConnectionStats_SubBand { - if m != nil { - return m.SubBands +func (x *GatewayConnectionStats) GetSubBands() []*GatewayConnectionStats_SubBand { + if x != nil { + return x.SubBands } return nil } -func (m *GatewayConnectionStats) GetGatewayRemoteAddress() *GatewayRemoteAddress { - if m != nil { - return m.GatewayRemoteAddress +func (x *GatewayConnectionStats) GetGatewayRemoteAddress() *GatewayRemoteAddress { + if x != nil { + return x.GatewayRemoteAddress } return nil } -type GatewayConnectionStats_RoundTripTimes struct { - Min *types.Duration `protobuf:"bytes,1,opt,name=min,proto3" json:"min,omitempty"` - Max *types.Duration `protobuf:"bytes,2,opt,name=max,proto3" json:"max,omitempty"` - Median *types.Duration `protobuf:"bytes,3,opt,name=median,proto3" json:"median,omitempty"` - Count uint32 `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GatewayConnectionStats_RoundTripTimes) Reset() { *m = GatewayConnectionStats_RoundTripTimes{} } -func (m *GatewayConnectionStats_RoundTripTimes) String() string { return proto.CompactTextString(m) } -func (*GatewayConnectionStats_RoundTripTimes) ProtoMessage() {} -func (*GatewayConnectionStats_RoundTripTimes) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{22, 0} +type GatewayRadio_TxConfiguration struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MinFrequency uint64 `protobuf:"varint,1,opt,name=min_frequency,json=minFrequency,proto3" json:"min_frequency,omitempty"` + MaxFrequency uint64 `protobuf:"varint,2,opt,name=max_frequency,json=maxFrequency,proto3" json:"max_frequency,omitempty"` + NotchFrequency uint64 `protobuf:"varint,3,opt,name=notch_frequency,json=notchFrequency,proto3" json:"notch_frequency,omitempty"` } -func (m *GatewayConnectionStats_RoundTripTimes) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayConnectionStats_RoundTripTimes.Unmarshal(m, b) + +func (x *GatewayRadio_TxConfiguration) Reset() { + *x = GatewayRadio_TxConfiguration{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GatewayConnectionStats_RoundTripTimes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayConnectionStats_RoundTripTimes.Marshal(b, m, deterministic) + +func (x *GatewayRadio_TxConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GatewayConnectionStats_RoundTripTimes) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayConnectionStats_RoundTripTimes.Merge(m, src) + +func (*GatewayRadio_TxConfiguration) ProtoMessage() {} + +func (x *GatewayRadio_TxConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *GatewayConnectionStats_RoundTripTimes) XXX_Size() int { - return xxx_messageInfo_GatewayConnectionStats_RoundTripTimes.Size(m) + +// Deprecated: Use GatewayRadio_TxConfiguration.ProtoReflect.Descriptor instead. +func (*GatewayRadio_TxConfiguration) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{3, 0} } -func (m *GatewayConnectionStats_RoundTripTimes) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayConnectionStats_RoundTripTimes.DiscardUnknown(m) + +func (x *GatewayRadio_TxConfiguration) GetMinFrequency() uint64 { + if x != nil { + return x.MinFrequency + } + return 0 } -var xxx_messageInfo_GatewayConnectionStats_RoundTripTimes proto.InternalMessageInfo +func (x *GatewayRadio_TxConfiguration) GetMaxFrequency() uint64 { + if x != nil { + return x.MaxFrequency + } + return 0 +} -func (m *GatewayConnectionStats_RoundTripTimes) GetMin() *types.Duration { - if m != nil { - return m.Min +func (x *GatewayRadio_TxConfiguration) GetNotchFrequency() uint64 { + if x != nil { + return x.NotchFrequency + } + return 0 +} + +// LR-FHSS gateway capabilities. +type Gateway_LRFHSS struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The gateway supports the LR-FHSS uplink channels. + Supported bool `protobuf:"varint,1,opt,name=supported,proto3" json:"supported,omitempty"` +} + +func (x *Gateway_LRFHSS) Reset() { + *x = Gateway_LRFHSS{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Gateway_LRFHSS) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Gateway_LRFHSS) ProtoMessage() {} + +func (x *Gateway_LRFHSS) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Gateway_LRFHSS.ProtoReflect.Descriptor instead. +func (*Gateway_LRFHSS) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{5, 1} +} + +func (x *Gateway_LRFHSS) GetSupported() bool { + if x != nil { + return x.Supported + } + return false +} + +type GatewayConnectionStats_RoundTripTimes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Min *durationpb.Duration `protobuf:"bytes,1,opt,name=min,proto3" json:"min,omitempty"` + Max *durationpb.Duration `protobuf:"bytes,2,opt,name=max,proto3" json:"max,omitempty"` + Median *durationpb.Duration `protobuf:"bytes,3,opt,name=median,proto3" json:"median,omitempty"` + Count uint32 `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"` +} + +func (x *GatewayConnectionStats_RoundTripTimes) Reset() { + *x = GatewayConnectionStats_RoundTripTimes{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GatewayConnectionStats_RoundTripTimes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GatewayConnectionStats_RoundTripTimes) ProtoMessage() {} + +func (x *GatewayConnectionStats_RoundTripTimes) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GatewayConnectionStats_RoundTripTimes.ProtoReflect.Descriptor instead. +func (*GatewayConnectionStats_RoundTripTimes) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{22, 0} +} + +func (x *GatewayConnectionStats_RoundTripTimes) GetMin() *durationpb.Duration { + if x != nil { + return x.Min } return nil } -func (m *GatewayConnectionStats_RoundTripTimes) GetMax() *types.Duration { - if m != nil { - return m.Max +func (x *GatewayConnectionStats_RoundTripTimes) GetMax() *durationpb.Duration { + if x != nil { + return x.Max } return nil } -func (m *GatewayConnectionStats_RoundTripTimes) GetMedian() *types.Duration { - if m != nil { - return m.Median +func (x *GatewayConnectionStats_RoundTripTimes) GetMedian() *durationpb.Duration { + if x != nil { + return x.Median } return nil } -func (m *GatewayConnectionStats_RoundTripTimes) GetCount() uint32 { - if m != nil { - return m.Count +func (x *GatewayConnectionStats_RoundTripTimes) GetCount() uint32 { + if x != nil { + return x.Count } return 0 } type GatewayConnectionStats_SubBand struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + MinFrequency uint64 `protobuf:"varint,1,opt,name=min_frequency,json=minFrequency,proto3" json:"min_frequency,omitempty"` MaxFrequency uint64 `protobuf:"varint,2,opt,name=max_frequency,json=maxFrequency,proto3" json:"max_frequency,omitempty"` // Duty-cycle limit of the sub-band as a fraction of time. DownlinkUtilizationLimit float32 `protobuf:"fixed32,3,opt,name=downlink_utilization_limit,json=downlinkUtilizationLimit,proto3" json:"downlink_utilization_limit,omitempty"` // Utilization rate of the available duty-cycle. This value should not exceed downlink_utilization_limit. - DownlinkUtilization float32 `protobuf:"fixed32,4,opt,name=downlink_utilization,json=downlinkUtilization,proto3" json:"downlink_utilization,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + DownlinkUtilization float32 `protobuf:"fixed32,4,opt,name=downlink_utilization,json=downlinkUtilization,proto3" json:"downlink_utilization,omitempty"` } -func (m *GatewayConnectionStats_SubBand) Reset() { *m = GatewayConnectionStats_SubBand{} } -func (m *GatewayConnectionStats_SubBand) String() string { return proto.CompactTextString(m) } -func (*GatewayConnectionStats_SubBand) ProtoMessage() {} -func (*GatewayConnectionStats_SubBand) Descriptor() ([]byte, []int) { - return fileDescriptor_1df6bae1ac946b39, []int{22, 1} -} -func (m *GatewayConnectionStats_SubBand) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayConnectionStats_SubBand.Unmarshal(m, b) -} -func (m *GatewayConnectionStats_SubBand) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayConnectionStats_SubBand.Marshal(b, m, deterministic) -} -func (m *GatewayConnectionStats_SubBand) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayConnectionStats_SubBand.Merge(m, src) +func (x *GatewayConnectionStats_SubBand) Reset() { + *x = GatewayConnectionStats_SubBand{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GatewayConnectionStats_SubBand) XXX_Size() int { - return xxx_messageInfo_GatewayConnectionStats_SubBand.Size(m) + +func (x *GatewayConnectionStats_SubBand) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GatewayConnectionStats_SubBand) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayConnectionStats_SubBand.DiscardUnknown(m) + +func (*GatewayConnectionStats_SubBand) ProtoMessage() {} + +func (x *GatewayConnectionStats_SubBand) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GatewayConnectionStats_SubBand proto.InternalMessageInfo +// Deprecated: Use GatewayConnectionStats_SubBand.ProtoReflect.Descriptor instead. +func (*GatewayConnectionStats_SubBand) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_proto_rawDescGZIP(), []int{22, 1} +} -func (m *GatewayConnectionStats_SubBand) GetMinFrequency() uint64 { - if m != nil { - return m.MinFrequency +func (x *GatewayConnectionStats_SubBand) GetMinFrequency() uint64 { + if x != nil { + return x.MinFrequency } return 0 } -func (m *GatewayConnectionStats_SubBand) GetMaxFrequency() uint64 { - if m != nil { - return m.MaxFrequency +func (x *GatewayConnectionStats_SubBand) GetMaxFrequency() uint64 { + if x != nil { + return x.MaxFrequency } return 0 } -func (m *GatewayConnectionStats_SubBand) GetDownlinkUtilizationLimit() float32 { - if m != nil { - return m.DownlinkUtilizationLimit +func (x *GatewayConnectionStats_SubBand) GetDownlinkUtilizationLimit() float32 { + if x != nil { + return x.DownlinkUtilizationLimit } return 0 } -func (m *GatewayConnectionStats_SubBand) GetDownlinkUtilization() float32 { - if m != nil { - return m.DownlinkUtilization +func (x *GatewayConnectionStats_SubBand) GetDownlinkUtilization() float32 { + if x != nil { + return x.DownlinkUtilization } return 0 } -func init() { - proto.RegisterEnum("ttn.lorawan.v3.GatewayAntennaPlacement", GatewayAntennaPlacement_name, GatewayAntennaPlacement_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.GatewayAntennaPlacement", GatewayAntennaPlacement_name, GatewayAntennaPlacement_value) - proto.RegisterType((*GatewayBrand)(nil), "ttn.lorawan.v3.GatewayBrand") - golang_proto.RegisterType((*GatewayBrand)(nil), "ttn.lorawan.v3.GatewayBrand") - proto.RegisterType((*GatewayModel)(nil), "ttn.lorawan.v3.GatewayModel") - golang_proto.RegisterType((*GatewayModel)(nil), "ttn.lorawan.v3.GatewayModel") - proto.RegisterType((*GatewayVersionIdentifiers)(nil), "ttn.lorawan.v3.GatewayVersionIdentifiers") - golang_proto.RegisterType((*GatewayVersionIdentifiers)(nil), "ttn.lorawan.v3.GatewayVersionIdentifiers") - proto.RegisterType((*GatewayRadio)(nil), "ttn.lorawan.v3.GatewayRadio") - golang_proto.RegisterType((*GatewayRadio)(nil), "ttn.lorawan.v3.GatewayRadio") - proto.RegisterType((*GatewayRadio_TxConfiguration)(nil), "ttn.lorawan.v3.GatewayRadio.TxConfiguration") - golang_proto.RegisterType((*GatewayRadio_TxConfiguration)(nil), "ttn.lorawan.v3.GatewayRadio.TxConfiguration") - proto.RegisterType((*GatewayClaimAuthenticationCode)(nil), "ttn.lorawan.v3.GatewayClaimAuthenticationCode") - golang_proto.RegisterType((*GatewayClaimAuthenticationCode)(nil), "ttn.lorawan.v3.GatewayClaimAuthenticationCode") - proto.RegisterType((*Gateway)(nil), "ttn.lorawan.v3.Gateway") - golang_proto.RegisterType((*Gateway)(nil), "ttn.lorawan.v3.Gateway") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.Gateway.AttributesEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.Gateway.AttributesEntry") - proto.RegisterType((*Gateway_LRFHSS)(nil), "ttn.lorawan.v3.Gateway.LRFHSS") - golang_proto.RegisterType((*Gateway_LRFHSS)(nil), "ttn.lorawan.v3.Gateway.LRFHSS") - proto.RegisterType((*Gateways)(nil), "ttn.lorawan.v3.Gateways") - golang_proto.RegisterType((*Gateways)(nil), "ttn.lorawan.v3.Gateways") - proto.RegisterType((*GetGatewayRequest)(nil), "ttn.lorawan.v3.GetGatewayRequest") - golang_proto.RegisterType((*GetGatewayRequest)(nil), "ttn.lorawan.v3.GetGatewayRequest") - proto.RegisterType((*GetGatewayIdentifiersForEUIRequest)(nil), "ttn.lorawan.v3.GetGatewayIdentifiersForEUIRequest") - golang_proto.RegisterType((*GetGatewayIdentifiersForEUIRequest)(nil), "ttn.lorawan.v3.GetGatewayIdentifiersForEUIRequest") - proto.RegisterType((*ListGatewaysRequest)(nil), "ttn.lorawan.v3.ListGatewaysRequest") - golang_proto.RegisterType((*ListGatewaysRequest)(nil), "ttn.lorawan.v3.ListGatewaysRequest") - proto.RegisterType((*CreateGatewayRequest)(nil), "ttn.lorawan.v3.CreateGatewayRequest") - golang_proto.RegisterType((*CreateGatewayRequest)(nil), "ttn.lorawan.v3.CreateGatewayRequest") - proto.RegisterType((*UpdateGatewayRequest)(nil), "ttn.lorawan.v3.UpdateGatewayRequest") - golang_proto.RegisterType((*UpdateGatewayRequest)(nil), "ttn.lorawan.v3.UpdateGatewayRequest") - proto.RegisterType((*ListGatewayAPIKeysRequest)(nil), "ttn.lorawan.v3.ListGatewayAPIKeysRequest") - golang_proto.RegisterType((*ListGatewayAPIKeysRequest)(nil), "ttn.lorawan.v3.ListGatewayAPIKeysRequest") - proto.RegisterType((*GetGatewayAPIKeyRequest)(nil), "ttn.lorawan.v3.GetGatewayAPIKeyRequest") - golang_proto.RegisterType((*GetGatewayAPIKeyRequest)(nil), "ttn.lorawan.v3.GetGatewayAPIKeyRequest") - proto.RegisterType((*CreateGatewayAPIKeyRequest)(nil), "ttn.lorawan.v3.CreateGatewayAPIKeyRequest") - golang_proto.RegisterType((*CreateGatewayAPIKeyRequest)(nil), "ttn.lorawan.v3.CreateGatewayAPIKeyRequest") - proto.RegisterType((*UpdateGatewayAPIKeyRequest)(nil), "ttn.lorawan.v3.UpdateGatewayAPIKeyRequest") - golang_proto.RegisterType((*UpdateGatewayAPIKeyRequest)(nil), "ttn.lorawan.v3.UpdateGatewayAPIKeyRequest") - proto.RegisterType((*ListGatewayCollaboratorsRequest)(nil), "ttn.lorawan.v3.ListGatewayCollaboratorsRequest") - golang_proto.RegisterType((*ListGatewayCollaboratorsRequest)(nil), "ttn.lorawan.v3.ListGatewayCollaboratorsRequest") - proto.RegisterType((*GetGatewayCollaboratorRequest)(nil), "ttn.lorawan.v3.GetGatewayCollaboratorRequest") - golang_proto.RegisterType((*GetGatewayCollaboratorRequest)(nil), "ttn.lorawan.v3.GetGatewayCollaboratorRequest") - proto.RegisterType((*SetGatewayCollaboratorRequest)(nil), "ttn.lorawan.v3.SetGatewayCollaboratorRequest") - golang_proto.RegisterType((*SetGatewayCollaboratorRequest)(nil), "ttn.lorawan.v3.SetGatewayCollaboratorRequest") - proto.RegisterType((*GatewayAntenna)(nil), "ttn.lorawan.v3.GatewayAntenna") - golang_proto.RegisterType((*GatewayAntenna)(nil), "ttn.lorawan.v3.GatewayAntenna") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.GatewayAntenna.AttributesEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.GatewayAntenna.AttributesEntry") - proto.RegisterType((*GatewayStatus)(nil), "ttn.lorawan.v3.GatewayStatus") - golang_proto.RegisterType((*GatewayStatus)(nil), "ttn.lorawan.v3.GatewayStatus") - proto.RegisterMapType((map[string]float32)(nil), "ttn.lorawan.v3.GatewayStatus.MetricsEntry") - golang_proto.RegisterMapType((map[string]float32)(nil), "ttn.lorawan.v3.GatewayStatus.MetricsEntry") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.GatewayStatus.VersionsEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.GatewayStatus.VersionsEntry") - proto.RegisterType((*GatewayRemoteAddress)(nil), "ttn.lorawan.v3.GatewayRemoteAddress") - golang_proto.RegisterType((*GatewayRemoteAddress)(nil), "ttn.lorawan.v3.GatewayRemoteAddress") - proto.RegisterType((*GatewayConnectionStats)(nil), "ttn.lorawan.v3.GatewayConnectionStats") - golang_proto.RegisterType((*GatewayConnectionStats)(nil), "ttn.lorawan.v3.GatewayConnectionStats") - proto.RegisterType((*GatewayConnectionStats_RoundTripTimes)(nil), "ttn.lorawan.v3.GatewayConnectionStats.RoundTripTimes") - golang_proto.RegisterType((*GatewayConnectionStats_RoundTripTimes)(nil), "ttn.lorawan.v3.GatewayConnectionStats.RoundTripTimes") - proto.RegisterType((*GatewayConnectionStats_SubBand)(nil), "ttn.lorawan.v3.GatewayConnectionStats.SubBand") - golang_proto.RegisterType((*GatewayConnectionStats_SubBand)(nil), "ttn.lorawan.v3.GatewayConnectionStats.SubBand") -} - -func init() { proto.RegisterFile("lorawan-stack/api/gateway.proto", fileDescriptor_1df6bae1ac946b39) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/gateway.proto", fileDescriptor_1df6bae1ac946b39) -} - -var fileDescriptor_1df6bae1ac946b39 = []byte{ - // 3222 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0x4d, 0x6c, 0x1b, 0x49, - 0x76, 0x76, 0x93, 0x12, 0x49, 0x15, 0x25, 0x8a, 0xaa, 0x91, 0xe5, 0x96, 0x6c, 0xcb, 0x1a, 0x8e, - 0x66, 0x47, 0x52, 0x4c, 0xd2, 0x4b, 0xad, 0xd6, 0x3b, 0x9a, 0x99, 0xd5, 0xb0, 0x29, 0x79, 0x46, - 0xfe, 0x93, 0xd3, 0x92, 0xb2, 0x89, 0xff, 0x1a, 0xc5, 0xee, 0x22, 0xd9, 0xa3, 0x66, 0x77, 0xa7, - 0xba, 0x5a, 0x16, 0x3d, 0x33, 0xd9, 0xc5, 0x22, 0x40, 0x82, 0x1c, 0xb2, 0x80, 0x11, 0x20, 0x80, - 0x83, 0x24, 0x40, 0x80, 0x5c, 0x7c, 0x0a, 0x82, 0x5c, 0x92, 0x53, 0x0e, 0x01, 0x12, 0x20, 0x39, - 0x6c, 0x0e, 0x39, 0xe6, 0x90, 0x9f, 0x43, 0x30, 0x87, 0x1c, 0x06, 0x39, 0x11, 0x39, 0x04, 0x55, - 0x5d, 0xdd, 0x6c, 0x52, 0xa6, 0x64, 0x79, 0xec, 0x9c, 0xd8, 0x55, 0xf5, 0xbd, 0x57, 0xef, 0x55, - 0xbd, 0xf7, 0xea, 0xbd, 0x47, 0x70, 0xc5, 0x72, 0x08, 0x7a, 0x82, 0xec, 0xa2, 0x47, 0x91, 0x7e, - 0x50, 0x46, 0xae, 0x59, 0x6e, 0x22, 0x8a, 0x9f, 0xa0, 0x4e, 0xc9, 0x25, 0x0e, 0x75, 0x60, 0x8e, - 0x52, 0xbb, 0x24, 0x40, 0xa5, 0xc3, 0xd5, 0xb9, 0xcd, 0xa6, 0x49, 0x5b, 0x7e, 0xbd, 0xa4, 0x3b, - 0xed, 0xf2, 0x5e, 0x0b, 0xef, 0xb5, 0x4c, 0xbb, 0xe9, 0x6d, 0xdb, 0x86, 0xef, 0x51, 0x62, 0x62, - 0xaf, 0xcc, 0xa9, 0xf4, 0x62, 0x13, 0xdb, 0xc5, 0xa6, 0x53, 0x6c, 0x58, 0xa8, 0xe9, 0x95, 0x91, - 0x6d, 0x3b, 0x14, 0x51, 0xd3, 0xb1, 0xbd, 0x80, 0xeb, 0x5c, 0x35, 0xc6, 0x05, 0xdb, 0x87, 0x4e, - 0xc7, 0x25, 0xce, 0x51, 0x27, 0x4e, 0x7c, 0x88, 0x2c, 0xd3, 0x40, 0x14, 0x97, 0x8f, 0x7d, 0x08, - 0x16, 0xc5, 0x18, 0x8b, 0xa6, 0xd3, 0x74, 0x02, 0xe2, 0xba, 0xdf, 0xe0, 0x23, 0x3e, 0xe0, 0x5f, - 0x02, 0x5e, 0x3b, 0x93, 0xdc, 0x5f, 0x78, 0x8e, 0xfd, 0x12, 0xb1, 0xe7, 0x9b, 0x8e, 0xd3, 0xb4, - 0x70, 0x6f, 0x2b, 0xc3, 0x27, 0x1c, 0x20, 0xd6, 0x17, 0x06, 0xd7, 0x1b, 0x26, 0xb6, 0x0c, 0xad, - 0x8d, 0xbc, 0x03, 0x81, 0xb8, 0x34, 0x88, 0xf0, 0x28, 0xf1, 0x75, 0x2a, 0x56, 0xaf, 0x0c, 0xae, - 0x52, 0xb3, 0x8d, 0x3d, 0x8a, 0xda, 0xae, 0x00, 0x2c, 0x1e, 0xbf, 0x2e, 0xdd, 0xb1, 0x29, 0xd2, - 0xa9, 0x66, 0xda, 0x8d, 0x50, 0xd7, 0xcb, 0xc7, 0x51, 0xd8, 0xf6, 0xdb, 0xa1, 0x16, 0xef, 0x1d, - 0x5f, 0x36, 0x0d, 0x6c, 0x53, 0xb3, 0x61, 0x62, 0x12, 0x82, 0x16, 0x8e, 0x83, 0xda, 0x98, 0x22, - 0x03, 0x51, 0x14, 0x1e, 0xc6, 0x71, 0x04, 0x31, 0x9b, 0x2d, 0x1a, 0x72, 0x78, 0x89, 0x69, 0x79, - 0x58, 0x27, 0x38, 0x02, 0x94, 0x62, 0x67, 0xee, 0xb8, 0xd8, 0x46, 0xae, 0x79, 0x58, 0x29, 0x3b, - 0x2e, 0x3f, 0xf1, 0xe3, 0xa7, 0x5f, 0xb8, 0x0f, 0xc6, 0x3f, 0x0b, 0x6c, 0x53, 0x21, 0xc8, 0x36, - 0x60, 0x0e, 0x24, 0x4c, 0x43, 0x96, 0x16, 0xa4, 0xa5, 0x31, 0x35, 0x61, 0x1a, 0x10, 0x82, 0x11, - 0x1b, 0xb5, 0xb1, 0x9c, 0xe0, 0x33, 0xfc, 0x1b, 0xe6, 0x41, 0xd2, 0x27, 0x96, 0x9c, 0xe4, 0x53, - 0xec, 0x13, 0x4e, 0x83, 0x51, 0xcb, 0x69, 0x3a, 0x9e, 0x3c, 0xb2, 0x90, 0x5c, 0x1a, 0x53, 0x83, - 0x41, 0xe1, 0xcf, 0xa5, 0x88, 0xf9, 0x1d, 0xc7, 0xc0, 0x16, 0xdc, 0x02, 0x99, 0x3a, 0xdb, 0x45, - 0x0b, 0xb7, 0x50, 0x56, 0xba, 0xca, 0x07, 0xe4, 0x7d, 0x79, 0xb1, 0x32, 0xff, 0xf8, 0x01, 0x2a, - 0x3e, 0xbd, 0x56, 0xfc, 0xf0, 0xd1, 0xd2, 0xc6, 0xfa, 0x83, 0xe2, 0xa3, 0x8d, 0x70, 0xb8, 0xfc, - 0x65, 0xe5, 0xea, 0xd7, 0x8b, 0xbf, 0x94, 0x24, 0x35, 0xcd, 0x69, 0xb7, 0x0d, 0xb8, 0xce, 0x65, - 0x4c, 0x9c, 0x99, 0x41, 0x5c, 0x9f, 0x64, 0x4f, 0x9f, 0xc2, 0x1f, 0x25, 0xc0, 0xac, 0x90, 0xf3, - 0xd7, 0x30, 0xf1, 0x4c, 0xc7, 0xde, 0xee, 0x5d, 0xdd, 0x9b, 0x12, 0x7a, 0x0b, 0x64, 0xda, 0xec, - 0x10, 0xb4, 0xd7, 0x12, 0x3d, 0xcd, 0x69, 0xb7, 0x0d, 0x58, 0x01, 0xf9, 0x16, 0x22, 0xc6, 0x13, - 0x44, 0xb0, 0x76, 0x18, 0x08, 0x1b, 0xe8, 0xa2, 0xa4, 0xbb, 0xca, 0x08, 0x49, 0xc8, 0x0b, 0xea, - 0x64, 0x08, 0x10, 0xca, 0x30, 0x9a, 0x86, 0x49, 0xda, 0x7d, 0x34, 0x23, 0x03, 0x34, 0x21, 0x40, - 0xd0, 0xac, 0x67, 0xbe, 0x7d, 0x31, 0x3b, 0x92, 0x91, 0xf2, 0x52, 0xe1, 0xdf, 0x13, 0xd1, 0x2d, - 0xaa, 0xc8, 0x30, 0x1d, 0x38, 0x03, 0x52, 0xd8, 0x46, 0x75, 0x0b, 0xf3, 0xe3, 0xc8, 0xa8, 0x62, - 0x04, 0x2f, 0x82, 0x31, 0xbd, 0x65, 0xba, 0x1a, 0xed, 0xb8, 0xa1, 0xbd, 0x64, 0xd8, 0xc4, 0x5e, - 0xc7, 0xc5, 0xf0, 0x12, 0x18, 0x6b, 0x10, 0xfc, 0x9b, 0x3e, 0xb6, 0xf5, 0x0e, 0x17, 0x78, 0x44, - 0xed, 0x4d, 0xc0, 0x2b, 0x20, 0x4b, 0x3c, 0xcf, 0xd4, 0x9c, 0x46, 0xc3, 0xc3, 0x94, 0x0b, 0x97, - 0x50, 0x01, 0x9b, 0xda, 0xe1, 0x33, 0xf0, 0x27, 0x20, 0x4f, 0x8f, 0x34, 0xdd, 0xb1, 0x1b, 0x66, - 0x53, 0x84, 0x07, 0x79, 0x74, 0x41, 0x5a, 0xca, 0x56, 0xae, 0x96, 0xfa, 0x83, 0x69, 0x29, 0x2e, - 0x6b, 0x69, 0xef, 0xa8, 0x16, 0xa7, 0x51, 0x27, 0x69, 0xff, 0xc4, 0xdc, 0x6f, 0x4b, 0x60, 0x72, - 0x00, 0x04, 0xdf, 0x03, 0x13, 0x6d, 0xd3, 0xd6, 0x7a, 0xf2, 0x4a, 0x5c, 0xde, 0xf1, 0xb6, 0x69, - 0xdf, 0x88, 0x44, 0x66, 0x20, 0x74, 0x14, 0x03, 0x25, 0x04, 0x08, 0x1d, 0xf5, 0x40, 0x1f, 0x80, - 0x49, 0xdb, 0xa1, 0x7a, 0x4b, 0x1b, 0xd4, 0x3d, 0xc7, 0xa7, 0x23, 0x60, 0xe1, 0x9f, 0x24, 0x30, - 0x2f, 0x04, 0xaf, 0x59, 0xc8, 0x6c, 0x57, 0x7d, 0xda, 0x62, 0x26, 0xa8, 0x73, 0x89, 0x6a, 0x8e, - 0x81, 0x61, 0x09, 0xa4, 0x02, 0x57, 0xe7, 0xe2, 0x64, 0x2b, 0x33, 0x83, 0x8a, 0xef, 0xf2, 0x55, - 0x55, 0xa0, 0xe0, 0x87, 0x00, 0xf0, 0xe8, 0xae, 0x35, 0x88, 0xd3, 0xe6, 0xd2, 0x65, 0x2b, 0x73, - 0xa5, 0x20, 0x18, 0x96, 0xc2, 0x60, 0x58, 0xda, 0x0b, 0x83, 0xa1, 0x3a, 0xc6, 0xd1, 0x37, 0x88, - 0xd3, 0x86, 0x6b, 0x20, 0x13, 0x90, 0x52, 0x87, 0xcb, 0x7b, 0x32, 0x61, 0x9a, 0x63, 0xf7, 0x9c, - 0x98, 0xcd, 0xfc, 0x35, 0x04, 0x69, 0xa1, 0x0e, 0xbc, 0x01, 0x92, 0xa6, 0xe1, 0x09, 0xa1, 0x0b, - 0x43, 0x6e, 0x2b, 0xe6, 0x70, 0x4a, 0xbe, 0xab, 0x8c, 0xfe, 0x9e, 0x94, 0xc8, 0x4b, 0x9c, 0xdd, - 0xb9, 0x25, 0x49, 0x65, 0x0c, 0x60, 0x0d, 0x00, 0x9d, 0x60, 0x44, 0xb1, 0xa1, 0x21, 0x7a, 0xba, - 0x3e, 0x4a, 0x20, 0xcd, 0xb9, 0xfc, 0x39, 0x75, 0x4c, 0xd0, 0x55, 0x29, 0x63, 0xe2, 0xbb, 0x46, - 0xc8, 0x24, 0x79, 0x16, 0x26, 0x82, 0x2e, 0x60, 0x62, 0x60, 0x0b, 0x0b, 0x26, 0x73, 0xaf, 0xc8, - 0x44, 0x62, 0x4c, 0x04, 0x5d, 0x95, 0xc2, 0x8b, 0x22, 0x10, 0xf5, 0x39, 0x62, 0x45, 0x44, 0xd8, - 0x15, 0x90, 0x35, 0xb0, 0xa7, 0x13, 0xd3, 0x8d, 0x2c, 0x7d, 0x4c, 0xc9, 0x74, 0x95, 0x51, 0x92, - 0x94, 0x7f, 0x39, 0xa9, 0xc6, 0x17, 0xe1, 0x6f, 0x01, 0x80, 0x28, 0x25, 0x66, 0xdd, 0xa7, 0xd8, - 0x93, 0x53, 0x0b, 0xc9, 0xa5, 0x6c, 0xe5, 0x83, 0x21, 0xc7, 0x5c, 0xaa, 0x46, 0xc8, 0x2d, 0x9b, - 0x92, 0x8e, 0xb2, 0xd6, 0x55, 0x2a, 0xcf, 0xa5, 0x72, 0x1e, 0x14, 0x16, 0x49, 0xe1, 0xf4, 0x50, - 0xb4, 0xc2, 0x04, 0xf8, 0x07, 0x49, 0x8d, 0xed, 0x08, 0x6f, 0x82, 0xf1, 0xf8, 0x73, 0x29, 0xa7, - 0xb9, 0x04, 0x17, 0x07, 0x25, 0xa8, 0x05, 0x98, 0x6d, 0xbb, 0xe1, 0x28, 0xa0, 0xab, 0x8c, 0x3e, - 0x93, 0x12, 0x79, 0x20, 0x4b, 0x6a, 0x56, 0xef, 0x2d, 0x40, 0x03, 0xcc, 0x20, 0xa3, 0x6d, 0xda, - 0xa6, 0x47, 0x99, 0x2f, 0x1e, 0x62, 0x4d, 0xac, 0xca, 0xf3, 0xfc, 0x94, 0x8b, 0x83, 0x5c, 0x77, - 0x48, 0x13, 0xd9, 0xe6, 0x53, 0xee, 0x25, 0x3b, 0x64, 0xdf, 0xc3, 0x24, 0x66, 0x49, 0xea, 0xf9, - 0x7e, 0x66, 0x42, 0x04, 0x78, 0x1f, 0x4c, 0x51, 0xac, 0xb7, 0x6c, 0x53, 0x47, 0x56, 0xb4, 0xc1, - 0x95, 0xd7, 0xd9, 0x20, 0x1f, 0xf1, 0x09, 0x79, 0xdf, 0x04, 0x59, 0x11, 0x62, 0x35, 0x66, 0xf5, - 0x19, 0xce, 0x75, 0x79, 0xc8, 0x75, 0x1c, 0x7f, 0x6d, 0x54, 0x70, 0x18, 0xce, 0x79, 0xf0, 0x5f, - 0x24, 0x30, 0x23, 0x12, 0x47, 0xcd, 0xc3, 0xe4, 0x10, 0x13, 0x0d, 0x19, 0x06, 0xc1, 0x9e, 0x27, - 0x8f, 0x71, 0x8b, 0xf8, 0x13, 0xa9, 0xab, 0x3c, 0x97, 0xc8, 0x1f, 0x4a, 0x95, 0x3f, 0x90, 0x1e, - 0x2f, 0xb1, 0xab, 0x7a, 0xf4, 0x65, 0xe5, 0xea, 0xda, 0xd7, 0xeb, 0xe5, 0xf2, 0xf2, 0xc6, 0xd2, - 0xc6, 0x3a, 0xbb, 0x43, 0x54, 0x7c, 0x5a, 0x2d, 0xde, 0x67, 0x57, 0xf8, 0x55, 0xec, 0xbb, 0xf7, - 0xf9, 0xb0, 0xf8, 0x68, 0x25, 0xb6, 0xb0, 0xfc, 0xb0, 0xb4, 0xbc, 0xc2, 0xe8, 0xaa, 0xc5, 0xfb, - 0xe2, 0xea, 0xbf, 0x8a, 0x7d, 0xf7, 0x3e, 0x39, 0x5d, 0x6f, 0x61, 0x79, 0x69, 0x63, 0x7d, 0xfd, - 0x01, 0xfb, 0xfa, 0xf2, 0xfb, 0x57, 0xd7, 0xbe, 0x5e, 0xde, 0x58, 0xfc, 0xea, 0xf1, 0xa2, 0x3a, - 0x2d, 0xc4, 0xdf, 0xe5, 0xd2, 0x57, 0x03, 0xe1, 0x59, 0xb4, 0x47, 0x3e, 0x75, 0xb4, 0xc0, 0xa3, - 0x64, 0xc0, 0x5f, 0x11, 0xc0, 0xa6, 0xf6, 0xf9, 0x0c, 0x2c, 0x83, 0x5c, 0xb0, 0xa6, 0xe9, 0x2d, - 0x64, 0xdb, 0xd8, 0x92, 0xb3, 0x71, 0x0f, 0xf8, 0x99, 0xa4, 0x4e, 0x04, 0xeb, 0xb5, 0x60, 0x19, - 0xae, 0x82, 0xa9, 0x28, 0xc2, 0x6a, 0xae, 0x85, 0xd8, 0xe1, 0xcb, 0xe3, 0x71, 0xcf, 0xfa, 0x54, - 0x9d, 0x8c, 0x10, 0xf7, 0x2c, 0x64, 0x6f, 0x1b, 0xf0, 0x63, 0x00, 0x8f, 0x11, 0x79, 0xf2, 0x34, - 0xcb, 0x60, 0x94, 0x5c, 0x57, 0xc9, 0x3e, 0x93, 0x32, 0xf9, 0x4c, 0x21, 0x20, 0xce, 0x0f, 0x10, - 0x7b, 0x70, 0x13, 0x64, 0x90, 0x4d, 0xb1, 0x6d, 0x23, 0x4f, 0x9e, 0xe0, 0x26, 0x3f, 0x3f, 0xe4, - 0x96, 0xab, 0x01, 0x8c, 0x4b, 0xcf, 0xac, 0x3e, 0xa3, 0x46, 0x94, 0xec, 0x15, 0xf1, 0x28, 0xa2, - 0xbe, 0xa7, 0xb9, 0x7e, 0xdd, 0x32, 0x75, 0x39, 0xc7, 0x0f, 0x63, 0x3c, 0x98, 0xbc, 0xc7, 0xe7, - 0xd8, 0x2b, 0x62, 0x39, 0xc1, 0x4b, 0x10, 0xc2, 0x26, 0x39, 0x2c, 0x17, 0x4e, 0x0b, 0xe0, 0x0f, - 0xc0, 0x8c, 0xa7, 0xb7, 0xb0, 0xe1, 0x5b, 0x58, 0x33, 0x9c, 0x27, 0xb6, 0x65, 0xda, 0x07, 0x9a, - 0xc5, 0xce, 0x38, 0xcf, 0xf1, 0xd3, 0xe1, 0xea, 0xa6, 0x58, 0xbc, 0xcd, 0x4e, 0xfb, 0x2a, 0x80, - 0xd8, 0x6e, 0x38, 0x44, 0xc7, 0x9a, 0xe1, 0xd3, 0x8e, 0xa6, 0x77, 0x74, 0x0b, 0xcb, 0x53, 0x9c, - 0x22, 0x2f, 0x56, 0x36, 0x7d, 0xda, 0xa9, 0xb1, 0x79, 0xf8, 0x05, 0x90, 0x23, 0xd6, 0x2e, 0xa2, - 0x2d, 0xe6, 0x40, 0xcc, 0xc1, 0x4c, 0x9b, 0xca, 0x70, 0x41, 0x5a, 0xca, 0x55, 0xbe, 0x37, 0x78, - 0x0e, 0xe1, 0x6e, 0xf7, 0x10, 0x6d, 0xd5, 0x22, 0x34, 0x3f, 0x8f, 0x9f, 0xb3, 0x38, 0xaf, 0xce, - 0x18, 0x2f, 0x45, 0xc0, 0x9d, 0x98, 0x3e, 0xc8, 0xee, 0xb0, 0xc4, 0x5d, 0x33, 0xb0, 0x85, 0x3a, - 0xf2, 0x3b, 0xdc, 0xaf, 0x66, 0x8f, 0x05, 0xdd, 0xcd, 0xf0, 0xa1, 0x8f, 0x54, 0xad, 0x06, 0x74, - 0x9b, 0x8c, 0x0c, 0x7e, 0x02, 0x2e, 0x0a, 0xc3, 0x8a, 0x0e, 0x94, 0xbd, 0x8e, 0x5a, 0x70, 0xdc, - 0xf2, 0x79, 0xae, 0xb3, 0x1c, 0x40, 0x6e, 0x0b, 0x04, 0x7b, 0x11, 0x77, 0xf9, 0x3a, 0xfc, 0x18, - 0xe4, 0xac, 0xba, 0xa7, 0x59, 0xb6, 0xa7, 0x89, 0xa7, 0x78, 0xe6, 0xc4, 0xa7, 0x78, 0xdc, 0xaa, - 0x7b, 0xb7, 0x6d, 0x2f, 0x18, 0xc1, 0x2f, 0xc0, 0xac, 0xce, 0xde, 0x76, 0x0d, 0xf5, 0x3d, 0xee, - 0x9a, 0xee, 0x18, 0x58, 0xbe, 0xc0, 0x19, 0x95, 0x86, 0x98, 0xd0, 0x90, 0x9c, 0x40, 0xbd, 0xa0, - 0x0f, 0x49, 0x16, 0x56, 0xc1, 0x24, 0x45, 0xa4, 0x89, 0xa9, 0xa6, 0xfb, 0xae, 0xa7, 0xf9, 0xc4, - 0x94, 0x65, 0xee, 0x0e, 0xd9, 0xae, 0x92, 0x21, 0xa9, 0xdf, 0x95, 0x24, 0x96, 0x55, 0x4e, 0x04, - 0x98, 0x9a, 0xef, 0x7a, 0xfb, 0xc4, 0x84, 0x3f, 0xee, 0x27, 0x3a, 0xc0, 0x1d, 0x79, 0xf6, 0x44, - 0xfd, 0x62, 0xf4, 0xb7, 0x70, 0x07, 0x7e, 0x0e, 0x16, 0x98, 0x97, 0x98, 0x04, 0xc7, 0x55, 0xc4, - 0x06, 0x33, 0x11, 0x1b, 0xeb, 0xfc, 0x29, 0xbb, 0xc8, 0x8f, 0x78, 0x5e, 0xe0, 0xaa, 0x71, 0x58, - 0x2d, 0x42, 0xc1, 0x1f, 0x82, 0x94, 0x45, 0x1a, 0x2d, 0xcf, 0x93, 0x2f, 0x71, 0x01, 0x86, 0xb9, - 0x56, 0xe9, 0xb6, 0x7a, 0xe3, 0xf3, 0xdd, 0x5d, 0x55, 0xa0, 0xe1, 0x67, 0x60, 0xc1, 0x30, 0x3d, - 0x96, 0x8d, 0x6a, 0x2e, 0xd2, 0x0f, 0x30, 0xd5, 0xea, 0xc4, 0x39, 0xc0, 0x44, 0x6b, 0x38, 0xe4, - 0x09, 0x22, 0x86, 0x69, 0x37, 0xe5, 0xcb, 0x5c, 0x82, 0xcb, 0x02, 0x77, 0x8f, 0xc3, 0x14, 0x8e, - 0xba, 0x11, 0x81, 0xe6, 0x3e, 0x01, 0x93, 0x03, 0x4f, 0x25, 0xab, 0x7a, 0xd8, 0x89, 0x04, 0xa5, - 0x11, 0xfb, 0x64, 0x55, 0xcf, 0x21, 0xb2, 0xfc, 0x30, 0xd9, 0x0d, 0x06, 0xeb, 0x89, 0x1f, 0x49, - 0x73, 0xd7, 0x40, 0x2a, 0x90, 0x8c, 0xe5, 0xbd, 0x9e, 0xef, 0xba, 0x0e, 0xa1, 0xd8, 0x10, 0xf9, - 0x72, 0x6f, 0xa2, 0x97, 0x31, 0xc5, 0x72, 0xa7, 0x0d, 0x90, 0x11, 0xda, 0x79, 0x70, 0x15, 0x64, - 0x44, 0x04, 0x65, 0x09, 0x14, 0x0b, 0x32, 0x17, 0x86, 0xa5, 0xbb, 0x11, 0xb0, 0xf0, 0xc7, 0x12, - 0x98, 0xfa, 0x0c, 0xd3, 0x70, 0x81, 0xc5, 0x2d, 0x8f, 0xc2, 0x3b, 0x20, 0x1b, 0xbe, 0x25, 0x67, - 0x4b, 0xc7, 0x32, 0x61, 0x3a, 0xa6, 0x82, 0x66, 0xb8, 0xea, 0xb1, 0xec, 0xb2, 0x57, 0x87, 0x0f, - 0xcd, 0xc6, 0x6e, 0x30, 0xc8, 0x1d, 0xe4, 0x1d, 0xa8, 0x63, 0x8d, 0xf0, 0xb3, 0xf0, 0xdf, 0x12, - 0x28, 0xf4, 0xe4, 0x8b, 0x6d, 0x75, 0xc3, 0x21, 0x5b, 0xfb, 0xdb, 0xa1, 0xc0, 0x7f, 0x2f, 0x81, - 0x24, 0xf6, 0x4d, 0x2e, 0xe9, 0xb8, 0xf2, 0x57, 0xd2, 0xb3, 0xea, 0xbb, 0x37, 0x61, 0xe1, 0xfa, - 0x35, 0x65, 0x75, 0x73, 0xed, 0xfa, 0xd6, 0xe6, 0xb5, 0x6b, 0xd7, 0xaa, 0x4a, 0x6d, 0xb3, 0xf0, - 0x3c, 0x21, 0xa5, 0xff, 0x2c, 0x91, 0xf2, 0x28, 0x31, 0xed, 0x66, 0x57, 0x49, 0x3d, 0x1d, 0x69, - 0x65, 0x5c, 0xe9, 0x9b, 0x17, 0xb3, 0x3f, 0x97, 0xc0, 0x46, 0xd3, 0x29, 0xd1, 0x16, 0xa6, 0xbc, - 0x2f, 0x51, 0xb2, 0x31, 0x7d, 0xe2, 0x90, 0x83, 0x72, 0x7f, 0x09, 0x7d, 0xb8, 0x5a, 0x76, 0x0f, - 0x9a, 0x65, 0x56, 0xb4, 0x78, 0xa5, 0x3b, 0x88, 0x78, 0x2d, 0x64, 0x7d, 0xbe, 0xf5, 0xeb, 0x4a, - 0x87, 0xe5, 0x36, 0x67, 0x66, 0xb0, 0x6f, 0xb7, 0x03, 0x16, 0x3f, 0xe2, 0x0c, 0x54, 0xa6, 0x41, - 0xe1, 0x7f, 0x13, 0xe0, 0x9d, 0xdb, 0xa6, 0x17, 0x6a, 0xec, 0x85, 0x1a, 0xfe, 0x06, 0xcb, 0x9c, - 0x2c, 0x0b, 0xd5, 0x1d, 0x82, 0xa8, 0x43, 0xc4, 0x9d, 0x9c, 0x2d, 0x05, 0x51, 0x52, 0xdf, 0xbe, - 0x98, 0x4d, 0x2c, 0x49, 0x6a, 0x1f, 0xab, 0xef, 0x70, 0x3d, 0xf0, 0x09, 0x18, 0x75, 0x88, 0x81, - 0x89, 0x28, 0x2b, 0x51, 0x57, 0x79, 0x4c, 0x1e, 0xaa, 0xe7, 0xa2, 0xdb, 0xd7, 0x4c, 0x43, 0xcd, - 0x16, 0xe3, 0x83, 0xf0, 0x1b, 0xfb, 0xa6, 0x3a, 0x5e, 0x8c, 0x8f, 0x78, 0x36, 0xab, 0x8e, 0x16, - 0xf9, 0x4f, 0x2c, 0x7d, 0x57, 0xb3, 0xc5, 0xd8, 0x20, 0xd8, 0x0f, 0xce, 0x83, 0x51, 0xcb, 0x6c, - 0x9b, 0x41, 0xf9, 0x37, 0xc1, 0xed, 0x6e, 0x25, 0x29, 0xff, 0x57, 0x5a, 0x0d, 0xa6, 0x59, 0xe9, - 0xee, 0xa2, 0x26, 0xe6, 0xd9, 0xf0, 0x84, 0xca, 0xbf, 0xa1, 0x0c, 0xd2, 0x22, 0xa5, 0x96, 0x53, - 0xdc, 0xb9, 0xc2, 0xe1, 0x7a, 0x98, 0xb9, 0x4b, 0x85, 0xbf, 0x90, 0xc0, 0x74, 0x8d, 0xef, 0x36, - 0xe0, 0x12, 0x1f, 0x81, 0xb4, 0x10, 0x56, 0x1c, 0xfd, 0x30, 0xe7, 0x8a, 0xf9, 0x40, 0x48, 0x01, - 0x1f, 0x0c, 0x5c, 0x5e, 0xe2, 0x75, 0x2e, 0xaf, 0xc7, 0xb7, 0x8f, 0x59, 0xe1, 0xf7, 0x25, 0x30, - 0x1d, 0xe4, 0x42, 0x6f, 0x52, 0xe4, 0xef, 0xe0, 0xb3, 0x7f, 0x9a, 0x00, 0xb3, 0x31, 0x13, 0xae, - 0xde, 0xdb, 0xbe, 0x85, 0x7b, 0x86, 0xfc, 0x86, 0x63, 0x8b, 0x1f, 0x5a, 0x60, 0x50, 0x1b, 0x69, - 0x5d, 0xe5, 0x21, 0xb9, 0xcf, 0x2c, 0x10, 0xb9, 0x26, 0x7b, 0x95, 0x02, 0x0b, 0x8c, 0x0d, 0x5e, - 0xcd, 0xcc, 0x00, 0x3e, 0x72, 0x4d, 0x82, 0xbd, 0x60, 0x21, 0x36, 0x18, 0xb4, 0xbf, 0xc4, 0xc9, - 0xf6, 0x97, 0xec, 0xd9, 0x5f, 0xcc, 0xca, 0x7e, 0x0a, 0x2e, 0xf4, 0x82, 0x5a, 0x70, 0x3e, 0x6f, - 0xe9, 0x78, 0xce, 0x83, 0x54, 0xa0, 0x77, 0xf8, 0xee, 0x1c, 0xe0, 0xce, 0xb6, 0x51, 0xf8, 0x45, - 0x02, 0xcc, 0xf5, 0x99, 0xf9, 0x5b, 0x15, 0xe2, 0x62, 0xbc, 0x2f, 0x38, 0x58, 0xbe, 0x7e, 0x0a, - 0x52, 0x41, 0xd7, 0x52, 0x4e, 0x2e, 0x24, 0x97, 0x72, 0x95, 0xf3, 0x83, 0xdb, 0xa8, 0x6c, 0x55, - 0x99, 0xea, 0x2a, 0xb9, 0x67, 0x52, 0x36, 0x23, 0xc9, 0x52, 0x41, 0x64, 0x82, 0x82, 0x8e, 0x95, - 0xd8, 0xbd, 0x0b, 0xe2, 0x76, 0x70, 0x4a, 0x89, 0xdd, 0x55, 0x46, 0xff, 0x52, 0x4a, 0x7c, 0x2a, - 0xa9, 0x63, 0x82, 0xae, 0x4a, 0x0b, 0xff, 0x26, 0x81, 0xb9, 0x3e, 0x2f, 0x7a, 0xab, 0x27, 0xf2, - 0x21, 0x48, 0x0b, 0x93, 0x14, 0xae, 0x75, 0x2c, 0x6b, 0x0a, 0xb6, 0x8f, 0x91, 0xa7, 0x90, 0x6b, - 0xb2, 0xc4, 0xa9, 0xdf, 0x31, 0x93, 0x67, 0x71, 0xcc, 0x7f, 0x95, 0xc0, 0x95, 0x98, 0x63, 0xd6, - 0x62, 0x51, 0xe4, 0x6d, 0xb9, 0xe7, 0x6b, 0xf8, 0x09, 0xbc, 0xde, 0xef, 0xd2, 0xef, 0x76, 0x95, - 0x79, 0x72, 0x49, 0x3d, 0xa7, 0x26, 0x4c, 0x43, 0x4d, 0x16, 0x4d, 0x43, 0x4d, 0x17, 0x83, 0x9b, - 0x0f, 0x2d, 0x40, 0x38, 0x65, 0xe1, 0x1f, 0x25, 0x70, 0xb9, 0xe7, 0x57, 0x71, 0xf5, 0xde, 0x92, - 0x76, 0x6f, 0x35, 0xae, 0xff, 0x8d, 0x04, 0x2e, 0xef, 0xfe, 0x7f, 0x6a, 0x73, 0xf3, 0xa5, 0xda, - 0x5c, 0x3a, 0xde, 0x9c, 0xe9, 0x61, 0x86, 0x0a, 0xff, 0x3f, 0x09, 0x90, 0xeb, 0x2f, 0x69, 0xd9, - 0x55, 0x37, 0x91, 0x69, 0x73, 0x31, 0x13, 0x2a, 0xff, 0x86, 0x3f, 0x00, 0x99, 0xb0, 0xb8, 0x12, - 0xdb, 0xc9, 0x83, 0xdb, 0x85, 0xa5, 0x95, 0x1a, 0x21, 0xe1, 0xef, 0x48, 0x7d, 0x6d, 0xac, 0x24, - 0x4f, 0x76, 0x4b, 0x27, 0x57, 0xd4, 0xc7, 0xba, 0x59, 0xd7, 0x5f, 0xab, 0x9b, 0x25, 0xf7, 0xf7, - 0xb3, 0xb6, 0xc0, 0x98, 0x6b, 0x21, 0x1d, 0xb7, 0xb1, 0x1d, 0x44, 0x9e, 0xdc, 0xd0, 0x76, 0x9a, - 0x90, 0xe3, 0x5e, 0x08, 0x57, 0x7b, 0x94, 0xdf, 0xb1, 0x82, 0x88, 0xd5, 0x03, 0xbf, 0x18, 0x05, - 0x13, 0x62, 0x3f, 0x51, 0x86, 0x96, 0xc0, 0x08, 0x2b, 0x69, 0x85, 0x71, 0x9c, 0xd4, 0x9a, 0xe5, - 0x38, 0x78, 0x1d, 0x8c, 0xd5, 0x1d, 0x87, 0x6a, 0x9c, 0xe8, 0xf4, 0x46, 0x70, 0x86, 0x81, 0xd9, - 0x10, 0xfe, 0x14, 0x64, 0x44, 0x3b, 0x2a, 0xbc, 0x91, 0x5f, 0x19, 0x72, 0x12, 0x81, 0x64, 0x25, - 0xd1, 0xd0, 0x12, 0xd7, 0xf1, 0xc3, 0xae, 0xb2, 0xfa, 0x5c, 0xba, 0x96, 0x07, 0x85, 0xf7, 0xc9, - 0x7b, 0xf2, 0x62, 0xe5, 0x4a, 0xdf, 0x75, 0x68, 0x2f, 0xbf, 0x8f, 0x9f, 0x49, 0x6a, 0xb4, 0x29, - 0xdc, 0x01, 0x53, 0xa2, 0x55, 0x12, 0x15, 0xec, 0xc1, 0x7f, 0x4c, 0x27, 0x18, 0x55, 0xac, 0xcf, - 0x92, 0x17, 0xc4, 0xe1, 0x12, 0x8b, 0x5d, 0x09, 0xd3, 0x95, 0x47, 0xfb, 0x7a, 0x3c, 0xa0, 0x30, - 0x42, 0x12, 0xae, 0xa4, 0x26, 0x4c, 0x17, 0xfa, 0x20, 0xdd, 0xc6, 0x94, 0x98, 0x7a, 0xd8, 0x49, - 0x5d, 0x39, 0x59, 0xe1, 0x3b, 0x01, 0x38, 0xd0, 0xb7, 0xdc, 0x55, 0xae, 0x3e, 0x97, 0x96, 0xf3, - 0x0b, 0xaf, 0xa8, 0xaf, 0x1a, 0xee, 0xc5, 0xea, 0x3c, 0x64, 0x1c, 0x22, 0x5b, 0xc7, 0x86, 0xac, - 0x8b, 0xbc, 0x6e, 0xf0, 0x82, 0x76, 0xf9, 0x9f, 0x9a, 0x6a, 0x04, 0x9c, 0xfb, 0x08, 0x4c, 0xf4, - 0x9d, 0xf7, 0x99, 0x2a, 0xd4, 0x75, 0x30, 0x1e, 0x97, 0xfd, 0x34, 0xda, 0x44, 0x8c, 0xb6, 0xf0, - 0x3d, 0x30, 0x1d, 0xa5, 0xa5, 0x6d, 0x87, 0xe2, 0xb0, 0xaf, 0x97, 0xe3, 0x87, 0x1b, 0xfe, 0x77, - 0xe8, 0x16, 0xfe, 0x73, 0x0c, 0xcc, 0x44, 0xa1, 0x2e, 0xac, 0xed, 0xd9, 0xc1, 0x79, 0xf0, 0x13, - 0xde, 0x34, 0x66, 0x53, 0x41, 0x13, 0xfd, 0x74, 0x53, 0xce, 0x46, 0x78, 0xde, 0x81, 0x9f, 0x34, - 0x4c, 0xaf, 0x8f, 0x43, 0xf6, 0x54, 0x0e, 0xb9, 0x38, 0x49, 0x95, 0xc2, 0x39, 0x90, 0x09, 0xfe, - 0x2c, 0x75, 0xac, 0xf0, 0xef, 0xaa, 0x70, 0x0c, 0x7f, 0x15, 0x5c, 0xb0, 0x90, 0x47, 0x45, 0x63, - 0x48, 0x23, 0x58, 0xc7, 0xe6, 0xe1, 0x2b, 0xfe, 0x69, 0xa0, 0x4e, 0x33, 0xd2, 0xc0, 0x40, 0x54, - 0x41, 0x58, 0xa5, 0xf0, 0xc7, 0x20, 0x1b, 0x63, 0x29, 0x72, 0x9a, 0xcb, 0x27, 0x9a, 0x97, 0x0a, - 0x7a, 0x9c, 0x22, 0x91, 0x7c, 0x97, 0xf7, 0xde, 0xe2, 0x22, 0x8d, 0xbe, 0x9a, 0x48, 0xfb, 0x9c, - 0x32, 0x26, 0xd2, 0xbb, 0x60, 0x5c, 0x70, 0xd3, 0x1d, 0xdf, 0xa6, 0xbc, 0x84, 0x1a, 0x51, 0xb3, - 0xc1, 0x5c, 0x8d, 0x4d, 0xc1, 0x7d, 0x30, 0xcb, 0x77, 0x8d, 0x7a, 0x7e, 0xf1, 0x7d, 0xd3, 0xa7, - 0xee, 0x3b, 0xc3, 0x88, 0xc3, 0xfe, 0x5f, 0x6c, 0xe7, 0xf7, 0x41, 0x2e, 0xe2, 0x18, 0xec, 0x9d, - 0xe1, 0x7b, 0x4f, 0x84, 0xb3, 0xc1, 0xee, 0x1a, 0xc8, 0x13, 0xc7, 0xb7, 0x0d, 0x8d, 0x12, 0xd3, - 0xe5, 0xf1, 0x2b, 0x68, 0x7d, 0x67, 0x2b, 0x6b, 0xc3, 0x3a, 0x65, 0xfd, 0x86, 0x56, 0x52, 0x19, - 0xf9, 0x1e, 0x31, 0x5d, 0x2e, 0x93, 0x9a, 0x23, 0x7d, 0x63, 0x78, 0x0b, 0x8c, 0x79, 0x7e, 0x5d, - 0xab, 0x23, 0xdb, 0xf0, 0x64, 0x70, 0xe2, 0xa3, 0x33, 0xc8, 0x79, 0xd7, 0xaf, 0x2b, 0xc8, 0x36, - 0xd4, 0x8c, 0x17, 0x7c, 0x78, 0xf0, 0x7e, 0xaf, 0x5d, 0x4f, 0xb8, 0x63, 0x44, 0xed, 0xfa, 0x71, - 0x2e, 0xf3, 0xe2, 0xb0, 0xde, 0x4d, 0xdc, 0x8b, 0xa2, 0x9e, 0x79, 0xdf, 0xec, 0xdc, 0x3f, 0x4b, - 0x20, 0xd7, 0xaf, 0x0b, 0x5c, 0x03, 0xc9, 0xb6, 0x78, 0x7b, 0x4f, 0x6a, 0x85, 0xf2, 0x78, 0xf8, - 0x42, 0x4a, 0x64, 0x24, 0x95, 0xe1, 0x39, 0x19, 0x3a, 0x12, 0xef, 0xc0, 0x2b, 0x92, 0xa1, 0x23, - 0xf8, 0x11, 0x48, 0xb5, 0xb1, 0x61, 0x22, 0x5b, 0x38, 0xc0, 0x2b, 0x51, 0x0a, 0x12, 0x16, 0x4b, - 0x82, 0x5b, 0xe6, 0xa5, 0xbd, 0x1a, 0x0c, 0xe6, 0xfe, 0x4e, 0x02, 0x69, 0x71, 0x8a, 0x6f, 0xf0, - 0x3f, 0xd7, 0x8f, 0xc1, 0x5c, 0x64, 0x5a, 0x3e, 0x35, 0x2d, 0x91, 0xa4, 0x69, 0x41, 0xce, 0x9a, - 0xe4, 0xc1, 0x2c, 0x6a, 0x61, 0xef, 0xf7, 0x00, 0xb7, 0x79, 0xf2, 0xfa, 0x7d, 0x30, 0xfd, 0x32, - 0x6a, 0xf1, 0x97, 0xf4, 0x3b, 0x2f, 0xa1, 0x5b, 0x79, 0x08, 0x2e, 0x0c, 0xc9, 0x07, 0xe0, 0x79, - 0x30, 0x75, 0xef, 0x76, 0xb5, 0xb6, 0x75, 0x67, 0xeb, 0xee, 0x9e, 0xb6, 0x7f, 0xf7, 0xd6, 0xdd, - 0x9d, 0x9f, 0xdc, 0xcd, 0x9f, 0x83, 0x00, 0xa4, 0xb6, 0xef, 0x6e, 0xee, 0xec, 0xa8, 0x79, 0x09, - 0x66, 0x41, 0x7a, 0x67, 0x7f, 0x8f, 0x0f, 0x12, 0x73, 0x53, 0xdf, 0xbc, 0x98, 0x9d, 0x90, 0xa5, - 0x95, 0xb1, 0x88, 0x4a, 0x59, 0xfb, 0xdb, 0xff, 0x98, 0x97, 0xee, 0x97, 0xcf, 0xd0, 0x88, 0xa2, - 0xb6, 0x5b, 0xaf, 0xa7, 0xf8, 0xb5, 0xac, 0xfe, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc1, 0x63, - 0x59, 0x2b, 0x8c, 0x24, 0x00, 0x00, +var File_lorawan_stack_api_gateway_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_gateway_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, + 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, + 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, + 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5a, 0x0a, 0x0c, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x22, 0xa5, 0x01, 0x0a, 0x0c, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x45, 0x0a, 0x08, 0x62, 0x72, 0x61, + 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, + 0x72, 0x25, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, + 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, + 0x32, 0x2c, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x07, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x49, 0x64, + 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, + 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, + 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x9b, 0x02, 0x0a, 0x19, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x45, + 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x07, 0x62, 0x72, + 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, + 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, + 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, + 0xd0, 0x01, 0x01, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x10, + 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x20, 0x52, + 0x0f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x32, 0x0a, 0x10, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x18, 0x20, 0x52, 0x0f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xe2, + 0x02, 0x0a, 0x0c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x61, 0x64, 0x69, 0x6f, 0x12, + 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x68, 0x69, 0x70, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x69, 0x70, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x73, 0x73, 0x69, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x72, 0x73, 0x73, 0x69, 0x4f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x12, 0x57, 0x0a, 0x10, 0x74, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x61, 0x64, 0x69, 0x6f, 0x2e, 0x54, 0x78, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, 0x78, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x84, 0x01, 0x0a, + 0x0f, 0x54, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x61, + 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x6f, + 0x74, 0x63, 0x68, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x22, 0xcc, 0x01, 0x0a, 0x1e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, + 0x6c, 0x61, 0x69, 0x6d, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x06, + 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, + 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x72, 0x6f, + 0x6d, 0x12, 0x35, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x07, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x6f, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, + 0x10, 0x01, 0x22, 0xb9, 0x12, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x46, + 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, + 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x43, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x1a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, + 0x0f, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7e, + 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, + 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, + 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4a, + 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x0a, 0x52, 0x0b, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x64, 0x0a, 0x16, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x15, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x12, 0x5a, 0x0a, 0x11, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x10, 0x74, 0x65, 0x63, 0x68, + 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x4a, 0x0a, 0x0b, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0xd5, 0x01, 0x0a, 0x16, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x9e, 0x01, 0xfa, 0x42, 0x9a, 0x01, + 0x72, 0x97, 0x01, 0x32, 0x94, 0x01, 0x5e, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x5d, 0x7b, 0x32, 0x2c, + 0x35, 0x7d, 0x3a, 0x2f, 0x2f, 0x29, 0x3f, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, + 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, + 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, + 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, + 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, + 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x14, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x12, 0x2f, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, + 0x18, 0x80, 0x01, 0x52, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x12, 0x33, 0x0a, 0x11, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, + 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x12, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x14, 0x20, + 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x10, 0x08, 0x22, 0x04, 0x72, + 0x02, 0x18, 0x40, 0x52, 0x10, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, + 0x61, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, + 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, + 0x08, 0x52, 0x08, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x12, 0x27, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6c, + 0x61, 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4c, 0x61, 0x74, 0x65, 0x12, + 0x2c, 0x0a, 0x12, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x75, 0x74, 0x79, 0x5f, + 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x6e, 0x66, + 0x6f, 0x72, 0x63, 0x65, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x6a, 0x0a, + 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x6e, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x16, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x43, + 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x16, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x61, 0x6e, 0x79, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x64, 0x65, + 0x6c, 0x61, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x41, 0x6e, + 0x79, 0x74, 0x69, 0x6d, 0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x3d, 0x0a, 0x1b, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x72, + 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x18, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, + 0x72, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x0e, 0x6c, 0x62, 0x73, + 0x5f, 0x6c, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0c, 0x6c, 0x62, 0x73, 0x4c, 0x6e, + 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x6a, 0x0a, 0x19, 0x63, 0x6c, 0x61, 0x69, 0x6d, + 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x17, 0x63, 0x6c, 0x61, 0x69, + 0x6d, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x33, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x75, + 0x70, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, + 0x08, 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x43, 0x75, 0x70, 0x73, 0x55, 0x72, 0x69, 0x12, 0x3e, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x5f, 0x63, 0x75, 0x70, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x19, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x43, 0x75, 0x70, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x20, 0x72, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1b, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x1e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, + 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x06, 0x6c, 0x72, 0x66, 0x68, 0x73, 0x73, 0x18, 0x1c, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x52, 0x46, 0x48, + 0x53, 0x53, 0x52, 0x06, 0x6c, 0x72, 0x66, 0x68, 0x73, 0x73, 0x12, 0x47, 0x0a, 0x20, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x62, 0x72, 0x6f, + 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x1d, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x30, 0x0a, 0x06, 0x4c, 0x52, 0x46, 0x48, 0x53, 0x53, 0x12, 0x1c, 0x0a, 0x09, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, + 0x08, 0x01, 0x10, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x3f, + 0x0a, 0x08, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x22, + 0x9d, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, + 0xee, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x55, 0x49, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0xc7, 0x01, 0x0a, 0x03, 0x65, 0x75, 0x69, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, + 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, + 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, + 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, + 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, + 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x65, 0x75, 0x69, + 0x22, 0xfc, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x06, 0xf2, + 0xaa, 0x19, 0x02, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x77, + 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x61, 0xfa, + 0x42, 0x5e, 0x72, 0x5c, 0x52, 0x00, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, + 0x69, 0x64, 0x52, 0x0b, 0x2d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x52, + 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x0c, 0x2d, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, + 0xb0, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x5b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x22, 0x9f, 0x02, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, + 0x12, 0x75, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x5f, 0xfa, 0x42, 0x5c, 0x72, 0x5a, 0x52, 0x00, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x69, 0x64, 0x52, 0x0b, 0x2d, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, + 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, + 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, + 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0x7f, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, + 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x22, 0x8f, 0x02, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x40, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x92, 0x01, 0x0b, + 0x08, 0x01, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x40, 0x01, 0x52, 0x09, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0xe1, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, + 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xdd, 0x01, 0x0a, + 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, + 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x21, 0xfa, 0x42, 0x1e, 0x72, 0x1c, 0x52, 0x00, 0x52, 0x02, 0x69, 0x64, 0x52, + 0x03, 0x2d, 0x69, 0x64, 0x52, 0x07, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x06, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xcb, 0x01, 0x0a, + 0x1d, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, + 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x5b, 0x0a, + 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xba, 0x01, 0x0a, 0x1d, 0x53, + 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xf4, 0x02, 0x0a, 0x0e, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x61, + 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x04, 0x67, 0x61, 0x69, 0x6e, 0x12, 0x34, + 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x87, 0x01, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x37, 0x18, 0x01, 0xfa, 0x42, 0x32, + 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, + 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x45, + 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, + 0x61, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x8f, + 0x05, 0x0a, 0x0d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, + 0x12, 0x37, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x08, 0x62, 0x6f, 0x6f, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x7f, 0x0a, 0x08, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x36, 0xfa, 0x42, 0x33, 0x9a, 0x01, 0x30, + 0x10, 0x0a, 0x22, 0x25, 0x72, 0x23, 0x18, 0x24, 0x32, 0x1f, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x5f, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, + 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x11, 0x61, 0x6e, + 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x08, 0x52, 0x10, 0x61, 0x6e, 0x74, 0x65, 0x6e, + 0x6e, 0x61, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x02, 0x69, + 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x10, + 0x0a, 0x22, 0x04, 0x72, 0x02, 0x70, 0x01, 0x52, 0x02, 0x69, 0x70, 0x12, 0x75, 0x0a, 0x07, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x2f, 0xfa, 0x42, 0x2c, 0x9a, 0x01, 0x29, + 0x10, 0x20, 0x22, 0x25, 0x72, 0x23, 0x18, 0x24, 0x32, 0x1f, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x5f, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x18, 0x63, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x08, 0x61, + 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x26, 0x0a, 0x14, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0xe4, 0x09, 0x0a, 0x16, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x12, 0x51, 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3e, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x51, 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, + 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0b, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x55, 0x0a, 0x19, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x16, 0x6c, 0x61, 0x73, + 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x5f, 0x0a, 0x10, 0x72, 0x6f, + 0x75, 0x6e, 0x64, 0x5f, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x52, 0x6f, 0x75, + 0x6e, 0x64, 0x54, 0x72, 0x69, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x0e, 0x72, 0x6f, 0x75, + 0x6e, 0x64, 0x54, 0x72, 0x69, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x09, 0x73, + 0x75, 0x62, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x42, 0x61, 0x6e, 0x64, 0x52, 0x08, + 0x73, 0x75, 0x62, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x5a, 0x0a, 0x16, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x14, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x1a, 0xd1, 0x01, 0x0a, 0x0e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, + 0x69, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x01, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x35, + 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x01, + 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x3b, 0x0a, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x01, 0x52, 0x06, 0x6d, 0x65, 0x64, 0x69, + 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xc4, 0x01, 0x0a, 0x07, 0x53, 0x75, 0x62, + 0x42, 0x61, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6e, + 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, + 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x3c, + 0x0a, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x55, 0x74, 0x69, 0x6c, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x31, 0x0a, 0x14, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2a, + 0x5c, 0x0a, 0x17, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, + 0x61, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x4c, + 0x41, 0x43, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x44, 0x4f, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, + 0x07, 0x4f, 0x55, 0x54, 0x44, 0x4f, 0x4f, 0x52, 0x10, 0x02, 0x1a, 0x11, 0xea, 0xaa, 0x19, 0x0d, + 0x18, 0x01, 0x2a, 0x09, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x42, 0x35, 0x5a, + 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, + 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_gateway_proto_rawDescOnce sync.Once + file_lorawan_stack_api_gateway_proto_rawDescData = file_lorawan_stack_api_gateway_proto_rawDesc +) + +func file_lorawan_stack_api_gateway_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_gateway_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_gateway_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_gateway_proto_rawDescData) + }) + return file_lorawan_stack_api_gateway_proto_rawDescData +} + +var file_lorawan_stack_api_gateway_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_lorawan_stack_api_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 31) +var file_lorawan_stack_api_gateway_proto_goTypes = []interface{}{ + (GatewayAntennaPlacement)(0), // 0: ttn.lorawan.v3.GatewayAntennaPlacement + (*GatewayBrand)(nil), // 1: ttn.lorawan.v3.GatewayBrand + (*GatewayModel)(nil), // 2: ttn.lorawan.v3.GatewayModel + (*GatewayVersionIdentifiers)(nil), // 3: ttn.lorawan.v3.GatewayVersionIdentifiers + (*GatewayRadio)(nil), // 4: ttn.lorawan.v3.GatewayRadio + (*GatewayClaimAuthenticationCode)(nil), // 5: ttn.lorawan.v3.GatewayClaimAuthenticationCode + (*Gateway)(nil), // 6: ttn.lorawan.v3.Gateway + (*Gateways)(nil), // 7: ttn.lorawan.v3.Gateways + (*GetGatewayRequest)(nil), // 8: ttn.lorawan.v3.GetGatewayRequest + (*GetGatewayIdentifiersForEUIRequest)(nil), // 9: ttn.lorawan.v3.GetGatewayIdentifiersForEUIRequest + (*ListGatewaysRequest)(nil), // 10: ttn.lorawan.v3.ListGatewaysRequest + (*CreateGatewayRequest)(nil), // 11: ttn.lorawan.v3.CreateGatewayRequest + (*UpdateGatewayRequest)(nil), // 12: ttn.lorawan.v3.UpdateGatewayRequest + (*ListGatewayAPIKeysRequest)(nil), // 13: ttn.lorawan.v3.ListGatewayAPIKeysRequest + (*GetGatewayAPIKeyRequest)(nil), // 14: ttn.lorawan.v3.GetGatewayAPIKeyRequest + (*CreateGatewayAPIKeyRequest)(nil), // 15: ttn.lorawan.v3.CreateGatewayAPIKeyRequest + (*UpdateGatewayAPIKeyRequest)(nil), // 16: ttn.lorawan.v3.UpdateGatewayAPIKeyRequest + (*ListGatewayCollaboratorsRequest)(nil), // 17: ttn.lorawan.v3.ListGatewayCollaboratorsRequest + (*GetGatewayCollaboratorRequest)(nil), // 18: ttn.lorawan.v3.GetGatewayCollaboratorRequest + (*SetGatewayCollaboratorRequest)(nil), // 19: ttn.lorawan.v3.SetGatewayCollaboratorRequest + (*GatewayAntenna)(nil), // 20: ttn.lorawan.v3.GatewayAntenna + (*GatewayStatus)(nil), // 21: ttn.lorawan.v3.GatewayStatus + (*GatewayRemoteAddress)(nil), // 22: ttn.lorawan.v3.GatewayRemoteAddress + (*GatewayConnectionStats)(nil), // 23: ttn.lorawan.v3.GatewayConnectionStats + (*GatewayRadio_TxConfiguration)(nil), // 24: ttn.lorawan.v3.GatewayRadio.TxConfiguration + nil, // 25: ttn.lorawan.v3.Gateway.AttributesEntry + (*Gateway_LRFHSS)(nil), // 26: ttn.lorawan.v3.Gateway.LRFHSS + nil, // 27: ttn.lorawan.v3.GatewayAntenna.AttributesEntry + nil, // 28: ttn.lorawan.v3.GatewayStatus.VersionsEntry + nil, // 29: ttn.lorawan.v3.GatewayStatus.MetricsEntry + (*GatewayConnectionStats_RoundTripTimes)(nil), // 30: ttn.lorawan.v3.GatewayConnectionStats.RoundTripTimes + (*GatewayConnectionStats_SubBand)(nil), // 31: ttn.lorawan.v3.GatewayConnectionStats.SubBand + (*Secret)(nil), // 32: ttn.lorawan.v3.Secret + (*timestamppb.Timestamp)(nil), // 33: google.protobuf.Timestamp + (*GatewayIdentifiers)(nil), // 34: ttn.lorawan.v3.GatewayIdentifiers + (*ContactInfo)(nil), // 35: ttn.lorawan.v3.ContactInfo + (*OrganizationOrUserIdentifiers)(nil), // 36: ttn.lorawan.v3.OrganizationOrUserIdentifiers + (DownlinkPathConstraint)(0), // 37: ttn.lorawan.v3.DownlinkPathConstraint + (*durationpb.Duration)(nil), // 38: google.protobuf.Duration + (*fieldmaskpb.FieldMask)(nil), // 39: google.protobuf.FieldMask + (Right)(0), // 40: ttn.lorawan.v3.Right + (*APIKey)(nil), // 41: ttn.lorawan.v3.APIKey + (*Collaborator)(nil), // 42: ttn.lorawan.v3.Collaborator + (*Location)(nil), // 43: ttn.lorawan.v3.Location + (*structpb.Struct)(nil), // 44: google.protobuf.Struct +} +var file_lorawan_stack_api_gateway_proto_depIdxs = []int32{ + 24, // 0: ttn.lorawan.v3.GatewayRadio.tx_configuration:type_name -> ttn.lorawan.v3.GatewayRadio.TxConfiguration + 32, // 1: ttn.lorawan.v3.GatewayClaimAuthenticationCode.secret:type_name -> ttn.lorawan.v3.Secret + 33, // 2: ttn.lorawan.v3.GatewayClaimAuthenticationCode.valid_from:type_name -> google.protobuf.Timestamp + 33, // 3: ttn.lorawan.v3.GatewayClaimAuthenticationCode.valid_to:type_name -> google.protobuf.Timestamp + 34, // 4: ttn.lorawan.v3.Gateway.ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 33, // 5: ttn.lorawan.v3.Gateway.created_at:type_name -> google.protobuf.Timestamp + 33, // 6: ttn.lorawan.v3.Gateway.updated_at:type_name -> google.protobuf.Timestamp + 33, // 7: ttn.lorawan.v3.Gateway.deleted_at:type_name -> google.protobuf.Timestamp + 25, // 8: ttn.lorawan.v3.Gateway.attributes:type_name -> ttn.lorawan.v3.Gateway.AttributesEntry + 35, // 9: ttn.lorawan.v3.Gateway.contact_info:type_name -> ttn.lorawan.v3.ContactInfo + 36, // 10: ttn.lorawan.v3.Gateway.administrative_contact:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 36, // 11: ttn.lorawan.v3.Gateway.technical_contact:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 3, // 12: ttn.lorawan.v3.Gateway.version_ids:type_name -> ttn.lorawan.v3.GatewayVersionIdentifiers + 20, // 13: ttn.lorawan.v3.Gateway.antennas:type_name -> ttn.lorawan.v3.GatewayAntenna + 37, // 14: ttn.lorawan.v3.Gateway.downlink_path_constraint:type_name -> ttn.lorawan.v3.DownlinkPathConstraint + 38, // 15: ttn.lorawan.v3.Gateway.schedule_anytime_delay:type_name -> google.protobuf.Duration + 32, // 16: ttn.lorawan.v3.Gateway.lbs_lns_secret:type_name -> ttn.lorawan.v3.Secret + 5, // 17: ttn.lorawan.v3.Gateway.claim_authentication_code:type_name -> ttn.lorawan.v3.GatewayClaimAuthenticationCode + 32, // 18: ttn.lorawan.v3.Gateway.target_cups_key:type_name -> ttn.lorawan.v3.Secret + 26, // 19: ttn.lorawan.v3.Gateway.lrfhss:type_name -> ttn.lorawan.v3.Gateway.LRFHSS + 6, // 20: ttn.lorawan.v3.Gateways.gateways:type_name -> ttn.lorawan.v3.Gateway + 34, // 21: ttn.lorawan.v3.GetGatewayRequest.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 39, // 22: ttn.lorawan.v3.GetGatewayRequest.field_mask:type_name -> google.protobuf.FieldMask + 36, // 23: ttn.lorawan.v3.ListGatewaysRequest.collaborator:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 39, // 24: ttn.lorawan.v3.ListGatewaysRequest.field_mask:type_name -> google.protobuf.FieldMask + 6, // 25: ttn.lorawan.v3.CreateGatewayRequest.gateway:type_name -> ttn.lorawan.v3.Gateway + 36, // 26: ttn.lorawan.v3.CreateGatewayRequest.collaborator:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 6, // 27: ttn.lorawan.v3.UpdateGatewayRequest.gateway:type_name -> ttn.lorawan.v3.Gateway + 39, // 28: ttn.lorawan.v3.UpdateGatewayRequest.field_mask:type_name -> google.protobuf.FieldMask + 34, // 29: ttn.lorawan.v3.ListGatewayAPIKeysRequest.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 34, // 30: ttn.lorawan.v3.GetGatewayAPIKeyRequest.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 34, // 31: ttn.lorawan.v3.CreateGatewayAPIKeyRequest.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 40, // 32: ttn.lorawan.v3.CreateGatewayAPIKeyRequest.rights:type_name -> ttn.lorawan.v3.Right + 33, // 33: ttn.lorawan.v3.CreateGatewayAPIKeyRequest.expires_at:type_name -> google.protobuf.Timestamp + 34, // 34: ttn.lorawan.v3.UpdateGatewayAPIKeyRequest.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 41, // 35: ttn.lorawan.v3.UpdateGatewayAPIKeyRequest.api_key:type_name -> ttn.lorawan.v3.APIKey + 39, // 36: ttn.lorawan.v3.UpdateGatewayAPIKeyRequest.field_mask:type_name -> google.protobuf.FieldMask + 34, // 37: ttn.lorawan.v3.ListGatewayCollaboratorsRequest.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 34, // 38: ttn.lorawan.v3.GetGatewayCollaboratorRequest.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 36, // 39: ttn.lorawan.v3.GetGatewayCollaboratorRequest.collaborator:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 34, // 40: ttn.lorawan.v3.SetGatewayCollaboratorRequest.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 42, // 41: ttn.lorawan.v3.SetGatewayCollaboratorRequest.collaborator:type_name -> ttn.lorawan.v3.Collaborator + 43, // 42: ttn.lorawan.v3.GatewayAntenna.location:type_name -> ttn.lorawan.v3.Location + 27, // 43: ttn.lorawan.v3.GatewayAntenna.attributes:type_name -> ttn.lorawan.v3.GatewayAntenna.AttributesEntry + 0, // 44: ttn.lorawan.v3.GatewayAntenna.placement:type_name -> ttn.lorawan.v3.GatewayAntennaPlacement + 33, // 45: ttn.lorawan.v3.GatewayStatus.time:type_name -> google.protobuf.Timestamp + 33, // 46: ttn.lorawan.v3.GatewayStatus.boot_time:type_name -> google.protobuf.Timestamp + 28, // 47: ttn.lorawan.v3.GatewayStatus.versions:type_name -> ttn.lorawan.v3.GatewayStatus.VersionsEntry + 43, // 48: ttn.lorawan.v3.GatewayStatus.antenna_locations:type_name -> ttn.lorawan.v3.Location + 29, // 49: ttn.lorawan.v3.GatewayStatus.metrics:type_name -> ttn.lorawan.v3.GatewayStatus.MetricsEntry + 44, // 50: ttn.lorawan.v3.GatewayStatus.advanced:type_name -> google.protobuf.Struct + 33, // 51: ttn.lorawan.v3.GatewayConnectionStats.connected_at:type_name -> google.protobuf.Timestamp + 33, // 52: ttn.lorawan.v3.GatewayConnectionStats.disconnected_at:type_name -> google.protobuf.Timestamp + 33, // 53: ttn.lorawan.v3.GatewayConnectionStats.last_status_received_at:type_name -> google.protobuf.Timestamp + 21, // 54: ttn.lorawan.v3.GatewayConnectionStats.last_status:type_name -> ttn.lorawan.v3.GatewayStatus + 33, // 55: ttn.lorawan.v3.GatewayConnectionStats.last_uplink_received_at:type_name -> google.protobuf.Timestamp + 33, // 56: ttn.lorawan.v3.GatewayConnectionStats.last_downlink_received_at:type_name -> google.protobuf.Timestamp + 30, // 57: ttn.lorawan.v3.GatewayConnectionStats.round_trip_times:type_name -> ttn.lorawan.v3.GatewayConnectionStats.RoundTripTimes + 31, // 58: ttn.lorawan.v3.GatewayConnectionStats.sub_bands:type_name -> ttn.lorawan.v3.GatewayConnectionStats.SubBand + 22, // 59: ttn.lorawan.v3.GatewayConnectionStats.gateway_remote_address:type_name -> ttn.lorawan.v3.GatewayRemoteAddress + 38, // 60: ttn.lorawan.v3.GatewayConnectionStats.RoundTripTimes.min:type_name -> google.protobuf.Duration + 38, // 61: ttn.lorawan.v3.GatewayConnectionStats.RoundTripTimes.max:type_name -> google.protobuf.Duration + 38, // 62: ttn.lorawan.v3.GatewayConnectionStats.RoundTripTimes.median:type_name -> google.protobuf.Duration + 63, // [63:63] is the sub-list for method output_type + 63, // [63:63] is the sub-list for method input_type + 63, // [63:63] is the sub-list for extension type_name + 63, // [63:63] is the sub-list for extension extendee + 0, // [0:63] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_gateway_proto_init() } +func file_lorawan_stack_api_gateway_proto_init() { + if File_lorawan_stack_api_gateway_proto != nil { + return + } + file_lorawan_stack_api_contact_info_proto_init() + file_lorawan_stack_api_enums_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_metadata_proto_init() + file_lorawan_stack_api_rights_proto_init() + file_lorawan_stack_api_secrets_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_gateway_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayBrand); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayModel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayVersionIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayRadio); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayClaimAuthenticationCode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Gateway); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Gateways); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetGatewayRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetGatewayIdentifiersForEUIRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListGatewaysRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateGatewayRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateGatewayRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListGatewayAPIKeysRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetGatewayAPIKeyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateGatewayAPIKeyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateGatewayAPIKeyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListGatewayCollaboratorsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetGatewayCollaboratorRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetGatewayCollaboratorRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayAntenna); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayStatus); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayRemoteAddress); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayConnectionStats); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayRadio_TxConfiguration); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Gateway_LRFHSS); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayConnectionStats_RoundTripTimes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayConnectionStats_SubBand); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_gateway_proto_rawDesc, + NumEnums: 1, + NumMessages: 31, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_gateway_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_gateway_proto_depIdxs, + EnumInfos: file_lorawan_stack_api_gateway_proto_enumTypes, + MessageInfos: file_lorawan_stack_api_gateway_proto_msgTypes, + }.Build() + File_lorawan_stack_api_gateway_proto = out.File + file_lorawan_stack_api_gateway_proto_rawDesc = nil + file_lorawan_stack_api_gateway_proto_goTypes = nil + file_lorawan_stack_api_gateway_proto_depIdxs = nil } diff --git a/pkg/ttnpb/gateway.pb.setters.fm.go b/pkg/ttnpb/gateway.pb.setters.fm.go index 7386b26df9..f87b0f453f 100644 --- a/pkg/ttnpb/gateway.pb.setters.fm.go +++ b/pkg/ttnpb/gateway.pb.setters.fm.go @@ -549,8 +549,7 @@ func (dst *Gateway) SetFields(src *Gateway, paths ...string) error { if src != nil { dst.DownlinkPathConstraint = src.DownlinkPathConstraint } else { - var zero DownlinkPathConstraint - dst.DownlinkPathConstraint = zero + dst.DownlinkPathConstraint = 0 } case "schedule_anytime_delay": if len(subs) > 0 { @@ -1473,8 +1472,7 @@ func (dst *GatewayAntenna) SetFields(src *GatewayAntenna, paths ...string) error if src != nil { dst.Placement = src.Placement } else { - var zero GatewayAntennaPlacement - dst.Placement = zero + dst.Placement = 0 } default: diff --git a/pkg/ttnpb/gateway.pb.validate.go b/pkg/ttnpb/gateway.pb.validate.go index e3be095a50..0266370ed3 100644 --- a/pkg/ttnpb/gateway.pb.validate.go +++ b/pkg/ttnpb/gateway.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _gateway_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on GatewayBrand with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. @@ -2021,7 +2018,7 @@ func (m *CreateGatewayAPIKeyRequest) ValidateFields(paths ...string) error { case "expires_at": if t := m.GetExpiresAt(); t != nil { - ts, err := types.TimestampFromProto(t) + ts, err := t.AsTime(), t.CheckValid() if err != nil { return CreateGatewayAPIKeyRequestValidationError{ field: "expires_at", diff --git a/pkg/ttnpb/gateway_configuration.pb.go b/pkg/ttnpb/gateway_configuration.pb.go index 25dc0d133e..5f3b390fe2 100644 --- a/pkg/ttnpb/gateway_configuration.pb.go +++ b/pkg/ttnpb/gateway_configuration.pb.go @@ -1,251 +1,302 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2022 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/gateway_configuration.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/envoyproxy/protoc-gen-validate/validate" - proto "github.com/gogo/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type GetGatewayConfigurationRequest struct { - GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` - Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - Filename string `protobuf:"bytes,4,opt,name=filename,proto3" json:"filename,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetGatewayConfigurationRequest) Reset() { *m = GetGatewayConfigurationRequest{} } -func (m *GetGatewayConfigurationRequest) String() string { return proto.CompactTextString(m) } -func (*GetGatewayConfigurationRequest) ProtoMessage() {} -func (*GetGatewayConfigurationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8b59222464c10014, []int{0} -} -func (m *GetGatewayConfigurationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetGatewayConfigurationRequest.Unmarshal(m, b) -} -func (m *GetGatewayConfigurationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetGatewayConfigurationRequest.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` + Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + Filename string `protobuf:"bytes,4,opt,name=filename,proto3" json:"filename,omitempty"` } -func (m *GetGatewayConfigurationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetGatewayConfigurationRequest.Merge(m, src) + +func (x *GetGatewayConfigurationRequest) Reset() { + *x = GetGatewayConfigurationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_configuration_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetGatewayConfigurationRequest) XXX_Size() int { - return xxx_messageInfo_GetGatewayConfigurationRequest.Size(m) + +func (x *GetGatewayConfigurationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetGatewayConfigurationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetGatewayConfigurationRequest.DiscardUnknown(m) + +func (*GetGatewayConfigurationRequest) ProtoMessage() {} + +func (x *GetGatewayConfigurationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_configuration_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetGatewayConfigurationRequest proto.InternalMessageInfo +// Deprecated: Use GetGatewayConfigurationRequest.ProtoReflect.Descriptor instead. +func (*GetGatewayConfigurationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_configuration_proto_rawDescGZIP(), []int{0} +} -func (m *GetGatewayConfigurationRequest) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds +func (x *GetGatewayConfigurationRequest) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds } return nil } -func (m *GetGatewayConfigurationRequest) GetFormat() string { - if m != nil { - return m.Format +func (x *GetGatewayConfigurationRequest) GetFormat() string { + if x != nil { + return x.Format } return "" } -func (m *GetGatewayConfigurationRequest) GetType() string { - if m != nil { - return m.Type +func (x *GetGatewayConfigurationRequest) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *GetGatewayConfigurationRequest) GetFilename() string { - if m != nil { - return m.Filename +func (x *GetGatewayConfigurationRequest) GetFilename() string { + if x != nil { + return x.Filename } return "" } type GetGatewayConfigurationResponse struct { - Contents []byte `protobuf:"bytes,1,opt,name=contents,proto3" json:"contents,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GetGatewayConfigurationResponse) Reset() { *m = GetGatewayConfigurationResponse{} } -func (m *GetGatewayConfigurationResponse) String() string { return proto.CompactTextString(m) } -func (*GetGatewayConfigurationResponse) ProtoMessage() {} -func (*GetGatewayConfigurationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8b59222464c10014, []int{1} -} -func (m *GetGatewayConfigurationResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetGatewayConfigurationResponse.Unmarshal(m, b) -} -func (m *GetGatewayConfigurationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetGatewayConfigurationResponse.Marshal(b, m, deterministic) -} -func (m *GetGatewayConfigurationResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetGatewayConfigurationResponse.Merge(m, src) -} -func (m *GetGatewayConfigurationResponse) XXX_Size() int { - return xxx_messageInfo_GetGatewayConfigurationResponse.Size(m) -} -func (m *GetGatewayConfigurationResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetGatewayConfigurationResponse.DiscardUnknown(m) + Contents []byte `protobuf:"bytes,1,opt,name=contents,proto3" json:"contents,omitempty"` } -var xxx_messageInfo_GetGatewayConfigurationResponse proto.InternalMessageInfo - -func (m *GetGatewayConfigurationResponse) GetContents() []byte { - if m != nil { - return m.Contents +func (x *GetGatewayConfigurationResponse) Reset() { + *x = GetGatewayConfigurationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_configuration_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func init() { - proto.RegisterType((*GetGatewayConfigurationRequest)(nil), "ttn.lorawan.v3.GetGatewayConfigurationRequest") - proto.RegisterType((*GetGatewayConfigurationResponse)(nil), "ttn.lorawan.v3.GetGatewayConfigurationResponse") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/gateway_configuration.proto", fileDescriptor_8b59222464c10014) -} - -var fileDescriptor_8b59222464c10014 = []byte{ - // 484 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x93, 0xc1, 0x6e, 0x13, 0x31, - 0x10, 0x86, 0xb5, 0x4b, 0xa9, 0x82, 0x8b, 0x10, 0xf2, 0x85, 0x55, 0x40, 0x50, 0xd2, 0xa0, 0xa6, - 0xa8, 0x6b, 0x43, 0x72, 0x02, 0x09, 0x2a, 0x96, 0x43, 0x0b, 0x12, 0x42, 0x84, 0x5b, 0xaa, 0xb6, - 0x72, 0x36, 0x13, 0xc7, 0x4a, 0x62, 0x2f, 0xf6, 0x24, 0x21, 0x84, 0x5c, 0x38, 0x72, 0xe5, 0x01, - 0x38, 0x20, 0xf1, 0x16, 0x9c, 0x78, 0x04, 0x5e, 0x81, 0xa7, 0xc8, 0x09, 0x75, 0xb3, 0x69, 0x13, - 0xa5, 0x45, 0xa0, 0xde, 0xc6, 0xf2, 0xfc, 0xdf, 0x8c, 0x67, 0x7e, 0x93, 0xb0, 0x63, 0xac, 0x18, - 0x08, 0x1d, 0x3a, 0x14, 0x71, 0x9b, 0x8b, 0x44, 0x71, 0x29, 0x10, 0x06, 0x62, 0x78, 0x14, 0x1b, - 0xdd, 0x54, 0xb2, 0x67, 0x05, 0x2a, 0xa3, 0x59, 0x62, 0x0d, 0x1a, 0x7a, 0x0d, 0x51, 0xb3, 0x4c, - 0xc2, 0xfa, 0x95, 0xfc, 0x33, 0xa9, 0xb0, 0xd5, 0xab, 0xb3, 0xd8, 0x74, 0x39, 0xe8, 0xbe, 0x19, - 0x26, 0xd6, 0xbc, 0x1f, 0xf2, 0x34, 0x39, 0x0e, 0x25, 0xe8, 0xb0, 0x2f, 0x3a, 0xaa, 0x21, 0x10, - 0xf8, 0x52, 0x30, 0x45, 0xe6, 0x6f, 0x49, 0x63, 0x64, 0x07, 0xd2, 0xd2, 0x42, 0x6b, 0x83, 0x69, - 0x3d, 0x97, 0xdd, 0x6e, 0x2c, 0xf7, 0xa7, 0x1a, 0xa0, 0x51, 0x35, 0x15, 0xd8, 0x2c, 0xa9, 0xf0, - 0xc3, 0x27, 0xb7, 0x77, 0x01, 0x77, 0xa7, 0x8d, 0x3f, 0x9f, 0xef, 0xbb, 0x0a, 0xef, 0x7a, 0xe0, - 0x90, 0xbe, 0x22, 0x6b, 0xb3, 0x77, 0xa9, 0x86, 0x0b, 0xbc, 0x75, 0xaf, 0xb4, 0x56, 0x2e, 0xb0, - 0xc5, 0xe7, 0xb0, 0x8c, 0xf0, 0xe2, 0xb4, 0x42, 0x94, 0x9b, 0x44, 0x97, 0x3f, 0x7b, 0xfe, 0x75, - 0xaf, 0x4a, 0xe4, 0xec, 0xd6, 0xd1, 0x88, 0xac, 0x36, 0x8d, 0xed, 0x0a, 0x0c, 0xfc, 0x75, 0xaf, - 0x74, 0x25, 0xba, 0x3f, 0x89, 0x36, 0xed, 0xbd, 0xa0, 0x58, 0xbe, 0x7b, 0xb8, 0x2f, 0xc2, 0x0f, - 0x0f, 0xc2, 0x47, 0x07, 0xa5, 0x9d, 0xc7, 0xfb, 0xe1, 0xc1, 0xce, 0xec, 0xb8, 0x35, 0x2a, 0x6f, - 0x8f, 0x8b, 0x1f, 0x0f, 0x8b, 0xd5, 0x4c, 0x49, 0x9f, 0x92, 0x15, 0x1c, 0x26, 0x10, 0x5c, 0xfa, - 0x6f, 0x42, 0xaa, 0xa3, 0x7b, 0x24, 0xd7, 0x54, 0x1d, 0xd0, 0xa2, 0x0b, 0xc1, 0x4a, 0xca, 0xd8, - 0x9e, 0x44, 0x5b, 0x76, 0x33, 0x28, 0x96, 0x37, 0x16, 0x19, 0xec, 0xe8, 0x2c, 0xca, 0x89, 0xba, - 0xf0, 0x84, 0xdc, 0x39, 0x77, 0x7c, 0x2e, 0x31, 0xda, 0x01, 0xcd, 0x93, 0x5c, 0x6c, 0x34, 0x82, - 0xc6, 0xe9, 0xf0, 0xae, 0x56, 0x4f, 0xce, 0xe5, 0x9f, 0x3e, 0xb9, 0x79, 0x96, 0xf8, 0x2d, 0xd8, - 0xbe, 0x8a, 0x81, 0x7e, 0xf3, 0xc9, 0x8d, 0x73, 0xf8, 0x94, 0x2d, 0xad, 0xe0, 0xaf, 0x7b, 0xcc, - 0xf3, 0x7f, 0xce, 0x9f, 0x36, 0x5e, 0xf8, 0xee, 0x7d, 0xfa, 0xf5, 0xfb, 0x8b, 0xff, 0xd5, 0xab, - 0xbd, 0xa4, 0x7b, 0x5c, 0xc6, 0x6e, 0xe6, 0x6f, 0xc7, 0x17, 0x0c, 0xce, 0x47, 0x73, 0xfe, 0x60, - 0xa7, 0xf1, 0x98, 0x8f, 0xa6, 0xfb, 0x3a, 0x0e, 0xb2, 0x81, 0x8d, 0x6b, 0x6f, 0xe8, 0xeb, 0x0b, - 0xb2, 0x8e, 0x57, 0x38, 0x8f, 0x8c, 0x1e, 0xd6, 0xb8, 0x34, 0x0c, 0x5b, 0x80, 0x2d, 0xa5, 0xa5, - 0x63, 0x1a, 0x70, 0x60, 0x6c, 0x9b, 0x2f, 0x7e, 0x80, 0x7e, 0x85, 0x27, 0x6d, 0xc9, 0x11, 0x75, - 0x52, 0xaf, 0xaf, 0xa6, 0xf6, 0xaf, 0xfc, 0x09, 0x00, 0x00, 0xff, 0xff, 0xae, 0xd5, 0x50, 0xf4, - 0xc5, 0x03, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// GatewayConfigurationServiceClient is the client API for GatewayConfigurationService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type GatewayConfigurationServiceClient interface { - GetGatewayConfiguration(ctx context.Context, in *GetGatewayConfigurationRequest, opts ...grpc.CallOption) (*GetGatewayConfigurationResponse, error) +func (x *GetGatewayConfigurationResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -type gatewayConfigurationServiceClient struct { - cc *grpc.ClientConn +func (*GetGatewayConfigurationResponse) ProtoMessage() {} + +func (x *GetGatewayConfigurationResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_configuration_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func NewGatewayConfigurationServiceClient(cc *grpc.ClientConn) GatewayConfigurationServiceClient { - return &gatewayConfigurationServiceClient{cc} +// Deprecated: Use GetGatewayConfigurationResponse.ProtoReflect.Descriptor instead. +func (*GetGatewayConfigurationResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_configuration_proto_rawDescGZIP(), []int{1} } -func (c *gatewayConfigurationServiceClient) GetGatewayConfiguration(ctx context.Context, in *GetGatewayConfigurationRequest, opts ...grpc.CallOption) (*GetGatewayConfigurationResponse, error) { - out := new(GetGatewayConfigurationResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayConfigurationService/GetGatewayConfiguration", in, out, opts...) - if err != nil { - return nil, err +func (x *GetGatewayConfigurationResponse) GetContents() []byte { + if x != nil { + return x.Contents } - return out, nil + return nil } -// GatewayConfigurationServiceServer is the server API for GatewayConfigurationService service. -type GatewayConfigurationServiceServer interface { - GetGatewayConfiguration(context.Context, *GetGatewayConfigurationRequest) (*GetGatewayConfigurationResponse, error) -} +var File_lorawan_stack_api_gateway_configuration_proto protoreflect.FileDescriptor -// UnimplementedGatewayConfigurationServiceServer can be embedded to have forward compatible implementations. -type UnimplementedGatewayConfigurationServiceServer struct { +var file_lorawan_stack_api_gateway_configuration_proto_rawDesc = []byte{ + 0x0a, 0x2d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, + 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, + 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbd, 0x02, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, + 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, + 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, + 0x7c, 0x5e, 0x24, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, + 0x18, 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, + 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, + 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x66, + 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xfa, + 0x42, 0x29, 0x72, 0x27, 0x18, 0x24, 0x32, 0x23, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x2e, 0x5f, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x08, 0x66, 0x69, 0x6c, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3d, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x73, 0x32, 0xc3, 0x02, 0x0a, 0x1b, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0xa3, 0x02, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xa6, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9f, 0x01, 0x5a, 0x4a, 0x12, 0x48, 0x2f, + 0x67, 0x63, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x7d, 0x2f, 0x7b, 0x66, 0x69, + 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x5a, 0x51, 0x12, 0x4f, 0x2f, 0x67, 0x63, 0x73, 0x2f, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x7b, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x7d, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, + 0x7b, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func (*UnimplementedGatewayConfigurationServiceServer) GetGatewayConfiguration(ctx context.Context, req *GetGatewayConfigurationRequest) (*GetGatewayConfigurationResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetGatewayConfiguration not implemented") +var ( + file_lorawan_stack_api_gateway_configuration_proto_rawDescOnce sync.Once + file_lorawan_stack_api_gateway_configuration_proto_rawDescData = file_lorawan_stack_api_gateway_configuration_proto_rawDesc +) + +func file_lorawan_stack_api_gateway_configuration_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_gateway_configuration_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_gateway_configuration_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_gateway_configuration_proto_rawDescData) + }) + return file_lorawan_stack_api_gateway_configuration_proto_rawDescData } -func RegisterGatewayConfigurationServiceServer(s *grpc.Server, srv GatewayConfigurationServiceServer) { - s.RegisterService(&_GatewayConfigurationService_serviceDesc, srv) +var file_lorawan_stack_api_gateway_configuration_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_lorawan_stack_api_gateway_configuration_proto_goTypes = []interface{}{ + (*GetGatewayConfigurationRequest)(nil), // 0: ttn.lorawan.v3.GetGatewayConfigurationRequest + (*GetGatewayConfigurationResponse)(nil), // 1: ttn.lorawan.v3.GetGatewayConfigurationResponse + (*GatewayIdentifiers)(nil), // 2: ttn.lorawan.v3.GatewayIdentifiers +} +var file_lorawan_stack_api_gateway_configuration_proto_depIdxs = []int32{ + 2, // 0: ttn.lorawan.v3.GetGatewayConfigurationRequest.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 0, // 1: ttn.lorawan.v3.GatewayConfigurationService.GetGatewayConfiguration:input_type -> ttn.lorawan.v3.GetGatewayConfigurationRequest + 1, // 2: ttn.lorawan.v3.GatewayConfigurationService.GetGatewayConfiguration:output_type -> ttn.lorawan.v3.GetGatewayConfigurationResponse + 2, // [2:3] is the sub-list for method output_type + 1, // [1:2] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name } -func _GatewayConfigurationService_GetGatewayConfiguration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetGatewayConfigurationRequest) - if err := dec(in); err != nil { - return nil, err +func init() { file_lorawan_stack_api_gateway_configuration_proto_init() } +func file_lorawan_stack_api_gateway_configuration_proto_init() { + if File_lorawan_stack_api_gateway_configuration_proto != nil { + return } - if interceptor == nil { - return srv.(GatewayConfigurationServiceServer).GetGatewayConfiguration(ctx, in) + file_lorawan_stack_api_identifiers_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_gateway_configuration_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetGatewayConfigurationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gateway_configuration_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetGatewayConfigurationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayConfigurationService/GetGatewayConfiguration", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayConfigurationServiceServer).GetGatewayConfiguration(ctx, req.(*GetGatewayConfigurationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _GatewayConfigurationService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.GatewayConfigurationService", - HandlerType: (*GatewayConfigurationServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetGatewayConfiguration", - Handler: _GatewayConfigurationService_GetGatewayConfiguration_Handler, + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_gateway_configuration_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/gateway_configuration.proto", + GoTypes: file_lorawan_stack_api_gateway_configuration_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_gateway_configuration_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_gateway_configuration_proto_msgTypes, + }.Build() + File_lorawan_stack_api_gateway_configuration_proto = out.File + file_lorawan_stack_api_gateway_configuration_proto_rawDesc = nil + file_lorawan_stack_api_gateway_configuration_proto_goTypes = nil + file_lorawan_stack_api_gateway_configuration_proto_depIdxs = nil } diff --git a/pkg/ttnpb/gateway_configuration.pb.gw.go b/pkg/ttnpb/gateway_configuration.pb.gw.go index 136fa02830..f5449bfd75 100644 --- a/pkg/ttnpb/gateway_configuration.pb.gw.go +++ b/pkg/ttnpb/gateway_configuration.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join var ( @@ -54,7 +52,6 @@ func request_GatewayConfigurationService_GetGatewayConfiguration_0(ctx context.C } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -65,7 +62,6 @@ func request_GatewayConfigurationService_GetGatewayConfiguration_0(ctx context.C } protoReq.Format, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "format", err) } @@ -76,7 +72,6 @@ func request_GatewayConfigurationService_GetGatewayConfiguration_0(ctx context.C } protoReq.Filename, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "filename", err) } @@ -110,7 +105,6 @@ func local_request_GatewayConfigurationService_GetGatewayConfiguration_0(ctx con } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -121,7 +115,6 @@ func local_request_GatewayConfigurationService_GetGatewayConfiguration_0(ctx con } protoReq.Format, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "format", err) } @@ -132,7 +125,6 @@ func local_request_GatewayConfigurationService_GetGatewayConfiguration_0(ctx con } protoReq.Filename, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "filename", err) } @@ -170,7 +162,6 @@ func request_GatewayConfigurationService_GetGatewayConfiguration_1(ctx context.C } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -181,7 +172,6 @@ func request_GatewayConfigurationService_GetGatewayConfiguration_1(ctx context.C } protoReq.Format, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "format", err) } @@ -192,7 +182,6 @@ func request_GatewayConfigurationService_GetGatewayConfiguration_1(ctx context.C } protoReq.Type, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "type", err) } @@ -203,7 +192,6 @@ func request_GatewayConfigurationService_GetGatewayConfiguration_1(ctx context.C } protoReq.Filename, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "filename", err) } @@ -237,7 +225,6 @@ func local_request_GatewayConfigurationService_GetGatewayConfiguration_1(ctx con } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -248,7 +235,6 @@ func local_request_GatewayConfigurationService_GetGatewayConfiguration_1(ctx con } protoReq.Format, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "format", err) } @@ -259,7 +245,6 @@ func local_request_GatewayConfigurationService_GetGatewayConfiguration_1(ctx con } protoReq.Type, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "type", err) } @@ -270,7 +255,6 @@ func local_request_GatewayConfigurationService_GetGatewayConfiguration_1(ctx con } protoReq.Filename, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "filename", err) } @@ -299,20 +283,22 @@ func RegisterGatewayConfigurationServiceHandlerServer(ctx context.Context, mux * var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayConfigurationService/GetGatewayConfiguration", runtime.WithHTTPPathPattern("/gcs/gateways/configuration/{gateway_ids.gateway_id}/{format}/{filename}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayConfigurationService_GetGatewayConfiguration_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayConfigurationService_GetGatewayConfiguration_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayConfigurationService_GetGatewayConfiguration_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayConfigurationService_GetGatewayConfiguration_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -322,20 +308,22 @@ func RegisterGatewayConfigurationServiceHandlerServer(ctx context.Context, mux * var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayConfigurationService/GetGatewayConfiguration", runtime.WithHTTPPathPattern("/gcs/gateways/configuration/{gateway_ids.gateway_id}/{format}/{type}/{filename}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayConfigurationService_GetGatewayConfiguration_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayConfigurationService_GetGatewayConfiguration_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayConfigurationService_GetGatewayConfiguration_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayConfigurationService_GetGatewayConfiguration_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -384,19 +372,21 @@ func RegisterGatewayConfigurationServiceHandlerClient(ctx context.Context, mux * ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayConfigurationService/GetGatewayConfiguration", runtime.WithHTTPPathPattern("/gcs/gateways/configuration/{gateway_ids.gateway_id}/{format}/{filename}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayConfigurationService_GetGatewayConfiguration_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayConfigurationService_GetGatewayConfiguration_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayConfigurationService_GetGatewayConfiguration_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayConfigurationService_GetGatewayConfiguration_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -404,19 +394,21 @@ func RegisterGatewayConfigurationServiceHandlerClient(ctx context.Context, mux * ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayConfigurationService/GetGatewayConfiguration", runtime.WithHTTPPathPattern("/gcs/gateways/configuration/{gateway_ids.gateway_id}/{format}/{type}/{filename}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayConfigurationService_GetGatewayConfiguration_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayConfigurationService_GetGatewayConfiguration_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayConfigurationService_GetGatewayConfiguration_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayConfigurationService_GetGatewayConfiguration_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -424,9 +416,9 @@ func RegisterGatewayConfigurationServiceHandlerClient(ctx context.Context, mux * } var ( - pattern_GatewayConfigurationService_GetGatewayConfiguration_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"gcs", "gateways", "configuration", "gateway_ids.gateway_id", "format", "filename"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayConfigurationService_GetGatewayConfiguration_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"gcs", "gateways", "configuration", "gateway_ids.gateway_id", "format", "filename"}, "")) - pattern_GatewayConfigurationService_GetGatewayConfiguration_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"gcs", "gateways", "configuration", "gateway_ids.gateway_id", "format", "type", "filename"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayConfigurationService_GetGatewayConfiguration_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"gcs", "gateways", "configuration", "gateway_ids.gateway_id", "format", "type", "filename"}, "")) ) var ( diff --git a/pkg/ttnpb/gateway_configuration.pb.validate.go b/pkg/ttnpb/gateway_configuration.pb.validate.go index 27ecf5b745..7f49fa2e29 100644 --- a/pkg/ttnpb/gateway_configuration.pb.validate.go +++ b/pkg/ttnpb/gateway_configuration.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _gateway_configuration_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on GetGatewayConfigurationRequest // with the rules defined in the proto definition for this message. If any // rules are violated, an error is returned. diff --git a/pkg/ttnpb/gateway_configuration_grpc.pb.go b/pkg/ttnpb/gateway_configuration_grpc.pb.go new file mode 100644 index 0000000000..559215dbc2 --- /dev/null +++ b/pkg/ttnpb/gateway_configuration_grpc.pb.go @@ -0,0 +1,106 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/gateway_configuration.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// GatewayConfigurationServiceClient is the client API for GatewayConfigurationService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type GatewayConfigurationServiceClient interface { + GetGatewayConfiguration(ctx context.Context, in *GetGatewayConfigurationRequest, opts ...grpc.CallOption) (*GetGatewayConfigurationResponse, error) +} + +type gatewayConfigurationServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewGatewayConfigurationServiceClient(cc grpc.ClientConnInterface) GatewayConfigurationServiceClient { + return &gatewayConfigurationServiceClient{cc} +} + +func (c *gatewayConfigurationServiceClient) GetGatewayConfiguration(ctx context.Context, in *GetGatewayConfigurationRequest, opts ...grpc.CallOption) (*GetGatewayConfigurationResponse, error) { + out := new(GetGatewayConfigurationResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayConfigurationService/GetGatewayConfiguration", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// GatewayConfigurationServiceServer is the server API for GatewayConfigurationService service. +// All implementations must embed UnimplementedGatewayConfigurationServiceServer +// for forward compatibility +type GatewayConfigurationServiceServer interface { + GetGatewayConfiguration(context.Context, *GetGatewayConfigurationRequest) (*GetGatewayConfigurationResponse, error) + mustEmbedUnimplementedGatewayConfigurationServiceServer() +} + +// UnimplementedGatewayConfigurationServiceServer must be embedded to have forward compatible implementations. +type UnimplementedGatewayConfigurationServiceServer struct { +} + +func (UnimplementedGatewayConfigurationServiceServer) GetGatewayConfiguration(context.Context, *GetGatewayConfigurationRequest) (*GetGatewayConfigurationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetGatewayConfiguration not implemented") +} +func (UnimplementedGatewayConfigurationServiceServer) mustEmbedUnimplementedGatewayConfigurationServiceServer() { +} + +// UnsafeGatewayConfigurationServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to GatewayConfigurationServiceServer will +// result in compilation errors. +type UnsafeGatewayConfigurationServiceServer interface { + mustEmbedUnimplementedGatewayConfigurationServiceServer() +} + +func RegisterGatewayConfigurationServiceServer(s grpc.ServiceRegistrar, srv GatewayConfigurationServiceServer) { + s.RegisterService(&GatewayConfigurationService_ServiceDesc, srv) +} + +func _GatewayConfigurationService_GetGatewayConfiguration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetGatewayConfigurationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayConfigurationServiceServer).GetGatewayConfiguration(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayConfigurationService/GetGatewayConfiguration", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayConfigurationServiceServer).GetGatewayConfiguration(ctx, req.(*GetGatewayConfigurationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// GatewayConfigurationService_ServiceDesc is the grpc.ServiceDesc for GatewayConfigurationService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var GatewayConfigurationService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.GatewayConfigurationService", + HandlerType: (*GatewayConfigurationServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetGatewayConfiguration", + Handler: _GatewayConfigurationService_GetGatewayConfiguration_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/gateway_configuration.proto", +} diff --git a/pkg/ttnpb/gateway_configuration_json.pb.go b/pkg/ttnpb/gateway_configuration_json.pb.go index 0cf2ef2667..cf665c307f 100644 --- a/pkg/ttnpb/gateway_configuration_json.pb.go +++ b/pkg/ttnpb/gateway_configuration_json.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/gateway_configuration.proto package ttnpb diff --git a/pkg/ttnpb/gateway_flags.pb.go b/pkg/ttnpb/gateway_flags.pb.go index 0df8bd8d59..f9021332bc 100644 --- a/pkg/ttnpb/gateway_flags.pb.go +++ b/pkg/ttnpb/gateway_flags.pb.go @@ -1,14 +1,14 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/gateway.proto package ttnpb import ( flagsplugin "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - gogo "github.com/TheThingsIndustries/protoc-gen-go-flags/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-flags/golang" pflag "github.com/spf13/pflag" ) @@ -137,13 +137,13 @@ func (m *GatewayClaimAuthenticationCode) SetFromFlags(flags *pflag.FlagSet, pref if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("valid_from", prefix)); err != nil { return nil, err } else if changed { - m.ValidFrom = gogo.SetTimestamp(val) + m.ValidFrom = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("valid_from", prefix)) } if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("valid_to", prefix)); err != nil { return nil, err } else if changed { - m.ValidTo = gogo.SetTimestamp(val) + m.ValidTo = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("valid_to", prefix)) } return paths, nil @@ -560,7 +560,7 @@ func (m *Gateway) SetFromFlags(flags *pflag.FlagSet, prefix string) (paths []str if val, changed, err := flagsplugin.GetDuration(flags, flagsplugin.Prefix("schedule_anytime_delay", prefix)); err != nil { return nil, err } else if changed { - m.ScheduleAnytimeDelay = gogo.SetDuration(val) + m.ScheduleAnytimeDelay = golang.SetDuration(val) paths = append(paths, flagsplugin.Prefix("schedule_anytime_delay", prefix)) } if val, changed, err := flagsplugin.GetBool(flags, flagsplugin.Prefix("update_location_from_status", prefix)); err != nil { @@ -655,7 +655,7 @@ func (m *ListGatewaysRequest) SetFromFlags(flags *pflag.FlagSet, prefix string) if val, changed, err := flagsplugin.GetStringSlice(flags, flagsplugin.Prefix("field_mask", prefix)); err != nil { return nil, err } else if changed { - m.FieldMask = gogo.SetFieldMask(val) + m.FieldMask = golang.SetFieldMask(val) paths = append(paths, flagsplugin.Prefix("field_mask", prefix)) } if val, changed, err := flagsplugin.GetString(flags, flagsplugin.Prefix("order", prefix)); err != nil { diff --git a/pkg/ttnpb/gateway_json.pb.go b/pkg/ttnpb/gateway_json.pb.go index 5f0413b3c6..a1b98f520c 100644 --- a/pkg/ttnpb/gateway_json.pb.go +++ b/pkg/ttnpb/gateway_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/gateway.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" types "go.thethings.network/lorawan-stack/v3/pkg/types" ) @@ -76,7 +76,7 @@ func (x *Gateway) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.CreatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.CreatedAt) + golang.MarshalTimestamp(s, x.CreatedAt) } } if x.UpdatedAt != nil || s.HasField("updated_at") { @@ -85,7 +85,7 @@ func (x *Gateway) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.UpdatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.UpdatedAt) + golang.MarshalTimestamp(s, x.UpdatedAt) } } if x.DeletedAt != nil || s.HasField("deleted_at") { @@ -94,7 +94,7 @@ func (x *Gateway) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.DeletedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.DeletedAt) + golang.MarshalTimestamp(s, x.DeletedAt) } } if x.Name != "" || s.HasField("name") { @@ -134,19 +134,19 @@ func (x *Gateway) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("administrative_contact") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.AdministrativeContact) + golang.MarshalMessage(s, x.AdministrativeContact) } if x.TechnicalContact != nil || s.HasField("technical_contact") { s.WriteMoreIf(&wroteField) s.WriteObjectField("technical_contact") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.TechnicalContact) + golang.MarshalMessage(s, x.TechnicalContact) } if x.VersionIds != nil || s.HasField("version_ids") { s.WriteMoreIf(&wroteField) s.WriteObjectField("version_ids") // NOTE: GatewayVersionIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.VersionIds) + golang.MarshalMessage(s, x.VersionIds) } if x.GatewayServerAddress != "" || s.HasField("gateway_server_address") { s.WriteMoreIf(&wroteField) @@ -215,7 +215,7 @@ func (x *Gateway) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ScheduleAnytimeDelay == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.ScheduleAnytimeDelay) + golang.MarshalDuration(s, x.ScheduleAnytimeDelay) } } if x.UpdateLocationFromStatus || s.HasField("update_location_from_status") { @@ -227,13 +227,13 @@ func (x *Gateway) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("lbs_lns_secret") // NOTE: Secret does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.LbsLnsSecret) + golang.MarshalMessage(s, x.LbsLnsSecret) } if x.ClaimAuthenticationCode != nil || s.HasField("claim_authentication_code") { s.WriteMoreIf(&wroteField) s.WriteObjectField("claim_authentication_code") // NOTE: GatewayClaimAuthenticationCode does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ClaimAuthenticationCode) + golang.MarshalMessage(s, x.ClaimAuthenticationCode) } if x.TargetCupsUri != "" || s.HasField("target_cups_uri") { s.WriteMoreIf(&wroteField) @@ -244,7 +244,7 @@ func (x *Gateway) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("target_cups_key") // NOTE: Secret does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.TargetCupsKey) + golang.MarshalMessage(s, x.TargetCupsKey) } if x.RequireAuthenticatedConnection || s.HasField("require_authenticated_connection") { s.WriteMoreIf(&wroteField) @@ -255,7 +255,7 @@ func (x *Gateway) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("lrfhss") // NOTE: Gateway_LRFHSS does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Lrfhss) + golang.MarshalMessage(s, x.Lrfhss) } if x.DisablePacketBrokerForwarding || s.HasField("disable_packet_broker_forwarding") { s.WriteMoreIf(&wroteField) @@ -292,7 +292,7 @@ func (x *Gateway) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.CreatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -303,7 +303,7 @@ func (x *Gateway) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.UpdatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -314,7 +314,7 @@ func (x *Gateway) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.DeletedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -361,7 +361,7 @@ func (x *Gateway) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.AdministrativeContact = &v case "technical_contact", "technicalContact": s.AddField("technical_contact") @@ -371,7 +371,7 @@ func (x *Gateway) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.TechnicalContact = &v case "version_ids", "versionIds": s.AddField("version_ids") @@ -381,7 +381,7 @@ func (x *Gateway) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: GatewayVersionIdentifiers does not seem to implement UnmarshalProtoJSON. var v GatewayVersionIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.VersionIds = &v case "gateway_server_address", "gatewayServerAddress": s.AddField("gateway_server_address") @@ -441,7 +441,7 @@ func (x *Gateway) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ScheduleAnytimeDelay = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -457,7 +457,7 @@ func (x *Gateway) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: Secret does not seem to implement UnmarshalProtoJSON. var v Secret - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.LbsLnsSecret = &v case "claim_authentication_code", "claimAuthenticationCode": s.AddField("claim_authentication_code") @@ -467,7 +467,7 @@ func (x *Gateway) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: GatewayClaimAuthenticationCode does not seem to implement UnmarshalProtoJSON. var v GatewayClaimAuthenticationCode - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ClaimAuthenticationCode = &v case "target_cups_uri", "targetCupsUri": s.AddField("target_cups_uri") @@ -480,7 +480,7 @@ func (x *Gateway) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: Secret does not seem to implement UnmarshalProtoJSON. var v Secret - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.TargetCupsKey = &v case "require_authenticated_connection", "requireAuthenticatedConnection": s.AddField("require_authenticated_connection") @@ -493,7 +493,7 @@ func (x *Gateway) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: Gateway_LRFHSS does not seem to implement UnmarshalProtoJSON. var v Gateway_LRFHSS - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Lrfhss = &v case "disable_packet_broker_forwarding", "disablePacketBrokerForwarding": s.AddField("disable_packet_broker_forwarding") @@ -589,7 +589,7 @@ func (x *GetGatewayRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -622,7 +622,7 @@ func (x *GetGatewayRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -678,6 +678,108 @@ func (x *GetGatewayIdentifiersForEUIRequest) UnmarshalJSON(b []byte) error { return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) } +// MarshalProtoJSON marshals the ListGatewaysRequest message to JSON. +func (x *ListGatewaysRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Collaborator != nil || s.HasField("collaborator") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("collaborator") + // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.Collaborator) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + if x.Order != "" || s.HasField("order") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("order") + s.WriteString(x.Order) + } + if x.Limit != 0 || s.HasField("limit") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("limit") + s.WriteUint32(x.Limit) + } + if x.Page != 0 || s.HasField("page") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("page") + s.WriteUint32(x.Page) + } + if x.Deleted || s.HasField("deleted") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("deleted") + s.WriteBool(x.Deleted) + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the ListGatewaysRequest to JSON. +func (x *ListGatewaysRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the ListGatewaysRequest message from JSON. +func (x *ListGatewaysRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "collaborator": + s.AddField("collaborator") + if s.ReadNil() { + x.Collaborator = nil + return + } + // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. + var v OrganizationOrUserIdentifiers + golang.UnmarshalMessage(s, &v) + x.Collaborator = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + case "order": + s.AddField("order") + x.Order = s.ReadString() + case "limit": + s.AddField("limit") + x.Limit = s.ReadUint32() + case "page": + s.AddField("page") + x.Page = s.ReadUint32() + case "deleted": + s.AddField("deleted") + x.Deleted = s.ReadBool() + } + }) +} + +// UnmarshalJSON unmarshals the ListGatewaysRequest from JSON. +func (x *ListGatewaysRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + // MarshalProtoJSON marshals the CreateGatewayRequest message to JSON. func (x *CreateGatewayRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x == nil { @@ -695,7 +797,7 @@ func (x *CreateGatewayRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("collaborator") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Collaborator) + golang.MarshalMessage(s, x.Collaborator) } s.WriteObjectEnd() } @@ -729,7 +831,7 @@ func (x *CreateGatewayRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Collaborator = &v } }) @@ -759,7 +861,7 @@ func (x *UpdateGatewayRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -792,7 +894,7 @@ func (x *UpdateGatewayRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -965,7 +1067,7 @@ func (x *CreateGatewayAPIKeyRequest) MarshalProtoJSON(s *jsonplugin.MarshalState if x.ExpiresAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ExpiresAt) + golang.MarshalTimestamp(s, x.ExpiresAt) } } s.WriteObjectEnd() @@ -1012,7 +1114,7 @@ func (x *CreateGatewayAPIKeyRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalS x.ExpiresAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -1050,7 +1152,7 @@ func (x *UpdateGatewayAPIKeyRequest) MarshalProtoJSON(s *jsonplugin.MarshalState if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -1090,7 +1192,7 @@ func (x *UpdateGatewayAPIKeyRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalS x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -1191,7 +1293,7 @@ func (x *GetGatewayCollaboratorRequest) MarshalProtoJSON(s *jsonplugin.MarshalSt s.WriteMoreIf(&wroteField) s.WriteObjectField("collaborator") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Collaborator) + golang.MarshalMessage(s, x.Collaborator) } s.WriteObjectEnd() } @@ -1225,7 +1327,7 @@ func (x *GetGatewayCollaboratorRequest) UnmarshalProtoJSON(s *jsonplugin.Unmarsh } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Collaborator = &v } }) @@ -1392,7 +1494,7 @@ func (x *GatewayStatus) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.Time == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.Time) + golang.MarshalTimestamp(s, x.Time) } } if x.BootTime != nil || s.HasField("boot_time") { @@ -1401,7 +1503,7 @@ func (x *GatewayStatus) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.BootTime == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.BootTime) + golang.MarshalTimestamp(s, x.BootTime) } } if x.Versions != nil || s.HasField("versions") { @@ -1450,7 +1552,7 @@ func (x *GatewayStatus) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.Advanced == nil { s.WriteNil() } else { - gogo.MarshalStruct(s, x.Advanced) + golang.MarshalStruct(s, x.Advanced) } } s.WriteObjectEnd() @@ -1476,7 +1578,7 @@ func (x *GatewayStatus) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.Time = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -1487,7 +1589,7 @@ func (x *GatewayStatus) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.BootTime = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -1543,7 +1645,7 @@ func (x *GatewayStatus) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.Advanced = nil return } - v := gogo.UnmarshalStruct(s) + v := golang.UnmarshalStruct(s) if s.Err() != nil { return } @@ -1571,7 +1673,7 @@ func (x *GatewayConnectionStats) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ConnectedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ConnectedAt) + golang.MarshalTimestamp(s, x.ConnectedAt) } } if x.DisconnectedAt != nil || s.HasField("disconnected_at") { @@ -1580,7 +1682,7 @@ func (x *GatewayConnectionStats) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.DisconnectedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.DisconnectedAt) + golang.MarshalTimestamp(s, x.DisconnectedAt) } } if x.Protocol != "" || s.HasField("protocol") { @@ -1594,7 +1696,7 @@ func (x *GatewayConnectionStats) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.LastStatusReceivedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.LastStatusReceivedAt) + golang.MarshalTimestamp(s, x.LastStatusReceivedAt) } } if x.LastStatus != nil || s.HasField("last_status") { @@ -1608,7 +1710,7 @@ func (x *GatewayConnectionStats) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.LastUplinkReceivedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.LastUplinkReceivedAt) + golang.MarshalTimestamp(s, x.LastUplinkReceivedAt) } } if x.UplinkCount != 0 || s.HasField("uplink_count") { @@ -1622,7 +1724,7 @@ func (x *GatewayConnectionStats) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.LastDownlinkReceivedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.LastDownlinkReceivedAt) + golang.MarshalTimestamp(s, x.LastDownlinkReceivedAt) } } if x.DownlinkCount != 0 || s.HasField("downlink_count") { @@ -1634,7 +1736,7 @@ func (x *GatewayConnectionStats) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("round_trip_times") // NOTE: GatewayConnectionStats_RoundTripTimes does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.RoundTripTimes) + golang.MarshalMessage(s, x.RoundTripTimes) } if len(x.SubBands) > 0 || s.HasField("sub_bands") { s.WriteMoreIf(&wroteField) @@ -1644,7 +1746,7 @@ func (x *GatewayConnectionStats) MarshalProtoJSON(s *jsonplugin.MarshalState) { for _, element := range x.SubBands { s.WriteMoreIf(&wroteElement) // NOTE: GatewayConnectionStats_SubBand does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, element) + golang.MarshalMessage(s, element) } s.WriteArrayEnd() } @@ -1652,7 +1754,7 @@ func (x *GatewayConnectionStats) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("gateway_remote_address") // NOTE: GatewayRemoteAddress does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.GatewayRemoteAddress) + golang.MarshalMessage(s, x.GatewayRemoteAddress) } s.WriteObjectEnd() } @@ -1677,7 +1779,7 @@ func (x *GatewayConnectionStats) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState x.ConnectedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -1688,7 +1790,7 @@ func (x *GatewayConnectionStats) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState x.DisconnectedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -1702,7 +1804,7 @@ func (x *GatewayConnectionStats) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState x.LastStatusReceivedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -1720,7 +1822,7 @@ func (x *GatewayConnectionStats) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState x.LastUplinkReceivedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -1734,7 +1836,7 @@ func (x *GatewayConnectionStats) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState x.LastDownlinkReceivedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -1750,7 +1852,7 @@ func (x *GatewayConnectionStats) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState } // NOTE: GatewayConnectionStats_RoundTripTimes does not seem to implement UnmarshalProtoJSON. var v GatewayConnectionStats_RoundTripTimes - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.RoundTripTimes = &v case "sub_bands", "subBands": s.AddField("sub_bands") @@ -1761,7 +1863,7 @@ func (x *GatewayConnectionStats) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState s.ReadArray(func() { // NOTE: GatewayConnectionStats_SubBand does not seem to implement UnmarshalProtoJSON. var v GatewayConnectionStats_SubBand - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.SubBands = append(x.SubBands, &v) }) case "gateway_remote_address", "gatewayRemoteAddress": @@ -1772,7 +1874,7 @@ func (x *GatewayConnectionStats) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState } // NOTE: GatewayRemoteAddress does not seem to implement UnmarshalProtoJSON. var v GatewayRemoteAddress - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.GatewayRemoteAddress = &v } }) diff --git a/pkg/ttnpb/gateway_services.pb.go b/pkg/ttnpb/gateway_services.pb.go index c7c7349d3c..73f37c085b 100644 --- a/pkg/ttnpb/gateway_services.pb.go +++ b/pkg/ttnpb/gateway_services.pb.go @@ -1,974 +1,417 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/gateway_services.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type PullGatewayConfigurationRequest struct { - GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *PullGatewayConfigurationRequest) Reset() { *m = PullGatewayConfigurationRequest{} } -func (m *PullGatewayConfigurationRequest) String() string { return proto.CompactTextString(m) } -func (*PullGatewayConfigurationRequest) ProtoMessage() {} -func (*PullGatewayConfigurationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_72fc70018c9e7608, []int{0} -} -func (m *PullGatewayConfigurationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PullGatewayConfigurationRequest.Unmarshal(m, b) -} -func (m *PullGatewayConfigurationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PullGatewayConfigurationRequest.Marshal(b, m, deterministic) -} -func (m *PullGatewayConfigurationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_PullGatewayConfigurationRequest.Merge(m, src) -} -func (m *PullGatewayConfigurationRequest) XXX_Size() int { - return xxx_messageInfo_PullGatewayConfigurationRequest.Size(m) -} -func (m *PullGatewayConfigurationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_PullGatewayConfigurationRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_PullGatewayConfigurationRequest proto.InternalMessageInfo - -func (m *PullGatewayConfigurationRequest) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds - } - return nil -} - -func (m *PullGatewayConfigurationRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask - } - return nil -} - -func init() { - proto.RegisterType((*PullGatewayConfigurationRequest)(nil), "ttn.lorawan.v3.PullGatewayConfigurationRequest") - golang_proto.RegisterType((*PullGatewayConfigurationRequest)(nil), "ttn.lorawan.v3.PullGatewayConfigurationRequest") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/gateway_services.proto", fileDescriptor_72fc70018c9e7608) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/gateway_services.proto", fileDescriptor_72fc70018c9e7608) -} - -var fileDescriptor_72fc70018c9e7608 = []byte{ - // 929 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xd6, 0x04, 0x08, 0x64, 0x52, 0x88, 0xfa, 0x40, 0x25, 0x5a, 0x5a, 0x27, 0x6c, 0x03, 0x2d, - 0x46, 0xde, 0x09, 0x0e, 0xad, 0xca, 0xaf, 0x43, 0x31, 0xad, 0x15, 0x51, 0xa4, 0xc8, 0xa5, 0x1c, - 0x7c, 0x89, 0xd6, 0xf6, 0x78, 0x33, 0xda, 0xf5, 0xce, 0x32, 0x33, 0x76, 0x14, 0xa2, 0x5c, 0x7a, - 0x40, 0x2a, 0x27, 0x24, 0x84, 0x38, 0x71, 0xe0, 0x6f, 0xe0, 0xc8, 0x85, 0x23, 0x37, 0x0e, 0xbd, - 0xc0, 0x19, 0xfe, 0x10, 0xb4, 0x33, 0xbb, 0xc9, 0xda, 0xeb, 0xb5, 0x77, 0x55, 0x6e, 0xb3, 0x33, - 0xdf, 0xbc, 0xf7, 0xbd, 0x5f, 0xdf, 0x0e, 0xbe, 0x19, 0x70, 0xe1, 0x1e, 0xbb, 0x61, 0x43, 0x2a, - 0xb7, 0xef, 0x13, 0x37, 0x62, 0xc4, 0x73, 0x15, 0x3d, 0x76, 0x4f, 0x0e, 0x25, 0x15, 0x13, 0xd6, - 0xa7, 0xd2, 0x89, 0x04, 0x57, 0x1c, 0x5e, 0x51, 0x2a, 0x74, 0x12, 0xb4, 0x33, 0xd9, 0xb3, 0x1a, - 0x1e, 0x53, 0x47, 0xe3, 0x9e, 0xd3, 0xe7, 0x23, 0xe2, 0x71, 0x8f, 0x13, 0x0d, 0xeb, 0x8d, 0x87, - 0xfa, 0x4b, 0x7f, 0xe8, 0x95, 0xb9, 0x6e, 0x5d, 0xf5, 0x38, 0xf7, 0x02, 0xaa, 0x3d, 0xb8, 0x61, - 0xc8, 0x95, 0xab, 0x18, 0x0f, 0x13, 0xe3, 0xd6, 0x1b, 0xc9, 0xe9, 0xb9, 0x0d, 0x3a, 0x8a, 0xd4, - 0x49, 0x72, 0xb8, 0x3d, 0x7b, 0x38, 0x64, 0x34, 0x18, 0x1c, 0x8e, 0x5c, 0xe9, 0x27, 0x88, 0xad, - 0xc2, 0x28, 0x12, 0xc0, 0xf5, 0x3c, 0x80, 0x0d, 0x68, 0xa8, 0xd8, 0x90, 0x51, 0x91, 0x92, 0xa8, - 0xe5, 0x41, 0x82, 0x79, 0x47, 0x2a, 0x39, 0xb7, 0x7f, 0x41, 0x78, 0xeb, 0x60, 0x1c, 0x04, 0x6d, - 0x63, 0xba, 0xc5, 0xc3, 0x21, 0xf3, 0xc6, 0x42, 0x07, 0xd2, 0xa1, 0x5f, 0x8f, 0xa9, 0x54, 0xd0, - 0xc2, 0xeb, 0x69, 0xfe, 0xd8, 0x40, 0x6e, 0xa2, 0x6d, 0x74, 0x73, 0xbd, 0x69, 0x3b, 0xd3, 0xb9, - 0x73, 0x12, 0x0b, 0xfb, 0x17, 0x14, 0x3a, 0xd8, 0x4b, 0xf7, 0x24, 0x7c, 0x80, 0xf1, 0x45, 0x88, - 0x9b, 0x2b, 0xda, 0x86, 0xe5, 0x98, 0x2c, 0x38, 0x69, 0x16, 0x9c, 0xfb, 0x31, 0xe4, 0x0b, 0x57, - 0xfa, 0x9d, 0xb5, 0x61, 0xba, 0x6c, 0xfe, 0xfd, 0x12, 0xde, 0x48, 0xac, 0x77, 0xa8, 0xc7, 0xa4, - 0x12, 0x27, 0xf0, 0x14, 0xe1, 0xd5, 0x96, 0xa0, 0xae, 0xa2, 0xb0, 0x33, 0xcb, 0xc4, 0xec, 0x9f, - 0xdf, 0xd0, 0x41, 0x58, 0xaf, 0x17, 0xf0, 0xb5, 0x9f, 0xa0, 0xc7, 0x4f, 0xff, 0xfd, 0x61, 0xe5, - 0x31, 0xb2, 0x09, 0x19, 0x4b, 0x2a, 0x24, 0x39, 0xed, 0xf3, 0x20, 0x70, 0x7b, 0x5c, 0xb8, 0x8a, - 0x0b, 0x27, 0xde, 0x8b, 0xe3, 0x4e, 0x17, 0x67, 0x69, 0x19, 0xe4, 0x87, 0xa8, 0xde, 0x7d, 0x60, - 0xb7, 0x09, 0x17, 0x9e, 0x1b, 0xb2, 0x6f, 0x4c, 0xf1, 0x67, 0x6e, 0x67, 0xcf, 0xb4, 0x95, 0x99, - 0x8d, 0x29, 0x6b, 0x30, 0xc2, 0xcf, 0xb5, 0xa9, 0x82, 0x37, 0x73, 0x5c, 0xa9, 0x2a, 0x1b, 0x4e, - 0x5d, 0x47, 0xb3, 0x03, 0xf6, 0xb9, 0x61, 0x72, 0x9a, 0xa9, 0x9e, 0x73, 0xb1, 0x3e, 0x83, 0x10, - 0xbf, 0xd6, 0xa6, 0x2a, 0x53, 0xb1, 0xfb, 0x5c, 0xdc, 0x7b, 0xb4, 0x0f, 0xcd, 0x62, 0xff, 0x39, - 0x70, 0x4a, 0xa8, 0x44, 0x3f, 0xc0, 0x5f, 0x08, 0x3f, 0xff, 0x80, 0x49, 0x05, 0xd7, 0x67, 0xc1, - 0xf1, 0x6e, 0x72, 0x41, 0xa6, 0x16, 0x37, 0x0b, 0x2c, 0x4a, 0xfb, 0x7b, 0x53, 0xb2, 0x27, 0x08, - 0xd6, 0xce, 0xa3, 0xec, 0xbe, 0x07, 0x55, 0xeb, 0xd7, 0xdd, 0x87, 0xff, 0xab, 0x78, 0x30, 0xc1, - 0xab, 0x8f, 0xa2, 0xc1, 0xdc, 0x76, 0x34, 0xfb, 0x65, 0xeb, 0xd7, 0xd0, 0xa1, 0xdd, 0xb0, 0xe6, - 0xd4, 0xcf, 0x99, 0xa9, 0x5f, 0xdc, 0x31, 0x03, 0xbc, 0xfa, 0x19, 0x0d, 0xa8, 0xa2, 0x50, 0xa2, - 0x00, 0xd6, 0x95, 0xdc, 0xc0, 0xdd, 0x8b, 0x35, 0xc9, 0xae, 0x69, 0xa7, 0x9b, 0xf5, 0x2b, 0x73, - 0x9b, 0xe6, 0x0c, 0x46, 0xf8, 0xc5, 0x0e, 0x95, 0x8a, 0x8b, 0x67, 0x73, 0xf3, 0xb6, 0x76, 0xb3, - 0x6d, 0xd7, 0xe6, 0xbb, 0x21, 0x22, 0xf1, 0xc1, 0xf0, 0x0b, 0x07, 0x63, 0xe1, 0x3d, 0x9b, 0xb3, - 0x1d, 0xed, 0xac, 0x56, 0xbf, 0x5a, 0xe0, 0x2c, 0x8a, 0x3d, 0x34, 0x7f, 0xc5, 0xf8, 0xe5, 0xc4, - 0xe8, 0xdd, 0x7e, 0x9f, 0x4a, 0x09, 0x1c, 0xe3, 0xb8, 0x1b, 0x3b, 0x5a, 0x25, 0x4b, 0x32, 0x98, - 0xc1, 0x98, 0xbb, 0xf6, 0x5b, 0x9a, 0xc1, 0x16, 0x5c, 0x2b, 0x0a, 0xd7, 0xb8, 0xf8, 0x0e, 0xe1, - 0x4b, 0x46, 0xb2, 0xee, 0x1e, 0xec, 0x7f, 0x4e, 0x4f, 0xa0, 0xbe, 0x50, 0xd0, 0x0c, 0x28, 0xed, - 0xa3, 0x9c, 0x6f, 0x73, 0x6c, 0xdf, 0xd6, 0xbe, 0x77, 0xed, 0x77, 0x97, 0xcb, 0x40, 0xfc, 0x53, - 0x68, 0xf8, 0xd4, 0x28, 0xd0, 0xb7, 0x08, 0xaf, 0xc7, 0xe1, 0x1b, 0x33, 0x12, 0xde, 0x59, 0x30, - 0xa9, 0x09, 0xa6, 0xb0, 0xa5, 0x93, 0x73, 0x7b, 0x4f, 0x73, 0x69, 0x40, 0x15, 0x2e, 0x71, 0x56, - 0xd6, 0xda, 0x34, 0xe1, 0x01, 0x37, 0x8a, 0x15, 0xa9, 0x5c, 0x3e, 0x3e, 0xd6, 0x1c, 0x6e, 0xc3, - 0xfb, 0x15, 0x38, 0x90, 0x53, 0x9f, 0x9a, 0xfe, 0xff, 0x09, 0xe1, 0x4b, 0x66, 0x8c, 0x8b, 0x4a, - 0x34, 0x35, 0xe4, 0xe5, 0x28, 0xb5, 0x34, 0xa5, 0x4f, 0xac, 0x3b, 0x95, 0x28, 0xb9, 0x11, 0x3b, - 0xf4, 0x69, 0xac, 0x05, 0x7a, 0xfe, 0x7f, 0x5b, 0xc1, 0x1b, 0x6d, 0xaa, 0x5a, 0x19, 0xd9, 0x82, - 0x46, 0x71, 0xb2, 0xb2, 0xb8, 0x94, 0xdf, 0xbc, 0xdc, 0x4e, 0xe3, 0x64, 0xc4, 0x43, 0x49, 0xed, - 0x3f, 0x8d, 0xec, 0xfe, 0x81, 0xba, 0x5f, 0xc1, 0x97, 0x25, 0x48, 0x67, 0xb5, 0x54, 0x4b, 0xf3, - 0x32, 0x65, 0xee, 0x86, 0x10, 0x54, 0xb5, 0x9b, 0x95, 0xe4, 0xaa, 0xf2, 0x0d, 0x3f, 0x22, 0xbc, - 0xf1, 0x70, 0x59, 0xf6, 0x1e, 0x2e, 0xcc, 0x5e, 0x91, 0xfc, 0x7c, 0xa4, 0x73, 0x75, 0xcb, 0xda, - 0xad, 0x18, 0x90, 0x9e, 0xc2, 0x9f, 0x11, 0xbe, 0x1c, 0x0f, 0x5a, 0xd6, 0xa1, 0x04, 0xb2, 0x60, - 0x16, 0xa7, 0x90, 0x29, 0xb7, 0x6b, 0x39, 0x21, 0xc9, 0xa2, 0xec, 0x3b, 0x9a, 0x62, 0x13, 0x2a, - 0x53, 0x6c, 0x4e, 0xf0, 0xab, 0xb9, 0x07, 0x23, 0x17, 0x70, 0x88, 0x2f, 0xc7, 0x6f, 0xc9, 0xa9, - 0x47, 0x64, 0x9e, 0xf5, 0x92, 0xe7, 0x66, 0xe1, 0xaf, 0x71, 0x17, 0x7d, 0x7a, 0xeb, 0xf7, 0x7f, - 0x6a, 0xa8, 0x4b, 0x3c, 0xee, 0xa8, 0x23, 0xaa, 0x8e, 0x58, 0xe8, 0x49, 0x27, 0xa4, 0xea, 0x98, - 0x0b, 0x9f, 0x4c, 0x3f, 0x74, 0x27, 0x7b, 0x24, 0xf2, 0x3d, 0xa2, 0x54, 0x18, 0xf5, 0x7a, 0xab, - 0xba, 0x36, 0x7b, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x10, 0xee, 0x38, 0xfd, 0x19, 0x0c, 0x00, - 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// GatewayRegistryClient is the client API for GatewayRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type GatewayRegistryClient interface { - // Create a new gateway. This also sets the given organization or user as - // first collaborator with all possible rights. - Create(ctx context.Context, in *CreateGatewayRequest, opts ...grpc.CallOption) (*Gateway, error) - // Get the gateway with the given identifiers, selecting the fields specified - // in the field mask. - // More or less fields may be returned, depending on the rights of the caller. - Get(ctx context.Context, in *GetGatewayRequest, opts ...grpc.CallOption) (*Gateway, error) - // Get the identifiers of the gateway that has the given EUI registered. - GetIdentifiersForEUI(ctx context.Context, in *GetGatewayIdentifiersForEUIRequest, opts ...grpc.CallOption) (*GatewayIdentifiers, error) - // List gateways where the given user or organization is a direct collaborator. - // If no user or organization is given, this returns the gateways the caller - // has access to. - // Similar to Get, this selects the fields given by the field mask. - // More or less fields may be returned, depending on the rights of the caller. - List(ctx context.Context, in *ListGatewaysRequest, opts ...grpc.CallOption) (*Gateways, error) - // Update the gateway, changing the fields specified by the field mask to the provided values. - Update(ctx context.Context, in *UpdateGatewayRequest, opts ...grpc.CallOption) (*Gateway, error) - // Delete the gateway. This may not release the gateway ID for reuse, but it does release the EUI. - Delete(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) - // Restore a recently deleted gateway. This does not restore the EUI, - // as that was released when deleting the gateway. - // - // Deployment configuration may specify if, and for how long after deletion, - // entities can be restored. - Restore(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) - // Purge the gateway. This will release both gateway ID and EUI for reuse. - // The gateway owner is responsible for clearing data from any (external) integrations - // that may store and expose data by gateway ID. - Purge(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) -} - -type gatewayRegistryClient struct { - cc *grpc.ClientConn -} - -func NewGatewayRegistryClient(cc *grpc.ClientConn) GatewayRegistryClient { - return &gatewayRegistryClient{cc} -} - -func (c *gatewayRegistryClient) Create(ctx context.Context, in *CreateGatewayRequest, opts ...grpc.CallOption) (*Gateway, error) { - out := new(Gateway) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayRegistry/Create", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayRegistryClient) Get(ctx context.Context, in *GetGatewayRequest, opts ...grpc.CallOption) (*Gateway, error) { - out := new(Gateway) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayRegistry/Get", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayRegistryClient) GetIdentifiersForEUI(ctx context.Context, in *GetGatewayIdentifiersForEUIRequest, opts ...grpc.CallOption) (*GatewayIdentifiers, error) { - out := new(GatewayIdentifiers) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayRegistry/GetIdentifiersForEUI", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayRegistryClient) List(ctx context.Context, in *ListGatewaysRequest, opts ...grpc.CallOption) (*Gateways, error) { - out := new(Gateways) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayRegistry/List", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayRegistryClient) Update(ctx context.Context, in *UpdateGatewayRequest, opts ...grpc.CallOption) (*Gateway, error) { - out := new(Gateway) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayRegistry/Update", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayRegistryClient) Delete(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayRegistry/Delete", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayRegistryClient) Restore(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayRegistry/Restore", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayRegistryClient) Purge(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayRegistry/Purge", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// GatewayRegistryServer is the server API for GatewayRegistry service. -type GatewayRegistryServer interface { - // Create a new gateway. This also sets the given organization or user as - // first collaborator with all possible rights. - Create(context.Context, *CreateGatewayRequest) (*Gateway, error) - // Get the gateway with the given identifiers, selecting the fields specified - // in the field mask. - // More or less fields may be returned, depending on the rights of the caller. - Get(context.Context, *GetGatewayRequest) (*Gateway, error) - // Get the identifiers of the gateway that has the given EUI registered. - GetIdentifiersForEUI(context.Context, *GetGatewayIdentifiersForEUIRequest) (*GatewayIdentifiers, error) - // List gateways where the given user or organization is a direct collaborator. - // If no user or organization is given, this returns the gateways the caller - // has access to. - // Similar to Get, this selects the fields given by the field mask. - // More or less fields may be returned, depending on the rights of the caller. - List(context.Context, *ListGatewaysRequest) (*Gateways, error) - // Update the gateway, changing the fields specified by the field mask to the provided values. - Update(context.Context, *UpdateGatewayRequest) (*Gateway, error) - // Delete the gateway. This may not release the gateway ID for reuse, but it does release the EUI. - Delete(context.Context, *GatewayIdentifiers) (*types.Empty, error) - // Restore a recently deleted gateway. This does not restore the EUI, - // as that was released when deleting the gateway. - // - // Deployment configuration may specify if, and for how long after deletion, - // entities can be restored. - Restore(context.Context, *GatewayIdentifiers) (*types.Empty, error) - // Purge the gateway. This will release both gateway ID and EUI for reuse. - // The gateway owner is responsible for clearing data from any (external) integrations - // that may store and expose data by gateway ID. - Purge(context.Context, *GatewayIdentifiers) (*types.Empty, error) -} - -// UnimplementedGatewayRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedGatewayRegistryServer struct { -} - -func (*UnimplementedGatewayRegistryServer) Create(ctx context.Context, req *CreateGatewayRequest) (*Gateway, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (*UnimplementedGatewayRegistryServer) Get(ctx context.Context, req *GetGatewayRequest) (*Gateway, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") -} -func (*UnimplementedGatewayRegistryServer) GetIdentifiersForEUI(ctx context.Context, req *GetGatewayIdentifiersForEUIRequest) (*GatewayIdentifiers, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetIdentifiersForEUI not implemented") -} -func (*UnimplementedGatewayRegistryServer) List(ctx context.Context, req *ListGatewaysRequest) (*Gateways, error) { - return nil, status.Errorf(codes.Unimplemented, "method List not implemented") -} -func (*UnimplementedGatewayRegistryServer) Update(ctx context.Context, req *UpdateGatewayRequest) (*Gateway, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") -} -func (*UnimplementedGatewayRegistryServer) Delete(ctx context.Context, req *GatewayIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (*UnimplementedGatewayRegistryServer) Restore(ctx context.Context, req *GatewayIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Restore not implemented") -} -func (*UnimplementedGatewayRegistryServer) Purge(ctx context.Context, req *GatewayIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Purge not implemented") -} - -func RegisterGatewayRegistryServer(s *grpc.Server, srv GatewayRegistryServer) { - s.RegisterService(&_GatewayRegistry_serviceDesc, srv) -} - -func _GatewayRegistry_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateGatewayRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayRegistryServer).Create(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayRegistry/Create", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayRegistryServer).Create(ctx, req.(*CreateGatewayRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetGatewayRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayRegistryServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayRegistry/Get", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayRegistryServer).Get(ctx, req.(*GetGatewayRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayRegistry_GetIdentifiersForEUI_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetGatewayIdentifiersForEUIRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayRegistryServer).GetIdentifiersForEUI(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayRegistry/GetIdentifiersForEUI", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayRegistryServer).GetIdentifiersForEUI(ctx, req.(*GetGatewayIdentifiersForEUIRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListGatewaysRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayRegistryServer).List(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayRegistry/List", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayRegistryServer).List(ctx, req.(*ListGatewaysRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayRegistry_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateGatewayRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayRegistryServer).Update(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayRegistry/Update", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayRegistryServer).Update(ctx, req.(*UpdateGatewayRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GatewayIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayRegistryServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayRegistry/Delete", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayRegistryServer).Delete(ctx, req.(*GatewayIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayRegistry_Restore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GatewayIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayRegistryServer).Restore(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayRegistry/Restore", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayRegistryServer).Restore(ctx, req.(*GatewayIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayRegistry_Purge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GatewayIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayRegistryServer).Purge(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayRegistry/Purge", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayRegistryServer).Purge(ctx, req.(*GatewayIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -var _GatewayRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.GatewayRegistry", - HandlerType: (*GatewayRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Create", - Handler: _GatewayRegistry_Create_Handler, - }, - { - MethodName: "Get", - Handler: _GatewayRegistry_Get_Handler, - }, - { - MethodName: "GetIdentifiersForEUI", - Handler: _GatewayRegistry_GetIdentifiersForEUI_Handler, - }, - { - MethodName: "List", - Handler: _GatewayRegistry_List_Handler, - }, - { - MethodName: "Update", - Handler: _GatewayRegistry_Update_Handler, - }, - { - MethodName: "Delete", - Handler: _GatewayRegistry_Delete_Handler, - }, - { - MethodName: "Restore", - Handler: _GatewayRegistry_Restore_Handler, - }, - { - MethodName: "Purge", - Handler: _GatewayRegistry_Purge_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/gateway_services.proto", -} - -// GatewayAccessClient is the client API for GatewayAccess service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type GatewayAccessClient interface { - // List the rights the caller has on this gateway. - ListRights(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*Rights, error) - // Create an API key scoped to this gateway. - CreateAPIKey(ctx context.Context, in *CreateGatewayAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) - // List the API keys for this gateway. - ListAPIKeys(ctx context.Context, in *ListGatewayAPIKeysRequest, opts ...grpc.CallOption) (*APIKeys, error) - // Get a single API key of this gateway. - GetAPIKey(ctx context.Context, in *GetGatewayAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) - // Update the rights of an API key of the gateway. - // This method can also be used to delete the API key, by giving it no rights. - // The caller is required to have all assigned or/and removed rights. - UpdateAPIKey(ctx context.Context, in *UpdateGatewayAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) - // Get the rights of a collaborator (member) of the gateway. - // Pseudo-rights in the response (such as the "_ALL" right) are not expanded. - GetCollaborator(ctx context.Context, in *GetGatewayCollaboratorRequest, opts ...grpc.CallOption) (*GetCollaboratorResponse, error) - // Set the rights of a collaborator (member) on the gateway. - // This method can also be used to delete the collaborator, by giving them no rights. - // The caller is required to have all assigned or/and removed rights. - SetCollaborator(ctx context.Context, in *SetGatewayCollaboratorRequest, opts ...grpc.CallOption) (*types.Empty, error) - // List the collaborators on this gateway. - ListCollaborators(ctx context.Context, in *ListGatewayCollaboratorsRequest, opts ...grpc.CallOption) (*Collaborators, error) -} - -type gatewayAccessClient struct { - cc *grpc.ClientConn -} - -func NewGatewayAccessClient(cc *grpc.ClientConn) GatewayAccessClient { - return &gatewayAccessClient{cc} -} - -func (c *gatewayAccessClient) ListRights(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*Rights, error) { - out := new(Rights) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayAccess/ListRights", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayAccessClient) CreateAPIKey(ctx context.Context, in *CreateGatewayAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { - out := new(APIKey) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayAccess/CreateAPIKey", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayAccessClient) ListAPIKeys(ctx context.Context, in *ListGatewayAPIKeysRequest, opts ...grpc.CallOption) (*APIKeys, error) { - out := new(APIKeys) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayAccess/ListAPIKeys", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayAccessClient) GetAPIKey(ctx context.Context, in *GetGatewayAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { - out := new(APIKey) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayAccess/GetAPIKey", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayAccessClient) UpdateAPIKey(ctx context.Context, in *UpdateGatewayAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { - out := new(APIKey) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayAccess/UpdateAPIKey", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayAccessClient) GetCollaborator(ctx context.Context, in *GetGatewayCollaboratorRequest, opts ...grpc.CallOption) (*GetCollaboratorResponse, error) { - out := new(GetCollaboratorResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayAccess/GetCollaborator", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayAccessClient) SetCollaborator(ctx context.Context, in *SetGatewayCollaboratorRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayAccess/SetCollaborator", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayAccessClient) ListCollaborators(ctx context.Context, in *ListGatewayCollaboratorsRequest, opts ...grpc.CallOption) (*Collaborators, error) { - out := new(Collaborators) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayAccess/ListCollaborators", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// GatewayAccessServer is the server API for GatewayAccess service. -type GatewayAccessServer interface { - // List the rights the caller has on this gateway. - ListRights(context.Context, *GatewayIdentifiers) (*Rights, error) - // Create an API key scoped to this gateway. - CreateAPIKey(context.Context, *CreateGatewayAPIKeyRequest) (*APIKey, error) - // List the API keys for this gateway. - ListAPIKeys(context.Context, *ListGatewayAPIKeysRequest) (*APIKeys, error) - // Get a single API key of this gateway. - GetAPIKey(context.Context, *GetGatewayAPIKeyRequest) (*APIKey, error) - // Update the rights of an API key of the gateway. - // This method can also be used to delete the API key, by giving it no rights. - // The caller is required to have all assigned or/and removed rights. - UpdateAPIKey(context.Context, *UpdateGatewayAPIKeyRequest) (*APIKey, error) - // Get the rights of a collaborator (member) of the gateway. - // Pseudo-rights in the response (such as the "_ALL" right) are not expanded. - GetCollaborator(context.Context, *GetGatewayCollaboratorRequest) (*GetCollaboratorResponse, error) - // Set the rights of a collaborator (member) on the gateway. - // This method can also be used to delete the collaborator, by giving them no rights. - // The caller is required to have all assigned or/and removed rights. - SetCollaborator(context.Context, *SetGatewayCollaboratorRequest) (*types.Empty, error) - // List the collaborators on this gateway. - ListCollaborators(context.Context, *ListGatewayCollaboratorsRequest) (*Collaborators, error) -} - -// UnimplementedGatewayAccessServer can be embedded to have forward compatible implementations. -type UnimplementedGatewayAccessServer struct { -} - -func (*UnimplementedGatewayAccessServer) ListRights(ctx context.Context, req *GatewayIdentifiers) (*Rights, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListRights not implemented") -} -func (*UnimplementedGatewayAccessServer) CreateAPIKey(ctx context.Context, req *CreateGatewayAPIKeyRequest) (*APIKey, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateAPIKey not implemented") -} -func (*UnimplementedGatewayAccessServer) ListAPIKeys(ctx context.Context, req *ListGatewayAPIKeysRequest) (*APIKeys, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListAPIKeys not implemented") -} -func (*UnimplementedGatewayAccessServer) GetAPIKey(ctx context.Context, req *GetGatewayAPIKeyRequest) (*APIKey, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetAPIKey not implemented") -} -func (*UnimplementedGatewayAccessServer) UpdateAPIKey(ctx context.Context, req *UpdateGatewayAPIKeyRequest) (*APIKey, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateAPIKey not implemented") -} -func (*UnimplementedGatewayAccessServer) GetCollaborator(ctx context.Context, req *GetGatewayCollaboratorRequest) (*GetCollaboratorResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetCollaborator not implemented") -} -func (*UnimplementedGatewayAccessServer) SetCollaborator(ctx context.Context, req *SetGatewayCollaboratorRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method SetCollaborator not implemented") -} -func (*UnimplementedGatewayAccessServer) ListCollaborators(ctx context.Context, req *ListGatewayCollaboratorsRequest) (*Collaborators, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListCollaborators not implemented") -} - -func RegisterGatewayAccessServer(s *grpc.Server, srv GatewayAccessServer) { - s.RegisterService(&_GatewayAccess_serviceDesc, srv) -} - -func _GatewayAccess_ListRights_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GatewayIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayAccessServer).ListRights(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayAccess/ListRights", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayAccessServer).ListRights(ctx, req.(*GatewayIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayAccess_CreateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateGatewayAPIKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayAccessServer).CreateAPIKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayAccess/CreateAPIKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayAccessServer).CreateAPIKey(ctx, req.(*CreateGatewayAPIKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayAccess_ListAPIKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListGatewayAPIKeysRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayAccessServer).ListAPIKeys(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayAccess/ListAPIKeys", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayAccessServer).ListAPIKeys(ctx, req.(*ListGatewayAPIKeysRequest)) - } - return interceptor(ctx, in, info, handler) -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func _GatewayAccess_GetAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetGatewayAPIKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayAccessServer).GetAPIKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayAccess/GetAPIKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayAccessServer).GetAPIKey(ctx, req.(*GetGatewayAPIKeyRequest)) - } - return interceptor(ctx, in, info, handler) + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func _GatewayAccess_UpdateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateGatewayAPIKeyRequest) - if err := dec(in); err != nil { - return nil, err +func (x *PullGatewayConfigurationRequest) Reset() { + *x = PullGatewayConfigurationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gateway_services_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - if interceptor == nil { - return srv.(GatewayAccessServer).UpdateAPIKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayAccess/UpdateAPIKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayAccessServer).UpdateAPIKey(ctx, req.(*UpdateGatewayAPIKeyRequest)) - } - return interceptor(ctx, in, info, handler) } -func _GatewayAccess_GetCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetGatewayCollaboratorRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayAccessServer).GetCollaborator(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayAccess/GetCollaborator", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayAccessServer).GetCollaborator(ctx, req.(*GetGatewayCollaboratorRequest)) - } - return interceptor(ctx, in, info, handler) +func (x *PullGatewayConfigurationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func _GatewayAccess_SetCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetGatewayCollaboratorRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayAccessServer).SetCollaborator(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayAccess/SetCollaborator", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayAccessServer).SetCollaborator(ctx, req.(*SetGatewayCollaboratorRequest)) - } - return interceptor(ctx, in, info, handler) -} +func (*PullGatewayConfigurationRequest) ProtoMessage() {} -func _GatewayAccess_ListCollaborators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListGatewayCollaboratorsRequest) - if err := dec(in); err != nil { - return nil, err +func (x *PullGatewayConfigurationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gateway_services_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - if interceptor == nil { - return srv.(GatewayAccessServer).ListCollaborators(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GatewayAccess/ListCollaborators", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayAccessServer).ListCollaborators(ctx, req.(*ListGatewayCollaboratorsRequest)) - } - return interceptor(ctx, in, info, handler) + return mi.MessageOf(x) } -var _GatewayAccess_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.GatewayAccess", - HandlerType: (*GatewayAccessServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListRights", - Handler: _GatewayAccess_ListRights_Handler, - }, - { - MethodName: "CreateAPIKey", - Handler: _GatewayAccess_CreateAPIKey_Handler, - }, - { - MethodName: "ListAPIKeys", - Handler: _GatewayAccess_ListAPIKeys_Handler, - }, - { - MethodName: "GetAPIKey", - Handler: _GatewayAccess_GetAPIKey_Handler, - }, - { - MethodName: "UpdateAPIKey", - Handler: _GatewayAccess_UpdateAPIKey_Handler, - }, - { - MethodName: "GetCollaborator", - Handler: _GatewayAccess_GetCollaborator_Handler, - }, - { - MethodName: "SetCollaborator", - Handler: _GatewayAccess_SetCollaborator_Handler, - }, - { - MethodName: "ListCollaborators", - Handler: _GatewayAccess_ListCollaborators_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/gateway_services.proto", -} - -// GatewayConfiguratorClient is the client API for GatewayConfigurator service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type GatewayConfiguratorClient interface { - PullConfiguration(ctx context.Context, in *PullGatewayConfigurationRequest, opts ...grpc.CallOption) (GatewayConfigurator_PullConfigurationClient, error) -} - -type gatewayConfiguratorClient struct { - cc *grpc.ClientConn -} - -func NewGatewayConfiguratorClient(cc *grpc.ClientConn) GatewayConfiguratorClient { - return &gatewayConfiguratorClient{cc} -} - -func (c *gatewayConfiguratorClient) PullConfiguration(ctx context.Context, in *PullGatewayConfigurationRequest, opts ...grpc.CallOption) (GatewayConfigurator_PullConfigurationClient, error) { - stream, err := c.cc.NewStream(ctx, &_GatewayConfigurator_serviceDesc.Streams[0], "/ttn.lorawan.v3.GatewayConfigurator/PullConfiguration", opts...) - if err != nil { - return nil, err - } - x := &gatewayConfiguratorPullConfigurationClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type GatewayConfigurator_PullConfigurationClient interface { - Recv() (*Gateway, error) - grpc.ClientStream -} - -type gatewayConfiguratorPullConfigurationClient struct { - grpc.ClientStream +// Deprecated: Use PullGatewayConfigurationRequest.ProtoReflect.Descriptor instead. +func (*PullGatewayConfigurationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gateway_services_proto_rawDescGZIP(), []int{0} } -func (x *gatewayConfiguratorPullConfigurationClient) Recv() (*Gateway, error) { - m := new(Gateway) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err +func (x *PullGatewayConfigurationRequest) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds } - return m, nil -} - -// GatewayConfiguratorServer is the server API for GatewayConfigurator service. -type GatewayConfiguratorServer interface { - PullConfiguration(*PullGatewayConfigurationRequest, GatewayConfigurator_PullConfigurationServer) error -} - -// UnimplementedGatewayConfiguratorServer can be embedded to have forward compatible implementations. -type UnimplementedGatewayConfiguratorServer struct { -} - -func (*UnimplementedGatewayConfiguratorServer) PullConfiguration(req *PullGatewayConfigurationRequest, srv GatewayConfigurator_PullConfigurationServer) error { - return status.Errorf(codes.Unimplemented, "method PullConfiguration not implemented") -} - -func RegisterGatewayConfiguratorServer(s *grpc.Server, srv GatewayConfiguratorServer) { - s.RegisterService(&_GatewayConfigurator_serviceDesc, srv) + return nil } -func _GatewayConfigurator_PullConfiguration_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(PullGatewayConfigurationRequest) - if err := stream.RecvMsg(m); err != nil { - return err +func (x *PullGatewayConfigurationRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } - return srv.(GatewayConfiguratorServer).PullConfiguration(m, &gatewayConfiguratorPullConfigurationServer{stream}) -} - -type GatewayConfigurator_PullConfigurationServer interface { - Send(*Gateway) error - grpc.ServerStream -} - -type gatewayConfiguratorPullConfigurationServer struct { - grpc.ServerStream + return nil } -func (x *gatewayConfiguratorPullConfigurationServer) Send(m *Gateway) error { - return x.ServerStream.SendMsg(m) -} +var File_lorawan_stack_api_gateway_services_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_gateway_services_proto_rawDesc = []byte{ + 0x0a, 0x28, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, + 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa1, 0x01, 0x0a, + 0x1f, 0x50, 0x75, 0x6c, 0x6c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x43, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x32, 0xd9, 0x08, 0x0a, 0x0f, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x72, 0x79, 0x12, 0xd3, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, + 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x22, 0x89, + 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x82, 0x01, 0x22, 0x2f, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x4c, 0x22, 0x47, + 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x6d, 0x0a, 0x03, 0x47, 0x65, + 0x74, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x22, 0x2a, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, + 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x6e, 0x0a, 0x14, 0x47, 0x65, 0x74, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x55, + 0x49, 0x12, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x55, 0x49, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0xd8, 0x01, 0x0a, 0x04, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x73, 0x22, 0x90, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x89, 0x01, 0x12, 0x09, 0x2f, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x5a, 0x31, 0x12, 0x2f, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x5a, 0x49, 0x12, 0x47, 0x2f, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x73, 0x12, 0x76, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x24, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x22, 0x2d, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x1a, 0x22, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, + 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x64, 0x0a, 0x06, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, + 0x64, 0x7d, 0x12, 0x6d, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x20, 0x22, 0x1e, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x12, 0x69, 0x0a, 0x05, 0x50, 0x75, 0x72, 0x67, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x2a, 0x1c, + 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x32, 0xb3, 0x0a, 0x0a, + 0x0d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x6f, + 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x22, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, + 0x12, 0x1d, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, + 0x8a, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, + 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, + 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, + 0x49, 0x4b, 0x65, 0x79, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x22, 0x2b, 0x2f, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x86, 0x01, 0x0a, + 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x29, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, + 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, + 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, + 0x4b, 0x65, 0x79, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, + 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, + 0x49, 0x4b, 0x65, 0x79, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x5f, 0x69, + 0x64, 0x7d, 0x12, 0x97, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, + 0x4b, 0x65, 0x79, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x1a, + 0x38, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x61, 0x70, + 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xbb, 0x02, 0x0a, + 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcf, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0xc8, 0x01, 0x5a, 0x56, 0x12, 0x54, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, + 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x5a, 0x6e, 0x12, 0x6c, 0x2f, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x95, 0x01, 0x0a, 0x0f, 0x53, + 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2d, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x53, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, + 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x1a, 0x30, 0x2f, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x3a, + 0x01, 0x2a, 0x12, 0x9d, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, + 0x12, 0x30, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x73, 0x32, 0x76, 0x0a, 0x13, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x5f, 0x0a, 0x11, 0x50, 0x75, 0x6c, + 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x50, 0x75, 0x6c, 0x6c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x30, 0x01, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, + 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_gateway_services_proto_rawDescOnce sync.Once + file_lorawan_stack_api_gateway_services_proto_rawDescData = file_lorawan_stack_api_gateway_services_proto_rawDesc +) -var _GatewayConfigurator_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.GatewayConfigurator", - HandlerType: (*GatewayConfiguratorServer)(nil), - Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{ - { - StreamName: "PullConfiguration", - Handler: _GatewayConfigurator_PullConfiguration_Handler, - ServerStreams: true, +func file_lorawan_stack_api_gateway_services_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_gateway_services_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_gateway_services_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_gateway_services_proto_rawDescData) + }) + return file_lorawan_stack_api_gateway_services_proto_rawDescData +} + +var file_lorawan_stack_api_gateway_services_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_lorawan_stack_api_gateway_services_proto_goTypes = []interface{}{ + (*PullGatewayConfigurationRequest)(nil), // 0: ttn.lorawan.v3.PullGatewayConfigurationRequest + (*GatewayIdentifiers)(nil), // 1: ttn.lorawan.v3.GatewayIdentifiers + (*fieldmaskpb.FieldMask)(nil), // 2: google.protobuf.FieldMask + (*CreateGatewayRequest)(nil), // 3: ttn.lorawan.v3.CreateGatewayRequest + (*GetGatewayRequest)(nil), // 4: ttn.lorawan.v3.GetGatewayRequest + (*GetGatewayIdentifiersForEUIRequest)(nil), // 5: ttn.lorawan.v3.GetGatewayIdentifiersForEUIRequest + (*ListGatewaysRequest)(nil), // 6: ttn.lorawan.v3.ListGatewaysRequest + (*UpdateGatewayRequest)(nil), // 7: ttn.lorawan.v3.UpdateGatewayRequest + (*CreateGatewayAPIKeyRequest)(nil), // 8: ttn.lorawan.v3.CreateGatewayAPIKeyRequest + (*ListGatewayAPIKeysRequest)(nil), // 9: ttn.lorawan.v3.ListGatewayAPIKeysRequest + (*GetGatewayAPIKeyRequest)(nil), // 10: ttn.lorawan.v3.GetGatewayAPIKeyRequest + (*UpdateGatewayAPIKeyRequest)(nil), // 11: ttn.lorawan.v3.UpdateGatewayAPIKeyRequest + (*GetGatewayCollaboratorRequest)(nil), // 12: ttn.lorawan.v3.GetGatewayCollaboratorRequest + (*SetGatewayCollaboratorRequest)(nil), // 13: ttn.lorawan.v3.SetGatewayCollaboratorRequest + (*ListGatewayCollaboratorsRequest)(nil), // 14: ttn.lorawan.v3.ListGatewayCollaboratorsRequest + (*Gateway)(nil), // 15: ttn.lorawan.v3.Gateway + (*Gateways)(nil), // 16: ttn.lorawan.v3.Gateways + (*emptypb.Empty)(nil), // 17: google.protobuf.Empty + (*Rights)(nil), // 18: ttn.lorawan.v3.Rights + (*APIKey)(nil), // 19: ttn.lorawan.v3.APIKey + (*APIKeys)(nil), // 20: ttn.lorawan.v3.APIKeys + (*GetCollaboratorResponse)(nil), // 21: ttn.lorawan.v3.GetCollaboratorResponse + (*Collaborators)(nil), // 22: ttn.lorawan.v3.Collaborators +} +var file_lorawan_stack_api_gateway_services_proto_depIdxs = []int32{ + 1, // 0: ttn.lorawan.v3.PullGatewayConfigurationRequest.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 2, // 1: ttn.lorawan.v3.PullGatewayConfigurationRequest.field_mask:type_name -> google.protobuf.FieldMask + 3, // 2: ttn.lorawan.v3.GatewayRegistry.Create:input_type -> ttn.lorawan.v3.CreateGatewayRequest + 4, // 3: ttn.lorawan.v3.GatewayRegistry.Get:input_type -> ttn.lorawan.v3.GetGatewayRequest + 5, // 4: ttn.lorawan.v3.GatewayRegistry.GetIdentifiersForEUI:input_type -> ttn.lorawan.v3.GetGatewayIdentifiersForEUIRequest + 6, // 5: ttn.lorawan.v3.GatewayRegistry.List:input_type -> ttn.lorawan.v3.ListGatewaysRequest + 7, // 6: ttn.lorawan.v3.GatewayRegistry.Update:input_type -> ttn.lorawan.v3.UpdateGatewayRequest + 1, // 7: ttn.lorawan.v3.GatewayRegistry.Delete:input_type -> ttn.lorawan.v3.GatewayIdentifiers + 1, // 8: ttn.lorawan.v3.GatewayRegistry.Restore:input_type -> ttn.lorawan.v3.GatewayIdentifiers + 1, // 9: ttn.lorawan.v3.GatewayRegistry.Purge:input_type -> ttn.lorawan.v3.GatewayIdentifiers + 1, // 10: ttn.lorawan.v3.GatewayAccess.ListRights:input_type -> ttn.lorawan.v3.GatewayIdentifiers + 8, // 11: ttn.lorawan.v3.GatewayAccess.CreateAPIKey:input_type -> ttn.lorawan.v3.CreateGatewayAPIKeyRequest + 9, // 12: ttn.lorawan.v3.GatewayAccess.ListAPIKeys:input_type -> ttn.lorawan.v3.ListGatewayAPIKeysRequest + 10, // 13: ttn.lorawan.v3.GatewayAccess.GetAPIKey:input_type -> ttn.lorawan.v3.GetGatewayAPIKeyRequest + 11, // 14: ttn.lorawan.v3.GatewayAccess.UpdateAPIKey:input_type -> ttn.lorawan.v3.UpdateGatewayAPIKeyRequest + 12, // 15: ttn.lorawan.v3.GatewayAccess.GetCollaborator:input_type -> ttn.lorawan.v3.GetGatewayCollaboratorRequest + 13, // 16: ttn.lorawan.v3.GatewayAccess.SetCollaborator:input_type -> ttn.lorawan.v3.SetGatewayCollaboratorRequest + 14, // 17: ttn.lorawan.v3.GatewayAccess.ListCollaborators:input_type -> ttn.lorawan.v3.ListGatewayCollaboratorsRequest + 0, // 18: ttn.lorawan.v3.GatewayConfigurator.PullConfiguration:input_type -> ttn.lorawan.v3.PullGatewayConfigurationRequest + 15, // 19: ttn.lorawan.v3.GatewayRegistry.Create:output_type -> ttn.lorawan.v3.Gateway + 15, // 20: ttn.lorawan.v3.GatewayRegistry.Get:output_type -> ttn.lorawan.v3.Gateway + 1, // 21: ttn.lorawan.v3.GatewayRegistry.GetIdentifiersForEUI:output_type -> ttn.lorawan.v3.GatewayIdentifiers + 16, // 22: ttn.lorawan.v3.GatewayRegistry.List:output_type -> ttn.lorawan.v3.Gateways + 15, // 23: ttn.lorawan.v3.GatewayRegistry.Update:output_type -> ttn.lorawan.v3.Gateway + 17, // 24: ttn.lorawan.v3.GatewayRegistry.Delete:output_type -> google.protobuf.Empty + 17, // 25: ttn.lorawan.v3.GatewayRegistry.Restore:output_type -> google.protobuf.Empty + 17, // 26: ttn.lorawan.v3.GatewayRegistry.Purge:output_type -> google.protobuf.Empty + 18, // 27: ttn.lorawan.v3.GatewayAccess.ListRights:output_type -> ttn.lorawan.v3.Rights + 19, // 28: ttn.lorawan.v3.GatewayAccess.CreateAPIKey:output_type -> ttn.lorawan.v3.APIKey + 20, // 29: ttn.lorawan.v3.GatewayAccess.ListAPIKeys:output_type -> ttn.lorawan.v3.APIKeys + 19, // 30: ttn.lorawan.v3.GatewayAccess.GetAPIKey:output_type -> ttn.lorawan.v3.APIKey + 19, // 31: ttn.lorawan.v3.GatewayAccess.UpdateAPIKey:output_type -> ttn.lorawan.v3.APIKey + 21, // 32: ttn.lorawan.v3.GatewayAccess.GetCollaborator:output_type -> ttn.lorawan.v3.GetCollaboratorResponse + 17, // 33: ttn.lorawan.v3.GatewayAccess.SetCollaborator:output_type -> google.protobuf.Empty + 22, // 34: ttn.lorawan.v3.GatewayAccess.ListCollaborators:output_type -> ttn.lorawan.v3.Collaborators + 15, // 35: ttn.lorawan.v3.GatewayConfigurator.PullConfiguration:output_type -> ttn.lorawan.v3.Gateway + 19, // [19:36] is the sub-list for method output_type + 2, // [2:19] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_gateway_services_proto_init() } +func file_lorawan_stack_api_gateway_services_proto_init() { + if File_lorawan_stack_api_gateway_services_proto != nil { + return + } + file_lorawan_stack_api_gateway_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_rights_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_gateway_services_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PullGatewayConfigurationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_gateway_services_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 3, }, - }, - Metadata: "lorawan-stack/api/gateway_services.proto", + GoTypes: file_lorawan_stack_api_gateway_services_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_gateway_services_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_gateway_services_proto_msgTypes, + }.Build() + File_lorawan_stack_api_gateway_services_proto = out.File + file_lorawan_stack_api_gateway_services_proto_rawDesc = nil + file_lorawan_stack_api_gateway_services_proto_goTypes = nil + file_lorawan_stack_api_gateway_services_proto_depIdxs = nil } diff --git a/pkg/ttnpb/gateway_services.pb.gw.go b/pkg/ttnpb/gateway_services.pb.gw.go index baabdd1f87..615c35e18d 100644 --- a/pkg/ttnpb/gateway_services.pb.gw.go +++ b/pkg/ttnpb/gateway_services.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join func request_GatewayRegistry_Create_0(ctx context.Context, marshaler runtime.Marshaler, client GatewayRegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -58,7 +56,6 @@ func request_GatewayRegistry_Create_0(ctx context.Context, marshaler runtime.Mar } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -93,7 +90,6 @@ func local_request_GatewayRegistry_Create_0(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -128,7 +124,6 @@ func request_GatewayRegistry_Create_1(ctx context.Context, marshaler runtime.Mar } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -163,7 +158,6 @@ func local_request_GatewayRegistry_Create_1(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -194,7 +188,6 @@ func request_GatewayRegistry_Get_0(ctx context.Context, marshaler runtime.Marsha } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -228,7 +221,6 @@ func local_request_GatewayRegistry_Get_0(ctx context.Context, marshaler runtime. } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -302,7 +294,6 @@ func request_GatewayRegistry_List_1(ctx context.Context, marshaler runtime.Marsh } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -336,7 +327,6 @@ func local_request_GatewayRegistry_List_1(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -374,7 +364,6 @@ func request_GatewayRegistry_List_2(ctx context.Context, marshaler runtime.Marsh } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -408,7 +397,6 @@ func local_request_GatewayRegistry_List_2(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -450,7 +438,6 @@ func request_GatewayRegistry_Update_0(ctx context.Context, marshaler runtime.Mar } err = runtime.PopulateFieldFromPath(&protoReq, "gateway.ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway.ids.gateway_id", err) } @@ -485,7 +472,6 @@ func local_request_GatewayRegistry_Update_0(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "gateway.ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway.ids.gateway_id", err) } @@ -516,7 +502,6 @@ func request_GatewayRegistry_Delete_0(ctx context.Context, marshaler runtime.Mar } protoReq.GatewayId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_id", err) } @@ -550,7 +535,6 @@ func local_request_GatewayRegistry_Delete_0(ctx context.Context, marshaler runti } protoReq.GatewayId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_id", err) } @@ -588,7 +572,6 @@ func request_GatewayRegistry_Restore_0(ctx context.Context, marshaler runtime.Ma } protoReq.GatewayId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_id", err) } @@ -622,7 +605,6 @@ func local_request_GatewayRegistry_Restore_0(ctx context.Context, marshaler runt } protoReq.GatewayId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_id", err) } @@ -660,7 +642,6 @@ func request_GatewayRegistry_Purge_0(ctx context.Context, marshaler runtime.Mars } protoReq.GatewayId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_id", err) } @@ -694,7 +675,6 @@ func local_request_GatewayRegistry_Purge_0(ctx context.Context, marshaler runtim } protoReq.GatewayId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_id", err) } @@ -732,7 +712,6 @@ func request_GatewayAccess_ListRights_0(ctx context.Context, marshaler runtime.M } protoReq.GatewayId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_id", err) } @@ -766,7 +745,6 @@ func local_request_GatewayAccess_ListRights_0(ctx context.Context, marshaler run } protoReq.GatewayId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_id", err) } @@ -808,7 +786,6 @@ func request_GatewayAccess_CreateAPIKey_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -843,7 +820,6 @@ func local_request_GatewayAccess_CreateAPIKey_0(ctx context.Context, marshaler r } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -874,7 +850,6 @@ func request_GatewayAccess_ListAPIKeys_0(ctx context.Context, marshaler runtime. } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -908,7 +883,6 @@ func local_request_GatewayAccess_ListAPIKeys_0(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -946,7 +920,6 @@ func request_GatewayAccess_GetAPIKey_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -957,7 +930,6 @@ func request_GatewayAccess_GetAPIKey_0(ctx context.Context, marshaler runtime.Ma } protoReq.KeyId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "key_id", err) } @@ -991,7 +963,6 @@ func local_request_GatewayAccess_GetAPIKey_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -1002,7 +973,6 @@ func local_request_GatewayAccess_GetAPIKey_0(ctx context.Context, marshaler runt } protoReq.KeyId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "key_id", err) } @@ -1044,7 +1014,6 @@ func request_GatewayAccess_UpdateAPIKey_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -1055,7 +1024,6 @@ func request_GatewayAccess_UpdateAPIKey_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "api_key.id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "api_key.id", err) } @@ -1090,7 +1058,6 @@ func local_request_GatewayAccess_UpdateAPIKey_0(ctx context.Context, marshaler r } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -1101,7 +1068,6 @@ func local_request_GatewayAccess_UpdateAPIKey_0(ctx context.Context, marshaler r } err = runtime.PopulateFieldFromPath(&protoReq, "api_key.id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "api_key.id", err) } @@ -1132,7 +1098,6 @@ func request_GatewayAccess_GetCollaborator_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -1143,7 +1108,6 @@ func request_GatewayAccess_GetCollaborator_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -1177,7 +1141,6 @@ func local_request_GatewayAccess_GetCollaborator_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -1188,7 +1151,6 @@ func local_request_GatewayAccess_GetCollaborator_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -1226,7 +1188,6 @@ func request_GatewayAccess_GetCollaborator_1(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -1237,7 +1198,6 @@ func request_GatewayAccess_GetCollaborator_1(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -1271,7 +1231,6 @@ func local_request_GatewayAccess_GetCollaborator_1(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -1282,7 +1241,6 @@ func local_request_GatewayAccess_GetCollaborator_1(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.organization_ids.organization_id", err) } @@ -1324,7 +1282,6 @@ func request_GatewayAccess_SetCollaborator_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -1359,7 +1316,6 @@ func local_request_GatewayAccess_SetCollaborator_0(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -1390,7 +1346,6 @@ func request_GatewayAccess_ListCollaborators_0(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -1424,7 +1379,6 @@ func local_request_GatewayAccess_ListCollaborators_0(ctx context.Context, marsha } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -1453,20 +1407,22 @@ func RegisterGatewayRegistryHandlerServer(ctx context.Context, mux *runtime.Serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/Create", runtime.WithHTTPPathPattern("/users/{collaborator.user_ids.user_id}/gateways")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayRegistry_Create_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayRegistry_Create_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_Create_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1476,20 +1432,22 @@ func RegisterGatewayRegistryHandlerServer(ctx context.Context, mux *runtime.Serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/Create", runtime.WithHTTPPathPattern("/organizations/{collaborator.organization_ids.organization_id}/gateways")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayRegistry_Create_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayRegistry_Create_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_Create_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_Create_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1499,20 +1457,22 @@ func RegisterGatewayRegistryHandlerServer(ctx context.Context, mux *runtime.Serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/Get", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayRegistry_Get_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayRegistry_Get_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1522,20 +1482,22 @@ func RegisterGatewayRegistryHandlerServer(ctx context.Context, mux *runtime.Serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/List", runtime.WithHTTPPathPattern("/gateways")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayRegistry_List_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayRegistry_List_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1545,20 +1507,22 @@ func RegisterGatewayRegistryHandlerServer(ctx context.Context, mux *runtime.Serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/List", runtime.WithHTTPPathPattern("/users/{collaborator.user_ids.user_id}/gateways")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayRegistry_List_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayRegistry_List_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_List_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_List_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1568,20 +1532,22 @@ func RegisterGatewayRegistryHandlerServer(ctx context.Context, mux *runtime.Serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/List", runtime.WithHTTPPathPattern("/organizations/{collaborator.organization_ids.organization_id}/gateways")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayRegistry_List_2(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayRegistry_List_2(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_List_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_List_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1591,20 +1557,22 @@ func RegisterGatewayRegistryHandlerServer(ctx context.Context, mux *runtime.Serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/Update", runtime.WithHTTPPathPattern("/gateways/{gateway.ids.gateway_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayRegistry_Update_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayRegistry_Update_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_Update_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1614,20 +1582,22 @@ func RegisterGatewayRegistryHandlerServer(ctx context.Context, mux *runtime.Serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/Delete", runtime.WithHTTPPathPattern("/gateways/{gateway_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayRegistry_Delete_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayRegistry_Delete_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1637,20 +1607,22 @@ func RegisterGatewayRegistryHandlerServer(ctx context.Context, mux *runtime.Serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/Restore", runtime.WithHTTPPathPattern("/gateways/{gateway_id}/restore")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayRegistry_Restore_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayRegistry_Restore_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_Restore_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_Restore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1660,20 +1632,22 @@ func RegisterGatewayRegistryHandlerServer(ctx context.Context, mux *runtime.Serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/Purge", runtime.WithHTTPPathPattern("/gateways/{gateway_id}/purge")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayRegistry_Purge_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayRegistry_Purge_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_Purge_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_Purge_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1692,20 +1666,22 @@ func RegisterGatewayAccessHandlerServer(ctx context.Context, mux *runtime.ServeM var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/ListRights", runtime.WithHTTPPathPattern("/gateways/{gateway_id}/rights")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayAccess_ListRights_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayAccess_ListRights_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_ListRights_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_ListRights_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1715,20 +1691,22 @@ func RegisterGatewayAccessHandlerServer(ctx context.Context, mux *runtime.ServeM var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/CreateAPIKey", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/api-keys")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayAccess_CreateAPIKey_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayAccess_CreateAPIKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_CreateAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_CreateAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1738,20 +1716,22 @@ func RegisterGatewayAccessHandlerServer(ctx context.Context, mux *runtime.ServeM var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/ListAPIKeys", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/api-keys")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayAccess_ListAPIKeys_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayAccess_ListAPIKeys_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_ListAPIKeys_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_ListAPIKeys_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1761,20 +1741,22 @@ func RegisterGatewayAccessHandlerServer(ctx context.Context, mux *runtime.ServeM var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/GetAPIKey", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/api-keys/{key_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayAccess_GetAPIKey_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayAccess_GetAPIKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_GetAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_GetAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1784,20 +1766,22 @@ func RegisterGatewayAccessHandlerServer(ctx context.Context, mux *runtime.ServeM var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/UpdateAPIKey", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/api-keys/{api_key.id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayAccess_UpdateAPIKey_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayAccess_UpdateAPIKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_UpdateAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_UpdateAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1807,20 +1791,22 @@ func RegisterGatewayAccessHandlerServer(ctx context.Context, mux *runtime.ServeM var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/GetCollaborator", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/collaborator/user/{collaborator.user_ids.user_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayAccess_GetCollaborator_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayAccess_GetCollaborator_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_GetCollaborator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_GetCollaborator_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1830,20 +1816,22 @@ func RegisterGatewayAccessHandlerServer(ctx context.Context, mux *runtime.ServeM var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/GetCollaborator", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/collaborator/organization/{collaborator.organization_ids.organization_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayAccess_GetCollaborator_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayAccess_GetCollaborator_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_GetCollaborator_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_GetCollaborator_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1853,20 +1841,22 @@ func RegisterGatewayAccessHandlerServer(ctx context.Context, mux *runtime.ServeM var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/SetCollaborator", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/collaborators")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayAccess_SetCollaborator_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayAccess_SetCollaborator_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_SetCollaborator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_SetCollaborator_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1876,20 +1866,22 @@ func RegisterGatewayAccessHandlerServer(ctx context.Context, mux *runtime.ServeM var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/ListCollaborators", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/collaborators")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GatewayAccess_ListCollaborators_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GatewayAccess_ListCollaborators_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_ListCollaborators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_ListCollaborators_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1938,19 +1930,21 @@ func RegisterGatewayRegistryHandlerClient(ctx context.Context, mux *runtime.Serv ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/Create", runtime.WithHTTPPathPattern("/users/{collaborator.user_ids.user_id}/gateways")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayRegistry_Create_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayRegistry_Create_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_Create_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1958,19 +1952,21 @@ func RegisterGatewayRegistryHandlerClient(ctx context.Context, mux *runtime.Serv ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/Create", runtime.WithHTTPPathPattern("/organizations/{collaborator.organization_ids.organization_id}/gateways")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayRegistry_Create_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayRegistry_Create_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_Create_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_Create_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1978,19 +1974,21 @@ func RegisterGatewayRegistryHandlerClient(ctx context.Context, mux *runtime.Serv ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/Get", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayRegistry_Get_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayRegistry_Get_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1998,19 +1996,21 @@ func RegisterGatewayRegistryHandlerClient(ctx context.Context, mux *runtime.Serv ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/List", runtime.WithHTTPPathPattern("/gateways")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayRegistry_List_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayRegistry_List_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2018,19 +2018,21 @@ func RegisterGatewayRegistryHandlerClient(ctx context.Context, mux *runtime.Serv ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/List", runtime.WithHTTPPathPattern("/users/{collaborator.user_ids.user_id}/gateways")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayRegistry_List_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayRegistry_List_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_List_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_List_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2038,19 +2040,21 @@ func RegisterGatewayRegistryHandlerClient(ctx context.Context, mux *runtime.Serv ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/List", runtime.WithHTTPPathPattern("/organizations/{collaborator.organization_ids.organization_id}/gateways")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayRegistry_List_2(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayRegistry_List_2(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_List_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_List_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2058,19 +2062,21 @@ func RegisterGatewayRegistryHandlerClient(ctx context.Context, mux *runtime.Serv ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/Update", runtime.WithHTTPPathPattern("/gateways/{gateway.ids.gateway_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayRegistry_Update_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayRegistry_Update_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_Update_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2078,19 +2084,21 @@ func RegisterGatewayRegistryHandlerClient(ctx context.Context, mux *runtime.Serv ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/Delete", runtime.WithHTTPPathPattern("/gateways/{gateway_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayRegistry_Delete_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayRegistry_Delete_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2098,19 +2106,21 @@ func RegisterGatewayRegistryHandlerClient(ctx context.Context, mux *runtime.Serv ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/Restore", runtime.WithHTTPPathPattern("/gateways/{gateway_id}/restore")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayRegistry_Restore_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayRegistry_Restore_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_Restore_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_Restore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2118,19 +2128,21 @@ func RegisterGatewayRegistryHandlerClient(ctx context.Context, mux *runtime.Serv ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayRegistry/Purge", runtime.WithHTTPPathPattern("/gateways/{gateway_id}/purge")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayRegistry_Purge_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayRegistry_Purge_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayRegistry_Purge_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayRegistry_Purge_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2138,25 +2150,25 @@ func RegisterGatewayRegistryHandlerClient(ctx context.Context, mux *runtime.Serv } var ( - pattern_GatewayRegistry_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "collaborator.user_ids.user_id", "gateways"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayRegistry_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "collaborator.user_ids.user_id", "gateways"}, "")) - pattern_GatewayRegistry_Create_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "collaborator.organization_ids.organization_id", "gateways"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayRegistry_Create_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "collaborator.organization_ids.organization_id", "gateways"}, "")) - pattern_GatewayRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"gateways", "gateway_ids.gateway_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"gateways", "gateway_ids.gateway_id"}, "")) - pattern_GatewayRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"gateways"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"gateways"}, "")) - pattern_GatewayRegistry_List_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "collaborator.user_ids.user_id", "gateways"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayRegistry_List_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "collaborator.user_ids.user_id", "gateways"}, "")) - pattern_GatewayRegistry_List_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "collaborator.organization_ids.organization_id", "gateways"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayRegistry_List_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "collaborator.organization_ids.organization_id", "gateways"}, "")) - pattern_GatewayRegistry_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"gateways", "gateway.ids.gateway_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayRegistry_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"gateways", "gateway.ids.gateway_id"}, "")) - pattern_GatewayRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"gateways", "gateway_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"gateways", "gateway_id"}, "")) - pattern_GatewayRegistry_Restore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"gateways", "gateway_id", "restore"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayRegistry_Restore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"gateways", "gateway_id", "restore"}, "")) - pattern_GatewayRegistry_Purge_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"gateways", "gateway_id", "purge"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayRegistry_Purge_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"gateways", "gateway_id", "purge"}, "")) ) var ( @@ -2223,19 +2235,21 @@ func RegisterGatewayAccessHandlerClient(ctx context.Context, mux *runtime.ServeM ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/ListRights", runtime.WithHTTPPathPattern("/gateways/{gateway_id}/rights")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayAccess_ListRights_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayAccess_ListRights_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_ListRights_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_ListRights_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2243,19 +2257,21 @@ func RegisterGatewayAccessHandlerClient(ctx context.Context, mux *runtime.ServeM ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/CreateAPIKey", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/api-keys")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayAccess_CreateAPIKey_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayAccess_CreateAPIKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_CreateAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_CreateAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2263,19 +2279,21 @@ func RegisterGatewayAccessHandlerClient(ctx context.Context, mux *runtime.ServeM ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/ListAPIKeys", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/api-keys")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayAccess_ListAPIKeys_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayAccess_ListAPIKeys_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_ListAPIKeys_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_ListAPIKeys_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2283,19 +2301,21 @@ func RegisterGatewayAccessHandlerClient(ctx context.Context, mux *runtime.ServeM ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/GetAPIKey", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/api-keys/{key_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayAccess_GetAPIKey_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayAccess_GetAPIKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_GetAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_GetAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2303,19 +2323,21 @@ func RegisterGatewayAccessHandlerClient(ctx context.Context, mux *runtime.ServeM ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/UpdateAPIKey", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/api-keys/{api_key.id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayAccess_UpdateAPIKey_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayAccess_UpdateAPIKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_UpdateAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_UpdateAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2323,19 +2345,21 @@ func RegisterGatewayAccessHandlerClient(ctx context.Context, mux *runtime.ServeM ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/GetCollaborator", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/collaborator/user/{collaborator.user_ids.user_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayAccess_GetCollaborator_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayAccess_GetCollaborator_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_GetCollaborator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_GetCollaborator_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2343,19 +2367,21 @@ func RegisterGatewayAccessHandlerClient(ctx context.Context, mux *runtime.ServeM ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/GetCollaborator", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/collaborator/organization/{collaborator.organization_ids.organization_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayAccess_GetCollaborator_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayAccess_GetCollaborator_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_GetCollaborator_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_GetCollaborator_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2363,19 +2389,21 @@ func RegisterGatewayAccessHandlerClient(ctx context.Context, mux *runtime.ServeM ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/SetCollaborator", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/collaborators")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayAccess_SetCollaborator_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayAccess_SetCollaborator_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_SetCollaborator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_SetCollaborator_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2383,19 +2411,21 @@ func RegisterGatewayAccessHandlerClient(ctx context.Context, mux *runtime.ServeM ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GatewayAccess/ListCollaborators", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/collaborators")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GatewayAccess_ListCollaborators_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GatewayAccess_ListCollaborators_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GatewayAccess_ListCollaborators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GatewayAccess_ListCollaborators_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2403,23 +2433,23 @@ func RegisterGatewayAccessHandlerClient(ctx context.Context, mux *runtime.ServeM } var ( - pattern_GatewayAccess_ListRights_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"gateways", "gateway_id", "rights"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayAccess_ListRights_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"gateways", "gateway_id", "rights"}, "")) - pattern_GatewayAccess_CreateAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"gateways", "gateway_ids.gateway_id", "api-keys"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayAccess_CreateAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"gateways", "gateway_ids.gateway_id", "api-keys"}, "")) - pattern_GatewayAccess_ListAPIKeys_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"gateways", "gateway_ids.gateway_id", "api-keys"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayAccess_ListAPIKeys_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"gateways", "gateway_ids.gateway_id", "api-keys"}, "")) - pattern_GatewayAccess_GetAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"gateways", "gateway_ids.gateway_id", "api-keys", "key_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayAccess_GetAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"gateways", "gateway_ids.gateway_id", "api-keys", "key_id"}, "")) - pattern_GatewayAccess_UpdateAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"gateways", "gateway_ids.gateway_id", "api-keys", "api_key.id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayAccess_UpdateAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"gateways", "gateway_ids.gateway_id", "api-keys", "api_key.id"}, "")) - pattern_GatewayAccess_GetCollaborator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"gateways", "gateway_ids.gateway_id", "collaborator", "user", "collaborator.user_ids.user_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayAccess_GetCollaborator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"gateways", "gateway_ids.gateway_id", "collaborator", "user", "collaborator.user_ids.user_id"}, "")) - pattern_GatewayAccess_GetCollaborator_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"gateways", "gateway_ids.gateway_id", "collaborator", "organization", "collaborator.organization_ids.organization_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayAccess_GetCollaborator_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"gateways", "gateway_ids.gateway_id", "collaborator", "organization", "collaborator.organization_ids.organization_id"}, "")) - pattern_GatewayAccess_SetCollaborator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"gateways", "gateway_ids.gateway_id", "collaborators"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayAccess_SetCollaborator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"gateways", "gateway_ids.gateway_id", "collaborators"}, "")) - pattern_GatewayAccess_ListCollaborators_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"gateways", "gateway_ids.gateway_id", "collaborators"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GatewayAccess_ListCollaborators_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"gateways", "gateway_ids.gateway_id", "collaborators"}, "")) ) var ( diff --git a/pkg/ttnpb/gateway_services.pb.validate.go b/pkg/ttnpb/gateway_services.pb.validate.go index 7697f86bfe..aa68b62362 100644 --- a/pkg/ttnpb/gateway_services.pb.validate.go +++ b/pkg/ttnpb/gateway_services.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _gateway_services_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on PullGatewayConfigurationRequest // with the rules defined in the proto definition for this message. If any // rules are violated, an error is returned. diff --git a/pkg/ttnpb/gateway_services_grpc.pb.go b/pkg/ttnpb/gateway_services_grpc.pb.go new file mode 100644 index 0000000000..b722487a6d --- /dev/null +++ b/pkg/ttnpb/gateway_services_grpc.pb.go @@ -0,0 +1,877 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/gateway_services.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// GatewayRegistryClient is the client API for GatewayRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type GatewayRegistryClient interface { + // Create a new gateway. This also sets the given organization or user as + // first collaborator with all possible rights. + Create(ctx context.Context, in *CreateGatewayRequest, opts ...grpc.CallOption) (*Gateway, error) + // Get the gateway with the given identifiers, selecting the fields specified + // in the field mask. + // More or less fields may be returned, depending on the rights of the caller. + Get(ctx context.Context, in *GetGatewayRequest, opts ...grpc.CallOption) (*Gateway, error) + // Get the identifiers of the gateway that has the given EUI registered. + GetIdentifiersForEUI(ctx context.Context, in *GetGatewayIdentifiersForEUIRequest, opts ...grpc.CallOption) (*GatewayIdentifiers, error) + // List gateways where the given user or organization is a direct collaborator. + // If no user or organization is given, this returns the gateways the caller + // has access to. + // Similar to Get, this selects the fields given by the field mask. + // More or less fields may be returned, depending on the rights of the caller. + List(ctx context.Context, in *ListGatewaysRequest, opts ...grpc.CallOption) (*Gateways, error) + // Update the gateway, changing the fields specified by the field mask to the provided values. + Update(ctx context.Context, in *UpdateGatewayRequest, opts ...grpc.CallOption) (*Gateway, error) + // Delete the gateway. This may not release the gateway ID for reuse, but it does release the EUI. + Delete(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Restore a recently deleted gateway. This does not restore the EUI, + // as that was released when deleting the gateway. + // + // Deployment configuration may specify if, and for how long after deletion, + // entities can be restored. + Restore(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Purge the gateway. This will release both gateway ID and EUI for reuse. + // The gateway owner is responsible for clearing data from any (external) integrations + // that may store and expose data by gateway ID. + Purge(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type gatewayRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewGatewayRegistryClient(cc grpc.ClientConnInterface) GatewayRegistryClient { + return &gatewayRegistryClient{cc} +} + +func (c *gatewayRegistryClient) Create(ctx context.Context, in *CreateGatewayRequest, opts ...grpc.CallOption) (*Gateway, error) { + out := new(Gateway) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayRegistry/Create", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayRegistryClient) Get(ctx context.Context, in *GetGatewayRequest, opts ...grpc.CallOption) (*Gateway, error) { + out := new(Gateway) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayRegistry/Get", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayRegistryClient) GetIdentifiersForEUI(ctx context.Context, in *GetGatewayIdentifiersForEUIRequest, opts ...grpc.CallOption) (*GatewayIdentifiers, error) { + out := new(GatewayIdentifiers) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayRegistry/GetIdentifiersForEUI", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayRegistryClient) List(ctx context.Context, in *ListGatewaysRequest, opts ...grpc.CallOption) (*Gateways, error) { + out := new(Gateways) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayRegistry/List", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayRegistryClient) Update(ctx context.Context, in *UpdateGatewayRequest, opts ...grpc.CallOption) (*Gateway, error) { + out := new(Gateway) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayRegistry/Update", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayRegistryClient) Delete(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayRegistry/Delete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayRegistryClient) Restore(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayRegistry/Restore", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayRegistryClient) Purge(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayRegistry/Purge", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// GatewayRegistryServer is the server API for GatewayRegistry service. +// All implementations must embed UnimplementedGatewayRegistryServer +// for forward compatibility +type GatewayRegistryServer interface { + // Create a new gateway. This also sets the given organization or user as + // first collaborator with all possible rights. + Create(context.Context, *CreateGatewayRequest) (*Gateway, error) + // Get the gateway with the given identifiers, selecting the fields specified + // in the field mask. + // More or less fields may be returned, depending on the rights of the caller. + Get(context.Context, *GetGatewayRequest) (*Gateway, error) + // Get the identifiers of the gateway that has the given EUI registered. + GetIdentifiersForEUI(context.Context, *GetGatewayIdentifiersForEUIRequest) (*GatewayIdentifiers, error) + // List gateways where the given user or organization is a direct collaborator. + // If no user or organization is given, this returns the gateways the caller + // has access to. + // Similar to Get, this selects the fields given by the field mask. + // More or less fields may be returned, depending on the rights of the caller. + List(context.Context, *ListGatewaysRequest) (*Gateways, error) + // Update the gateway, changing the fields specified by the field mask to the provided values. + Update(context.Context, *UpdateGatewayRequest) (*Gateway, error) + // Delete the gateway. This may not release the gateway ID for reuse, but it does release the EUI. + Delete(context.Context, *GatewayIdentifiers) (*emptypb.Empty, error) + // Restore a recently deleted gateway. This does not restore the EUI, + // as that was released when deleting the gateway. + // + // Deployment configuration may specify if, and for how long after deletion, + // entities can be restored. + Restore(context.Context, *GatewayIdentifiers) (*emptypb.Empty, error) + // Purge the gateway. This will release both gateway ID and EUI for reuse. + // The gateway owner is responsible for clearing data from any (external) integrations + // that may store and expose data by gateway ID. + Purge(context.Context, *GatewayIdentifiers) (*emptypb.Empty, error) + mustEmbedUnimplementedGatewayRegistryServer() +} + +// UnimplementedGatewayRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedGatewayRegistryServer struct { +} + +func (UnimplementedGatewayRegistryServer) Create(context.Context, *CreateGatewayRequest) (*Gateway, error) { + return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") +} +func (UnimplementedGatewayRegistryServer) Get(context.Context, *GetGatewayRequest) (*Gateway, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (UnimplementedGatewayRegistryServer) GetIdentifiersForEUI(context.Context, *GetGatewayIdentifiersForEUIRequest) (*GatewayIdentifiers, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetIdentifiersForEUI not implemented") +} +func (UnimplementedGatewayRegistryServer) List(context.Context, *ListGatewaysRequest) (*Gateways, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedGatewayRegistryServer) Update(context.Context, *UpdateGatewayRequest) (*Gateway, error) { + return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") +} +func (UnimplementedGatewayRegistryServer) Delete(context.Context, *GatewayIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedGatewayRegistryServer) Restore(context.Context, *GatewayIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Restore not implemented") +} +func (UnimplementedGatewayRegistryServer) Purge(context.Context, *GatewayIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Purge not implemented") +} +func (UnimplementedGatewayRegistryServer) mustEmbedUnimplementedGatewayRegistryServer() {} + +// UnsafeGatewayRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to GatewayRegistryServer will +// result in compilation errors. +type UnsafeGatewayRegistryServer interface { + mustEmbedUnimplementedGatewayRegistryServer() +} + +func RegisterGatewayRegistryServer(s grpc.ServiceRegistrar, srv GatewayRegistryServer) { + s.RegisterService(&GatewayRegistry_ServiceDesc, srv) +} + +func _GatewayRegistry_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateGatewayRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayRegistryServer).Create(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayRegistry/Create", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayRegistryServer).Create(ctx, req.(*CreateGatewayRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetGatewayRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayRegistryServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayRegistry/Get", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayRegistryServer).Get(ctx, req.(*GetGatewayRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayRegistry_GetIdentifiersForEUI_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetGatewayIdentifiersForEUIRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayRegistryServer).GetIdentifiersForEUI(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayRegistry/GetIdentifiersForEUI", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayRegistryServer).GetIdentifiersForEUI(ctx, req.(*GetGatewayIdentifiersForEUIRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListGatewaysRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayRegistryServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayRegistry/List", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayRegistryServer).List(ctx, req.(*ListGatewaysRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayRegistry_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateGatewayRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayRegistryServer).Update(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayRegistry/Update", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayRegistryServer).Update(ctx, req.(*UpdateGatewayRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GatewayIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayRegistryServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayRegistry/Delete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayRegistryServer).Delete(ctx, req.(*GatewayIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayRegistry_Restore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GatewayIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayRegistryServer).Restore(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayRegistry/Restore", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayRegistryServer).Restore(ctx, req.(*GatewayIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayRegistry_Purge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GatewayIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayRegistryServer).Purge(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayRegistry/Purge", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayRegistryServer).Purge(ctx, req.(*GatewayIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// GatewayRegistry_ServiceDesc is the grpc.ServiceDesc for GatewayRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var GatewayRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.GatewayRegistry", + HandlerType: (*GatewayRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Create", + Handler: _GatewayRegistry_Create_Handler, + }, + { + MethodName: "Get", + Handler: _GatewayRegistry_Get_Handler, + }, + { + MethodName: "GetIdentifiersForEUI", + Handler: _GatewayRegistry_GetIdentifiersForEUI_Handler, + }, + { + MethodName: "List", + Handler: _GatewayRegistry_List_Handler, + }, + { + MethodName: "Update", + Handler: _GatewayRegistry_Update_Handler, + }, + { + MethodName: "Delete", + Handler: _GatewayRegistry_Delete_Handler, + }, + { + MethodName: "Restore", + Handler: _GatewayRegistry_Restore_Handler, + }, + { + MethodName: "Purge", + Handler: _GatewayRegistry_Purge_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/gateway_services.proto", +} + +// GatewayAccessClient is the client API for GatewayAccess service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type GatewayAccessClient interface { + // List the rights the caller has on this gateway. + ListRights(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*Rights, error) + // Create an API key scoped to this gateway. + CreateAPIKey(ctx context.Context, in *CreateGatewayAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) + // List the API keys for this gateway. + ListAPIKeys(ctx context.Context, in *ListGatewayAPIKeysRequest, opts ...grpc.CallOption) (*APIKeys, error) + // Get a single API key of this gateway. + GetAPIKey(ctx context.Context, in *GetGatewayAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) + // Update the rights of an API key of the gateway. + // This method can also be used to delete the API key, by giving it no rights. + // The caller is required to have all assigned or/and removed rights. + UpdateAPIKey(ctx context.Context, in *UpdateGatewayAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) + // Get the rights of a collaborator (member) of the gateway. + // Pseudo-rights in the response (such as the "_ALL" right) are not expanded. + GetCollaborator(ctx context.Context, in *GetGatewayCollaboratorRequest, opts ...grpc.CallOption) (*GetCollaboratorResponse, error) + // Set the rights of a collaborator (member) on the gateway. + // This method can also be used to delete the collaborator, by giving them no rights. + // The caller is required to have all assigned or/and removed rights. + SetCollaborator(ctx context.Context, in *SetGatewayCollaboratorRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // List the collaborators on this gateway. + ListCollaborators(ctx context.Context, in *ListGatewayCollaboratorsRequest, opts ...grpc.CallOption) (*Collaborators, error) +} + +type gatewayAccessClient struct { + cc grpc.ClientConnInterface +} + +func NewGatewayAccessClient(cc grpc.ClientConnInterface) GatewayAccessClient { + return &gatewayAccessClient{cc} +} + +func (c *gatewayAccessClient) ListRights(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*Rights, error) { + out := new(Rights) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayAccess/ListRights", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayAccessClient) CreateAPIKey(ctx context.Context, in *CreateGatewayAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { + out := new(APIKey) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayAccess/CreateAPIKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayAccessClient) ListAPIKeys(ctx context.Context, in *ListGatewayAPIKeysRequest, opts ...grpc.CallOption) (*APIKeys, error) { + out := new(APIKeys) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayAccess/ListAPIKeys", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayAccessClient) GetAPIKey(ctx context.Context, in *GetGatewayAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { + out := new(APIKey) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayAccess/GetAPIKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayAccessClient) UpdateAPIKey(ctx context.Context, in *UpdateGatewayAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { + out := new(APIKey) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayAccess/UpdateAPIKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayAccessClient) GetCollaborator(ctx context.Context, in *GetGatewayCollaboratorRequest, opts ...grpc.CallOption) (*GetCollaboratorResponse, error) { + out := new(GetCollaboratorResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayAccess/GetCollaborator", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayAccessClient) SetCollaborator(ctx context.Context, in *SetGatewayCollaboratorRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayAccess/SetCollaborator", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayAccessClient) ListCollaborators(ctx context.Context, in *ListGatewayCollaboratorsRequest, opts ...grpc.CallOption) (*Collaborators, error) { + out := new(Collaborators) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GatewayAccess/ListCollaborators", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// GatewayAccessServer is the server API for GatewayAccess service. +// All implementations must embed UnimplementedGatewayAccessServer +// for forward compatibility +type GatewayAccessServer interface { + // List the rights the caller has on this gateway. + ListRights(context.Context, *GatewayIdentifiers) (*Rights, error) + // Create an API key scoped to this gateway. + CreateAPIKey(context.Context, *CreateGatewayAPIKeyRequest) (*APIKey, error) + // List the API keys for this gateway. + ListAPIKeys(context.Context, *ListGatewayAPIKeysRequest) (*APIKeys, error) + // Get a single API key of this gateway. + GetAPIKey(context.Context, *GetGatewayAPIKeyRequest) (*APIKey, error) + // Update the rights of an API key of the gateway. + // This method can also be used to delete the API key, by giving it no rights. + // The caller is required to have all assigned or/and removed rights. + UpdateAPIKey(context.Context, *UpdateGatewayAPIKeyRequest) (*APIKey, error) + // Get the rights of a collaborator (member) of the gateway. + // Pseudo-rights in the response (such as the "_ALL" right) are not expanded. + GetCollaborator(context.Context, *GetGatewayCollaboratorRequest) (*GetCollaboratorResponse, error) + // Set the rights of a collaborator (member) on the gateway. + // This method can also be used to delete the collaborator, by giving them no rights. + // The caller is required to have all assigned or/and removed rights. + SetCollaborator(context.Context, *SetGatewayCollaboratorRequest) (*emptypb.Empty, error) + // List the collaborators on this gateway. + ListCollaborators(context.Context, *ListGatewayCollaboratorsRequest) (*Collaborators, error) + mustEmbedUnimplementedGatewayAccessServer() +} + +// UnimplementedGatewayAccessServer must be embedded to have forward compatible implementations. +type UnimplementedGatewayAccessServer struct { +} + +func (UnimplementedGatewayAccessServer) ListRights(context.Context, *GatewayIdentifiers) (*Rights, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListRights not implemented") +} +func (UnimplementedGatewayAccessServer) CreateAPIKey(context.Context, *CreateGatewayAPIKeyRequest) (*APIKey, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateAPIKey not implemented") +} +func (UnimplementedGatewayAccessServer) ListAPIKeys(context.Context, *ListGatewayAPIKeysRequest) (*APIKeys, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListAPIKeys not implemented") +} +func (UnimplementedGatewayAccessServer) GetAPIKey(context.Context, *GetGatewayAPIKeyRequest) (*APIKey, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAPIKey not implemented") +} +func (UnimplementedGatewayAccessServer) UpdateAPIKey(context.Context, *UpdateGatewayAPIKeyRequest) (*APIKey, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateAPIKey not implemented") +} +func (UnimplementedGatewayAccessServer) GetCollaborator(context.Context, *GetGatewayCollaboratorRequest) (*GetCollaboratorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCollaborator not implemented") +} +func (UnimplementedGatewayAccessServer) SetCollaborator(context.Context, *SetGatewayCollaboratorRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetCollaborator not implemented") +} +func (UnimplementedGatewayAccessServer) ListCollaborators(context.Context, *ListGatewayCollaboratorsRequest) (*Collaborators, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListCollaborators not implemented") +} +func (UnimplementedGatewayAccessServer) mustEmbedUnimplementedGatewayAccessServer() {} + +// UnsafeGatewayAccessServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to GatewayAccessServer will +// result in compilation errors. +type UnsafeGatewayAccessServer interface { + mustEmbedUnimplementedGatewayAccessServer() +} + +func RegisterGatewayAccessServer(s grpc.ServiceRegistrar, srv GatewayAccessServer) { + s.RegisterService(&GatewayAccess_ServiceDesc, srv) +} + +func _GatewayAccess_ListRights_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GatewayIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayAccessServer).ListRights(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayAccess/ListRights", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayAccessServer).ListRights(ctx, req.(*GatewayIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayAccess_CreateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateGatewayAPIKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayAccessServer).CreateAPIKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayAccess/CreateAPIKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayAccessServer).CreateAPIKey(ctx, req.(*CreateGatewayAPIKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayAccess_ListAPIKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListGatewayAPIKeysRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayAccessServer).ListAPIKeys(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayAccess/ListAPIKeys", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayAccessServer).ListAPIKeys(ctx, req.(*ListGatewayAPIKeysRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayAccess_GetAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetGatewayAPIKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayAccessServer).GetAPIKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayAccess/GetAPIKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayAccessServer).GetAPIKey(ctx, req.(*GetGatewayAPIKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayAccess_UpdateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateGatewayAPIKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayAccessServer).UpdateAPIKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayAccess/UpdateAPIKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayAccessServer).UpdateAPIKey(ctx, req.(*UpdateGatewayAPIKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayAccess_GetCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetGatewayCollaboratorRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayAccessServer).GetCollaborator(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayAccess/GetCollaborator", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayAccessServer).GetCollaborator(ctx, req.(*GetGatewayCollaboratorRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayAccess_SetCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetGatewayCollaboratorRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayAccessServer).SetCollaborator(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayAccess/SetCollaborator", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayAccessServer).SetCollaborator(ctx, req.(*SetGatewayCollaboratorRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayAccess_ListCollaborators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListGatewayCollaboratorsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayAccessServer).ListCollaborators(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GatewayAccess/ListCollaborators", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayAccessServer).ListCollaborators(ctx, req.(*ListGatewayCollaboratorsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// GatewayAccess_ServiceDesc is the grpc.ServiceDesc for GatewayAccess service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var GatewayAccess_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.GatewayAccess", + HandlerType: (*GatewayAccessServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListRights", + Handler: _GatewayAccess_ListRights_Handler, + }, + { + MethodName: "CreateAPIKey", + Handler: _GatewayAccess_CreateAPIKey_Handler, + }, + { + MethodName: "ListAPIKeys", + Handler: _GatewayAccess_ListAPIKeys_Handler, + }, + { + MethodName: "GetAPIKey", + Handler: _GatewayAccess_GetAPIKey_Handler, + }, + { + MethodName: "UpdateAPIKey", + Handler: _GatewayAccess_UpdateAPIKey_Handler, + }, + { + MethodName: "GetCollaborator", + Handler: _GatewayAccess_GetCollaborator_Handler, + }, + { + MethodName: "SetCollaborator", + Handler: _GatewayAccess_SetCollaborator_Handler, + }, + { + MethodName: "ListCollaborators", + Handler: _GatewayAccess_ListCollaborators_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/gateway_services.proto", +} + +// GatewayConfiguratorClient is the client API for GatewayConfigurator service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type GatewayConfiguratorClient interface { + PullConfiguration(ctx context.Context, in *PullGatewayConfigurationRequest, opts ...grpc.CallOption) (GatewayConfigurator_PullConfigurationClient, error) +} + +type gatewayConfiguratorClient struct { + cc grpc.ClientConnInterface +} + +func NewGatewayConfiguratorClient(cc grpc.ClientConnInterface) GatewayConfiguratorClient { + return &gatewayConfiguratorClient{cc} +} + +func (c *gatewayConfiguratorClient) PullConfiguration(ctx context.Context, in *PullGatewayConfigurationRequest, opts ...grpc.CallOption) (GatewayConfigurator_PullConfigurationClient, error) { + stream, err := c.cc.NewStream(ctx, &GatewayConfigurator_ServiceDesc.Streams[0], "/ttn.lorawan.v3.GatewayConfigurator/PullConfiguration", opts...) + if err != nil { + return nil, err + } + x := &gatewayConfiguratorPullConfigurationClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type GatewayConfigurator_PullConfigurationClient interface { + Recv() (*Gateway, error) + grpc.ClientStream +} + +type gatewayConfiguratorPullConfigurationClient struct { + grpc.ClientStream +} + +func (x *gatewayConfiguratorPullConfigurationClient) Recv() (*Gateway, error) { + m := new(Gateway) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// GatewayConfiguratorServer is the server API for GatewayConfigurator service. +// All implementations must embed UnimplementedGatewayConfiguratorServer +// for forward compatibility +type GatewayConfiguratorServer interface { + PullConfiguration(*PullGatewayConfigurationRequest, GatewayConfigurator_PullConfigurationServer) error + mustEmbedUnimplementedGatewayConfiguratorServer() +} + +// UnimplementedGatewayConfiguratorServer must be embedded to have forward compatible implementations. +type UnimplementedGatewayConfiguratorServer struct { +} + +func (UnimplementedGatewayConfiguratorServer) PullConfiguration(*PullGatewayConfigurationRequest, GatewayConfigurator_PullConfigurationServer) error { + return status.Errorf(codes.Unimplemented, "method PullConfiguration not implemented") +} +func (UnimplementedGatewayConfiguratorServer) mustEmbedUnimplementedGatewayConfiguratorServer() {} + +// UnsafeGatewayConfiguratorServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to GatewayConfiguratorServer will +// result in compilation errors. +type UnsafeGatewayConfiguratorServer interface { + mustEmbedUnimplementedGatewayConfiguratorServer() +} + +func RegisterGatewayConfiguratorServer(s grpc.ServiceRegistrar, srv GatewayConfiguratorServer) { + s.RegisterService(&GatewayConfigurator_ServiceDesc, srv) +} + +func _GatewayConfigurator_PullConfiguration_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(PullGatewayConfigurationRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(GatewayConfiguratorServer).PullConfiguration(m, &gatewayConfiguratorPullConfigurationServer{stream}) +} + +type GatewayConfigurator_PullConfigurationServer interface { + Send(*Gateway) error + grpc.ServerStream +} + +type gatewayConfiguratorPullConfigurationServer struct { + grpc.ServerStream +} + +func (x *gatewayConfiguratorPullConfigurationServer) Send(m *Gateway) error { + return x.ServerStream.SendMsg(m) +} + +// GatewayConfigurator_ServiceDesc is the grpc.ServiceDesc for GatewayConfigurator service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var GatewayConfigurator_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.GatewayConfigurator", + HandlerType: (*GatewayConfiguratorServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{ + { + StreamName: "PullConfiguration", + Handler: _GatewayConfigurator_PullConfiguration_Handler, + ServerStreams: true, + }, + }, + Metadata: "lorawan-stack/api/gateway_services.proto", +} diff --git a/pkg/ttnpb/gateway_services_json.pb.go b/pkg/ttnpb/gateway_services_json.pb.go index e86df45e6f..4167f403bf 100644 --- a/pkg/ttnpb/gateway_services_json.pb.go +++ b/pkg/ttnpb/gateway_services_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/gateway_services.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" ) @@ -30,7 +30,7 @@ func (x *PullGatewayConfigurationRequest) MarshalProtoJSON(s *jsonplugin.Marshal if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -63,7 +63,7 @@ func (x *PullGatewayConfigurationRequest) UnmarshalProtoJSON(s *jsonplugin.Unmar x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } diff --git a/pkg/ttnpb/gatewayserver.pb.go b/pkg/ttnpb/gatewayserver.pb.go index 71a03b910d..50f0cbc28e 100644 --- a/pkg/ttnpb/gatewayserver.pb.go +++ b/pkg/ttnpb/gatewayserver.pb.go @@ -1,136 +1,168 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/gatewayserver.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + emptypb "google.golang.org/protobuf/types/known/emptypb" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // GatewayUp may contain zero or more uplink messages and/or a status message for the gateway. type GatewayUp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Uplink messages received by the gateway. UplinkMessages []*UplinkMessage `protobuf:"bytes,1,rep,name=uplink_messages,json=uplinkMessages,proto3" json:"uplink_messages,omitempty"` // Gateway status produced by the gateway. GatewayStatus *GatewayStatus `protobuf:"bytes,2,opt,name=gateway_status,json=gatewayStatus,proto3" json:"gateway_status,omitempty"` // A Tx acknowledgment or error. - TxAcknowledgment *TxAcknowledgment `protobuf:"bytes,3,opt,name=tx_acknowledgment,json=txAcknowledgment,proto3" json:"tx_acknowledgment,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + TxAcknowledgment *TxAcknowledgment `protobuf:"bytes,3,opt,name=tx_acknowledgment,json=txAcknowledgment,proto3" json:"tx_acknowledgment,omitempty"` } -func (m *GatewayUp) Reset() { *m = GatewayUp{} } -func (m *GatewayUp) String() string { return proto.CompactTextString(m) } -func (*GatewayUp) ProtoMessage() {} -func (*GatewayUp) Descriptor() ([]byte, []int) { - return fileDescriptor_62b07a36420f2d6d, []int{0} -} -func (m *GatewayUp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayUp.Unmarshal(m, b) -} -func (m *GatewayUp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayUp.Marshal(b, m, deterministic) -} -func (m *GatewayUp) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayUp.Merge(m, src) +func (x *GatewayUp) Reset() { + *x = GatewayUp{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gatewayserver_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GatewayUp) XXX_Size() int { - return xxx_messageInfo_GatewayUp.Size(m) + +func (x *GatewayUp) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GatewayUp) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayUp.DiscardUnknown(m) + +func (*GatewayUp) ProtoMessage() {} + +func (x *GatewayUp) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gatewayserver_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GatewayUp proto.InternalMessageInfo +// Deprecated: Use GatewayUp.ProtoReflect.Descriptor instead. +func (*GatewayUp) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gatewayserver_proto_rawDescGZIP(), []int{0} +} -func (m *GatewayUp) GetUplinkMessages() []*UplinkMessage { - if m != nil { - return m.UplinkMessages +func (x *GatewayUp) GetUplinkMessages() []*UplinkMessage { + if x != nil { + return x.UplinkMessages } return nil } -func (m *GatewayUp) GetGatewayStatus() *GatewayStatus { - if m != nil { - return m.GatewayStatus +func (x *GatewayUp) GetGatewayStatus() *GatewayStatus { + if x != nil { + return x.GatewayStatus } return nil } -func (m *GatewayUp) GetTxAcknowledgment() *TxAcknowledgment { - if m != nil { - return m.TxAcknowledgment +func (x *GatewayUp) GetTxAcknowledgment() *TxAcknowledgment { + if x != nil { + return x.TxAcknowledgment } return nil } // GatewayDown contains downlink messages for the gateway. type GatewayDown struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // DownlinkMessage for the gateway. - DownlinkMessage *DownlinkMessage `protobuf:"bytes,1,opt,name=downlink_message,json=downlinkMessage,proto3" json:"downlink_message,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + DownlinkMessage *DownlinkMessage `protobuf:"bytes,1,opt,name=downlink_message,json=downlinkMessage,proto3" json:"downlink_message,omitempty"` } -func (m *GatewayDown) Reset() { *m = GatewayDown{} } -func (m *GatewayDown) String() string { return proto.CompactTextString(m) } -func (*GatewayDown) ProtoMessage() {} -func (*GatewayDown) Descriptor() ([]byte, []int) { - return fileDescriptor_62b07a36420f2d6d, []int{1} -} -func (m *GatewayDown) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayDown.Unmarshal(m, b) -} -func (m *GatewayDown) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayDown.Marshal(b, m, deterministic) -} -func (m *GatewayDown) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayDown.Merge(m, src) +func (x *GatewayDown) Reset() { + *x = GatewayDown{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gatewayserver_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GatewayDown) XXX_Size() int { - return xxx_messageInfo_GatewayDown.Size(m) + +func (x *GatewayDown) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GatewayDown) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayDown.DiscardUnknown(m) + +func (*GatewayDown) ProtoMessage() {} + +func (x *GatewayDown) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gatewayserver_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GatewayDown proto.InternalMessageInfo +// Deprecated: Use GatewayDown.ProtoReflect.Descriptor instead. +func (*GatewayDown) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gatewayserver_proto_rawDescGZIP(), []int{1} +} -func (m *GatewayDown) GetDownlinkMessage() *DownlinkMessage { - if m != nil { - return m.DownlinkMessage +func (x *GatewayDown) GetDownlinkMessage() *DownlinkMessage { + if x != nil { + return x.DownlinkMessage } return nil } type ScheduleDownlinkResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The amount of time between the message has been scheduled and it will be transmitted by the gateway. - Delay *types.Duration `protobuf:"bytes,1,opt,name=delay,proto3" json:"delay,omitempty"` + Delay *durationpb.Duration `protobuf:"bytes,1,opt,name=delay,proto3" json:"delay,omitempty"` // Downlink path chosen by the Gateway Server. DownlinkPath *DownlinkPath `protobuf:"bytes,2,opt,name=downlink_path,json=downlinkPath,proto3" json:"downlink_path,omitempty"` // Whether RX1 has been chosen for the downlink message. @@ -138,703 +170,557 @@ type ScheduleDownlinkResponse struct { Rx1 bool `protobuf:"varint,3,opt,name=rx1,proto3" json:"rx1,omitempty"` // Whether RX2 has been chosen for the downlink message. // Both RX1 and RX2 can be used for transmitting the same message by the same gateway. - Rx2 bool `protobuf:"varint,4,opt,name=rx2,proto3" json:"rx2,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ScheduleDownlinkResponse) Reset() { *m = ScheduleDownlinkResponse{} } -func (m *ScheduleDownlinkResponse) String() string { return proto.CompactTextString(m) } -func (*ScheduleDownlinkResponse) ProtoMessage() {} -func (*ScheduleDownlinkResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_62b07a36420f2d6d, []int{2} -} -func (m *ScheduleDownlinkResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ScheduleDownlinkResponse.Unmarshal(m, b) -} -func (m *ScheduleDownlinkResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ScheduleDownlinkResponse.Marshal(b, m, deterministic) -} -func (m *ScheduleDownlinkResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ScheduleDownlinkResponse.Merge(m, src) + Rx2 bool `protobuf:"varint,4,opt,name=rx2,proto3" json:"rx2,omitempty"` } -func (m *ScheduleDownlinkResponse) XXX_Size() int { - return xxx_messageInfo_ScheduleDownlinkResponse.Size(m) -} -func (m *ScheduleDownlinkResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ScheduleDownlinkResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ScheduleDownlinkResponse proto.InternalMessageInfo -func (m *ScheduleDownlinkResponse) GetDelay() *types.Duration { - if m != nil { - return m.Delay +func (x *ScheduleDownlinkResponse) Reset() { + *x = ScheduleDownlinkResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gatewayserver_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (m *ScheduleDownlinkResponse) GetDownlinkPath() *DownlinkPath { - if m != nil { - return m.DownlinkPath - } - return nil +func (x *ScheduleDownlinkResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ScheduleDownlinkResponse) GetRx1() bool { - if m != nil { - return m.Rx1 - } - return false -} +func (*ScheduleDownlinkResponse) ProtoMessage() {} -func (m *ScheduleDownlinkResponse) GetRx2() bool { - if m != nil { - return m.Rx2 +func (x *ScheduleDownlinkResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gatewayserver_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false + return mi.MessageOf(x) } -type ScheduleDownlinkErrorDetails struct { - // Errors per path when downlink scheduling failed. - PathErrors []*ErrorDetails `protobuf:"bytes,1,rep,name=path_errors,json=pathErrors,proto3" json:"path_errors,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ScheduleDownlinkErrorDetails) Reset() { *m = ScheduleDownlinkErrorDetails{} } -func (m *ScheduleDownlinkErrorDetails) String() string { return proto.CompactTextString(m) } -func (*ScheduleDownlinkErrorDetails) ProtoMessage() {} -func (*ScheduleDownlinkErrorDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_62b07a36420f2d6d, []int{3} -} -func (m *ScheduleDownlinkErrorDetails) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ScheduleDownlinkErrorDetails.Unmarshal(m, b) -} -func (m *ScheduleDownlinkErrorDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ScheduleDownlinkErrorDetails.Marshal(b, m, deterministic) -} -func (m *ScheduleDownlinkErrorDetails) XXX_Merge(src proto.Message) { - xxx_messageInfo_ScheduleDownlinkErrorDetails.Merge(m, src) -} -func (m *ScheduleDownlinkErrorDetails) XXX_Size() int { - return xxx_messageInfo_ScheduleDownlinkErrorDetails.Size(m) -} -func (m *ScheduleDownlinkErrorDetails) XXX_DiscardUnknown() { - xxx_messageInfo_ScheduleDownlinkErrorDetails.DiscardUnknown(m) +// Deprecated: Use ScheduleDownlinkResponse.ProtoReflect.Descriptor instead. +func (*ScheduleDownlinkResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gatewayserver_proto_rawDescGZIP(), []int{2} } -var xxx_messageInfo_ScheduleDownlinkErrorDetails proto.InternalMessageInfo - -func (m *ScheduleDownlinkErrorDetails) GetPathErrors() []*ErrorDetails { - if m != nil { - return m.PathErrors +func (x *ScheduleDownlinkResponse) GetDelay() *durationpb.Duration { + if x != nil { + return x.Delay } return nil } -type BatchGetGatewayConnectionStatsRequest struct { - GatewayIds []*GatewayIdentifiers `protobuf:"bytes,1,rep,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` - // The names of the gateway stats fields that should be returned. - // This mask will be applied on each entry returned. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *BatchGetGatewayConnectionStatsRequest) Reset() { *m = BatchGetGatewayConnectionStatsRequest{} } -func (m *BatchGetGatewayConnectionStatsRequest) String() string { return proto.CompactTextString(m) } -func (*BatchGetGatewayConnectionStatsRequest) ProtoMessage() {} -func (*BatchGetGatewayConnectionStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_62b07a36420f2d6d, []int{4} -} -func (m *BatchGetGatewayConnectionStatsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BatchGetGatewayConnectionStatsRequest.Unmarshal(m, b) -} -func (m *BatchGetGatewayConnectionStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BatchGetGatewayConnectionStatsRequest.Marshal(b, m, deterministic) -} -func (m *BatchGetGatewayConnectionStatsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_BatchGetGatewayConnectionStatsRequest.Merge(m, src) -} -func (m *BatchGetGatewayConnectionStatsRequest) XXX_Size() int { - return xxx_messageInfo_BatchGetGatewayConnectionStatsRequest.Size(m) -} -func (m *BatchGetGatewayConnectionStatsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_BatchGetGatewayConnectionStatsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_BatchGetGatewayConnectionStatsRequest proto.InternalMessageInfo - -func (m *BatchGetGatewayConnectionStatsRequest) GetGatewayIds() []*GatewayIdentifiers { - if m != nil { - return m.GatewayIds +func (x *ScheduleDownlinkResponse) GetDownlinkPath() *DownlinkPath { + if x != nil { + return x.DownlinkPath } return nil } -func (m *BatchGetGatewayConnectionStatsRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *ScheduleDownlinkResponse) GetRx1() bool { + if x != nil { + return x.Rx1 } - return nil -} - -type BatchGetGatewayConnectionStatsResponse struct { - // The map key is the gateway identifier. - Entries map[string]*GatewayConnectionStats `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *BatchGetGatewayConnectionStatsResponse) Reset() { - *m = BatchGetGatewayConnectionStatsResponse{} -} -func (m *BatchGetGatewayConnectionStatsResponse) String() string { return proto.CompactTextString(m) } -func (*BatchGetGatewayConnectionStatsResponse) ProtoMessage() {} -func (*BatchGetGatewayConnectionStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_62b07a36420f2d6d, []int{5} -} -func (m *BatchGetGatewayConnectionStatsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BatchGetGatewayConnectionStatsResponse.Unmarshal(m, b) -} -func (m *BatchGetGatewayConnectionStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BatchGetGatewayConnectionStatsResponse.Marshal(b, m, deterministic) -} -func (m *BatchGetGatewayConnectionStatsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_BatchGetGatewayConnectionStatsResponse.Merge(m, src) -} -func (m *BatchGetGatewayConnectionStatsResponse) XXX_Size() int { - return xxx_messageInfo_BatchGetGatewayConnectionStatsResponse.Size(m) -} -func (m *BatchGetGatewayConnectionStatsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_BatchGetGatewayConnectionStatsResponse.DiscardUnknown(m) + return false } -var xxx_messageInfo_BatchGetGatewayConnectionStatsResponse proto.InternalMessageInfo - -func (m *BatchGetGatewayConnectionStatsResponse) GetEntries() map[string]*GatewayConnectionStats { - if m != nil { - return m.Entries +func (x *ScheduleDownlinkResponse) GetRx2() bool { + if x != nil { + return x.Rx2 } - return nil -} - -func init() { - proto.RegisterType((*GatewayUp)(nil), "ttn.lorawan.v3.GatewayUp") - golang_proto.RegisterType((*GatewayUp)(nil), "ttn.lorawan.v3.GatewayUp") - proto.RegisterType((*GatewayDown)(nil), "ttn.lorawan.v3.GatewayDown") - golang_proto.RegisterType((*GatewayDown)(nil), "ttn.lorawan.v3.GatewayDown") - proto.RegisterType((*ScheduleDownlinkResponse)(nil), "ttn.lorawan.v3.ScheduleDownlinkResponse") - golang_proto.RegisterType((*ScheduleDownlinkResponse)(nil), "ttn.lorawan.v3.ScheduleDownlinkResponse") - proto.RegisterType((*ScheduleDownlinkErrorDetails)(nil), "ttn.lorawan.v3.ScheduleDownlinkErrorDetails") - golang_proto.RegisterType((*ScheduleDownlinkErrorDetails)(nil), "ttn.lorawan.v3.ScheduleDownlinkErrorDetails") - proto.RegisterType((*BatchGetGatewayConnectionStatsRequest)(nil), "ttn.lorawan.v3.BatchGetGatewayConnectionStatsRequest") - golang_proto.RegisterType((*BatchGetGatewayConnectionStatsRequest)(nil), "ttn.lorawan.v3.BatchGetGatewayConnectionStatsRequest") - proto.RegisterType((*BatchGetGatewayConnectionStatsResponse)(nil), "ttn.lorawan.v3.BatchGetGatewayConnectionStatsResponse") - golang_proto.RegisterType((*BatchGetGatewayConnectionStatsResponse)(nil), "ttn.lorawan.v3.BatchGetGatewayConnectionStatsResponse") - proto.RegisterMapType((map[string]*GatewayConnectionStats)(nil), "ttn.lorawan.v3.BatchGetGatewayConnectionStatsResponse.EntriesEntry") - golang_proto.RegisterMapType((map[string]*GatewayConnectionStats)(nil), "ttn.lorawan.v3.BatchGetGatewayConnectionStatsResponse.EntriesEntry") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/gatewayserver.proto", fileDescriptor_62b07a36420f2d6d) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/gatewayserver.proto", fileDescriptor_62b07a36420f2d6d) -} - -var fileDescriptor_62b07a36420f2d6d = []byte{ - // 959 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0x4f, 0x6f, 0xdc, 0x44, - 0x14, 0xd7, 0x6c, 0x12, 0x9a, 0xcc, 0xb6, 0xe9, 0x32, 0x12, 0xb0, 0xd9, 0x26, 0x69, 0x64, 0xd4, - 0x2a, 0xaa, 0x58, 0x3b, 0x38, 0x6a, 0xd5, 0x56, 0x70, 0xc8, 0x66, 0xd3, 0x55, 0x10, 0xe1, 0x8f, - 0x93, 0x20, 0x81, 0x14, 0xad, 0x66, 0xed, 0x59, 0xaf, 0x65, 0xef, 0x8c, 0xeb, 0x19, 0xef, 0x66, - 0x85, 0xb8, 0xf0, 0x11, 0xe0, 0xc0, 0x81, 0x6f, 0xc0, 0x95, 0x13, 0x12, 0x07, 0xbe, 0x03, 0x77, - 0x38, 0xc0, 0x01, 0x89, 0x6f, 0xd0, 0x13, 0xf2, 0x78, 0xbc, 0x7f, 0xec, 0xb8, 0x0d, 0x48, 0x9c, - 0x3c, 0x33, 0xef, 0xf7, 0x7e, 0xef, 0xf7, 0xde, 0xbc, 0x37, 0x86, 0xf7, 0x02, 0x16, 0xe1, 0x31, - 0xa6, 0x4d, 0x2e, 0xb0, 0xed, 0x1b, 0x38, 0xf4, 0x0c, 0x17, 0x0b, 0x32, 0xc6, 0x13, 0x4e, 0xa2, - 0x11, 0x89, 0xf4, 0x30, 0x62, 0x82, 0xa1, 0x75, 0x21, 0xa8, 0xae, 0xa0, 0xfa, 0x68, 0xbf, 0x71, - 0xe0, 0x7a, 0x62, 0x10, 0xf7, 0x74, 0x9b, 0x0d, 0x0d, 0x42, 0x47, 0x6c, 0x12, 0x46, 0xec, 0x72, - 0x62, 0x48, 0xb0, 0xdd, 0x74, 0x09, 0x6d, 0x8e, 0x70, 0xe0, 0x39, 0x58, 0x10, 0xa3, 0xb0, 0x48, - 0x29, 0x1b, 0xcd, 0x39, 0x0a, 0x97, 0xb9, 0x2c, 0x75, 0xee, 0xc5, 0x7d, 0xb9, 0x93, 0x1b, 0xb9, - 0x52, 0xf0, 0x4d, 0x97, 0x31, 0x37, 0x20, 0x52, 0x21, 0xa6, 0x94, 0x09, 0x2c, 0x3c, 0x46, 0xb9, - 0xb2, 0x6e, 0x2b, 0xeb, 0x94, 0xc3, 0x89, 0x23, 0x09, 0x50, 0xf6, 0x3b, 0x79, 0x3b, 0x19, 0x86, - 0x62, 0xa2, 0x8c, 0x5b, 0xc5, 0x1a, 0x90, 0x28, 0x62, 0x2a, 0xf7, 0xc6, 0x4e, 0xde, 0xb7, 0xef, - 0x91, 0xc0, 0xe9, 0x0e, 0x31, 0xf7, 0x15, 0xe2, 0x6e, 0x69, 0x11, 0x15, 0xe0, 0xed, 0x22, 0xc0, - 0x73, 0x08, 0x15, 0x5e, 0xdf, 0x23, 0x11, 0x2f, 0x67, 0xc9, 0x2a, 0xae, 0x84, 0x14, 0x01, 0x43, - 0xc2, 0x39, 0x76, 0x49, 0x46, 0xb1, 0x79, 0x05, 0xe2, 0xb9, 0x10, 0xe5, 0xfe, 0x11, 0x71, 0x3d, - 0x46, 0x71, 0x90, 0x22, 0xb4, 0xbf, 0x00, 0x5c, 0xeb, 0xa4, 0xca, 0xcf, 0x43, 0xf4, 0x0c, 0xde, - 0x8e, 0xc3, 0xc0, 0xa3, 0x7e, 0x37, 0x0b, 0x53, 0x07, 0x3b, 0x4b, 0xbb, 0x55, 0x73, 0x4b, 0x5f, - 0x6c, 0x07, 0xfd, 0x5c, 0xc2, 0x4e, 0x52, 0x94, 0xb5, 0x1e, 0xcf, 0x6f, 0x39, 0x6a, 0xc3, 0x75, - 0x55, 0x8e, 0x2e, 0x17, 0x58, 0xc4, 0xbc, 0x5e, 0xd9, 0x01, 0x57, 0xd1, 0xa8, 0xd0, 0xa7, 0x12, - 0x64, 0xdd, 0x72, 0xe7, 0xb7, 0xe8, 0x04, 0xbe, 0x2e, 0x2e, 0xbb, 0xd8, 0xf6, 0x29, 0x1b, 0x07, - 0xc4, 0x71, 0x87, 0x84, 0x8a, 0xfa, 0x92, 0x24, 0xda, 0xc9, 0x13, 0x9d, 0x5d, 0x1e, 0x2c, 0xe0, - 0xac, 0x9a, 0xc8, 0x9d, 0x68, 0x9f, 0xc3, 0xaa, 0x0a, 0xd7, 0x66, 0x63, 0x8a, 0x3e, 0x80, 0x35, - 0x87, 0x8d, 0xe9, 0x7c, 0xb6, 0x75, 0x20, 0xc9, 0xef, 0xe6, 0xc9, 0xdb, 0x0a, 0x97, 0xa5, 0x7b, - 0xdb, 0x59, 0x3c, 0xd0, 0x7e, 0x06, 0xb0, 0x7e, 0x6a, 0x0f, 0x88, 0x13, 0x07, 0x24, 0x03, 0x5b, - 0x84, 0x87, 0x8c, 0x72, 0x82, 0x9e, 0xc0, 0x15, 0x87, 0x04, 0x78, 0xa2, 0xd8, 0x37, 0xf4, 0xb4, - 0xbb, 0xf4, 0xac, 0xbb, 0xf4, 0xb6, 0xea, 0xdc, 0xd6, 0xea, 0x8b, 0xd6, 0xca, 0x0f, 0xa0, 0xb2, - 0x0a, 0xac, 0xd4, 0x03, 0x1d, 0xc0, 0x5b, 0x53, 0x8d, 0x21, 0x16, 0x03, 0x55, 0xc6, 0xcd, 0x32, - 0x81, 0x9f, 0x60, 0x31, 0xb0, 0x6e, 0x3a, 0x73, 0x3b, 0x54, 0x83, 0x4b, 0xd1, 0xe5, 0xbb, 0xb2, - 0x6c, 0xab, 0x56, 0xb2, 0x4c, 0x4f, 0xcc, 0xfa, 0x72, 0x76, 0x62, 0x6a, 0x17, 0x70, 0x33, 0xaf, - 0xfe, 0x28, 0x19, 0x87, 0x36, 0x11, 0xd8, 0x0b, 0x38, 0x7a, 0x1f, 0x56, 0x93, 0xe8, 0x5d, 0x39, - 0x23, 0x59, 0x4b, 0x14, 0x44, 0xcc, 0xbb, 0x58, 0x30, 0x71, 0x90, 0x27, 0x5c, 0xfb, 0x11, 0xc0, - 0x7b, 0x2d, 0x2c, 0xec, 0x41, 0x87, 0x08, 0x75, 0x03, 0x87, 0x8c, 0x52, 0x62, 0x27, 0x49, 0x27, - 0x77, 0xcd, 0x2d, 0xf2, 0x3c, 0x26, 0x5c, 0xa0, 0x8f, 0x61, 0x35, 0xeb, 0x1b, 0xcf, 0xc9, 0x02, - 0x69, 0x25, 0x4d, 0x73, 0x3c, 0x9b, 0xa7, 0x16, 0x7c, 0xd1, 0xba, 0xf1, 0x0d, 0x58, 0x5e, 0x05, - 0x35, 0xc7, 0x82, 0x6e, 0x66, 0xe7, 0xe8, 0x09, 0x84, 0xb3, 0xd9, 0x55, 0xd5, 0x6b, 0x14, 0x2e, - 0xe0, 0x59, 0x02, 0x39, 0xc1, 0xdc, 0xb7, 0xd6, 0xfa, 0xd9, 0x52, 0xfb, 0x1b, 0xc0, 0xfb, 0xaf, - 0x52, 0xad, 0x6e, 0xf8, 0x02, 0xde, 0x20, 0x54, 0x44, 0xde, 0x74, 0x5c, 0x0e, 0xf3, 0x92, 0xaf, - 0x47, 0xa4, 0x1f, 0xa5, 0x2c, 0xc9, 0x67, 0x62, 0x65, 0x9c, 0x8d, 0x1e, 0xbc, 0x39, 0x6f, 0x48, - 0x2e, 0xd0, 0x27, 0x69, 0x3b, 0xad, 0x59, 0xc9, 0x12, 0xbd, 0x07, 0x57, 0x46, 0x38, 0x88, 0x89, - 0xca, 0xf0, 0x7e, 0x49, 0xc5, 0xf2, 0x61, 0x53, 0xa7, 0xa7, 0x95, 0xc7, 0xc0, 0xfc, 0x7d, 0x09, - 0xae, 0x74, 0xc4, 0xb8, 0xc3, 0xd1, 0x31, 0xac, 0x7e, 0xe8, 0x51, 0x5f, 0xb9, 0xa0, 0x8d, 0x12, - 0xae, 0xf3, 0xb0, 0x71, 0xa7, 0xc4, 0x94, 0xf4, 0xd0, 0x2e, 0xd8, 0x03, 0xe8, 0x14, 0xbe, 0xd1, - 0x21, 0xe2, 0x90, 0x51, 0x3b, 0x49, 0x05, 0x0b, 0x16, 0x1d, 0x32, 0xda, 0xf7, 0x5c, 0xf4, 0x66, - 0xe1, 0x0a, 0x8e, 0x92, 0xd7, 0xb9, 0x51, 0xb8, 0xea, 0x2b, 0x7c, 0xbf, 0x03, 0x92, 0xf5, 0xe4, - 0xd3, 0xb3, 0xb3, 0x59, 0x3e, 0xc7, 0xb4, 0xcf, 0xd0, 0x35, 0x1a, 0xa5, 0x18, 0xa1, 0xc8, 0xa3, - 0x3d, 0xfa, 0xfa, 0xd7, 0x3f, 0xbf, 0xad, 0xec, 0x21, 0xdd, 0x70, 0xf9, 0xf4, 0xdf, 0x68, 0x7c, - 0x39, 0xeb, 0xcc, 0xaf, 0xe4, 0x1b, 0xdb, 0xb4, 0xa7, 0x6e, 0x4d, 0x2f, 0x89, 0xff, 0x3d, 0x80, - 0x6f, 0x29, 0x65, 0x9f, 0x99, 0xff, 0x93, 0xb6, 0xc7, 0x52, 0x9b, 0x89, 0xf6, 0x5e, 0xae, 0x6d, - 0x64, 0xe6, 0xd5, 0x99, 0x04, 0x2e, 0x7f, 0xc4, 0x3b, 0x1c, 0x5d, 0xc0, 0x5a, 0x7e, 0xd8, 0xd1, - 0xab, 0x5e, 0xbc, 0xc6, 0x6e, 0x1e, 0x50, 0xf6, 0xda, 0x99, 0xbf, 0x55, 0x60, 0xa5, 0xc3, 0x93, - 0x5a, 0x6c, 0x94, 0xf6, 0xfb, 0xb5, 0xaa, 0x71, 0xcd, 0x26, 0xd6, 0x4c, 0x59, 0x91, 0x77, 0xd0, - 0x83, 0xf2, 0x8a, 0xcc, 0x4a, 0x61, 0x70, 0x19, 0xff, 0x27, 0x00, 0xb7, 0x5f, 0x3e, 0x92, 0xe8, - 0xe1, 0xbf, 0x1d, 0x61, 0xf9, 0x82, 0x35, 0x1e, 0xfd, 0xb7, 0xc9, 0xd7, 0x76, 0x65, 0x16, 0x9a, - 0xb6, 0xb5, 0x90, 0x45, 0x5e, 0xf8, 0x53, 0xf0, 0xa0, 0xf5, 0xf0, 0x97, 0x3f, 0xb6, 0xc1, 0x17, - 0x86, 0xcb, 0x74, 0x31, 0x20, 0x62, 0xe0, 0x51, 0x97, 0xeb, 0x94, 0x88, 0x31, 0x8b, 0x7c, 0x63, - 0xf1, 0x77, 0x3f, 0xda, 0x37, 0x42, 0xdf, 0x35, 0x84, 0xa0, 0x61, 0xaf, 0xf7, 0x9a, 0x1c, 0xb5, - 0xfd, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x8b, 0x2e, 0x6e, 0xde, 0xff, 0x09, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// GtwGsClient is the client API for GtwGs service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type GtwGsClient interface { - // Link a gateway to the Gateway Server for streaming upstream messages and downstream messages. - LinkGateway(ctx context.Context, opts ...grpc.CallOption) (GtwGs_LinkGatewayClient, error) - // Get configuration for the concentrator. - GetConcentratorConfig(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*ConcentratorConfig, error) - // Get connection information to connect an MQTT gateway. - GetMQTTConnectionInfo(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*MQTTConnectionInfo, error) - // Get legacy connection information to connect a The Things Network Stack V2 MQTT gateway. - GetMQTTV2ConnectionInfo(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*MQTTConnectionInfo, error) + return false } -type gtwGsClient struct { - cc *grpc.ClientConn -} +type ScheduleDownlinkErrorDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func NewGtwGsClient(cc *grpc.ClientConn) GtwGsClient { - return >wGsClient{cc} + // Errors per path when downlink scheduling failed. + PathErrors []*ErrorDetails `protobuf:"bytes,1,rep,name=path_errors,json=pathErrors,proto3" json:"path_errors,omitempty"` } -func (c *gtwGsClient) LinkGateway(ctx context.Context, opts ...grpc.CallOption) (GtwGs_LinkGatewayClient, error) { - stream, err := c.cc.NewStream(ctx, &_GtwGs_serviceDesc.Streams[0], "/ttn.lorawan.v3.GtwGs/LinkGateway", opts...) - if err != nil { - return nil, err +func (x *ScheduleDownlinkErrorDetails) Reset() { + *x = ScheduleDownlinkErrorDetails{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gatewayserver_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - x := >wGsLinkGatewayClient{stream} - return x, nil -} - -type GtwGs_LinkGatewayClient interface { - Send(*GatewayUp) error - Recv() (*GatewayDown, error) - grpc.ClientStream -} - -type gtwGsLinkGatewayClient struct { - grpc.ClientStream } -func (x *gtwGsLinkGatewayClient) Send(m *GatewayUp) error { - return x.ClientStream.SendMsg(m) +func (x *ScheduleDownlinkErrorDetails) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *gtwGsLinkGatewayClient) Recv() (*GatewayDown, error) { - m := new(GatewayDown) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +func (*ScheduleDownlinkErrorDetails) ProtoMessage() {} -func (c *gtwGsClient) GetConcentratorConfig(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*ConcentratorConfig, error) { - out := new(ConcentratorConfig) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GtwGs/GetConcentratorConfig", in, out, opts...) - if err != nil { - return nil, err +func (x *ScheduleDownlinkErrorDetails) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gatewayserver_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return out, nil + return mi.MessageOf(x) } -func (c *gtwGsClient) GetMQTTConnectionInfo(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*MQTTConnectionInfo, error) { - out := new(MQTTConnectionInfo) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GtwGs/GetMQTTConnectionInfo", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// Deprecated: Use ScheduleDownlinkErrorDetails.ProtoReflect.Descriptor instead. +func (*ScheduleDownlinkErrorDetails) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gatewayserver_proto_rawDescGZIP(), []int{3} } -func (c *gtwGsClient) GetMQTTV2ConnectionInfo(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*MQTTConnectionInfo, error) { - out := new(MQTTConnectionInfo) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GtwGs/GetMQTTV2ConnectionInfo", in, out, opts...) - if err != nil { - return nil, err +func (x *ScheduleDownlinkErrorDetails) GetPathErrors() []*ErrorDetails { + if x != nil { + return x.PathErrors } - return out, nil -} - -// GtwGsServer is the server API for GtwGs service. -type GtwGsServer interface { - // Link a gateway to the Gateway Server for streaming upstream messages and downstream messages. - LinkGateway(GtwGs_LinkGatewayServer) error - // Get configuration for the concentrator. - GetConcentratorConfig(context.Context, *types.Empty) (*ConcentratorConfig, error) - // Get connection information to connect an MQTT gateway. - GetMQTTConnectionInfo(context.Context, *GatewayIdentifiers) (*MQTTConnectionInfo, error) - // Get legacy connection information to connect a The Things Network Stack V2 MQTT gateway. - GetMQTTV2ConnectionInfo(context.Context, *GatewayIdentifiers) (*MQTTConnectionInfo, error) -} - -// UnimplementedGtwGsServer can be embedded to have forward compatible implementations. -type UnimplementedGtwGsServer struct { -} - -func (*UnimplementedGtwGsServer) LinkGateway(srv GtwGs_LinkGatewayServer) error { - return status.Errorf(codes.Unimplemented, "method LinkGateway not implemented") -} -func (*UnimplementedGtwGsServer) GetConcentratorConfig(ctx context.Context, req *types.Empty) (*ConcentratorConfig, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetConcentratorConfig not implemented") -} -func (*UnimplementedGtwGsServer) GetMQTTConnectionInfo(ctx context.Context, req *GatewayIdentifiers) (*MQTTConnectionInfo, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetMQTTConnectionInfo not implemented") -} -func (*UnimplementedGtwGsServer) GetMQTTV2ConnectionInfo(ctx context.Context, req *GatewayIdentifiers) (*MQTTConnectionInfo, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetMQTTV2ConnectionInfo not implemented") -} - -func RegisterGtwGsServer(s *grpc.Server, srv GtwGsServer) { - s.RegisterService(&_GtwGs_serviceDesc, srv) -} - -func _GtwGs_LinkGateway_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(GtwGsServer).LinkGateway(>wGsLinkGatewayServer{stream}) -} - -type GtwGs_LinkGatewayServer interface { - Send(*GatewayDown) error - Recv() (*GatewayUp, error) - grpc.ServerStream + return nil } -type gtwGsLinkGatewayServer struct { - grpc.ServerStream -} +type BatchGetGatewayConnectionStatsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *gtwGsLinkGatewayServer) Send(m *GatewayDown) error { - return x.ServerStream.SendMsg(m) + GatewayIds []*GatewayIdentifiers `protobuf:"bytes,1,rep,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` + // The names of the gateway stats fields that should be returned. + // This mask will be applied on each entry returned. + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (x *gtwGsLinkGatewayServer) Recv() (*GatewayUp, error) { - m := new(GatewayUp) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err +func (x *BatchGetGatewayConnectionStatsRequest) Reset() { + *x = BatchGetGatewayConnectionStatsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gatewayserver_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return m, nil } -func _GtwGs_GetConcentratorConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GtwGsServer).GetConcentratorConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GtwGs/GetConcentratorConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GtwGsServer).GetConcentratorConfig(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) +func (x *BatchGetGatewayConnectionStatsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func _GtwGs_GetMQTTConnectionInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GatewayIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GtwGsServer).GetMQTTConnectionInfo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GtwGs/GetMQTTConnectionInfo", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GtwGsServer).GetMQTTConnectionInfo(ctx, req.(*GatewayIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} +func (*BatchGetGatewayConnectionStatsRequest) ProtoMessage() {} -func _GtwGs_GetMQTTV2ConnectionInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GatewayIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GtwGsServer).GetMQTTV2ConnectionInfo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GtwGs/GetMQTTV2ConnectionInfo", +func (x *BatchGetGatewayConnectionStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gatewayserver_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GtwGsServer).GetMQTTV2ConnectionInfo(ctx, req.(*GatewayIdentifiers)) - } - return interceptor(ctx, in, info, handler) + return mi.MessageOf(x) } -var _GtwGs_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.GtwGs", - HandlerType: (*GtwGsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetConcentratorConfig", - Handler: _GtwGs_GetConcentratorConfig_Handler, - }, - { - MethodName: "GetMQTTConnectionInfo", - Handler: _GtwGs_GetMQTTConnectionInfo_Handler, - }, - { - MethodName: "GetMQTTV2ConnectionInfo", - Handler: _GtwGs_GetMQTTV2ConnectionInfo_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "LinkGateway", - Handler: _GtwGs_LinkGateway_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "lorawan-stack/api/gatewayserver.proto", -} - -// NsGsClient is the client API for NsGs service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type NsGsClient interface { - // Instructs the Gateway Server to schedule a downlink message. - // The Gateway Server may refuse if there are any conflicts in the schedule or - // if a duty cycle prevents the gateway from transmitting. - ScheduleDownlink(ctx context.Context, in *DownlinkMessage, opts ...grpc.CallOption) (*ScheduleDownlinkResponse, error) -} - -type nsGsClient struct { - cc *grpc.ClientConn -} - -func NewNsGsClient(cc *grpc.ClientConn) NsGsClient { - return &nsGsClient{cc} +// Deprecated: Use BatchGetGatewayConnectionStatsRequest.ProtoReflect.Descriptor instead. +func (*BatchGetGatewayConnectionStatsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gatewayserver_proto_rawDescGZIP(), []int{4} } -func (c *nsGsClient) ScheduleDownlink(ctx context.Context, in *DownlinkMessage, opts ...grpc.CallOption) (*ScheduleDownlinkResponse, error) { - out := new(ScheduleDownlinkResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsGs/ScheduleDownlink", in, out, opts...) - if err != nil { - return nil, err +func (x *BatchGetGatewayConnectionStatsRequest) GetGatewayIds() []*GatewayIdentifiers { + if x != nil { + return x.GatewayIds } - return out, nil -} - -// NsGsServer is the server API for NsGs service. -type NsGsServer interface { - // Instructs the Gateway Server to schedule a downlink message. - // The Gateway Server may refuse if there are any conflicts in the schedule or - // if a duty cycle prevents the gateway from transmitting. - ScheduleDownlink(context.Context, *DownlinkMessage) (*ScheduleDownlinkResponse, error) -} - -// UnimplementedNsGsServer can be embedded to have forward compatible implementations. -type UnimplementedNsGsServer struct { -} - -func (*UnimplementedNsGsServer) ScheduleDownlink(ctx context.Context, req *DownlinkMessage) (*ScheduleDownlinkResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ScheduleDownlink not implemented") -} - -func RegisterNsGsServer(s *grpc.Server, srv NsGsServer) { - s.RegisterService(&_NsGs_serviceDesc, srv) + return nil } -func _NsGs_ScheduleDownlink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DownlinkMessage) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NsGsServer).ScheduleDownlink(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NsGs/ScheduleDownlink", +func (x *BatchGetGatewayConnectionStatsRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NsGsServer).ScheduleDownlink(ctx, req.(*DownlinkMessage)) - } - return interceptor(ctx, in, info, handler) -} - -var _NsGs_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.NsGs", - HandlerType: (*NsGsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ScheduleDownlink", - Handler: _NsGs_ScheduleDownlink_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/gatewayserver.proto", -} - -// GsClient is the client API for Gs service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type GsClient interface { - // Get statistics about the current gateway connection to the Gateway Server. - // This is not persisted between reconnects. - GetGatewayConnectionStats(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*GatewayConnectionStats, error) - // Get statistics about gateway connections to the Gateway Server of a batch of gateways. - // This is not persisted between reconnects. - // Gateways that are not connected or are part of a different cluster are ignored. - // It is up to the client to make sure that the gateways are in the requested cluster. - BatchGetGatewayConnectionStats(ctx context.Context, in *BatchGetGatewayConnectionStatsRequest, opts ...grpc.CallOption) (*BatchGetGatewayConnectionStatsResponse, error) -} - -type gsClient struct { - cc *grpc.ClientConn + return nil } -func NewGsClient(cc *grpc.ClientConn) GsClient { - return &gsClient{cc} -} +type BatchGetGatewayConnectionStatsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (c *gsClient) GetGatewayConnectionStats(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*GatewayConnectionStats, error) { - out := new(GatewayConnectionStats) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Gs/GetGatewayConnectionStats", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil + // The map key is the gateway identifier. + Entries map[string]*GatewayConnectionStats `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (c *gsClient) BatchGetGatewayConnectionStats(ctx context.Context, in *BatchGetGatewayConnectionStatsRequest, opts ...grpc.CallOption) (*BatchGetGatewayConnectionStatsResponse, error) { - out := new(BatchGetGatewayConnectionStatsResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Gs/BatchGetGatewayConnectionStats", in, out, opts...) - if err != nil { - return nil, err +func (x *BatchGetGatewayConnectionStatsResponse) Reset() { + *x = BatchGetGatewayConnectionStatsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_gatewayserver_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return out, nil } -// GsServer is the server API for Gs service. -type GsServer interface { - // Get statistics about the current gateway connection to the Gateway Server. - // This is not persisted between reconnects. - GetGatewayConnectionStats(context.Context, *GatewayIdentifiers) (*GatewayConnectionStats, error) - // Get statistics about gateway connections to the Gateway Server of a batch of gateways. - // This is not persisted between reconnects. - // Gateways that are not connected or are part of a different cluster are ignored. - // It is up to the client to make sure that the gateways are in the requested cluster. - BatchGetGatewayConnectionStats(context.Context, *BatchGetGatewayConnectionStatsRequest) (*BatchGetGatewayConnectionStatsResponse, error) +func (x *BatchGetGatewayConnectionStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -// UnimplementedGsServer can be embedded to have forward compatible implementations. -type UnimplementedGsServer struct { -} +func (*BatchGetGatewayConnectionStatsResponse) ProtoMessage() {} -func (*UnimplementedGsServer) GetGatewayConnectionStats(ctx context.Context, req *GatewayIdentifiers) (*GatewayConnectionStats, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetGatewayConnectionStats not implemented") -} -func (*UnimplementedGsServer) BatchGetGatewayConnectionStats(ctx context.Context, req *BatchGetGatewayConnectionStatsRequest) (*BatchGetGatewayConnectionStatsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method BatchGetGatewayConnectionStats not implemented") +func (x *BatchGetGatewayConnectionStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_gatewayserver_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func RegisterGsServer(s *grpc.Server, srv GsServer) { - s.RegisterService(&_Gs_serviceDesc, srv) +// Deprecated: Use BatchGetGatewayConnectionStatsResponse.ProtoReflect.Descriptor instead. +func (*BatchGetGatewayConnectionStatsResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_gatewayserver_proto_rawDescGZIP(), []int{5} } -func _Gs_GetGatewayConnectionStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GatewayIdentifiers) - if err := dec(in); err != nil { - return nil, err +func (x *BatchGetGatewayConnectionStatsResponse) GetEntries() map[string]*GatewayConnectionStats { + if x != nil { + return x.Entries } - if interceptor == nil { - return srv.(GsServer).GetGatewayConnectionStats(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Gs/GetGatewayConnectionStats", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GsServer).GetGatewayConnectionStats(ctx, req.(*GatewayIdentifiers)) - } - return interceptor(ctx, in, info, handler) + return nil } -func _Gs_BatchGetGatewayConnectionStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchGetGatewayConnectionStatsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GsServer).BatchGetGatewayConnectionStats(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Gs/BatchGetGatewayConnectionStats", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GsServer).BatchGetGatewayConnectionStats(ctx, req.(*BatchGetGatewayConnectionStatsRequest)) - } - return interceptor(ctx, in, info, handler) -} +var File_lorawan_stack_api_gatewayserver_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_gatewayserver_proto_rawDesc = []byte{ + 0x0a, 0x25, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, + 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe8, + 0x01, 0x0a, 0x09, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x70, 0x12, 0x46, 0x0a, 0x0f, + 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4d, 0x0a, 0x11, 0x74, 0x78, + 0x5f, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, + 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x74, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, + 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x59, 0x0a, 0x0b, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x4a, 0x0a, 0x10, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x18, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x39, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0xaa, 0x01, 0x02, 0x08, 0x01, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x41, 0x0a, 0x0d, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, + 0x68, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, + 0x10, 0x0a, 0x03, 0x72, 0x78, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x72, 0x78, + 0x31, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x78, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, + 0x72, 0x78, 0x32, 0x22, 0x5d, 0x0a, 0x1c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x74, 0x68, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x25, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x0b, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, 0x08, 0x01, 0x10, + 0x64, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, + 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xeb, 0x01, 0x0a, 0x26, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x6e, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x1a, 0x62, 0x0a, 0x0c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32, 0xdf, 0x03, 0x0a, 0x05, 0x47, 0x74, 0x77, 0x47, 0x73, + 0x12, 0x49, 0x0a, 0x0b, 0x4c, 0x69, 0x6e, 0x6b, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, + 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x70, 0x1a, 0x1b, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x28, 0x01, 0x30, 0x01, 0x12, 0x53, 0x0a, 0x15, 0x47, + 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, + 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x97, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4d, 0x51, 0x54, 0x54, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x22, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x51, 0x54, 0x54, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, + 0x66, 0x6f, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x67, 0x73, 0x2f, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x9b, 0x01, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x4d, 0x51, 0x54, 0x54, 0x56, 0x32, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x51, 0x54, 0x54, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x38, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x67, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x76, 0x32, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x2d, 0x69, 0x6e, 0x66, 0x6f, 0x32, 0x65, 0x0a, 0x04, 0x4e, 0x73, 0x47, 0x73, + 0x12, 0x5d, 0x0a, 0x10, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, + 0xde, 0x02, 0x0a, 0x02, 0x47, 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x67, 0x73, 0x2f, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x12, 0xb9, 0x01, 0x0a, 0x1e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, + 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, + 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, + 0x2f, 0x67, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x3a, 0x01, 0x2a, + 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, + 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_gatewayserver_proto_rawDescOnce sync.Once + file_lorawan_stack_api_gatewayserver_proto_rawDescData = file_lorawan_stack_api_gatewayserver_proto_rawDesc +) -var _Gs_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.Gs", - HandlerType: (*GsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetGatewayConnectionStats", - Handler: _Gs_GetGatewayConnectionStats_Handler, - }, - { - MethodName: "BatchGetGatewayConnectionStats", - Handler: _Gs_BatchGetGatewayConnectionStats_Handler, +func file_lorawan_stack_api_gatewayserver_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_gatewayserver_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_gatewayserver_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_gatewayserver_proto_rawDescData) + }) + return file_lorawan_stack_api_gatewayserver_proto_rawDescData +} + +var file_lorawan_stack_api_gatewayserver_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_lorawan_stack_api_gatewayserver_proto_goTypes = []interface{}{ + (*GatewayUp)(nil), // 0: ttn.lorawan.v3.GatewayUp + (*GatewayDown)(nil), // 1: ttn.lorawan.v3.GatewayDown + (*ScheduleDownlinkResponse)(nil), // 2: ttn.lorawan.v3.ScheduleDownlinkResponse + (*ScheduleDownlinkErrorDetails)(nil), // 3: ttn.lorawan.v3.ScheduleDownlinkErrorDetails + (*BatchGetGatewayConnectionStatsRequest)(nil), // 4: ttn.lorawan.v3.BatchGetGatewayConnectionStatsRequest + (*BatchGetGatewayConnectionStatsResponse)(nil), // 5: ttn.lorawan.v3.BatchGetGatewayConnectionStatsResponse + nil, // 6: ttn.lorawan.v3.BatchGetGatewayConnectionStatsResponse.EntriesEntry + (*UplinkMessage)(nil), // 7: ttn.lorawan.v3.UplinkMessage + (*GatewayStatus)(nil), // 8: ttn.lorawan.v3.GatewayStatus + (*TxAcknowledgment)(nil), // 9: ttn.lorawan.v3.TxAcknowledgment + (*DownlinkMessage)(nil), // 10: ttn.lorawan.v3.DownlinkMessage + (*durationpb.Duration)(nil), // 11: google.protobuf.Duration + (*DownlinkPath)(nil), // 12: ttn.lorawan.v3.DownlinkPath + (*ErrorDetails)(nil), // 13: ttn.lorawan.v3.ErrorDetails + (*GatewayIdentifiers)(nil), // 14: ttn.lorawan.v3.GatewayIdentifiers + (*fieldmaskpb.FieldMask)(nil), // 15: google.protobuf.FieldMask + (*GatewayConnectionStats)(nil), // 16: ttn.lorawan.v3.GatewayConnectionStats + (*emptypb.Empty)(nil), // 17: google.protobuf.Empty + (*ConcentratorConfig)(nil), // 18: ttn.lorawan.v3.ConcentratorConfig + (*MQTTConnectionInfo)(nil), // 19: ttn.lorawan.v3.MQTTConnectionInfo +} +var file_lorawan_stack_api_gatewayserver_proto_depIdxs = []int32{ + 7, // 0: ttn.lorawan.v3.GatewayUp.uplink_messages:type_name -> ttn.lorawan.v3.UplinkMessage + 8, // 1: ttn.lorawan.v3.GatewayUp.gateway_status:type_name -> ttn.lorawan.v3.GatewayStatus + 9, // 2: ttn.lorawan.v3.GatewayUp.tx_acknowledgment:type_name -> ttn.lorawan.v3.TxAcknowledgment + 10, // 3: ttn.lorawan.v3.GatewayDown.downlink_message:type_name -> ttn.lorawan.v3.DownlinkMessage + 11, // 4: ttn.lorawan.v3.ScheduleDownlinkResponse.delay:type_name -> google.protobuf.Duration + 12, // 5: ttn.lorawan.v3.ScheduleDownlinkResponse.downlink_path:type_name -> ttn.lorawan.v3.DownlinkPath + 13, // 6: ttn.lorawan.v3.ScheduleDownlinkErrorDetails.path_errors:type_name -> ttn.lorawan.v3.ErrorDetails + 14, // 7: ttn.lorawan.v3.BatchGetGatewayConnectionStatsRequest.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 15, // 8: ttn.lorawan.v3.BatchGetGatewayConnectionStatsRequest.field_mask:type_name -> google.protobuf.FieldMask + 6, // 9: ttn.lorawan.v3.BatchGetGatewayConnectionStatsResponse.entries:type_name -> ttn.lorawan.v3.BatchGetGatewayConnectionStatsResponse.EntriesEntry + 16, // 10: ttn.lorawan.v3.BatchGetGatewayConnectionStatsResponse.EntriesEntry.value:type_name -> ttn.lorawan.v3.GatewayConnectionStats + 0, // 11: ttn.lorawan.v3.GtwGs.LinkGateway:input_type -> ttn.lorawan.v3.GatewayUp + 17, // 12: ttn.lorawan.v3.GtwGs.GetConcentratorConfig:input_type -> google.protobuf.Empty + 14, // 13: ttn.lorawan.v3.GtwGs.GetMQTTConnectionInfo:input_type -> ttn.lorawan.v3.GatewayIdentifiers + 14, // 14: ttn.lorawan.v3.GtwGs.GetMQTTV2ConnectionInfo:input_type -> ttn.lorawan.v3.GatewayIdentifiers + 10, // 15: ttn.lorawan.v3.NsGs.ScheduleDownlink:input_type -> ttn.lorawan.v3.DownlinkMessage + 14, // 16: ttn.lorawan.v3.Gs.GetGatewayConnectionStats:input_type -> ttn.lorawan.v3.GatewayIdentifiers + 4, // 17: ttn.lorawan.v3.Gs.BatchGetGatewayConnectionStats:input_type -> ttn.lorawan.v3.BatchGetGatewayConnectionStatsRequest + 1, // 18: ttn.lorawan.v3.GtwGs.LinkGateway:output_type -> ttn.lorawan.v3.GatewayDown + 18, // 19: ttn.lorawan.v3.GtwGs.GetConcentratorConfig:output_type -> ttn.lorawan.v3.ConcentratorConfig + 19, // 20: ttn.lorawan.v3.GtwGs.GetMQTTConnectionInfo:output_type -> ttn.lorawan.v3.MQTTConnectionInfo + 19, // 21: ttn.lorawan.v3.GtwGs.GetMQTTV2ConnectionInfo:output_type -> ttn.lorawan.v3.MQTTConnectionInfo + 2, // 22: ttn.lorawan.v3.NsGs.ScheduleDownlink:output_type -> ttn.lorawan.v3.ScheduleDownlinkResponse + 16, // 23: ttn.lorawan.v3.Gs.GetGatewayConnectionStats:output_type -> ttn.lorawan.v3.GatewayConnectionStats + 5, // 24: ttn.lorawan.v3.Gs.BatchGetGatewayConnectionStats:output_type -> ttn.lorawan.v3.BatchGetGatewayConnectionStatsResponse + 18, // [18:25] is the sub-list for method output_type + 11, // [11:18] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_gatewayserver_proto_init() } +func file_lorawan_stack_api_gatewayserver_proto_init() { + if File_lorawan_stack_api_gatewayserver_proto != nil { + return + } + file_lorawan_stack_api_error_proto_init() + file_lorawan_stack_api_gateway_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_lorawan_proto_init() + file_lorawan_stack_api_messages_proto_init() + file_lorawan_stack_api_mqtt_proto_init() + file_lorawan_stack_api_regional_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_gatewayserver_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayUp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gatewayserver_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayDown); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gatewayserver_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ScheduleDownlinkResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gatewayserver_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ScheduleDownlinkErrorDetails); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gatewayserver_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BatchGetGatewayConnectionStatsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_gatewayserver_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BatchGetGatewayConnectionStatsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_gatewayserver_proto_rawDesc, + NumEnums: 0, + NumMessages: 7, + NumExtensions: 0, + NumServices: 3, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/gatewayserver.proto", + GoTypes: file_lorawan_stack_api_gatewayserver_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_gatewayserver_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_gatewayserver_proto_msgTypes, + }.Build() + File_lorawan_stack_api_gatewayserver_proto = out.File + file_lorawan_stack_api_gatewayserver_proto_rawDesc = nil + file_lorawan_stack_api_gatewayserver_proto_goTypes = nil + file_lorawan_stack_api_gatewayserver_proto_depIdxs = nil } diff --git a/pkg/ttnpb/gatewayserver.pb.gw.go b/pkg/ttnpb/gatewayserver.pb.gw.go index 67a14ee773..f8dc83259d 100644 --- a/pkg/ttnpb/gatewayserver.pb.gw.go +++ b/pkg/ttnpb/gatewayserver.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join var ( @@ -54,7 +52,6 @@ func request_GtwGs_GetMQTTConnectionInfo_0(ctx context.Context, marshaler runtim } protoReq.GatewayId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_id", err) } @@ -88,7 +85,6 @@ func local_request_GtwGs_GetMQTTConnectionInfo_0(ctx context.Context, marshaler } protoReq.GatewayId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_id", err) } @@ -126,7 +122,6 @@ func request_GtwGs_GetMQTTV2ConnectionInfo_0(ctx context.Context, marshaler runt } protoReq.GatewayId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_id", err) } @@ -160,7 +155,6 @@ func local_request_GtwGs_GetMQTTV2ConnectionInfo_0(ctx context.Context, marshale } protoReq.GatewayId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_id", err) } @@ -198,7 +192,6 @@ func request_Gs_GetGatewayConnectionStats_0(ctx context.Context, marshaler runti } protoReq.GatewayId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_id", err) } @@ -232,7 +225,6 @@ func local_request_Gs_GetGatewayConnectionStats_0(ctx context.Context, marshaler } protoReq.GatewayId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_id", err) } @@ -295,20 +287,22 @@ func RegisterGtwGsHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GtwGs/GetMQTTConnectionInfo", runtime.WithHTTPPathPattern("/gs/gateways/{gateway_id}/mqtt-connection-info")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GtwGs_GetMQTTConnectionInfo_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GtwGs_GetMQTTConnectionInfo_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GtwGs_GetMQTTConnectionInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GtwGs_GetMQTTConnectionInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -318,20 +312,22 @@ func RegisterGtwGsHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.GtwGs/GetMQTTV2ConnectionInfo", runtime.WithHTTPPathPattern("/gs/gateways/{gateway_id}/mqttv2-connection-info")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_GtwGs_GetMQTTV2ConnectionInfo_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_GtwGs_GetMQTTV2ConnectionInfo_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GtwGs_GetMQTTV2ConnectionInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GtwGs_GetMQTTV2ConnectionInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -350,20 +346,22 @@ func RegisterGsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Gs/GetGatewayConnectionStats", runtime.WithHTTPPathPattern("/gs/gateways/{gateway_id}/connection/stats")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Gs_GetGatewayConnectionStats_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Gs_GetGatewayConnectionStats_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Gs_GetGatewayConnectionStats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Gs_GetGatewayConnectionStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -373,20 +371,22 @@ func RegisterGsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Gs/BatchGetGatewayConnectionStats", runtime.WithHTTPPathPattern("/gs/gateways/connection/stats")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Gs_BatchGetGatewayConnectionStats_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Gs_BatchGetGatewayConnectionStats_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Gs_BatchGetGatewayConnectionStats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Gs_BatchGetGatewayConnectionStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -435,19 +435,21 @@ func RegisterGtwGsHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GtwGs/GetMQTTConnectionInfo", runtime.WithHTTPPathPattern("/gs/gateways/{gateway_id}/mqtt-connection-info")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GtwGs_GetMQTTConnectionInfo_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GtwGs_GetMQTTConnectionInfo_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GtwGs_GetMQTTConnectionInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GtwGs_GetMQTTConnectionInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -455,19 +457,21 @@ func RegisterGtwGsHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.GtwGs/GetMQTTV2ConnectionInfo", runtime.WithHTTPPathPattern("/gs/gateways/{gateway_id}/mqttv2-connection-info")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_GtwGs_GetMQTTV2ConnectionInfo_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_GtwGs_GetMQTTV2ConnectionInfo_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_GtwGs_GetMQTTV2ConnectionInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_GtwGs_GetMQTTV2ConnectionInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -475,9 +479,9 @@ func RegisterGtwGsHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie } var ( - pattern_GtwGs_GetMQTTConnectionInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"gs", "gateways", "gateway_id", "mqtt-connection-info"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GtwGs_GetMQTTConnectionInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"gs", "gateways", "gateway_id", "mqtt-connection-info"}, "")) - pattern_GtwGs_GetMQTTV2ConnectionInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"gs", "gateways", "gateway_id", "mqttv2-connection-info"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_GtwGs_GetMQTTV2ConnectionInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"gs", "gateways", "gateway_id", "mqttv2-connection-info"}, "")) ) var ( @@ -528,19 +532,21 @@ func RegisterGsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Gs/GetGatewayConnectionStats", runtime.WithHTTPPathPattern("/gs/gateways/{gateway_id}/connection/stats")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Gs_GetGatewayConnectionStats_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Gs_GetGatewayConnectionStats_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Gs_GetGatewayConnectionStats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Gs_GetGatewayConnectionStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -548,19 +554,21 @@ func RegisterGsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Gs/BatchGetGatewayConnectionStats", runtime.WithHTTPPathPattern("/gs/gateways/connection/stats")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Gs_BatchGetGatewayConnectionStats_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Gs_BatchGetGatewayConnectionStats_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Gs_BatchGetGatewayConnectionStats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Gs_BatchGetGatewayConnectionStats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -568,9 +576,9 @@ func RegisterGsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client } var ( - pattern_Gs_GetGatewayConnectionStats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"gs", "gateways", "gateway_id", "connection", "stats"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Gs_GetGatewayConnectionStats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"gs", "gateways", "gateway_id", "connection", "stats"}, "")) - pattern_Gs_BatchGetGatewayConnectionStats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"gs", "gateways", "connection", "stats"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Gs_BatchGetGatewayConnectionStats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"gs", "gateways", "connection", "stats"}, "")) ) var ( diff --git a/pkg/ttnpb/gatewayserver.pb.validate.go b/pkg/ttnpb/gatewayserver.pb.validate.go index 95ce70918a..4d8dd8ae56 100644 --- a/pkg/ttnpb/gatewayserver.pb.validate.go +++ b/pkg/ttnpb/gatewayserver.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _gatewayserver_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on GatewayUp with the rules defined // in the proto definition for this message. If any rules are violated, an // error is returned. diff --git a/pkg/ttnpb/gatewayserver_grpc.pb.go b/pkg/ttnpb/gatewayserver_grpc.pb.go new file mode 100644 index 0000000000..e0792886f4 --- /dev/null +++ b/pkg/ttnpb/gatewayserver_grpc.pb.go @@ -0,0 +1,481 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/gatewayserver.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// GtwGsClient is the client API for GtwGs service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type GtwGsClient interface { + // Link a gateway to the Gateway Server for streaming upstream messages and downstream messages. + LinkGateway(ctx context.Context, opts ...grpc.CallOption) (GtwGs_LinkGatewayClient, error) + // Get configuration for the concentrator. + GetConcentratorConfig(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ConcentratorConfig, error) + // Get connection information to connect an MQTT gateway. + GetMQTTConnectionInfo(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*MQTTConnectionInfo, error) + // Get legacy connection information to connect a The Things Network Stack V2 MQTT gateway. + GetMQTTV2ConnectionInfo(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*MQTTConnectionInfo, error) +} + +type gtwGsClient struct { + cc grpc.ClientConnInterface +} + +func NewGtwGsClient(cc grpc.ClientConnInterface) GtwGsClient { + return >wGsClient{cc} +} + +func (c *gtwGsClient) LinkGateway(ctx context.Context, opts ...grpc.CallOption) (GtwGs_LinkGatewayClient, error) { + stream, err := c.cc.NewStream(ctx, &GtwGs_ServiceDesc.Streams[0], "/ttn.lorawan.v3.GtwGs/LinkGateway", opts...) + if err != nil { + return nil, err + } + x := >wGsLinkGatewayClient{stream} + return x, nil +} + +type GtwGs_LinkGatewayClient interface { + Send(*GatewayUp) error + Recv() (*GatewayDown, error) + grpc.ClientStream +} + +type gtwGsLinkGatewayClient struct { + grpc.ClientStream +} + +func (x *gtwGsLinkGatewayClient) Send(m *GatewayUp) error { + return x.ClientStream.SendMsg(m) +} + +func (x *gtwGsLinkGatewayClient) Recv() (*GatewayDown, error) { + m := new(GatewayDown) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *gtwGsClient) GetConcentratorConfig(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ConcentratorConfig, error) { + out := new(ConcentratorConfig) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GtwGs/GetConcentratorConfig", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gtwGsClient) GetMQTTConnectionInfo(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*MQTTConnectionInfo, error) { + out := new(MQTTConnectionInfo) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GtwGs/GetMQTTConnectionInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gtwGsClient) GetMQTTV2ConnectionInfo(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*MQTTConnectionInfo, error) { + out := new(MQTTConnectionInfo) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GtwGs/GetMQTTV2ConnectionInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// GtwGsServer is the server API for GtwGs service. +// All implementations must embed UnimplementedGtwGsServer +// for forward compatibility +type GtwGsServer interface { + // Link a gateway to the Gateway Server for streaming upstream messages and downstream messages. + LinkGateway(GtwGs_LinkGatewayServer) error + // Get configuration for the concentrator. + GetConcentratorConfig(context.Context, *emptypb.Empty) (*ConcentratorConfig, error) + // Get connection information to connect an MQTT gateway. + GetMQTTConnectionInfo(context.Context, *GatewayIdentifiers) (*MQTTConnectionInfo, error) + // Get legacy connection information to connect a The Things Network Stack V2 MQTT gateway. + GetMQTTV2ConnectionInfo(context.Context, *GatewayIdentifiers) (*MQTTConnectionInfo, error) + mustEmbedUnimplementedGtwGsServer() +} + +// UnimplementedGtwGsServer must be embedded to have forward compatible implementations. +type UnimplementedGtwGsServer struct { +} + +func (UnimplementedGtwGsServer) LinkGateway(GtwGs_LinkGatewayServer) error { + return status.Errorf(codes.Unimplemented, "method LinkGateway not implemented") +} +func (UnimplementedGtwGsServer) GetConcentratorConfig(context.Context, *emptypb.Empty) (*ConcentratorConfig, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetConcentratorConfig not implemented") +} +func (UnimplementedGtwGsServer) GetMQTTConnectionInfo(context.Context, *GatewayIdentifiers) (*MQTTConnectionInfo, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetMQTTConnectionInfo not implemented") +} +func (UnimplementedGtwGsServer) GetMQTTV2ConnectionInfo(context.Context, *GatewayIdentifiers) (*MQTTConnectionInfo, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetMQTTV2ConnectionInfo not implemented") +} +func (UnimplementedGtwGsServer) mustEmbedUnimplementedGtwGsServer() {} + +// UnsafeGtwGsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to GtwGsServer will +// result in compilation errors. +type UnsafeGtwGsServer interface { + mustEmbedUnimplementedGtwGsServer() +} + +func RegisterGtwGsServer(s grpc.ServiceRegistrar, srv GtwGsServer) { + s.RegisterService(&GtwGs_ServiceDesc, srv) +} + +func _GtwGs_LinkGateway_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(GtwGsServer).LinkGateway(>wGsLinkGatewayServer{stream}) +} + +type GtwGs_LinkGatewayServer interface { + Send(*GatewayDown) error + Recv() (*GatewayUp, error) + grpc.ServerStream +} + +type gtwGsLinkGatewayServer struct { + grpc.ServerStream +} + +func (x *gtwGsLinkGatewayServer) Send(m *GatewayDown) error { + return x.ServerStream.SendMsg(m) +} + +func (x *gtwGsLinkGatewayServer) Recv() (*GatewayUp, error) { + m := new(GatewayUp) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func _GtwGs_GetConcentratorConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GtwGsServer).GetConcentratorConfig(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GtwGs/GetConcentratorConfig", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GtwGsServer).GetConcentratorConfig(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _GtwGs_GetMQTTConnectionInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GatewayIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GtwGsServer).GetMQTTConnectionInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GtwGs/GetMQTTConnectionInfo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GtwGsServer).GetMQTTConnectionInfo(ctx, req.(*GatewayIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _GtwGs_GetMQTTV2ConnectionInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GatewayIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GtwGsServer).GetMQTTV2ConnectionInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GtwGs/GetMQTTV2ConnectionInfo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GtwGsServer).GetMQTTV2ConnectionInfo(ctx, req.(*GatewayIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// GtwGs_ServiceDesc is the grpc.ServiceDesc for GtwGs service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var GtwGs_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.GtwGs", + HandlerType: (*GtwGsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetConcentratorConfig", + Handler: _GtwGs_GetConcentratorConfig_Handler, + }, + { + MethodName: "GetMQTTConnectionInfo", + Handler: _GtwGs_GetMQTTConnectionInfo_Handler, + }, + { + MethodName: "GetMQTTV2ConnectionInfo", + Handler: _GtwGs_GetMQTTV2ConnectionInfo_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "LinkGateway", + Handler: _GtwGs_LinkGateway_Handler, + ServerStreams: true, + ClientStreams: true, + }, + }, + Metadata: "lorawan-stack/api/gatewayserver.proto", +} + +// NsGsClient is the client API for NsGs service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type NsGsClient interface { + // Instructs the Gateway Server to schedule a downlink message. + // The Gateway Server may refuse if there are any conflicts in the schedule or + // if a duty cycle prevents the gateway from transmitting. + ScheduleDownlink(ctx context.Context, in *DownlinkMessage, opts ...grpc.CallOption) (*ScheduleDownlinkResponse, error) +} + +type nsGsClient struct { + cc grpc.ClientConnInterface +} + +func NewNsGsClient(cc grpc.ClientConnInterface) NsGsClient { + return &nsGsClient{cc} +} + +func (c *nsGsClient) ScheduleDownlink(ctx context.Context, in *DownlinkMessage, opts ...grpc.CallOption) (*ScheduleDownlinkResponse, error) { + out := new(ScheduleDownlinkResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsGs/ScheduleDownlink", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// NsGsServer is the server API for NsGs service. +// All implementations must embed UnimplementedNsGsServer +// for forward compatibility +type NsGsServer interface { + // Instructs the Gateway Server to schedule a downlink message. + // The Gateway Server may refuse if there are any conflicts in the schedule or + // if a duty cycle prevents the gateway from transmitting. + ScheduleDownlink(context.Context, *DownlinkMessage) (*ScheduleDownlinkResponse, error) + mustEmbedUnimplementedNsGsServer() +} + +// UnimplementedNsGsServer must be embedded to have forward compatible implementations. +type UnimplementedNsGsServer struct { +} + +func (UnimplementedNsGsServer) ScheduleDownlink(context.Context, *DownlinkMessage) (*ScheduleDownlinkResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ScheduleDownlink not implemented") +} +func (UnimplementedNsGsServer) mustEmbedUnimplementedNsGsServer() {} + +// UnsafeNsGsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to NsGsServer will +// result in compilation errors. +type UnsafeNsGsServer interface { + mustEmbedUnimplementedNsGsServer() +} + +func RegisterNsGsServer(s grpc.ServiceRegistrar, srv NsGsServer) { + s.RegisterService(&NsGs_ServiceDesc, srv) +} + +func _NsGs_ScheduleDownlink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DownlinkMessage) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NsGsServer).ScheduleDownlink(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NsGs/ScheduleDownlink", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NsGsServer).ScheduleDownlink(ctx, req.(*DownlinkMessage)) + } + return interceptor(ctx, in, info, handler) +} + +// NsGs_ServiceDesc is the grpc.ServiceDesc for NsGs service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var NsGs_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.NsGs", + HandlerType: (*NsGsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ScheduleDownlink", + Handler: _NsGs_ScheduleDownlink_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/gatewayserver.proto", +} + +// GsClient is the client API for Gs service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type GsClient interface { + // Get statistics about the current gateway connection to the Gateway Server. + // This is not persisted between reconnects. + GetGatewayConnectionStats(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*GatewayConnectionStats, error) + // Get statistics about gateway connections to the Gateway Server of a batch of gateways. + // This is not persisted between reconnects. + // Gateways that are not connected or are part of a different cluster are ignored. + // It is up to the client to make sure that the gateways are in the requested cluster. + BatchGetGatewayConnectionStats(ctx context.Context, in *BatchGetGatewayConnectionStatsRequest, opts ...grpc.CallOption) (*BatchGetGatewayConnectionStatsResponse, error) +} + +type gsClient struct { + cc grpc.ClientConnInterface +} + +func NewGsClient(cc grpc.ClientConnInterface) GsClient { + return &gsClient{cc} +} + +func (c *gsClient) GetGatewayConnectionStats(ctx context.Context, in *GatewayIdentifiers, opts ...grpc.CallOption) (*GatewayConnectionStats, error) { + out := new(GatewayConnectionStats) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Gs/GetGatewayConnectionStats", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gsClient) BatchGetGatewayConnectionStats(ctx context.Context, in *BatchGetGatewayConnectionStatsRequest, opts ...grpc.CallOption) (*BatchGetGatewayConnectionStatsResponse, error) { + out := new(BatchGetGatewayConnectionStatsResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Gs/BatchGetGatewayConnectionStats", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// GsServer is the server API for Gs service. +// All implementations must embed UnimplementedGsServer +// for forward compatibility +type GsServer interface { + // Get statistics about the current gateway connection to the Gateway Server. + // This is not persisted between reconnects. + GetGatewayConnectionStats(context.Context, *GatewayIdentifiers) (*GatewayConnectionStats, error) + // Get statistics about gateway connections to the Gateway Server of a batch of gateways. + // This is not persisted between reconnects. + // Gateways that are not connected or are part of a different cluster are ignored. + // It is up to the client to make sure that the gateways are in the requested cluster. + BatchGetGatewayConnectionStats(context.Context, *BatchGetGatewayConnectionStatsRequest) (*BatchGetGatewayConnectionStatsResponse, error) + mustEmbedUnimplementedGsServer() +} + +// UnimplementedGsServer must be embedded to have forward compatible implementations. +type UnimplementedGsServer struct { +} + +func (UnimplementedGsServer) GetGatewayConnectionStats(context.Context, *GatewayIdentifiers) (*GatewayConnectionStats, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetGatewayConnectionStats not implemented") +} +func (UnimplementedGsServer) BatchGetGatewayConnectionStats(context.Context, *BatchGetGatewayConnectionStatsRequest) (*BatchGetGatewayConnectionStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method BatchGetGatewayConnectionStats not implemented") +} +func (UnimplementedGsServer) mustEmbedUnimplementedGsServer() {} + +// UnsafeGsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to GsServer will +// result in compilation errors. +type UnsafeGsServer interface { + mustEmbedUnimplementedGsServer() +} + +func RegisterGsServer(s grpc.ServiceRegistrar, srv GsServer) { + s.RegisterService(&Gs_ServiceDesc, srv) +} + +func _Gs_GetGatewayConnectionStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GatewayIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GsServer).GetGatewayConnectionStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Gs/GetGatewayConnectionStats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GsServer).GetGatewayConnectionStats(ctx, req.(*GatewayIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _Gs_BatchGetGatewayConnectionStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BatchGetGatewayConnectionStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GsServer).BatchGetGatewayConnectionStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Gs/BatchGetGatewayConnectionStats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GsServer).BatchGetGatewayConnectionStats(ctx, req.(*BatchGetGatewayConnectionStatsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Gs_ServiceDesc is the grpc.ServiceDesc for Gs service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Gs_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.Gs", + HandlerType: (*GsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetGatewayConnectionStats", + Handler: _Gs_GetGatewayConnectionStats_Handler, + }, + { + MethodName: "BatchGetGatewayConnectionStats", + Handler: _Gs_BatchGetGatewayConnectionStats_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/gatewayserver.proto", +} diff --git a/pkg/ttnpb/gatewayserver_json.pb.go b/pkg/ttnpb/gatewayserver_json.pb.go index 6b0fb84c4b..28a98b9d79 100644 --- a/pkg/ttnpb/gatewayserver_json.pb.go +++ b/pkg/ttnpb/gatewayserver_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/gatewayserver.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" ) @@ -158,7 +158,7 @@ func (x *ScheduleDownlinkResponse) MarshalProtoJSON(s *jsonplugin.MarshalState) if x.Delay == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.Delay) + golang.MarshalDuration(s, x.Delay) } } if x.DownlinkPath != nil || s.HasField("downlink_path") { @@ -199,7 +199,7 @@ func (x *ScheduleDownlinkResponse) UnmarshalProtoJSON(s *jsonplugin.UnmarshalSta x.Delay = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -251,7 +251,7 @@ func (x *BatchGetGatewayConnectionStatsRequest) MarshalProtoJSON(s *jsonplugin.M if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -295,7 +295,7 @@ func (x *BatchGetGatewayConnectionStatsRequest) UnmarshalProtoJSON(s *jsonplugin x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } diff --git a/pkg/ttnpb/identifiers.pb.go b/pkg/ttnpb/identifiers.pb.go index 490a6c4c48..97efb2a17a 100644 --- a/pkg/ttnpb/identifiers.pb.go +++ b/pkg/ttnpb/identifiers.pb.go @@ -1,109 +1,143 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/identifiers.proto package ttnpb import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - golang_proto "github.com/golang/protobuf/proto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type ApplicationIdentifiers struct { - ApplicationId string `protobuf:"bytes,1,opt,name=application_id,json=applicationId,proto3" json:"application_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationIdentifiers) Reset() { *m = ApplicationIdentifiers{} } -func (m *ApplicationIdentifiers) String() string { return proto.CompactTextString(m) } -func (*ApplicationIdentifiers) ProtoMessage() {} -func (*ApplicationIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_6da1fbfdea4d7423, []int{0} + ApplicationId string `protobuf:"bytes,1,opt,name=application_id,json=applicationId,proto3" json:"application_id,omitempty"` } -func (m *ApplicationIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationIdentifiers.Unmarshal(m, b) -} -func (m *ApplicationIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationIdentifiers.Marshal(b, m, deterministic) -} -func (m *ApplicationIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationIdentifiers.Merge(m, src) + +func (x *ApplicationIdentifiers) Reset() { + *x = ApplicationIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationIdentifiers) XXX_Size() int { - return xxx_messageInfo_ApplicationIdentifiers.Size(m) + +func (x *ApplicationIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationIdentifiers.DiscardUnknown(m) + +func (*ApplicationIdentifiers) ProtoMessage() {} + +func (x *ApplicationIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationIdentifiers proto.InternalMessageInfo +// Deprecated: Use ApplicationIdentifiers.ProtoReflect.Descriptor instead. +func (*ApplicationIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identifiers_proto_rawDescGZIP(), []int{0} +} -func (m *ApplicationIdentifiers) GetApplicationId() string { - if m != nil { - return m.ApplicationId +func (x *ApplicationIdentifiers) GetApplicationId() string { + if x != nil { + return x.ApplicationId } return "" } type ClientIdentifiers struct { - ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ClientIdentifiers) Reset() { *m = ClientIdentifiers{} } -func (m *ClientIdentifiers) String() string { return proto.CompactTextString(m) } -func (*ClientIdentifiers) ProtoMessage() {} -func (*ClientIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_6da1fbfdea4d7423, []int{1} -} -func (m *ClientIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ClientIdentifiers.Unmarshal(m, b) -} -func (m *ClientIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ClientIdentifiers.Marshal(b, m, deterministic) + ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` } -func (m *ClientIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_ClientIdentifiers.Merge(m, src) + +func (x *ClientIdentifiers) Reset() { + *x = ClientIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ClientIdentifiers) XXX_Size() int { - return xxx_messageInfo_ClientIdentifiers.Size(m) + +func (x *ClientIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ClientIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_ClientIdentifiers.DiscardUnknown(m) + +func (*ClientIdentifiers) ProtoMessage() {} + +func (x *ClientIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ClientIdentifiers proto.InternalMessageInfo +// Deprecated: Use ClientIdentifiers.ProtoReflect.Descriptor instead. +func (*ClientIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identifiers_proto_rawDescGZIP(), []int{1} +} -func (m *ClientIdentifiers) GetClientId() string { - if m != nil { - return m.ClientId +func (x *ClientIdentifiers) GetClientId() string { + if x != nil { + return x.ClientId } return "" } type EndDeviceIdentifiers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + DeviceId string `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"` ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,2,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` // The LoRaWAN DevEUI. @@ -111,254 +145,281 @@ type EndDeviceIdentifiers struct { // The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices). JoinEui []byte `protobuf:"bytes,5,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` // The LoRaWAN DevAddr. - DevAddr []byte `protobuf:"bytes,6,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + DevAddr []byte `protobuf:"bytes,6,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` } -func (m *EndDeviceIdentifiers) Reset() { *m = EndDeviceIdentifiers{} } -func (m *EndDeviceIdentifiers) String() string { return proto.CompactTextString(m) } -func (*EndDeviceIdentifiers) ProtoMessage() {} -func (*EndDeviceIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_6da1fbfdea4d7423, []int{2} -} -func (m *EndDeviceIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceIdentifiers.Unmarshal(m, b) -} -func (m *EndDeviceIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceIdentifiers.Marshal(b, m, deterministic) -} -func (m *EndDeviceIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceIdentifiers.Merge(m, src) +func (x *EndDeviceIdentifiers) Reset() { + *x = EndDeviceIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EndDeviceIdentifiers) XXX_Size() int { - return xxx_messageInfo_EndDeviceIdentifiers.Size(m) + +func (x *EndDeviceIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *EndDeviceIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceIdentifiers.DiscardUnknown(m) + +func (*EndDeviceIdentifiers) ProtoMessage() {} + +func (x *EndDeviceIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_EndDeviceIdentifiers proto.InternalMessageInfo +// Deprecated: Use EndDeviceIdentifiers.ProtoReflect.Descriptor instead. +func (*EndDeviceIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identifiers_proto_rawDescGZIP(), []int{2} +} -func (m *EndDeviceIdentifiers) GetDeviceId() string { - if m != nil { - return m.DeviceId +func (x *EndDeviceIdentifiers) GetDeviceId() string { + if x != nil { + return x.DeviceId } return "" } -func (m *EndDeviceIdentifiers) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *EndDeviceIdentifiers) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *EndDeviceIdentifiers) GetDevEui() []byte { - if m != nil { - return m.DevEui +func (x *EndDeviceIdentifiers) GetDevEui() []byte { + if x != nil { + return x.DevEui } return nil } -func (m *EndDeviceIdentifiers) GetJoinEui() []byte { - if m != nil { - return m.JoinEui +func (x *EndDeviceIdentifiers) GetJoinEui() []byte { + if x != nil { + return x.JoinEui } return nil } -func (m *EndDeviceIdentifiers) GetDevAddr() []byte { - if m != nil { - return m.DevAddr +func (x *EndDeviceIdentifiers) GetDevAddr() []byte { + if x != nil { + return x.DevAddr } return nil } type GatewayIdentifiers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + GatewayId string `protobuf:"bytes,1,opt,name=gateway_id,json=gatewayId,proto3" json:"gateway_id,omitempty"` // Secondary identifier, which can only be used in specific requests. - Eui []byte `protobuf:"bytes,2,opt,name=eui,proto3" json:"eui,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Eui []byte `protobuf:"bytes,2,opt,name=eui,proto3" json:"eui,omitempty"` } -func (m *GatewayIdentifiers) Reset() { *m = GatewayIdentifiers{} } -func (m *GatewayIdentifiers) String() string { return proto.CompactTextString(m) } -func (*GatewayIdentifiers) ProtoMessage() {} -func (*GatewayIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_6da1fbfdea4d7423, []int{3} -} -func (m *GatewayIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayIdentifiers.Unmarshal(m, b) -} -func (m *GatewayIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayIdentifiers.Marshal(b, m, deterministic) -} -func (m *GatewayIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayIdentifiers.Merge(m, src) +func (x *GatewayIdentifiers) Reset() { + *x = GatewayIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GatewayIdentifiers) XXX_Size() int { - return xxx_messageInfo_GatewayIdentifiers.Size(m) + +func (x *GatewayIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GatewayIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayIdentifiers.DiscardUnknown(m) + +func (*GatewayIdentifiers) ProtoMessage() {} + +func (x *GatewayIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GatewayIdentifiers proto.InternalMessageInfo +// Deprecated: Use GatewayIdentifiers.ProtoReflect.Descriptor instead. +func (*GatewayIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identifiers_proto_rawDescGZIP(), []int{3} +} -func (m *GatewayIdentifiers) GetGatewayId() string { - if m != nil { - return m.GatewayId +func (x *GatewayIdentifiers) GetGatewayId() string { + if x != nil { + return x.GatewayId } return "" } -func (m *GatewayIdentifiers) GetEui() []byte { - if m != nil { - return m.Eui +func (x *GatewayIdentifiers) GetEui() []byte { + if x != nil { + return x.Eui } return nil } type OrganizationIdentifiers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // This ID shares namespace with user IDs. - OrganizationId string `protobuf:"bytes,1,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + OrganizationId string `protobuf:"bytes,1,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` } -func (m *OrganizationIdentifiers) Reset() { *m = OrganizationIdentifiers{} } -func (m *OrganizationIdentifiers) String() string { return proto.CompactTextString(m) } -func (*OrganizationIdentifiers) ProtoMessage() {} -func (*OrganizationIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_6da1fbfdea4d7423, []int{4} -} -func (m *OrganizationIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OrganizationIdentifiers.Unmarshal(m, b) -} -func (m *OrganizationIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OrganizationIdentifiers.Marshal(b, m, deterministic) -} -func (m *OrganizationIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_OrganizationIdentifiers.Merge(m, src) +func (x *OrganizationIdentifiers) Reset() { + *x = OrganizationIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *OrganizationIdentifiers) XXX_Size() int { - return xxx_messageInfo_OrganizationIdentifiers.Size(m) + +func (x *OrganizationIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *OrganizationIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_OrganizationIdentifiers.DiscardUnknown(m) + +func (*OrganizationIdentifiers) ProtoMessage() {} + +func (x *OrganizationIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_OrganizationIdentifiers proto.InternalMessageInfo +// Deprecated: Use OrganizationIdentifiers.ProtoReflect.Descriptor instead. +func (*OrganizationIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identifiers_proto_rawDescGZIP(), []int{4} +} -func (m *OrganizationIdentifiers) GetOrganizationId() string { - if m != nil { - return m.OrganizationId +func (x *OrganizationIdentifiers) GetOrganizationId() string { + if x != nil { + return x.OrganizationId } return "" } type UserIdentifiers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // This ID shares namespace with organization IDs. UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // Secondary identifier, which can only be used in specific requests. - Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` } -func (m *UserIdentifiers) Reset() { *m = UserIdentifiers{} } -func (m *UserIdentifiers) String() string { return proto.CompactTextString(m) } -func (*UserIdentifiers) ProtoMessage() {} -func (*UserIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_6da1fbfdea4d7423, []int{5} -} -func (m *UserIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UserIdentifiers.Unmarshal(m, b) -} -func (m *UserIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UserIdentifiers.Marshal(b, m, deterministic) -} -func (m *UserIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_UserIdentifiers.Merge(m, src) +func (x *UserIdentifiers) Reset() { + *x = UserIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UserIdentifiers) XXX_Size() int { - return xxx_messageInfo_UserIdentifiers.Size(m) + +func (x *UserIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UserIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_UserIdentifiers.DiscardUnknown(m) + +func (*UserIdentifiers) ProtoMessage() {} + +func (x *UserIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UserIdentifiers proto.InternalMessageInfo +// Deprecated: Use UserIdentifiers.ProtoReflect.Descriptor instead. +func (*UserIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identifiers_proto_rawDescGZIP(), []int{5} +} -func (m *UserIdentifiers) GetUserId() string { - if m != nil { - return m.UserId +func (x *UserIdentifiers) GetUserId() string { + if x != nil { + return x.UserId } return "" } -func (m *UserIdentifiers) GetEmail() string { - if m != nil { - return m.Email +func (x *UserIdentifiers) GetEmail() string { + if x != nil { + return x.Email } return "" } // OrganizationOrUserIdentifiers contains either organization or user identifiers. type OrganizationOrUserIdentifiers struct { - // Types that are valid to be assigned to Ids: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Ids: // *OrganizationOrUserIdentifiers_OrganizationIds // *OrganizationOrUserIdentifiers_UserIds - Ids isOrganizationOrUserIdentifiers_Ids `protobuf_oneof:"ids"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Ids isOrganizationOrUserIdentifiers_Ids `protobuf_oneof:"ids"` } -func (m *OrganizationOrUserIdentifiers) Reset() { *m = OrganizationOrUserIdentifiers{} } -func (m *OrganizationOrUserIdentifiers) String() string { return proto.CompactTextString(m) } -func (*OrganizationOrUserIdentifiers) ProtoMessage() {} -func (*OrganizationOrUserIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_6da1fbfdea4d7423, []int{6} -} -func (m *OrganizationOrUserIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OrganizationOrUserIdentifiers.Unmarshal(m, b) -} -func (m *OrganizationOrUserIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OrganizationOrUserIdentifiers.Marshal(b, m, deterministic) -} -func (m *OrganizationOrUserIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_OrganizationOrUserIdentifiers.Merge(m, src) -} -func (m *OrganizationOrUserIdentifiers) XXX_Size() int { - return xxx_messageInfo_OrganizationOrUserIdentifiers.Size(m) +func (x *OrganizationOrUserIdentifiers) Reset() { + *x = OrganizationOrUserIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *OrganizationOrUserIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_OrganizationOrUserIdentifiers.DiscardUnknown(m) + +func (x *OrganizationOrUserIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_OrganizationOrUserIdentifiers proto.InternalMessageInfo +func (*OrganizationOrUserIdentifiers) ProtoMessage() {} -type isOrganizationOrUserIdentifiers_Ids interface { - isOrganizationOrUserIdentifiers_Ids() +func (x *OrganizationOrUserIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type OrganizationOrUserIdentifiers_OrganizationIds struct { - OrganizationIds *OrganizationIdentifiers `protobuf:"bytes,1,opt,name=organization_ids,json=organizationIds,proto3,oneof" json:"organization_ids,omitempty"` -} -type OrganizationOrUserIdentifiers_UserIds struct { - UserIds *UserIdentifiers `protobuf:"bytes,2,opt,name=user_ids,json=userIds,proto3,oneof" json:"user_ids,omitempty"` +// Deprecated: Use OrganizationOrUserIdentifiers.ProtoReflect.Descriptor instead. +func (*OrganizationOrUserIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identifiers_proto_rawDescGZIP(), []int{6} } -func (*OrganizationOrUserIdentifiers_OrganizationIds) isOrganizationOrUserIdentifiers_Ids() {} -func (*OrganizationOrUserIdentifiers_UserIds) isOrganizationOrUserIdentifiers_Ids() {} - func (m *OrganizationOrUserIdentifiers) GetIds() isOrganizationOrUserIdentifiers_Ids { if m != nil { return m.Ids @@ -366,97 +427,84 @@ func (m *OrganizationOrUserIdentifiers) GetIds() isOrganizationOrUserIdentifiers return nil } -func (m *OrganizationOrUserIdentifiers) GetOrganizationIds() *OrganizationIdentifiers { - if x, ok := m.GetIds().(*OrganizationOrUserIdentifiers_OrganizationIds); ok { +func (x *OrganizationOrUserIdentifiers) GetOrganizationIds() *OrganizationIdentifiers { + if x, ok := x.GetIds().(*OrganizationOrUserIdentifiers_OrganizationIds); ok { return x.OrganizationIds } return nil } -func (m *OrganizationOrUserIdentifiers) GetUserIds() *UserIdentifiers { - if x, ok := m.GetIds().(*OrganizationOrUserIdentifiers_UserIds); ok { +func (x *OrganizationOrUserIdentifiers) GetUserIds() *UserIdentifiers { + if x, ok := x.GetIds().(*OrganizationOrUserIdentifiers_UserIds); ok { return x.UserIds } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*OrganizationOrUserIdentifiers) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*OrganizationOrUserIdentifiers_OrganizationIds)(nil), - (*OrganizationOrUserIdentifiers_UserIds)(nil), - } +type isOrganizationOrUserIdentifiers_Ids interface { + isOrganizationOrUserIdentifiers_Ids() +} + +type OrganizationOrUserIdentifiers_OrganizationIds struct { + OrganizationIds *OrganizationIdentifiers `protobuf:"bytes,1,opt,name=organization_ids,json=organizationIds,proto3,oneof"` +} + +type OrganizationOrUserIdentifiers_UserIds struct { + UserIds *UserIdentifiers `protobuf:"bytes,2,opt,name=user_ids,json=userIds,proto3,oneof"` } +func (*OrganizationOrUserIdentifiers_OrganizationIds) isOrganizationOrUserIdentifiers_Ids() {} + +func (*OrganizationOrUserIdentifiers_UserIds) isOrganizationOrUserIdentifiers_Ids() {} + // EntityIdentifiers contains one of the possible entity identifiers. type EntityIdentifiers struct { - // Types that are valid to be assigned to Ids: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Ids: // *EntityIdentifiers_ApplicationIds // *EntityIdentifiers_ClientIds // *EntityIdentifiers_DeviceIds // *EntityIdentifiers_GatewayIds // *EntityIdentifiers_OrganizationIds // *EntityIdentifiers_UserIds - Ids isEntityIdentifiers_Ids `protobuf_oneof:"ids"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Ids isEntityIdentifiers_Ids `protobuf_oneof:"ids"` } -func (m *EntityIdentifiers) Reset() { *m = EntityIdentifiers{} } -func (m *EntityIdentifiers) String() string { return proto.CompactTextString(m) } -func (*EntityIdentifiers) ProtoMessage() {} -func (*EntityIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_6da1fbfdea4d7423, []int{7} -} -func (m *EntityIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EntityIdentifiers.Unmarshal(m, b) -} -func (m *EntityIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EntityIdentifiers.Marshal(b, m, deterministic) -} -func (m *EntityIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_EntityIdentifiers.Merge(m, src) -} -func (m *EntityIdentifiers) XXX_Size() int { - return xxx_messageInfo_EntityIdentifiers.Size(m) +func (x *EntityIdentifiers) Reset() { + *x = EntityIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *EntityIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_EntityIdentifiers.DiscardUnknown(m) + +func (x *EntityIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_EntityIdentifiers proto.InternalMessageInfo +func (*EntityIdentifiers) ProtoMessage() {} -type isEntityIdentifiers_Ids interface { - isEntityIdentifiers_Ids() +func (x *EntityIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type EntityIdentifiers_ApplicationIds struct { - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3,oneof" json:"application_ids,omitempty"` -} -type EntityIdentifiers_ClientIds struct { - ClientIds *ClientIdentifiers `protobuf:"bytes,2,opt,name=client_ids,json=clientIds,proto3,oneof" json:"client_ids,omitempty"` -} -type EntityIdentifiers_DeviceIds struct { - DeviceIds *EndDeviceIdentifiers `protobuf:"bytes,3,opt,name=device_ids,json=deviceIds,proto3,oneof" json:"device_ids,omitempty"` -} -type EntityIdentifiers_GatewayIds struct { - GatewayIds *GatewayIdentifiers `protobuf:"bytes,4,opt,name=gateway_ids,json=gatewayIds,proto3,oneof" json:"gateway_ids,omitempty"` -} -type EntityIdentifiers_OrganizationIds struct { - OrganizationIds *OrganizationIdentifiers `protobuf:"bytes,5,opt,name=organization_ids,json=organizationIds,proto3,oneof" json:"organization_ids,omitempty"` -} -type EntityIdentifiers_UserIds struct { - UserIds *UserIdentifiers `protobuf:"bytes,6,opt,name=user_ids,json=userIds,proto3,oneof" json:"user_ids,omitempty"` +// Deprecated: Use EntityIdentifiers.ProtoReflect.Descriptor instead. +func (*EntityIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identifiers_proto_rawDescGZIP(), []int{7} } -func (*EntityIdentifiers_ApplicationIds) isEntityIdentifiers_Ids() {} -func (*EntityIdentifiers_ClientIds) isEntityIdentifiers_Ids() {} -func (*EntityIdentifiers_DeviceIds) isEntityIdentifiers_Ids() {} -func (*EntityIdentifiers_GatewayIds) isEntityIdentifiers_Ids() {} -func (*EntityIdentifiers_OrganizationIds) isEntityIdentifiers_Ids() {} -func (*EntityIdentifiers_UserIds) isEntityIdentifiers_Ids() {} - func (m *EntityIdentifiers) GetIds() isEntityIdentifiers_Ids { if m != nil { return m.Ids @@ -464,133 +512,174 @@ func (m *EntityIdentifiers) GetIds() isEntityIdentifiers_Ids { return nil } -func (m *EntityIdentifiers) GetApplicationIds() *ApplicationIdentifiers { - if x, ok := m.GetIds().(*EntityIdentifiers_ApplicationIds); ok { +func (x *EntityIdentifiers) GetApplicationIds() *ApplicationIdentifiers { + if x, ok := x.GetIds().(*EntityIdentifiers_ApplicationIds); ok { return x.ApplicationIds } return nil } -func (m *EntityIdentifiers) GetClientIds() *ClientIdentifiers { - if x, ok := m.GetIds().(*EntityIdentifiers_ClientIds); ok { +func (x *EntityIdentifiers) GetClientIds() *ClientIdentifiers { + if x, ok := x.GetIds().(*EntityIdentifiers_ClientIds); ok { return x.ClientIds } return nil } -func (m *EntityIdentifiers) GetDeviceIds() *EndDeviceIdentifiers { - if x, ok := m.GetIds().(*EntityIdentifiers_DeviceIds); ok { +func (x *EntityIdentifiers) GetDeviceIds() *EndDeviceIdentifiers { + if x, ok := x.GetIds().(*EntityIdentifiers_DeviceIds); ok { return x.DeviceIds } return nil } -func (m *EntityIdentifiers) GetGatewayIds() *GatewayIdentifiers { - if x, ok := m.GetIds().(*EntityIdentifiers_GatewayIds); ok { +func (x *EntityIdentifiers) GetGatewayIds() *GatewayIdentifiers { + if x, ok := x.GetIds().(*EntityIdentifiers_GatewayIds); ok { return x.GatewayIds } return nil } -func (m *EntityIdentifiers) GetOrganizationIds() *OrganizationIdentifiers { - if x, ok := m.GetIds().(*EntityIdentifiers_OrganizationIds); ok { +func (x *EntityIdentifiers) GetOrganizationIds() *OrganizationIdentifiers { + if x, ok := x.GetIds().(*EntityIdentifiers_OrganizationIds); ok { return x.OrganizationIds } return nil } -func (m *EntityIdentifiers) GetUserIds() *UserIdentifiers { - if x, ok := m.GetIds().(*EntityIdentifiers_UserIds); ok { +func (x *EntityIdentifiers) GetUserIds() *UserIdentifiers { + if x, ok := x.GetIds().(*EntityIdentifiers_UserIds); ok { return x.UserIds } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*EntityIdentifiers) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*EntityIdentifiers_ApplicationIds)(nil), - (*EntityIdentifiers_ClientIds)(nil), - (*EntityIdentifiers_DeviceIds)(nil), - (*EntityIdentifiers_GatewayIds)(nil), - (*EntityIdentifiers_OrganizationIds)(nil), - (*EntityIdentifiers_UserIds)(nil), - } +type isEntityIdentifiers_Ids interface { + isEntityIdentifiers_Ids() } -// Identifies an end device model with version information. -type EndDeviceVersionIdentifiers struct { - BrandId string `protobuf:"bytes,1,opt,name=brand_id,json=brandId,proto3" json:"brand_id,omitempty"` - ModelId string `protobuf:"bytes,2,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"` - HardwareVersion string `protobuf:"bytes,3,opt,name=hardware_version,json=hardwareVersion,proto3" json:"hardware_version,omitempty"` - FirmwareVersion string `protobuf:"bytes,4,opt,name=firmware_version,json=firmwareVersion,proto3" json:"firmware_version,omitempty"` - BandId string `protobuf:"bytes,5,opt,name=band_id,json=bandId,proto3" json:"band_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *EndDeviceVersionIdentifiers) Reset() { *m = EndDeviceVersionIdentifiers{} } -func (m *EndDeviceVersionIdentifiers) String() string { return proto.CompactTextString(m) } -func (*EndDeviceVersionIdentifiers) ProtoMessage() {} -func (*EndDeviceVersionIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_6da1fbfdea4d7423, []int{8} +type EntityIdentifiers_ApplicationIds struct { + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3,oneof"` } -func (m *EndDeviceVersionIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EndDeviceVersionIdentifiers.Unmarshal(m, b) + +type EntityIdentifiers_ClientIds struct { + ClientIds *ClientIdentifiers `protobuf:"bytes,2,opt,name=client_ids,json=clientIds,proto3,oneof"` } -func (m *EndDeviceVersionIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EndDeviceVersionIdentifiers.Marshal(b, m, deterministic) + +type EntityIdentifiers_DeviceIds struct { + DeviceIds *EndDeviceIdentifiers `protobuf:"bytes,3,opt,name=device_ids,json=deviceIds,proto3,oneof"` } -func (m *EndDeviceVersionIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_EndDeviceVersionIdentifiers.Merge(m, src) + +type EntityIdentifiers_GatewayIds struct { + GatewayIds *GatewayIdentifiers `protobuf:"bytes,4,opt,name=gateway_ids,json=gatewayIds,proto3,oneof"` } -func (m *EndDeviceVersionIdentifiers) XXX_Size() int { - return xxx_messageInfo_EndDeviceVersionIdentifiers.Size(m) + +type EntityIdentifiers_OrganizationIds struct { + OrganizationIds *OrganizationIdentifiers `protobuf:"bytes,5,opt,name=organization_ids,json=organizationIds,proto3,oneof"` } -func (m *EndDeviceVersionIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_EndDeviceVersionIdentifiers.DiscardUnknown(m) + +type EntityIdentifiers_UserIds struct { + UserIds *UserIdentifiers `protobuf:"bytes,6,opt,name=user_ids,json=userIds,proto3,oneof"` } -var xxx_messageInfo_EndDeviceVersionIdentifiers proto.InternalMessageInfo +func (*EntityIdentifiers_ApplicationIds) isEntityIdentifiers_Ids() {} -func (m *EndDeviceVersionIdentifiers) GetBrandId() string { - if m != nil { - return m.BrandId +func (*EntityIdentifiers_ClientIds) isEntityIdentifiers_Ids() {} + +func (*EntityIdentifiers_DeviceIds) isEntityIdentifiers_Ids() {} + +func (*EntityIdentifiers_GatewayIds) isEntityIdentifiers_Ids() {} + +func (*EntityIdentifiers_OrganizationIds) isEntityIdentifiers_Ids() {} + +func (*EntityIdentifiers_UserIds) isEntityIdentifiers_Ids() {} + +// Identifies an end device model with version information. +type EndDeviceVersionIdentifiers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BrandId string `protobuf:"bytes,1,opt,name=brand_id,json=brandId,proto3" json:"brand_id,omitempty"` + ModelId string `protobuf:"bytes,2,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"` + HardwareVersion string `protobuf:"bytes,3,opt,name=hardware_version,json=hardwareVersion,proto3" json:"hardware_version,omitempty"` + FirmwareVersion string `protobuf:"bytes,4,opt,name=firmware_version,json=firmwareVersion,proto3" json:"firmware_version,omitempty"` + BandId string `protobuf:"bytes,5,opt,name=band_id,json=bandId,proto3" json:"band_id,omitempty"` +} + +func (x *EndDeviceVersionIdentifiers) Reset() { + *x = EndDeviceVersionIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EndDeviceVersionIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EndDeviceVersionIdentifiers) ProtoMessage() {} + +func (x *EndDeviceVersionIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EndDeviceVersionIdentifiers.ProtoReflect.Descriptor instead. +func (*EndDeviceVersionIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identifiers_proto_rawDescGZIP(), []int{8} +} + +func (x *EndDeviceVersionIdentifiers) GetBrandId() string { + if x != nil { + return x.BrandId } return "" } -func (m *EndDeviceVersionIdentifiers) GetModelId() string { - if m != nil { - return m.ModelId +func (x *EndDeviceVersionIdentifiers) GetModelId() string { + if x != nil { + return x.ModelId } return "" } -func (m *EndDeviceVersionIdentifiers) GetHardwareVersion() string { - if m != nil { - return m.HardwareVersion +func (x *EndDeviceVersionIdentifiers) GetHardwareVersion() string { + if x != nil { + return x.HardwareVersion } return "" } -func (m *EndDeviceVersionIdentifiers) GetFirmwareVersion() string { - if m != nil { - return m.FirmwareVersion +func (x *EndDeviceVersionIdentifiers) GetFirmwareVersion() string { + if x != nil { + return x.FirmwareVersion } return "" } -func (m *EndDeviceVersionIdentifiers) GetBandId() string { - if m != nil { - return m.BandId +func (x *EndDeviceVersionIdentifiers) GetBandId() string { + if x != nil { + return x.BandId } return "" } // Identifies a Network Server. type NetworkIdentifiers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // LoRa Alliance NetID. NetId []byte `protobuf:"bytes,1,opt,name=net_id,json=netId,proto3" json:"net_id,omitempty"` // Optional tenant identifier for multi-tenant deployments. @@ -600,230 +689,623 @@ type NetworkIdentifiers struct { // Cluster address of the Network Server. ClusterAddress string `protobuf:"bytes,4,opt,name=cluster_address,json=clusterAddress,proto3" json:"cluster_address,omitempty"` // Optional tenant address for multi-tenant deployments. - TenantAddress string `protobuf:"bytes,5,opt,name=tenant_address,json=tenantAddress,proto3" json:"tenant_address,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + TenantAddress string `protobuf:"bytes,5,opt,name=tenant_address,json=tenantAddress,proto3" json:"tenant_address,omitempty"` } -func (m *NetworkIdentifiers) Reset() { *m = NetworkIdentifiers{} } -func (m *NetworkIdentifiers) String() string { return proto.CompactTextString(m) } -func (*NetworkIdentifiers) ProtoMessage() {} -func (*NetworkIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_6da1fbfdea4d7423, []int{9} -} -func (m *NetworkIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NetworkIdentifiers.Unmarshal(m, b) -} -func (m *NetworkIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NetworkIdentifiers.Marshal(b, m, deterministic) -} -func (m *NetworkIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_NetworkIdentifiers.Merge(m, src) +func (x *NetworkIdentifiers) Reset() { + *x = NetworkIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *NetworkIdentifiers) XXX_Size() int { - return xxx_messageInfo_NetworkIdentifiers.Size(m) + +func (x *NetworkIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *NetworkIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_NetworkIdentifiers.DiscardUnknown(m) + +func (*NetworkIdentifiers) ProtoMessage() {} + +func (x *NetworkIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_NetworkIdentifiers proto.InternalMessageInfo +// Deprecated: Use NetworkIdentifiers.ProtoReflect.Descriptor instead. +func (*NetworkIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identifiers_proto_rawDescGZIP(), []int{9} +} -func (m *NetworkIdentifiers) GetNetId() []byte { - if m != nil { - return m.NetId +func (x *NetworkIdentifiers) GetNetId() []byte { + if x != nil { + return x.NetId } return nil } -func (m *NetworkIdentifiers) GetTenantId() string { - if m != nil { - return m.TenantId +func (x *NetworkIdentifiers) GetTenantId() string { + if x != nil { + return x.TenantId } return "" } -func (m *NetworkIdentifiers) GetClusterId() string { - if m != nil { - return m.ClusterId +func (x *NetworkIdentifiers) GetClusterId() string { + if x != nil { + return x.ClusterId } return "" } -func (m *NetworkIdentifiers) GetClusterAddress() string { - if m != nil { - return m.ClusterAddress +func (x *NetworkIdentifiers) GetClusterAddress() string { + if x != nil { + return x.ClusterAddress } return "" } -func (m *NetworkIdentifiers) GetTenantAddress() string { - if m != nil { - return m.TenantAddress +func (x *NetworkIdentifiers) GetTenantAddress() string { + if x != nil { + return x.TenantAddress } return "" } type LoRaAllianceProfileIdentifiers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // VendorID managed by the LoRa Alliance, as defined in TR005. VendorId uint32 `protobuf:"varint,1,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"` // ID of the LoRaWAN end device profile assigned by the vendor. - VendorProfileId uint32 `protobuf:"varint,2,opt,name=vendor_profile_id,json=vendorProfileId,proto3" json:"vendor_profile_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + VendorProfileId uint32 `protobuf:"varint,2,opt,name=vendor_profile_id,json=vendorProfileId,proto3" json:"vendor_profile_id,omitempty"` } -func (m *LoRaAllianceProfileIdentifiers) Reset() { *m = LoRaAllianceProfileIdentifiers{} } -func (m *LoRaAllianceProfileIdentifiers) String() string { return proto.CompactTextString(m) } -func (*LoRaAllianceProfileIdentifiers) ProtoMessage() {} -func (*LoRaAllianceProfileIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_6da1fbfdea4d7423, []int{10} -} -func (m *LoRaAllianceProfileIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LoRaAllianceProfileIdentifiers.Unmarshal(m, b) -} -func (m *LoRaAllianceProfileIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LoRaAllianceProfileIdentifiers.Marshal(b, m, deterministic) -} -func (m *LoRaAllianceProfileIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_LoRaAllianceProfileIdentifiers.Merge(m, src) +func (x *LoRaAllianceProfileIdentifiers) Reset() { + *x = LoRaAllianceProfileIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *LoRaAllianceProfileIdentifiers) XXX_Size() int { - return xxx_messageInfo_LoRaAllianceProfileIdentifiers.Size(m) + +func (x *LoRaAllianceProfileIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LoRaAllianceProfileIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_LoRaAllianceProfileIdentifiers.DiscardUnknown(m) + +func (*LoRaAllianceProfileIdentifiers) ProtoMessage() {} + +func (x *LoRaAllianceProfileIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identifiers_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LoRaAllianceProfileIdentifiers proto.InternalMessageInfo +// Deprecated: Use LoRaAllianceProfileIdentifiers.ProtoReflect.Descriptor instead. +func (*LoRaAllianceProfileIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identifiers_proto_rawDescGZIP(), []int{10} +} -func (m *LoRaAllianceProfileIdentifiers) GetVendorId() uint32 { - if m != nil { - return m.VendorId +func (x *LoRaAllianceProfileIdentifiers) GetVendorId() uint32 { + if x != nil { + return x.VendorId } return 0 } -func (m *LoRaAllianceProfileIdentifiers) GetVendorProfileId() uint32 { - if m != nil { - return m.VendorProfileId +func (x *LoRaAllianceProfileIdentifiers) GetVendorProfileId() uint32 { + if x != nil { + return x.VendorProfileId } return 0 } -func init() { - proto.RegisterType((*ApplicationIdentifiers)(nil), "ttn.lorawan.v3.ApplicationIdentifiers") - golang_proto.RegisterType((*ApplicationIdentifiers)(nil), "ttn.lorawan.v3.ApplicationIdentifiers") - proto.RegisterType((*ClientIdentifiers)(nil), "ttn.lorawan.v3.ClientIdentifiers") - golang_proto.RegisterType((*ClientIdentifiers)(nil), "ttn.lorawan.v3.ClientIdentifiers") - proto.RegisterType((*EndDeviceIdentifiers)(nil), "ttn.lorawan.v3.EndDeviceIdentifiers") - golang_proto.RegisterType((*EndDeviceIdentifiers)(nil), "ttn.lorawan.v3.EndDeviceIdentifiers") - proto.RegisterType((*GatewayIdentifiers)(nil), "ttn.lorawan.v3.GatewayIdentifiers") - golang_proto.RegisterType((*GatewayIdentifiers)(nil), "ttn.lorawan.v3.GatewayIdentifiers") - proto.RegisterType((*OrganizationIdentifiers)(nil), "ttn.lorawan.v3.OrganizationIdentifiers") - golang_proto.RegisterType((*OrganizationIdentifiers)(nil), "ttn.lorawan.v3.OrganizationIdentifiers") - proto.RegisterType((*UserIdentifiers)(nil), "ttn.lorawan.v3.UserIdentifiers") - golang_proto.RegisterType((*UserIdentifiers)(nil), "ttn.lorawan.v3.UserIdentifiers") - proto.RegisterType((*OrganizationOrUserIdentifiers)(nil), "ttn.lorawan.v3.OrganizationOrUserIdentifiers") - golang_proto.RegisterType((*OrganizationOrUserIdentifiers)(nil), "ttn.lorawan.v3.OrganizationOrUserIdentifiers") - proto.RegisterType((*EntityIdentifiers)(nil), "ttn.lorawan.v3.EntityIdentifiers") - golang_proto.RegisterType((*EntityIdentifiers)(nil), "ttn.lorawan.v3.EntityIdentifiers") - proto.RegisterType((*EndDeviceVersionIdentifiers)(nil), "ttn.lorawan.v3.EndDeviceVersionIdentifiers") - golang_proto.RegisterType((*EndDeviceVersionIdentifiers)(nil), "ttn.lorawan.v3.EndDeviceVersionIdentifiers") - proto.RegisterType((*NetworkIdentifiers)(nil), "ttn.lorawan.v3.NetworkIdentifiers") - golang_proto.RegisterType((*NetworkIdentifiers)(nil), "ttn.lorawan.v3.NetworkIdentifiers") - proto.RegisterType((*LoRaAllianceProfileIdentifiers)(nil), "ttn.lorawan.v3.LoRaAllianceProfileIdentifiers") - golang_proto.RegisterType((*LoRaAllianceProfileIdentifiers)(nil), "ttn.lorawan.v3.LoRaAllianceProfileIdentifiers") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/identifiers.proto", fileDescriptor_6da1fbfdea4d7423) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/identifiers.proto", fileDescriptor_6da1fbfdea4d7423) -} - -var fileDescriptor_6da1fbfdea4d7423 = []byte{ - // 1250 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x57, 0xcd, 0x6f, 0x1b, 0x45, - 0x14, 0xcf, 0xae, 0xbf, 0xd6, 0x93, 0x26, 0x76, 0x57, 0x88, 0x3a, 0x29, 0x94, 0xd4, 0x84, 0x36, - 0x54, 0xd8, 0xeb, 0xda, 0x2d, 0x85, 0x0a, 0xa9, 0xf5, 0x36, 0x6e, 0xe3, 0x08, 0xd2, 0xb2, 0x6a, - 0x11, 0x50, 0xb5, 0xd1, 0x78, 0x67, 0xb2, 0x9e, 0x76, 0x3d, 0xbb, 0xda, 0x19, 0x3b, 0x4d, 0x0b, - 0x12, 0xe2, 0xc8, 0xb1, 0x47, 0x2e, 0x20, 0x8e, 0xf9, 0x2b, 0xb8, 0x72, 0x82, 0x1e, 0x90, 0xe0, - 0xc0, 0x89, 0x03, 0x12, 0x82, 0x4b, 0x11, 0x12, 0xca, 0x09, 0xed, 0xec, 0xda, 0x5e, 0xaf, 0x53, - 0xc0, 0x21, 0x91, 0x7a, 0xe8, 0x6d, 0x77, 0xe6, 0xbd, 0xdf, 0x9b, 0xf7, 0x9b, 0xf7, 0x35, 0xe0, - 0x65, 0xdb, 0xf1, 0xe0, 0x26, 0xa4, 0x25, 0xc6, 0xa1, 0x79, 0x57, 0x83, 0x2e, 0xd1, 0x08, 0xc2, - 0x94, 0x93, 0x0d, 0x82, 0x3d, 0x56, 0x76, 0x3d, 0x87, 0x3b, 0xea, 0x2c, 0xe7, 0xb4, 0x1c, 0x0a, - 0x96, 0x7b, 0xb5, 0xf9, 0xba, 0x45, 0x78, 0xbb, 0xdb, 0x2a, 0x9b, 0x4e, 0x47, 0xc3, 0xb4, 0xe7, - 0x6c, 0xb9, 0x9e, 0x73, 0x6f, 0x4b, 0x13, 0xc2, 0x66, 0xc9, 0xc2, 0xb4, 0xd4, 0x83, 0x36, 0x41, - 0x90, 0x63, 0x6d, 0xec, 0x23, 0x80, 0x9c, 0x2f, 0x45, 0x20, 0x2c, 0xc7, 0x72, 0x02, 0xe5, 0x56, - 0x77, 0x43, 0xfc, 0x89, 0x1f, 0xf1, 0x15, 0x8a, 0x2f, 0x47, 0xc4, 0xaf, 0xb7, 0xf1, 0xf5, 0x36, - 0xa1, 0x16, 0x6b, 0x52, 0xd4, 0x65, 0xdc, 0x23, 0x98, 0x45, 0x4d, 0x5b, 0x4e, 0x69, 0xc3, 0x86, - 0x16, 0xd3, 0x20, 0xa5, 0x0e, 0x87, 0x9c, 0x38, 0x34, 0xf4, 0x63, 0xfe, 0xd2, 0x44, 0x28, 0x77, - 0x98, 0x43, 0x77, 0x01, 0x29, 0x47, 0xa4, 0x1c, 0x17, 0x53, 0xe8, 0x92, 0x5e, 0x55, 0x73, 0x5c, - 0x21, 0x33, 0x2e, 0x5f, 0xf4, 0xc0, 0xf3, 0x75, 0xd7, 0xb5, 0x89, 0x29, 0x56, 0x9b, 0x43, 0x72, - 0xd5, 0x35, 0x30, 0x0b, 0x87, 0x3b, 0xeb, 0x04, 0x15, 0xa4, 0x05, 0x69, 0x29, 0xab, 0x9f, 0xdc, - 0xd1, 0x17, 0xbd, 0x62, 0x61, 0xb1, 0x7a, 0xec, 0xf6, 0x4d, 0x58, 0xba, 0x5f, 0x29, 0xbd, 0x79, - 0x6b, 0xe9, 0xc2, 0xf9, 0x9b, 0xa5, 0x5b, 0x17, 0xfa, 0xbf, 0xaf, 0x3e, 0xa8, 0xbe, 0xf6, 0xf1, - 0xa2, 0x31, 0x03, 0xa3, 0xc0, 0xe7, 0x95, 0xc7, 0xdb, 0x73, 0x49, 0x45, 0xca, 0x4b, 0x45, 0x13, - 0x1c, 0xbe, 0x64, 0x13, 0x4c, 0x79, 0xd4, 0xdc, 0x32, 0xc8, 0x9a, 0x62, 0x71, 0x0f, 0x96, 0x14, - 0x33, 0x84, 0x8b, 0x18, 0xf9, 0x02, 0x80, 0xe7, 0x1a, 0x14, 0x2d, 0xe3, 0x1e, 0x31, 0x71, 0xcc, - 0x10, 0x12, 0x8b, 0x7b, 0x31, 0x84, 0x42, 0x38, 0xf5, 0x03, 0x90, 0x1b, 0x65, 0x87, 0x15, 0xe4, - 0x05, 0x69, 0x69, 0xba, 0x7a, 0xa2, 0x3c, 0x1a, 0x8e, 0xe5, 0xdd, 0xe9, 0xd5, 0x95, 0x1d, 0x3d, - 0xf5, 0x99, 0x24, 0xe7, 0x25, 0x63, 0x76, 0x84, 0x27, 0xa6, 0xfe, 0x21, 0x83, 0x0c, 0xc2, 0xbd, - 0x75, 0xdc, 0x25, 0x85, 0xe4, 0x82, 0xb4, 0x74, 0x48, 0xff, 0x51, 0x7e, 0x58, 0x3f, 0xbe, 0xaa, - 0x16, 0xcf, 0x55, 0xf4, 0xda, 0xf2, 0xd9, 0x73, 0x8d, 0xe5, 0x4a, 0xa5, 0x52, 0xd7, 0x2f, 0x2d, - 0x17, 0x3f, 0x97, 0xa5, 0xcc, 0x57, 0x72, 0xda, 0x0f, 0x10, 0x6a, 0xed, 0xe8, 0xe9, 0xfb, 0xc9, - 0xb6, 0xe2, 0x4a, 0xbf, 0x6e, 0xcf, 0x7d, 0x2a, 0x81, 0x0b, 0x96, 0x53, 0xe6, 0x6d, 0xcc, 0x45, - 0x18, 0x95, 0x29, 0xe6, 0x9b, 0x8e, 0x77, 0x57, 0x1b, 0x4d, 0xa8, 0x5e, 0x4d, 0x73, 0xef, 0x5a, - 0x1a, 0xdf, 0x72, 0x31, 0x2b, 0xbf, 0x03, 0x3d, 0xd6, 0x86, 0xf6, 0x4a, 0xe3, 0x7d, 0x7d, 0x8b, - 0x63, 0xa6, 0x4e, 0x0c, 0x70, 0x83, 0x76, 0x02, 0x88, 0x37, 0x04, 0xc0, 0xe3, 0xed, 0xb9, 0x2f, - 0xa5, 0xf9, 0xb5, 0xff, 0x86, 0x62, 0x76, 0x90, 0xc6, 0x39, 0x2d, 0xd9, 0x9b, 0x25, 0xd3, 0x26, - 0x9a, 0xd9, 0x65, 0xdc, 0xe9, 0x88, 0x4c, 0x29, 0xaf, 0xe1, 0xcd, 0x00, 0xf0, 0xb2, 0x0d, 0xad, - 0xe2, 0xff, 0xc7, 0xbb, 0x82, 0x79, 0xe3, 0x1e, 0x34, 0xb9, 0xc0, 0x34, 0xd2, 0x08, 0xf7, 0x1a, - 0x5d, 0xa2, 0xfe, 0x29, 0x03, 0xe5, 0x8e, 0x43, 0xa8, 0xa0, 0x3d, 0xf5, 0x8c, 0xf6, 0x03, 0xa6, - 0x3d, 0xe3, 0x73, 0xed, 0xf3, 0xfe, 0xbb, 0x0c, 0xfc, 0xac, 0x5a, 0x87, 0x08, 0x79, 0x85, 0xb4, - 0xe0, 0xfd, 0x91, 0xfc, 0xb0, 0x3e, 0xb7, 0x0a, 0x8a, 0xd5, 0xd7, 0x9f, 0xcc, 0x77, 0xf2, 0x29, - 0xe0, 0xfb, 0xcc, 0x7e, 0xf3, 0x7d, 0xe6, 0x00, 0xf9, 0x46, 0xb8, 0x57, 0x47, 0xc8, 0x8b, 0x54, - 0xc8, 0xef, 0x13, 0x40, 0xbd, 0x02, 0x39, 0xde, 0x84, 0x5b, 0xd1, 0xfa, 0x78, 0x19, 0x00, 0x2b, - 0x58, 0xdd, 0x43, 0x81, 0xcc, 0x5a, 0x7d, 0x40, 0xf5, 0x37, 0x19, 0x24, 0xfc, 0x5c, 0x92, 0x9f, - 0xe5, 0xd2, 0x01, 0xe7, 0x92, 0x4f, 0x73, 0xe4, 0x5e, 0xbb, 0xe0, 0xc8, 0x55, 0xcf, 0x82, 0x94, - 0xdc, 0x1f, 0xeb, 0xe9, 0xd7, 0x40, 0xce, 0x89, 0x6c, 0xed, 0xe1, 0x82, 0x67, 0x9d, 0x11, 0xe8, - 0x88, 0xd9, 0x07, 0x20, 0x77, 0x83, 0x61, 0x2f, 0x6a, 0xee, 0x22, 0xc8, 0x74, 0x19, 0xf6, 0x26, - 0x33, 0x73, 0xda, 0x37, 0x93, 0xee, 0x0a, 0x28, 0xf5, 0x05, 0x90, 0xc2, 0x1d, 0x48, 0x6c, 0x11, - 0x45, 0x59, 0x3d, 0xfd, 0x78, 0x7b, 0x4e, 0x5e, 0x92, 0x8c, 0x60, 0x31, 0x62, 0xfc, 0x1b, 0x09, - 0xbc, 0x18, 0x75, 0xfa, 0xaa, 0x17, 0x3f, 0xcb, 0x75, 0x90, 0x8f, 0xb9, 0xce, 0xc4, 0xa1, 0xa6, - 0xab, 0x27, 0xe3, 0x1d, 0xfb, 0x09, 0xec, 0xad, 0x4c, 0x19, 0xb9, 0x51, 0xef, 0x99, 0xfa, 0x16, - 0x50, 0x42, 0x0f, 0xfb, 0xfd, 0xff, 0xa5, 0x38, 0x5a, 0xec, 0x20, 0x2b, 0x53, 0x46, 0x26, 0x70, - 0x8e, 0x0d, 0xcf, 0xaf, 0x03, 0x90, 0x20, 0x88, 0xa9, 0x89, 0xbf, 0x74, 0xa9, 0xf8, 0x43, 0x02, - 0x1c, 0x6e, 0x50, 0x4e, 0xf8, 0x48, 0x5a, 0xbe, 0x3b, 0x3e, 0x70, 0x48, 0x93, 0x0c, 0x1c, 0x2b, - 0x53, 0x63, 0x83, 0x86, 0x0e, 0xc0, 0x60, 0xe4, 0xea, 0x1f, 0xff, 0x78, 0x1c, 0x6d, 0x6c, 0x52, - 0x5b, 0x99, 0x32, 0xb2, 0xfd, 0x79, 0x8b, 0xa9, 0x0d, 0x00, 0x06, 0xd3, 0x14, 0x2b, 0x24, 0x04, - 0xc6, 0x62, 0x1c, 0x63, 0xb7, 0x39, 0xcc, 0x87, 0xe9, 0x4f, 0x53, 0x3e, 0xcc, 0xf4, 0xb0, 0xe8, - 0x30, 0x31, 0xf6, 0x4c, 0x57, 0x8b, 0x71, 0x9c, 0xf1, 0x6a, 0xb5, 0x32, 0x65, 0x80, 0x41, 0xc9, - 0xd9, 0xfd, 0x92, 0x53, 0xfb, 0x7a, 0xc9, 0xe9, 0x49, 0x2f, 0x79, 0xe4, 0x6a, 0x1f, 0xc9, 0xe0, - 0xe8, 0x80, 0x8c, 0xf7, 0xb0, 0xc7, 0x62, 0xf9, 0xd9, 0x00, 0x4a, 0xcb, 0x83, 0x14, 0x0d, 0x33, - 0xe6, 0xd4, 0x8e, 0x7e, 0xd2, 0x7b, 0xe5, 0xdf, 0x13, 0xf3, 0x3b, 0x49, 0x32, 0x32, 0x42, 0xb7, - 0x89, 0x7c, 0x98, 0x8e, 0x83, 0xb0, 0xed, 0xc3, 0xc8, 0x93, 0xc3, 0x08, 0xdd, 0x26, 0x52, 0xab, - 0x20, 0xdf, 0x86, 0x1e, 0xda, 0x84, 0x1e, 0x5e, 0xef, 0x05, 0x87, 0x15, 0x37, 0x9c, 0xd5, 0x33, - 0x3b, 0x7a, 0xd2, 0x93, 0x0b, 0x0b, 0x46, 0xae, 0x2f, 0x10, 0x3a, 0xe3, 0xeb, 0x6c, 0x10, 0xaf, - 0x33, 0xa2, 0x93, 0x8c, 0xe9, 0xf4, 0x05, 0xfa, 0x3a, 0x0b, 0x20, 0xd3, 0x0a, 0x9d, 0x4e, 0x8d, - 0x8a, 0xa6, 0x5b, 0xc2, 0xa1, 0x61, 0xa2, 0xac, 0x26, 0x95, 0x74, 0x3e, 0xb3, 0x9a, 0x54, 0x32, - 0x79, 0x65, 0x35, 0xa9, 0x28, 0xf9, 0x6c, 0xf1, 0xa7, 0x24, 0x50, 0xd7, 0x82, 0x1a, 0x1a, 0xa5, - 0xf2, 0x17, 0x19, 0xa4, 0x29, 0x1e, 0xbc, 0x26, 0x0e, 0xe9, 0xdf, 0xca, 0x0f, 0xeb, 0x47, 0x56, - 0x95, 0x62, 0xa5, 0x52, 0xa9, 0x9c, 0xae, 0xed, 0xd6, 0x77, 0x12, 0x4f, 0x41, 0xdf, 0xa9, 0xed, - 0x77, 0xdf, 0xa9, 0x1d, 0x5c, 0xdf, 0x49, 0x51, 0xcc, 0x9b, 0x48, 0xbd, 0x02, 0xb2, 0x1c, 0x53, - 0x18, 0xbc, 0xdc, 0x62, 0xe1, 0x76, 0xfc, 0x9f, 0xc3, 0xed, 0xa3, 0xdb, 0x8b, 0x86, 0x12, 0x28, - 0x37, 0x91, 0x7a, 0xc2, 0xaf, 0x47, 0x5d, 0xc6, 0x83, 0x8e, 0x31, 0x12, 0x69, 0x17, 0xfd, 0x9a, - 0x23, 0xb6, 0x9a, 0x48, 0x3d, 0x0d, 0x72, 0x7d, 0x39, 0x7f, 0x6a, 0xc4, 0x8c, 0x85, 0x21, 0xe6, - 0xbf, 0xa9, 0xbc, 0x44, 0xe1, 0x13, 0xd9, 0x98, 0x0d, 0x05, 0xea, 0xc1, 0xbe, 0xaa, 0x81, 0xd9, - 0xf0, 0x8c, 0x7d, 0x8d, 0x54, 0x4c, 0x63, 0x26, 0xd8, 0x0f, 0x15, 0x06, 0x11, 0x37, 0x55, 0x24, - 0xe0, 0xd8, 0xdb, 0x8e, 0x01, 0xeb, 0xb6, 0x4d, 0x20, 0x35, 0xf1, 0x35, 0xcf, 0xd9, 0x20, 0xf6, - 0xc8, 0x8b, 0xf2, 0x28, 0xc8, 0xf6, 0x30, 0x45, 0xce, 0xa0, 0xd1, 0xcd, 0x18, 0x4a, 0xb0, 0xd0, - 0x44, 0xea, 0x29, 0x70, 0x38, 0xdc, 0x74, 0x03, 0xcd, 0x3e, 0x4b, 0x33, 0x46, 0x2e, 0xd8, 0x18, - 0x20, 0xea, 0x67, 0xbf, 0xfe, 0xf9, 0x98, 0xf4, 0xa1, 0x36, 0x41, 0xf0, 0x70, 0xea, 0xb6, 0x5a, - 0x69, 0xf1, 0x94, 0xaf, 0xfd, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x5a, 0x9b, 0x0e, 0xb5, 0x2e, 0x11, - 0x00, 0x00, +var File_lorawan_stack_api_identifiers_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_identifiers_proto_rawDesc = []byte{ + 0x0a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, + 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, + 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, + 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x72, 0x0a, 0x16, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x4e, 0x0a, 0x0e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, + 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x0d, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x63, 0x0a, 0x11, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, + 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x9f, 0x0a, 0x0a, 0x14, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, + 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, + 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, + 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0xf3, 0x02, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, + 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd9, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, + 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, + 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, + 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, + 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, + 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, + 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, + 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, + 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, + 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, + 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, + 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x12, 0xf5, 0x02, 0x0a, 0x08, + 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd9, + 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, + 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, + 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, + 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, + 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, + 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, + 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, + 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, + 0x45, 0x75, 0x69, 0x12, 0xed, 0x02, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd1, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x04, + 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, + 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, + 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, + 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x2e, 0x4e, 0x65, 0x77, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, + 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, + 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, + 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, + 0x64, 0x64, 0x72, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xd5, 0x03, + 0x0a, 0x12, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, + 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, + 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, + 0x24, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0xec, 0x02, 0x0a, + 0x03, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd9, 0x02, 0xfa, 0x42, 0x06, + 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, + 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, + 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, + 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, + 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, + 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, + 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, + 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, + 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x65, 0x75, 0x69, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x75, 0x0a, 0x17, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x12, 0x50, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, + 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, + 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, + 0x7d, 0x24, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x7b, 0x0a, 0x0f, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, + 0x40, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x31, 0x2c, 0x7d, 0x24, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x1c, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x06, 0xf2, 0xaa, 0x19, 0x02, 0x28, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x3a, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xc9, 0x01, 0x0a, 0x1d, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x54, 0x0a, 0x10, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, + 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x3a, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x42, 0x0a, 0x0a, 0x03, 0x69, 0x64, 0x73, + 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0xd8, 0x03, 0x0a, 0x11, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x0f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x42, + 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x73, 0x12, 0x45, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x09, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, + 0x12, 0x54, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x73, 0x42, 0x0a, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x12, 0x03, 0xf8, 0x42, 0x01, + 0x22, 0xd1, 0x02, 0x0a, 0x1b, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x12, 0x45, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x07, + 0x62, 0x72, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, + 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, + 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, + 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x32, + 0x0a, 0x10, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, + 0x20, 0x52, 0x0f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x10, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x18, 0x20, 0x52, 0x0f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x07, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x20, + 0x52, 0x06, 0x62, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, + 0x10, 0x01, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, + 0x08, 0x08, 0x10, 0x09, 0x22, 0xdd, 0x04, 0x0a, 0x12, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0xe7, 0x02, 0x0a, 0x06, + 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, 0x92, + 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, + 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, + 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, + 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, + 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, + 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, + 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x05, + 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, + 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, + 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, + 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, + 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x09, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2f, 0x0a, 0x0e, 0x74, 0x65, 0x6e, + 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0d, 0x74, 0x65, 0x6e, + 0x61, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, + 0x08, 0x01, 0x10, 0x00, 0x22, 0x69, 0x0a, 0x1e, 0x4c, 0x6f, 0x52, 0x61, 0x41, 0x6c, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x76, 0x65, 0x6e, 0x64, 0x6f, + 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, + 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x42, + 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, + 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_identifiers_proto_rawDescOnce sync.Once + file_lorawan_stack_api_identifiers_proto_rawDescData = file_lorawan_stack_api_identifiers_proto_rawDesc +) + +func file_lorawan_stack_api_identifiers_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_identifiers_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_identifiers_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_identifiers_proto_rawDescData) + }) + return file_lorawan_stack_api_identifiers_proto_rawDescData +} + +var file_lorawan_stack_api_identifiers_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_lorawan_stack_api_identifiers_proto_goTypes = []interface{}{ + (*ApplicationIdentifiers)(nil), // 0: ttn.lorawan.v3.ApplicationIdentifiers + (*ClientIdentifiers)(nil), // 1: ttn.lorawan.v3.ClientIdentifiers + (*EndDeviceIdentifiers)(nil), // 2: ttn.lorawan.v3.EndDeviceIdentifiers + (*GatewayIdentifiers)(nil), // 3: ttn.lorawan.v3.GatewayIdentifiers + (*OrganizationIdentifiers)(nil), // 4: ttn.lorawan.v3.OrganizationIdentifiers + (*UserIdentifiers)(nil), // 5: ttn.lorawan.v3.UserIdentifiers + (*OrganizationOrUserIdentifiers)(nil), // 6: ttn.lorawan.v3.OrganizationOrUserIdentifiers + (*EntityIdentifiers)(nil), // 7: ttn.lorawan.v3.EntityIdentifiers + (*EndDeviceVersionIdentifiers)(nil), // 8: ttn.lorawan.v3.EndDeviceVersionIdentifiers + (*NetworkIdentifiers)(nil), // 9: ttn.lorawan.v3.NetworkIdentifiers + (*LoRaAllianceProfileIdentifiers)(nil), // 10: ttn.lorawan.v3.LoRaAllianceProfileIdentifiers +} +var file_lorawan_stack_api_identifiers_proto_depIdxs = []int32{ + 0, // 0: ttn.lorawan.v3.EndDeviceIdentifiers.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 4, // 1: ttn.lorawan.v3.OrganizationOrUserIdentifiers.organization_ids:type_name -> ttn.lorawan.v3.OrganizationIdentifiers + 5, // 2: ttn.lorawan.v3.OrganizationOrUserIdentifiers.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 0, // 3: ttn.lorawan.v3.EntityIdentifiers.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 1, // 4: ttn.lorawan.v3.EntityIdentifiers.client_ids:type_name -> ttn.lorawan.v3.ClientIdentifiers + 2, // 5: ttn.lorawan.v3.EntityIdentifiers.device_ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 3, // 6: ttn.lorawan.v3.EntityIdentifiers.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 4, // 7: ttn.lorawan.v3.EntityIdentifiers.organization_ids:type_name -> ttn.lorawan.v3.OrganizationIdentifiers + 5, // 8: ttn.lorawan.v3.EntityIdentifiers.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_identifiers_proto_init() } +func file_lorawan_stack_api_identifiers_proto_init() { + if File_lorawan_stack_api_identifiers_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_identifiers_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identifiers_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClientIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identifiers_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identifiers_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identifiers_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OrganizationIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identifiers_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UserIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identifiers_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OrganizationOrUserIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identifiers_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EntityIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identifiers_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EndDeviceVersionIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identifiers_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NetworkIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identifiers_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LoRaAllianceProfileIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_lorawan_stack_api_identifiers_proto_msgTypes[6].OneofWrappers = []interface{}{ + (*OrganizationOrUserIdentifiers_OrganizationIds)(nil), + (*OrganizationOrUserIdentifiers_UserIds)(nil), + } + file_lorawan_stack_api_identifiers_proto_msgTypes[7].OneofWrappers = []interface{}{ + (*EntityIdentifiers_ApplicationIds)(nil), + (*EntityIdentifiers_ClientIds)(nil), + (*EntityIdentifiers_DeviceIds)(nil), + (*EntityIdentifiers_GatewayIds)(nil), + (*EntityIdentifiers_OrganizationIds)(nil), + (*EntityIdentifiers_UserIds)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_identifiers_proto_rawDesc, + NumEnums: 0, + NumMessages: 11, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_identifiers_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_identifiers_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_identifiers_proto_msgTypes, + }.Build() + File_lorawan_stack_api_identifiers_proto = out.File + file_lorawan_stack_api_identifiers_proto_rawDesc = nil + file_lorawan_stack_api_identifiers_proto_goTypes = nil + file_lorawan_stack_api_identifiers_proto_depIdxs = nil } diff --git a/pkg/ttnpb/identifiers.pb.validate.go b/pkg/ttnpb/identifiers.pb.validate.go index 69e0d91f47..df23f3ecf6 100644 --- a/pkg/ttnpb/identifiers.pb.validate.go +++ b/pkg/ttnpb/identifiers.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _identifiers_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on ApplicationIdentifiers with the // rules defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/identifiers_flags.pb.go b/pkg/ttnpb/identifiers_flags.pb.go index a42adad427..3d75d912be 100644 --- a/pkg/ttnpb/identifiers_flags.pb.go +++ b/pkg/ttnpb/identifiers_flags.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/identifiers.proto package ttnpb diff --git a/pkg/ttnpb/identifiers_json.pb.go b/pkg/ttnpb/identifiers_json.pb.go index cc5262c42c..51b1f2238d 100644 --- a/pkg/ttnpb/identifiers_json.pb.go +++ b/pkg/ttnpb/identifiers_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/identifiers.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" types "go.thethings.network/lorawan-stack/v3/pkg/types" ) @@ -29,7 +29,7 @@ func (x *EndDeviceIdentifiers) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("application_ids") // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ApplicationIds) + golang.MarshalMessage(s, x.ApplicationIds) } if len(x.DevEui) > 0 || s.HasField("dev_eui") { s.WriteMoreIf(&wroteField) @@ -74,7 +74,7 @@ func (x *EndDeviceIdentifiers) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) } // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. var v ApplicationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ApplicationIds = &v case "dev_eui", "devEui": s.AddField("dev_eui") @@ -158,12 +158,12 @@ func (x *EntityIdentifiers) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("application_ids") // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.ApplicationIds) + golang.MarshalMessage(s, ov.ApplicationIds) case *EntityIdentifiers_ClientIds: s.WriteMoreIf(&wroteField) s.WriteObjectField("client_ids") // NOTE: ClientIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.ClientIds) + golang.MarshalMessage(s, ov.ClientIds) case *EntityIdentifiers_DeviceIds: s.WriteMoreIf(&wroteField) s.WriteObjectField("device_ids") @@ -176,12 +176,12 @@ func (x *EntityIdentifiers) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("organization_ids") // NOTE: OrganizationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.OrganizationIds) + golang.MarshalMessage(s, ov.OrganizationIds) case *EntityIdentifiers_UserIds: s.WriteMoreIf(&wroteField) s.WriteObjectField("user_ids") // NOTE: UserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.UserIds) + golang.MarshalMessage(s, ov.UserIds) } } s.WriteObjectEnd() @@ -211,7 +211,7 @@ func (x *EntityIdentifiers) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. var v ApplicationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.ApplicationIds = &v case "client_ids", "clientIds": s.AddField("client_ids") @@ -223,7 +223,7 @@ func (x *EntityIdentifiers) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ClientIdentifiers does not seem to implement UnmarshalProtoJSON. var v ClientIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.ClientIds = &v case "device_ids", "deviceIds": ov := &EntityIdentifiers_DeviceIds{} @@ -253,7 +253,7 @@ func (x *EntityIdentifiers) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: OrganizationIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.OrganizationIds = &v case "user_ids", "userIds": s.AddField("user_ids") @@ -265,7 +265,7 @@ func (x *EntityIdentifiers) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: UserIdentifiers does not seem to implement UnmarshalProtoJSON. var v UserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.UserIds = &v } }) diff --git a/pkg/ttnpb/identityserver.pb.go b/pkg/ttnpb/identityserver.pb.go index aa36417a16..73e0b11cb7 100644 --- a/pkg/ttnpb/identityserver.pb.go +++ b/pkg/ttnpb/identityserver.pb.go @@ -1,95 +1,92 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/identityserver.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + emptypb "google.golang.org/protobuf/types/known/emptypb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type AuthInfoResponse struct { - // Types that are valid to be assigned to AccessMethod: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to AccessMethod: // *AuthInfoResponse_ApiKey // *AuthInfoResponse_OauthAccessToken // *AuthInfoResponse_UserSession // *AuthInfoResponse_GatewayToken_ - AccessMethod isAuthInfoResponse_AccessMethod `protobuf_oneof:"access_method"` - UniversalRights *Rights `protobuf:"bytes,3,opt,name=universal_rights,json=universalRights,proto3" json:"universal_rights,omitempty"` - IsAdmin bool `protobuf:"varint,4,opt,name=is_admin,json=isAdmin,proto3" json:"is_admin,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + AccessMethod isAuthInfoResponse_AccessMethod `protobuf_oneof:"access_method"` + UniversalRights *Rights `protobuf:"bytes,3,opt,name=universal_rights,json=universalRights,proto3" json:"universal_rights,omitempty"` + IsAdmin bool `protobuf:"varint,4,opt,name=is_admin,json=isAdmin,proto3" json:"is_admin,omitempty"` } -func (m *AuthInfoResponse) Reset() { *m = AuthInfoResponse{} } -func (m *AuthInfoResponse) String() string { return proto.CompactTextString(m) } -func (*AuthInfoResponse) ProtoMessage() {} -func (*AuthInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_a1c7e02f6181562c, []int{0} -} -func (m *AuthInfoResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AuthInfoResponse.Unmarshal(m, b) -} -func (m *AuthInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AuthInfoResponse.Marshal(b, m, deterministic) -} -func (m *AuthInfoResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthInfoResponse.Merge(m, src) -} -func (m *AuthInfoResponse) XXX_Size() int { - return xxx_messageInfo_AuthInfoResponse.Size(m) +func (x *AuthInfoResponse) Reset() { + *x = AuthInfoResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *AuthInfoResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AuthInfoResponse.DiscardUnknown(m) + +func (x *AuthInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_AuthInfoResponse proto.InternalMessageInfo +func (*AuthInfoResponse) ProtoMessage() {} -type isAuthInfoResponse_AccessMethod interface { - isAuthInfoResponse_AccessMethod() +func (x *AuthInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type AuthInfoResponse_ApiKey struct { - ApiKey *AuthInfoResponse_APIKeyAccess `protobuf:"bytes,1,opt,name=api_key,json=apiKey,proto3,oneof" json:"api_key,omitempty"` -} -type AuthInfoResponse_OauthAccessToken struct { - OauthAccessToken *OAuthAccessToken `protobuf:"bytes,2,opt,name=oauth_access_token,json=oauthAccessToken,proto3,oneof" json:"oauth_access_token,omitempty"` -} -type AuthInfoResponse_UserSession struct { - UserSession *UserSession `protobuf:"bytes,5,opt,name=user_session,json=userSession,proto3,oneof" json:"user_session,omitempty"` -} -type AuthInfoResponse_GatewayToken_ struct { - GatewayToken *AuthInfoResponse_GatewayToken `protobuf:"bytes,6,opt,name=gateway_token,json=gatewayToken,proto3,oneof" json:"gateway_token,omitempty"` +// Deprecated: Use AuthInfoResponse.ProtoReflect.Descriptor instead. +func (*AuthInfoResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identityserver_proto_rawDescGZIP(), []int{0} } -func (*AuthInfoResponse_ApiKey) isAuthInfoResponse_AccessMethod() {} -func (*AuthInfoResponse_OauthAccessToken) isAuthInfoResponse_AccessMethod() {} -func (*AuthInfoResponse_UserSession) isAuthInfoResponse_AccessMethod() {} -func (*AuthInfoResponse_GatewayToken_) isAuthInfoResponse_AccessMethod() {} - func (m *AuthInfoResponse) GetAccessMethod() isAuthInfoResponse_AccessMethod { if m != nil { return m.AccessMethod @@ -97,1084 +94,1511 @@ func (m *AuthInfoResponse) GetAccessMethod() isAuthInfoResponse_AccessMethod { return nil } -func (m *AuthInfoResponse) GetApiKey() *AuthInfoResponse_APIKeyAccess { - if x, ok := m.GetAccessMethod().(*AuthInfoResponse_ApiKey); ok { +func (x *AuthInfoResponse) GetApiKey() *AuthInfoResponse_APIKeyAccess { + if x, ok := x.GetAccessMethod().(*AuthInfoResponse_ApiKey); ok { return x.ApiKey } return nil } -func (m *AuthInfoResponse) GetOauthAccessToken() *OAuthAccessToken { - if x, ok := m.GetAccessMethod().(*AuthInfoResponse_OauthAccessToken); ok { +func (x *AuthInfoResponse) GetOauthAccessToken() *OAuthAccessToken { + if x, ok := x.GetAccessMethod().(*AuthInfoResponse_OauthAccessToken); ok { return x.OauthAccessToken } return nil } -func (m *AuthInfoResponse) GetUserSession() *UserSession { - if x, ok := m.GetAccessMethod().(*AuthInfoResponse_UserSession); ok { +func (x *AuthInfoResponse) GetUserSession() *UserSession { + if x, ok := x.GetAccessMethod().(*AuthInfoResponse_UserSession); ok { return x.UserSession } return nil } -func (m *AuthInfoResponse) GetGatewayToken() *AuthInfoResponse_GatewayToken { - if x, ok := m.GetAccessMethod().(*AuthInfoResponse_GatewayToken_); ok { +func (x *AuthInfoResponse) GetGatewayToken() *AuthInfoResponse_GatewayToken { + if x, ok := x.GetAccessMethod().(*AuthInfoResponse_GatewayToken_); ok { return x.GatewayToken } return nil } -func (m *AuthInfoResponse) GetUniversalRights() *Rights { - if m != nil { - return m.UniversalRights +func (x *AuthInfoResponse) GetUniversalRights() *Rights { + if x != nil { + return x.UniversalRights } return nil } -func (m *AuthInfoResponse) GetIsAdmin() bool { - if m != nil { - return m.IsAdmin +func (x *AuthInfoResponse) GetIsAdmin() bool { + if x != nil { + return x.IsAdmin } return false } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*AuthInfoResponse) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*AuthInfoResponse_ApiKey)(nil), - (*AuthInfoResponse_OauthAccessToken)(nil), - (*AuthInfoResponse_UserSession)(nil), - (*AuthInfoResponse_GatewayToken_)(nil), - } +type isAuthInfoResponse_AccessMethod interface { + isAuthInfoResponse_AccessMethod() } -type AuthInfoResponse_APIKeyAccess struct { - ApiKey *APIKey `protobuf:"bytes,1,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` - EntityIds *EntityIdentifiers `protobuf:"bytes,2,opt,name=entity_ids,json=entityIds,proto3" json:"entity_ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type AuthInfoResponse_ApiKey struct { + ApiKey *AuthInfoResponse_APIKeyAccess `protobuf:"bytes,1,opt,name=api_key,json=apiKey,proto3,oneof"` } -func (m *AuthInfoResponse_APIKeyAccess) Reset() { *m = AuthInfoResponse_APIKeyAccess{} } -func (m *AuthInfoResponse_APIKeyAccess) String() string { return proto.CompactTextString(m) } -func (*AuthInfoResponse_APIKeyAccess) ProtoMessage() {} -func (*AuthInfoResponse_APIKeyAccess) Descriptor() ([]byte, []int) { - return fileDescriptor_a1c7e02f6181562c, []int{0, 0} -} -func (m *AuthInfoResponse_APIKeyAccess) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AuthInfoResponse_APIKeyAccess.Unmarshal(m, b) -} -func (m *AuthInfoResponse_APIKeyAccess) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AuthInfoResponse_APIKeyAccess.Marshal(b, m, deterministic) -} -func (m *AuthInfoResponse_APIKeyAccess) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthInfoResponse_APIKeyAccess.Merge(m, src) +type AuthInfoResponse_OauthAccessToken struct { + OauthAccessToken *OAuthAccessToken `protobuf:"bytes,2,opt,name=oauth_access_token,json=oauthAccessToken,proto3,oneof"` } -func (m *AuthInfoResponse_APIKeyAccess) XXX_Size() int { - return xxx_messageInfo_AuthInfoResponse_APIKeyAccess.Size(m) + +type AuthInfoResponse_UserSession struct { + // Warning: A user authorized by session cookie will be granted all + // current and future rights. When using this auth type, the respective + // handlers need to ensure thorough CSRF and CORS protection using + // appropriate middleware. + UserSession *UserSession `protobuf:"bytes,5,opt,name=user_session,json=userSession,proto3,oneof"` } -func (m *AuthInfoResponse_APIKeyAccess) XXX_DiscardUnknown() { - xxx_messageInfo_AuthInfoResponse_APIKeyAccess.DiscardUnknown(m) + +type AuthInfoResponse_GatewayToken_ struct { + GatewayToken *AuthInfoResponse_GatewayToken `protobuf:"bytes,6,opt,name=gateway_token,json=gatewayToken,proto3,oneof"` } -var xxx_messageInfo_AuthInfoResponse_APIKeyAccess proto.InternalMessageInfo +func (*AuthInfoResponse_ApiKey) isAuthInfoResponse_AccessMethod() {} -func (m *AuthInfoResponse_APIKeyAccess) GetApiKey() *APIKey { - if m != nil { - return m.ApiKey - } - return nil -} +func (*AuthInfoResponse_OauthAccessToken) isAuthInfoResponse_AccessMethod() {} -func (m *AuthInfoResponse_APIKeyAccess) GetEntityIds() *EntityIdentifiers { - if m != nil { - return m.EntityIds - } - return nil -} +func (*AuthInfoResponse_UserSession) isAuthInfoResponse_AccessMethod() {} -type AuthInfoResponse_GatewayToken struct { - GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` - Rights []Right `protobuf:"varint,6,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +func (*AuthInfoResponse_GatewayToken_) isAuthInfoResponse_AccessMethod() {} -func (m *AuthInfoResponse_GatewayToken) Reset() { *m = AuthInfoResponse_GatewayToken{} } -func (m *AuthInfoResponse_GatewayToken) String() string { return proto.CompactTextString(m) } -func (*AuthInfoResponse_GatewayToken) ProtoMessage() {} -func (*AuthInfoResponse_GatewayToken) Descriptor() ([]byte, []int) { - return fileDescriptor_a1c7e02f6181562c, []int{0, 1} -} -func (m *AuthInfoResponse_GatewayToken) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AuthInfoResponse_GatewayToken.Unmarshal(m, b) -} -func (m *AuthInfoResponse_GatewayToken) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AuthInfoResponse_GatewayToken.Marshal(b, m, deterministic) -} -func (m *AuthInfoResponse_GatewayToken) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthInfoResponse_GatewayToken.Merge(m, src) -} -func (m *AuthInfoResponse_GatewayToken) XXX_Size() int { - return xxx_messageInfo_AuthInfoResponse_GatewayToken.Size(m) -} -func (m *AuthInfoResponse_GatewayToken) XXX_DiscardUnknown() { - xxx_messageInfo_AuthInfoResponse_GatewayToken.DiscardUnknown(m) +type GetIsConfigurationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -var xxx_messageInfo_AuthInfoResponse_GatewayToken proto.InternalMessageInfo - -func (m *AuthInfoResponse_GatewayToken) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds +func (x *GetIsConfigurationRequest) Reset() { + *x = GetIsConfigurationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (m *AuthInfoResponse_GatewayToken) GetRights() []Right { - if m != nil { - return m.Rights - } - return nil +func (x *GetIsConfigurationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -type GetIsConfigurationRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (*GetIsConfigurationRequest) ProtoMessage() {} + +func (x *GetIsConfigurationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *GetIsConfigurationRequest) Reset() { *m = GetIsConfigurationRequest{} } -func (m *GetIsConfigurationRequest) String() string { return proto.CompactTextString(m) } -func (*GetIsConfigurationRequest) ProtoMessage() {} +// Deprecated: Use GetIsConfigurationRequest.ProtoReflect.Descriptor instead. func (*GetIsConfigurationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_a1c7e02f6181562c, []int{1} -} -func (m *GetIsConfigurationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetIsConfigurationRequest.Unmarshal(m, b) + return file_lorawan_stack_api_identityserver_proto_rawDescGZIP(), []int{1} } -func (m *GetIsConfigurationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetIsConfigurationRequest.Marshal(b, m, deterministic) -} -func (m *GetIsConfigurationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetIsConfigurationRequest.Merge(m, src) -} -func (m *GetIsConfigurationRequest) XXX_Size() int { - return xxx_messageInfo_GetIsConfigurationRequest.Size(m) -} -func (m *GetIsConfigurationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetIsConfigurationRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetIsConfigurationRequest proto.InternalMessageInfo type IsConfiguration struct { - UserRegistration *IsConfiguration_UserRegistration `protobuf:"bytes,3,opt,name=user_registration,json=userRegistration,proto3" json:"user_registration,omitempty"` - ProfilePicture *IsConfiguration_ProfilePicture `protobuf:"bytes,4,opt,name=profile_picture,json=profilePicture,proto3" json:"profile_picture,omitempty"` - EndDevicePicture *IsConfiguration_EndDevicePicture `protobuf:"bytes,5,opt,name=end_device_picture,json=endDevicePicture,proto3" json:"end_device_picture,omitempty"` - UserRights *IsConfiguration_UserRights `protobuf:"bytes,6,opt,name=user_rights,json=userRights,proto3" json:"user_rights,omitempty"` - UserLogin *IsConfiguration_UserLogin `protobuf:"bytes,7,opt,name=user_login,json=userLogin,proto3" json:"user_login,omitempty"` - AdminRights *IsConfiguration_AdminRights `protobuf:"bytes,8,opt,name=admin_rights,json=adminRights,proto3" json:"admin_rights,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *IsConfiguration) Reset() { *m = IsConfiguration{} } -func (m *IsConfiguration) String() string { return proto.CompactTextString(m) } -func (*IsConfiguration) ProtoMessage() {} -func (*IsConfiguration) Descriptor() ([]byte, []int) { - return fileDescriptor_a1c7e02f6181562c, []int{2} -} -func (m *IsConfiguration) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IsConfiguration.Unmarshal(m, b) -} -func (m *IsConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IsConfiguration.Marshal(b, m, deterministic) -} -func (m *IsConfiguration) XXX_Merge(src proto.Message) { - xxx_messageInfo_IsConfiguration.Merge(m, src) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserRegistration *IsConfiguration_UserRegistration `protobuf:"bytes,3,opt,name=user_registration,json=userRegistration,proto3" json:"user_registration,omitempty"` + ProfilePicture *IsConfiguration_ProfilePicture `protobuf:"bytes,4,opt,name=profile_picture,json=profilePicture,proto3" json:"profile_picture,omitempty"` + EndDevicePicture *IsConfiguration_EndDevicePicture `protobuf:"bytes,5,opt,name=end_device_picture,json=endDevicePicture,proto3" json:"end_device_picture,omitempty"` + UserRights *IsConfiguration_UserRights `protobuf:"bytes,6,opt,name=user_rights,json=userRights,proto3" json:"user_rights,omitempty"` + UserLogin *IsConfiguration_UserLogin `protobuf:"bytes,7,opt,name=user_login,json=userLogin,proto3" json:"user_login,omitempty"` + AdminRights *IsConfiguration_AdminRights `protobuf:"bytes,8,opt,name=admin_rights,json=adminRights,proto3" json:"admin_rights,omitempty"` +} + +func (x *IsConfiguration) Reset() { + *x = IsConfiguration{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *IsConfiguration) XXX_Size() int { - return xxx_messageInfo_IsConfiguration.Size(m) + +func (x *IsConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *IsConfiguration) XXX_DiscardUnknown() { - xxx_messageInfo_IsConfiguration.DiscardUnknown(m) + +func (*IsConfiguration) ProtoMessage() {} + +func (x *IsConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_IsConfiguration proto.InternalMessageInfo +// Deprecated: Use IsConfiguration.ProtoReflect.Descriptor instead. +func (*IsConfiguration) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identityserver_proto_rawDescGZIP(), []int{2} +} -func (m *IsConfiguration) GetUserRegistration() *IsConfiguration_UserRegistration { - if m != nil { - return m.UserRegistration +func (x *IsConfiguration) GetUserRegistration() *IsConfiguration_UserRegistration { + if x != nil { + return x.UserRegistration } return nil } -func (m *IsConfiguration) GetProfilePicture() *IsConfiguration_ProfilePicture { - if m != nil { - return m.ProfilePicture +func (x *IsConfiguration) GetProfilePicture() *IsConfiguration_ProfilePicture { + if x != nil { + return x.ProfilePicture } return nil } -func (m *IsConfiguration) GetEndDevicePicture() *IsConfiguration_EndDevicePicture { - if m != nil { - return m.EndDevicePicture +func (x *IsConfiguration) GetEndDevicePicture() *IsConfiguration_EndDevicePicture { + if x != nil { + return x.EndDevicePicture } return nil } -func (m *IsConfiguration) GetUserRights() *IsConfiguration_UserRights { - if m != nil { - return m.UserRights +func (x *IsConfiguration) GetUserRights() *IsConfiguration_UserRights { + if x != nil { + return x.UserRights } return nil } -func (m *IsConfiguration) GetUserLogin() *IsConfiguration_UserLogin { - if m != nil { - return m.UserLogin +func (x *IsConfiguration) GetUserLogin() *IsConfiguration_UserLogin { + if x != nil { + return x.UserLogin } return nil } -func (m *IsConfiguration) GetAdminRights() *IsConfiguration_AdminRights { - if m != nil { - return m.AdminRights +func (x *IsConfiguration) GetAdminRights() *IsConfiguration_AdminRights { + if x != nil { + return x.AdminRights } return nil } -type IsConfiguration_UserRegistration struct { - Invitation *IsConfiguration_UserRegistration_Invitation `protobuf:"bytes,1,opt,name=invitation,proto3" json:"invitation,omitempty"` - ContactInfoValidation *IsConfiguration_UserRegistration_ContactInfoValidation `protobuf:"bytes,2,opt,name=contact_info_validation,json=contactInfoValidation,proto3" json:"contact_info_validation,omitempty"` - AdminApproval *IsConfiguration_UserRegistration_AdminApproval `protobuf:"bytes,3,opt,name=admin_approval,json=adminApproval,proto3" json:"admin_approval,omitempty"` - PasswordRequirements *IsConfiguration_UserRegistration_PasswordRequirements `protobuf:"bytes,4,opt,name=password_requirements,json=passwordRequirements,proto3" json:"password_requirements,omitempty"` - Enabled bool `protobuf:"varint,5,opt,name=enabled,proto3" json:"enabled,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type GetIsConfigurationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *IsConfiguration_UserRegistration) Reset() { *m = IsConfiguration_UserRegistration{} } -func (m *IsConfiguration_UserRegistration) String() string { return proto.CompactTextString(m) } -func (*IsConfiguration_UserRegistration) ProtoMessage() {} -func (*IsConfiguration_UserRegistration) Descriptor() ([]byte, []int) { - return fileDescriptor_a1c7e02f6181562c, []int{2, 0} + Configuration *IsConfiguration `protobuf:"bytes,1,opt,name=configuration,proto3" json:"configuration,omitempty"` } -func (m *IsConfiguration_UserRegistration) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IsConfiguration_UserRegistration.Unmarshal(m, b) -} -func (m *IsConfiguration_UserRegistration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IsConfiguration_UserRegistration.Marshal(b, m, deterministic) -} -func (m *IsConfiguration_UserRegistration) XXX_Merge(src proto.Message) { - xxx_messageInfo_IsConfiguration_UserRegistration.Merge(m, src) -} -func (m *IsConfiguration_UserRegistration) XXX_Size() int { - return xxx_messageInfo_IsConfiguration_UserRegistration.Size(m) + +func (x *GetIsConfigurationResponse) Reset() { + *x = GetIsConfigurationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *IsConfiguration_UserRegistration) XXX_DiscardUnknown() { - xxx_messageInfo_IsConfiguration_UserRegistration.DiscardUnknown(m) + +func (x *GetIsConfigurationResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_IsConfiguration_UserRegistration proto.InternalMessageInfo +func (*GetIsConfigurationResponse) ProtoMessage() {} -func (m *IsConfiguration_UserRegistration) GetInvitation() *IsConfiguration_UserRegistration_Invitation { - if m != nil { - return m.Invitation +func (x *GetIsConfigurationResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *IsConfiguration_UserRegistration) GetContactInfoValidation() *IsConfiguration_UserRegistration_ContactInfoValidation { - if m != nil { - return m.ContactInfoValidation - } - return nil +// Deprecated: Use GetIsConfigurationResponse.ProtoReflect.Descriptor instead. +func (*GetIsConfigurationResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identityserver_proto_rawDescGZIP(), []int{3} } -func (m *IsConfiguration_UserRegistration) GetAdminApproval() *IsConfiguration_UserRegistration_AdminApproval { - if m != nil { - return m.AdminApproval +func (x *GetIsConfigurationResponse) GetConfiguration() *IsConfiguration { + if x != nil { + return x.Configuration } return nil } -func (m *IsConfiguration_UserRegistration) GetPasswordRequirements() *IsConfiguration_UserRegistration_PasswordRequirements { - if m != nil { - return m.PasswordRequirements - } - return nil +type AuthInfoResponse_APIKeyAccess struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ApiKey *APIKey `protobuf:"bytes,1,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` + EntityIds *EntityIdentifiers `protobuf:"bytes,2,opt,name=entity_ids,json=entityIds,proto3" json:"entity_ids,omitempty"` } -func (m *IsConfiguration_UserRegistration) GetEnabled() bool { - if m != nil { - return m.Enabled +func (x *AuthInfoResponse_APIKeyAccess) Reset() { + *x = AuthInfoResponse_APIKeyAccess{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return false } -type IsConfiguration_UserRegistration_Invitation struct { - Required *types.BoolValue `protobuf:"bytes,1,opt,name=required,proto3" json:"required,omitempty"` - TokenTtl *types.Duration `protobuf:"bytes,2,opt,name=token_ttl,json=tokenTtl,proto3" json:"token_ttl,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *AuthInfoResponse_APIKeyAccess) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *IsConfiguration_UserRegistration_Invitation) Reset() { - *m = IsConfiguration_UserRegistration_Invitation{} -} -func (m *IsConfiguration_UserRegistration_Invitation) String() string { - return proto.CompactTextString(m) -} -func (*IsConfiguration_UserRegistration_Invitation) ProtoMessage() {} -func (*IsConfiguration_UserRegistration_Invitation) Descriptor() ([]byte, []int) { - return fileDescriptor_a1c7e02f6181562c, []int{2, 0, 0} -} -func (m *IsConfiguration_UserRegistration_Invitation) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IsConfiguration_UserRegistration_Invitation.Unmarshal(m, b) -} -func (m *IsConfiguration_UserRegistration_Invitation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IsConfiguration_UserRegistration_Invitation.Marshal(b, m, deterministic) -} -func (m *IsConfiguration_UserRegistration_Invitation) XXX_Merge(src proto.Message) { - xxx_messageInfo_IsConfiguration_UserRegistration_Invitation.Merge(m, src) -} -func (m *IsConfiguration_UserRegistration_Invitation) XXX_Size() int { - return xxx_messageInfo_IsConfiguration_UserRegistration_Invitation.Size(m) -} -func (m *IsConfiguration_UserRegistration_Invitation) XXX_DiscardUnknown() { - xxx_messageInfo_IsConfiguration_UserRegistration_Invitation.DiscardUnknown(m) +func (*AuthInfoResponse_APIKeyAccess) ProtoMessage() {} + +func (x *AuthInfoResponse_APIKeyAccess) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_IsConfiguration_UserRegistration_Invitation proto.InternalMessageInfo +// Deprecated: Use AuthInfoResponse_APIKeyAccess.ProtoReflect.Descriptor instead. +func (*AuthInfoResponse_APIKeyAccess) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identityserver_proto_rawDescGZIP(), []int{0, 0} +} -func (m *IsConfiguration_UserRegistration_Invitation) GetRequired() *types.BoolValue { - if m != nil { - return m.Required +func (x *AuthInfoResponse_APIKeyAccess) GetApiKey() *APIKey { + if x != nil { + return x.ApiKey } return nil } -func (m *IsConfiguration_UserRegistration_Invitation) GetTokenTtl() *types.Duration { - if m != nil { - return m.TokenTtl +func (x *AuthInfoResponse_APIKeyAccess) GetEntityIds() *EntityIdentifiers { + if x != nil { + return x.EntityIds } return nil } -type IsConfiguration_UserRegistration_ContactInfoValidation struct { - Required *types.BoolValue `protobuf:"bytes,1,opt,name=required,proto3" json:"required,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type AuthInfoResponse_GatewayToken struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *IsConfiguration_UserRegistration_ContactInfoValidation) Reset() { - *m = IsConfiguration_UserRegistration_ContactInfoValidation{} -} -func (m *IsConfiguration_UserRegistration_ContactInfoValidation) String() string { - return proto.CompactTextString(m) -} -func (*IsConfiguration_UserRegistration_ContactInfoValidation) ProtoMessage() {} -func (*IsConfiguration_UserRegistration_ContactInfoValidation) Descriptor() ([]byte, []int) { - return fileDescriptor_a1c7e02f6181562c, []int{2, 0, 1} -} -func (m *IsConfiguration_UserRegistration_ContactInfoValidation) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IsConfiguration_UserRegistration_ContactInfoValidation.Unmarshal(m, b) + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` + Rights []Right `protobuf:"varint,6,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` } -func (m *IsConfiguration_UserRegistration_ContactInfoValidation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IsConfiguration_UserRegistration_ContactInfoValidation.Marshal(b, m, deterministic) -} -func (m *IsConfiguration_UserRegistration_ContactInfoValidation) XXX_Merge(src proto.Message) { - xxx_messageInfo_IsConfiguration_UserRegistration_ContactInfoValidation.Merge(m, src) -} -func (m *IsConfiguration_UserRegistration_ContactInfoValidation) XXX_Size() int { - return xxx_messageInfo_IsConfiguration_UserRegistration_ContactInfoValidation.Size(m) + +func (x *AuthInfoResponse_GatewayToken) Reset() { + *x = AuthInfoResponse_GatewayToken{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *IsConfiguration_UserRegistration_ContactInfoValidation) XXX_DiscardUnknown() { - xxx_messageInfo_IsConfiguration_UserRegistration_ContactInfoValidation.DiscardUnknown(m) + +func (x *AuthInfoResponse_GatewayToken) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_IsConfiguration_UserRegistration_ContactInfoValidation proto.InternalMessageInfo +func (*AuthInfoResponse_GatewayToken) ProtoMessage() {} -func (m *IsConfiguration_UserRegistration_ContactInfoValidation) GetRequired() *types.BoolValue { - if m != nil { - return m.Required +func (x *AuthInfoResponse_GatewayToken) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type IsConfiguration_UserRegistration_AdminApproval struct { - Required *types.BoolValue `protobuf:"bytes,1,opt,name=required,proto3" json:"required,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use AuthInfoResponse_GatewayToken.ProtoReflect.Descriptor instead. +func (*AuthInfoResponse_GatewayToken) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identityserver_proto_rawDescGZIP(), []int{0, 1} } -func (m *IsConfiguration_UserRegistration_AdminApproval) Reset() { - *m = IsConfiguration_UserRegistration_AdminApproval{} -} -func (m *IsConfiguration_UserRegistration_AdminApproval) String() string { - return proto.CompactTextString(m) -} -func (*IsConfiguration_UserRegistration_AdminApproval) ProtoMessage() {} -func (*IsConfiguration_UserRegistration_AdminApproval) Descriptor() ([]byte, []int) { - return fileDescriptor_a1c7e02f6181562c, []int{2, 0, 2} -} -func (m *IsConfiguration_UserRegistration_AdminApproval) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IsConfiguration_UserRegistration_AdminApproval.Unmarshal(m, b) -} -func (m *IsConfiguration_UserRegistration_AdminApproval) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IsConfiguration_UserRegistration_AdminApproval.Marshal(b, m, deterministic) -} -func (m *IsConfiguration_UserRegistration_AdminApproval) XXX_Merge(src proto.Message) { - xxx_messageInfo_IsConfiguration_UserRegistration_AdminApproval.Merge(m, src) -} -func (m *IsConfiguration_UserRegistration_AdminApproval) XXX_Size() int { - return xxx_messageInfo_IsConfiguration_UserRegistration_AdminApproval.Size(m) -} -func (m *IsConfiguration_UserRegistration_AdminApproval) XXX_DiscardUnknown() { - xxx_messageInfo_IsConfiguration_UserRegistration_AdminApproval.DiscardUnknown(m) +func (x *AuthInfoResponse_GatewayToken) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds + } + return nil } -var xxx_messageInfo_IsConfiguration_UserRegistration_AdminApproval proto.InternalMessageInfo - -func (m *IsConfiguration_UserRegistration_AdminApproval) GetRequired() *types.BoolValue { - if m != nil { - return m.Required +func (x *AuthInfoResponse_GatewayToken) GetRights() []Right { + if x != nil { + return x.Rights } return nil } -type IsConfiguration_UserRegistration_PasswordRequirements struct { - MinLength *types.UInt32Value `protobuf:"bytes,1,opt,name=min_length,json=minLength,proto3" json:"min_length,omitempty"` - MaxLength *types.UInt32Value `protobuf:"bytes,2,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"` - MinUppercase *types.UInt32Value `protobuf:"bytes,3,opt,name=min_uppercase,json=minUppercase,proto3" json:"min_uppercase,omitempty"` - MinDigits *types.UInt32Value `protobuf:"bytes,4,opt,name=min_digits,json=minDigits,proto3" json:"min_digits,omitempty"` - MinSpecial *types.UInt32Value `protobuf:"bytes,5,opt,name=min_special,json=minSpecial,proto3" json:"min_special,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type IsConfiguration_UserRegistration struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *IsConfiguration_UserRegistration_PasswordRequirements) Reset() { - *m = IsConfiguration_UserRegistration_PasswordRequirements{} -} -func (m *IsConfiguration_UserRegistration_PasswordRequirements) String() string { - return proto.CompactTextString(m) -} -func (*IsConfiguration_UserRegistration_PasswordRequirements) ProtoMessage() {} -func (*IsConfiguration_UserRegistration_PasswordRequirements) Descriptor() ([]byte, []int) { - return fileDescriptor_a1c7e02f6181562c, []int{2, 0, 3} -} -func (m *IsConfiguration_UserRegistration_PasswordRequirements) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IsConfiguration_UserRegistration_PasswordRequirements.Unmarshal(m, b) -} -func (m *IsConfiguration_UserRegistration_PasswordRequirements) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IsConfiguration_UserRegistration_PasswordRequirements.Marshal(b, m, deterministic) + Invitation *IsConfiguration_UserRegistration_Invitation `protobuf:"bytes,1,opt,name=invitation,proto3" json:"invitation,omitempty"` + ContactInfoValidation *IsConfiguration_UserRegistration_ContactInfoValidation `protobuf:"bytes,2,opt,name=contact_info_validation,json=contactInfoValidation,proto3" json:"contact_info_validation,omitempty"` + AdminApproval *IsConfiguration_UserRegistration_AdminApproval `protobuf:"bytes,3,opt,name=admin_approval,json=adminApproval,proto3" json:"admin_approval,omitempty"` + PasswordRequirements *IsConfiguration_UserRegistration_PasswordRequirements `protobuf:"bytes,4,opt,name=password_requirements,json=passwordRequirements,proto3" json:"password_requirements,omitempty"` + Enabled bool `protobuf:"varint,5,opt,name=enabled,proto3" json:"enabled,omitempty"` } -func (m *IsConfiguration_UserRegistration_PasswordRequirements) XXX_Merge(src proto.Message) { - xxx_messageInfo_IsConfiguration_UserRegistration_PasswordRequirements.Merge(m, src) + +func (x *IsConfiguration_UserRegistration) Reset() { + *x = IsConfiguration_UserRegistration{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *IsConfiguration_UserRegistration_PasswordRequirements) XXX_Size() int { - return xxx_messageInfo_IsConfiguration_UserRegistration_PasswordRequirements.Size(m) + +func (x *IsConfiguration_UserRegistration) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *IsConfiguration_UserRegistration_PasswordRequirements) XXX_DiscardUnknown() { - xxx_messageInfo_IsConfiguration_UserRegistration_PasswordRequirements.DiscardUnknown(m) + +func (*IsConfiguration_UserRegistration) ProtoMessage() {} + +func (x *IsConfiguration_UserRegistration) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_IsConfiguration_UserRegistration_PasswordRequirements proto.InternalMessageInfo +// Deprecated: Use IsConfiguration_UserRegistration.ProtoReflect.Descriptor instead. +func (*IsConfiguration_UserRegistration) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identityserver_proto_rawDescGZIP(), []int{2, 0} +} -func (m *IsConfiguration_UserRegistration_PasswordRequirements) GetMinLength() *types.UInt32Value { - if m != nil { - return m.MinLength +func (x *IsConfiguration_UserRegistration) GetInvitation() *IsConfiguration_UserRegistration_Invitation { + if x != nil { + return x.Invitation } return nil } -func (m *IsConfiguration_UserRegistration_PasswordRequirements) GetMaxLength() *types.UInt32Value { - if m != nil { - return m.MaxLength +func (x *IsConfiguration_UserRegistration) GetContactInfoValidation() *IsConfiguration_UserRegistration_ContactInfoValidation { + if x != nil { + return x.ContactInfoValidation } return nil } -func (m *IsConfiguration_UserRegistration_PasswordRequirements) GetMinUppercase() *types.UInt32Value { - if m != nil { - return m.MinUppercase +func (x *IsConfiguration_UserRegistration) GetAdminApproval() *IsConfiguration_UserRegistration_AdminApproval { + if x != nil { + return x.AdminApproval } return nil } -func (m *IsConfiguration_UserRegistration_PasswordRequirements) GetMinDigits() *types.UInt32Value { - if m != nil { - return m.MinDigits +func (x *IsConfiguration_UserRegistration) GetPasswordRequirements() *IsConfiguration_UserRegistration_PasswordRequirements { + if x != nil { + return x.PasswordRequirements } return nil } -func (m *IsConfiguration_UserRegistration_PasswordRequirements) GetMinSpecial() *types.UInt32Value { - if m != nil { - return m.MinSpecial +func (x *IsConfiguration_UserRegistration) GetEnabled() bool { + if x != nil { + return x.Enabled } - return nil + return false } type IsConfiguration_ProfilePicture struct { - DisableUpload *types.BoolValue `protobuf:"bytes,1,opt,name=disable_upload,json=disableUpload,proto3" json:"disable_upload,omitempty"` - UseGravatar *types.BoolValue `protobuf:"bytes,2,opt,name=use_gravatar,json=useGravatar,proto3" json:"use_gravatar,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *IsConfiguration_ProfilePicture) Reset() { *m = IsConfiguration_ProfilePicture{} } -func (m *IsConfiguration_ProfilePicture) String() string { return proto.CompactTextString(m) } -func (*IsConfiguration_ProfilePicture) ProtoMessage() {} -func (*IsConfiguration_ProfilePicture) Descriptor() ([]byte, []int) { - return fileDescriptor_a1c7e02f6181562c, []int{2, 1} -} -func (m *IsConfiguration_ProfilePicture) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IsConfiguration_ProfilePicture.Unmarshal(m, b) -} -func (m *IsConfiguration_ProfilePicture) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IsConfiguration_ProfilePicture.Marshal(b, m, deterministic) + DisableUpload *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=disable_upload,json=disableUpload,proto3" json:"disable_upload,omitempty"` + UseGravatar *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=use_gravatar,json=useGravatar,proto3" json:"use_gravatar,omitempty"` } -func (m *IsConfiguration_ProfilePicture) XXX_Merge(src proto.Message) { - xxx_messageInfo_IsConfiguration_ProfilePicture.Merge(m, src) + +func (x *IsConfiguration_ProfilePicture) Reset() { + *x = IsConfiguration_ProfilePicture{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *IsConfiguration_ProfilePicture) XXX_Size() int { - return xxx_messageInfo_IsConfiguration_ProfilePicture.Size(m) + +func (x *IsConfiguration_ProfilePicture) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *IsConfiguration_ProfilePicture) XXX_DiscardUnknown() { - xxx_messageInfo_IsConfiguration_ProfilePicture.DiscardUnknown(m) + +func (*IsConfiguration_ProfilePicture) ProtoMessage() {} + +func (x *IsConfiguration_ProfilePicture) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_IsConfiguration_ProfilePicture proto.InternalMessageInfo +// Deprecated: Use IsConfiguration_ProfilePicture.ProtoReflect.Descriptor instead. +func (*IsConfiguration_ProfilePicture) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identityserver_proto_rawDescGZIP(), []int{2, 1} +} -func (m *IsConfiguration_ProfilePicture) GetDisableUpload() *types.BoolValue { - if m != nil { - return m.DisableUpload +func (x *IsConfiguration_ProfilePicture) GetDisableUpload() *wrapperspb.BoolValue { + if x != nil { + return x.DisableUpload } return nil } -func (m *IsConfiguration_ProfilePicture) GetUseGravatar() *types.BoolValue { - if m != nil { - return m.UseGravatar +func (x *IsConfiguration_ProfilePicture) GetUseGravatar() *wrapperspb.BoolValue { + if x != nil { + return x.UseGravatar } return nil } type IsConfiguration_EndDevicePicture struct { - DisableUpload *types.BoolValue `protobuf:"bytes,1,opt,name=disable_upload,json=disableUpload,proto3" json:"disable_upload,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *IsConfiguration_EndDevicePicture) Reset() { *m = IsConfiguration_EndDevicePicture{} } -func (m *IsConfiguration_EndDevicePicture) String() string { return proto.CompactTextString(m) } -func (*IsConfiguration_EndDevicePicture) ProtoMessage() {} -func (*IsConfiguration_EndDevicePicture) Descriptor() ([]byte, []int) { - return fileDescriptor_a1c7e02f6181562c, []int{2, 2} -} -func (m *IsConfiguration_EndDevicePicture) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IsConfiguration_EndDevicePicture.Unmarshal(m, b) -} -func (m *IsConfiguration_EndDevicePicture) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IsConfiguration_EndDevicePicture.Marshal(b, m, deterministic) + DisableUpload *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=disable_upload,json=disableUpload,proto3" json:"disable_upload,omitempty"` } -func (m *IsConfiguration_EndDevicePicture) XXX_Merge(src proto.Message) { - xxx_messageInfo_IsConfiguration_EndDevicePicture.Merge(m, src) + +func (x *IsConfiguration_EndDevicePicture) Reset() { + *x = IsConfiguration_EndDevicePicture{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *IsConfiguration_EndDevicePicture) XXX_Size() int { - return xxx_messageInfo_IsConfiguration_EndDevicePicture.Size(m) + +func (x *IsConfiguration_EndDevicePicture) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *IsConfiguration_EndDevicePicture) XXX_DiscardUnknown() { - xxx_messageInfo_IsConfiguration_EndDevicePicture.DiscardUnknown(m) + +func (*IsConfiguration_EndDevicePicture) ProtoMessage() {} + +func (x *IsConfiguration_EndDevicePicture) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_IsConfiguration_EndDevicePicture proto.InternalMessageInfo +// Deprecated: Use IsConfiguration_EndDevicePicture.ProtoReflect.Descriptor instead. +func (*IsConfiguration_EndDevicePicture) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identityserver_proto_rawDescGZIP(), []int{2, 2} +} -func (m *IsConfiguration_EndDevicePicture) GetDisableUpload() *types.BoolValue { - if m != nil { - return m.DisableUpload +func (x *IsConfiguration_EndDevicePicture) GetDisableUpload() *wrapperspb.BoolValue { + if x != nil { + return x.DisableUpload } return nil } type IsConfiguration_UserRights struct { - CreateApplications *types.BoolValue `protobuf:"bytes,1,opt,name=create_applications,json=createApplications,proto3" json:"create_applications,omitempty"` - CreateClients *types.BoolValue `protobuf:"bytes,2,opt,name=create_clients,json=createClients,proto3" json:"create_clients,omitempty"` - CreateGateways *types.BoolValue `protobuf:"bytes,3,opt,name=create_gateways,json=createGateways,proto3" json:"create_gateways,omitempty"` - CreateOrganizations *types.BoolValue `protobuf:"bytes,4,opt,name=create_organizations,json=createOrganizations,proto3" json:"create_organizations,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *IsConfiguration_UserRights) Reset() { *m = IsConfiguration_UserRights{} } -func (m *IsConfiguration_UserRights) String() string { return proto.CompactTextString(m) } -func (*IsConfiguration_UserRights) ProtoMessage() {} -func (*IsConfiguration_UserRights) Descriptor() ([]byte, []int) { - return fileDescriptor_a1c7e02f6181562c, []int{2, 3} -} -func (m *IsConfiguration_UserRights) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IsConfiguration_UserRights.Unmarshal(m, b) -} -func (m *IsConfiguration_UserRights) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IsConfiguration_UserRights.Marshal(b, m, deterministic) -} -func (m *IsConfiguration_UserRights) XXX_Merge(src proto.Message) { - xxx_messageInfo_IsConfiguration_UserRights.Merge(m, src) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CreateApplications *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=create_applications,json=createApplications,proto3" json:"create_applications,omitempty"` + CreateClients *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=create_clients,json=createClients,proto3" json:"create_clients,omitempty"` + CreateGateways *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=create_gateways,json=createGateways,proto3" json:"create_gateways,omitempty"` + CreateOrganizations *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=create_organizations,json=createOrganizations,proto3" json:"create_organizations,omitempty"` +} + +func (x *IsConfiguration_UserRights) Reset() { + *x = IsConfiguration_UserRights{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *IsConfiguration_UserRights) XXX_Size() int { - return xxx_messageInfo_IsConfiguration_UserRights.Size(m) + +func (x *IsConfiguration_UserRights) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *IsConfiguration_UserRights) XXX_DiscardUnknown() { - xxx_messageInfo_IsConfiguration_UserRights.DiscardUnknown(m) + +func (*IsConfiguration_UserRights) ProtoMessage() {} + +func (x *IsConfiguration_UserRights) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_IsConfiguration_UserRights proto.InternalMessageInfo +// Deprecated: Use IsConfiguration_UserRights.ProtoReflect.Descriptor instead. +func (*IsConfiguration_UserRights) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identityserver_proto_rawDescGZIP(), []int{2, 3} +} -func (m *IsConfiguration_UserRights) GetCreateApplications() *types.BoolValue { - if m != nil { - return m.CreateApplications +func (x *IsConfiguration_UserRights) GetCreateApplications() *wrapperspb.BoolValue { + if x != nil { + return x.CreateApplications } return nil } -func (m *IsConfiguration_UserRights) GetCreateClients() *types.BoolValue { - if m != nil { - return m.CreateClients +func (x *IsConfiguration_UserRights) GetCreateClients() *wrapperspb.BoolValue { + if x != nil { + return x.CreateClients } return nil } -func (m *IsConfiguration_UserRights) GetCreateGateways() *types.BoolValue { - if m != nil { - return m.CreateGateways +func (x *IsConfiguration_UserRights) GetCreateGateways() *wrapperspb.BoolValue { + if x != nil { + return x.CreateGateways } return nil } -func (m *IsConfiguration_UserRights) GetCreateOrganizations() *types.BoolValue { - if m != nil { - return m.CreateOrganizations +func (x *IsConfiguration_UserRights) GetCreateOrganizations() *wrapperspb.BoolValue { + if x != nil { + return x.CreateOrganizations } return nil } type IsConfiguration_UserLogin struct { - DisableCredentialsLogin *types.BoolValue `protobuf:"bytes,1,opt,name=disable_credentials_login,json=disableCredentialsLogin,proto3" json:"disable_credentials_login,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *IsConfiguration_UserLogin) Reset() { *m = IsConfiguration_UserLogin{} } -func (m *IsConfiguration_UserLogin) String() string { return proto.CompactTextString(m) } -func (*IsConfiguration_UserLogin) ProtoMessage() {} -func (*IsConfiguration_UserLogin) Descriptor() ([]byte, []int) { - return fileDescriptor_a1c7e02f6181562c, []int{2, 4} -} -func (m *IsConfiguration_UserLogin) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IsConfiguration_UserLogin.Unmarshal(m, b) -} -func (m *IsConfiguration_UserLogin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IsConfiguration_UserLogin.Marshal(b, m, deterministic) + DisableCredentialsLogin *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=disable_credentials_login,json=disableCredentialsLogin,proto3" json:"disable_credentials_login,omitempty"` } -func (m *IsConfiguration_UserLogin) XXX_Merge(src proto.Message) { - xxx_messageInfo_IsConfiguration_UserLogin.Merge(m, src) + +func (x *IsConfiguration_UserLogin) Reset() { + *x = IsConfiguration_UserLogin{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *IsConfiguration_UserLogin) XXX_Size() int { - return xxx_messageInfo_IsConfiguration_UserLogin.Size(m) + +func (x *IsConfiguration_UserLogin) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *IsConfiguration_UserLogin) XXX_DiscardUnknown() { - xxx_messageInfo_IsConfiguration_UserLogin.DiscardUnknown(m) + +func (*IsConfiguration_UserLogin) ProtoMessage() {} + +func (x *IsConfiguration_UserLogin) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_IsConfiguration_UserLogin proto.InternalMessageInfo +// Deprecated: Use IsConfiguration_UserLogin.ProtoReflect.Descriptor instead. +func (*IsConfiguration_UserLogin) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identityserver_proto_rawDescGZIP(), []int{2, 4} +} -func (m *IsConfiguration_UserLogin) GetDisableCredentialsLogin() *types.BoolValue { - if m != nil { - return m.DisableCredentialsLogin +func (x *IsConfiguration_UserLogin) GetDisableCredentialsLogin() *wrapperspb.BoolValue { + if x != nil { + return x.DisableCredentialsLogin } return nil } type IsConfiguration_AdminRights struct { - All *types.BoolValue `protobuf:"bytes,1,opt,name=all,proto3" json:"all,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *IsConfiguration_AdminRights) Reset() { *m = IsConfiguration_AdminRights{} } -func (m *IsConfiguration_AdminRights) String() string { return proto.CompactTextString(m) } -func (*IsConfiguration_AdminRights) ProtoMessage() {} -func (*IsConfiguration_AdminRights) Descriptor() ([]byte, []int) { - return fileDescriptor_a1c7e02f6181562c, []int{2, 5} + All *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=all,proto3" json:"all,omitempty"` } -func (m *IsConfiguration_AdminRights) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IsConfiguration_AdminRights.Unmarshal(m, b) -} -func (m *IsConfiguration_AdminRights) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IsConfiguration_AdminRights.Marshal(b, m, deterministic) -} -func (m *IsConfiguration_AdminRights) XXX_Merge(src proto.Message) { - xxx_messageInfo_IsConfiguration_AdminRights.Merge(m, src) -} -func (m *IsConfiguration_AdminRights) XXX_Size() int { - return xxx_messageInfo_IsConfiguration_AdminRights.Size(m) + +func (x *IsConfiguration_AdminRights) Reset() { + *x = IsConfiguration_AdminRights{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *IsConfiguration_AdminRights) XXX_DiscardUnknown() { - xxx_messageInfo_IsConfiguration_AdminRights.DiscardUnknown(m) + +func (x *IsConfiguration_AdminRights) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_IsConfiguration_AdminRights proto.InternalMessageInfo +func (*IsConfiguration_AdminRights) ProtoMessage() {} -func (m *IsConfiguration_AdminRights) GetAll() *types.BoolValue { - if m != nil { - return m.All +func (x *IsConfiguration_AdminRights) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type GetIsConfigurationResponse struct { - Configuration *IsConfiguration `protobuf:"bytes,1,opt,name=configuration,proto3" json:"configuration,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use IsConfiguration_AdminRights.ProtoReflect.Descriptor instead. +func (*IsConfiguration_AdminRights) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identityserver_proto_rawDescGZIP(), []int{2, 5} } -func (m *GetIsConfigurationResponse) Reset() { *m = GetIsConfigurationResponse{} } -func (m *GetIsConfigurationResponse) String() string { return proto.CompactTextString(m) } -func (*GetIsConfigurationResponse) ProtoMessage() {} -func (*GetIsConfigurationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_a1c7e02f6181562c, []int{3} +func (x *IsConfiguration_AdminRights) GetAll() *wrapperspb.BoolValue { + if x != nil { + return x.All + } + return nil } -func (m *GetIsConfigurationResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetIsConfigurationResponse.Unmarshal(m, b) + +type IsConfiguration_UserRegistration_Invitation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Required *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=required,proto3" json:"required,omitempty"` + TokenTtl *durationpb.Duration `protobuf:"bytes,2,opt,name=token_ttl,json=tokenTtl,proto3" json:"token_ttl,omitempty"` } -func (m *GetIsConfigurationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetIsConfigurationResponse.Marshal(b, m, deterministic) + +func (x *IsConfiguration_UserRegistration_Invitation) Reset() { + *x = IsConfiguration_UserRegistration_Invitation{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetIsConfigurationResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetIsConfigurationResponse.Merge(m, src) + +func (x *IsConfiguration_UserRegistration_Invitation) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetIsConfigurationResponse) XXX_Size() int { - return xxx_messageInfo_GetIsConfigurationResponse.Size(m) + +func (*IsConfiguration_UserRegistration_Invitation) ProtoMessage() {} + +func (x *IsConfiguration_UserRegistration_Invitation) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *GetIsConfigurationResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetIsConfigurationResponse.DiscardUnknown(m) + +// Deprecated: Use IsConfiguration_UserRegistration_Invitation.ProtoReflect.Descriptor instead. +func (*IsConfiguration_UserRegistration_Invitation) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identityserver_proto_rawDescGZIP(), []int{2, 0, 0} } -var xxx_messageInfo_GetIsConfigurationResponse proto.InternalMessageInfo +func (x *IsConfiguration_UserRegistration_Invitation) GetRequired() *wrapperspb.BoolValue { + if x != nil { + return x.Required + } + return nil +} -func (m *GetIsConfigurationResponse) GetConfiguration() *IsConfiguration { - if m != nil { - return m.Configuration +func (x *IsConfiguration_UserRegistration_Invitation) GetTokenTtl() *durationpb.Duration { + if x != nil { + return x.TokenTtl } return nil } -func init() { - proto.RegisterType((*AuthInfoResponse)(nil), "ttn.lorawan.v3.AuthInfoResponse") - golang_proto.RegisterType((*AuthInfoResponse)(nil), "ttn.lorawan.v3.AuthInfoResponse") - proto.RegisterType((*AuthInfoResponse_APIKeyAccess)(nil), "ttn.lorawan.v3.AuthInfoResponse.APIKeyAccess") - golang_proto.RegisterType((*AuthInfoResponse_APIKeyAccess)(nil), "ttn.lorawan.v3.AuthInfoResponse.APIKeyAccess") - proto.RegisterType((*AuthInfoResponse_GatewayToken)(nil), "ttn.lorawan.v3.AuthInfoResponse.GatewayToken") - golang_proto.RegisterType((*AuthInfoResponse_GatewayToken)(nil), "ttn.lorawan.v3.AuthInfoResponse.GatewayToken") - proto.RegisterType((*GetIsConfigurationRequest)(nil), "ttn.lorawan.v3.GetIsConfigurationRequest") - golang_proto.RegisterType((*GetIsConfigurationRequest)(nil), "ttn.lorawan.v3.GetIsConfigurationRequest") - proto.RegisterType((*IsConfiguration)(nil), "ttn.lorawan.v3.IsConfiguration") - golang_proto.RegisterType((*IsConfiguration)(nil), "ttn.lorawan.v3.IsConfiguration") - proto.RegisterType((*IsConfiguration_UserRegistration)(nil), "ttn.lorawan.v3.IsConfiguration.UserRegistration") - golang_proto.RegisterType((*IsConfiguration_UserRegistration)(nil), "ttn.lorawan.v3.IsConfiguration.UserRegistration") - proto.RegisterType((*IsConfiguration_UserRegistration_Invitation)(nil), "ttn.lorawan.v3.IsConfiguration.UserRegistration.Invitation") - golang_proto.RegisterType((*IsConfiguration_UserRegistration_Invitation)(nil), "ttn.lorawan.v3.IsConfiguration.UserRegistration.Invitation") - proto.RegisterType((*IsConfiguration_UserRegistration_ContactInfoValidation)(nil), "ttn.lorawan.v3.IsConfiguration.UserRegistration.ContactInfoValidation") - golang_proto.RegisterType((*IsConfiguration_UserRegistration_ContactInfoValidation)(nil), "ttn.lorawan.v3.IsConfiguration.UserRegistration.ContactInfoValidation") - proto.RegisterType((*IsConfiguration_UserRegistration_AdminApproval)(nil), "ttn.lorawan.v3.IsConfiguration.UserRegistration.AdminApproval") - golang_proto.RegisterType((*IsConfiguration_UserRegistration_AdminApproval)(nil), "ttn.lorawan.v3.IsConfiguration.UserRegistration.AdminApproval") - proto.RegisterType((*IsConfiguration_UserRegistration_PasswordRequirements)(nil), "ttn.lorawan.v3.IsConfiguration.UserRegistration.PasswordRequirements") - golang_proto.RegisterType((*IsConfiguration_UserRegistration_PasswordRequirements)(nil), "ttn.lorawan.v3.IsConfiguration.UserRegistration.PasswordRequirements") - proto.RegisterType((*IsConfiguration_ProfilePicture)(nil), "ttn.lorawan.v3.IsConfiguration.ProfilePicture") - golang_proto.RegisterType((*IsConfiguration_ProfilePicture)(nil), "ttn.lorawan.v3.IsConfiguration.ProfilePicture") - proto.RegisterType((*IsConfiguration_EndDevicePicture)(nil), "ttn.lorawan.v3.IsConfiguration.EndDevicePicture") - golang_proto.RegisterType((*IsConfiguration_EndDevicePicture)(nil), "ttn.lorawan.v3.IsConfiguration.EndDevicePicture") - proto.RegisterType((*IsConfiguration_UserRights)(nil), "ttn.lorawan.v3.IsConfiguration.UserRights") - golang_proto.RegisterType((*IsConfiguration_UserRights)(nil), "ttn.lorawan.v3.IsConfiguration.UserRights") - proto.RegisterType((*IsConfiguration_UserLogin)(nil), "ttn.lorawan.v3.IsConfiguration.UserLogin") - golang_proto.RegisterType((*IsConfiguration_UserLogin)(nil), "ttn.lorawan.v3.IsConfiguration.UserLogin") - proto.RegisterType((*IsConfiguration_AdminRights)(nil), "ttn.lorawan.v3.IsConfiguration.AdminRights") - golang_proto.RegisterType((*IsConfiguration_AdminRights)(nil), "ttn.lorawan.v3.IsConfiguration.AdminRights") - proto.RegisterType((*GetIsConfigurationResponse)(nil), "ttn.lorawan.v3.GetIsConfigurationResponse") - golang_proto.RegisterType((*GetIsConfigurationResponse)(nil), "ttn.lorawan.v3.GetIsConfigurationResponse") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/identityserver.proto", fileDescriptor_a1c7e02f6181562c) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/identityserver.proto", fileDescriptor_a1c7e02f6181562c) -} - -var fileDescriptor_a1c7e02f6181562c = []byte{ - // 1408 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x97, 0xdf, 0x6f, 0x1b, 0xc5, - 0x16, 0xc7, 0xeb, 0x34, 0x3f, 0x9c, 0x63, 0x3b, 0x71, 0x27, 0x4d, 0x9b, 0x6c, 0x7b, 0x7b, 0x73, - 0x73, 0xa5, 0xab, 0xde, 0x42, 0x6c, 0x94, 0x88, 0x4a, 0xa8, 0x2a, 0xc2, 0x49, 0x43, 0x7e, 0xb5, - 0x34, 0xda, 0x36, 0x05, 0x81, 0x60, 0x35, 0xd9, 0x9d, 0xac, 0x47, 0x59, 0xcf, 0x6c, 0x77, 0x66, - 0x9d, 0xba, 0x42, 0x3c, 0x20, 0x1e, 0x10, 0xf0, 0x04, 0xe2, 0xff, 0xe0, 0x4f, 0xe0, 0x3f, 0xe0, - 0x01, 0x89, 0x27, 0xde, 0xe0, 0xaf, 0xe0, 0x09, 0xed, 0xcc, 0xac, 0xbd, 0x5e, 0xbb, 0xb1, 0x53, - 0xf1, 0xb6, 0x33, 0x73, 0xbe, 0x9f, 0x39, 0x7b, 0xce, 0xd9, 0x99, 0xb3, 0xf0, 0xbf, 0x80, 0x47, - 0xf8, 0x0c, 0xb3, 0x35, 0x21, 0xb1, 0x7b, 0x5a, 0xc7, 0x21, 0xad, 0x53, 0x8f, 0x30, 0x49, 0x65, - 0x47, 0x90, 0xa8, 0x4d, 0xa2, 0x5a, 0x18, 0x71, 0xc9, 0xd1, 0x9c, 0x94, 0xac, 0x66, 0x6c, 0x6b, - 0xed, 0x0d, 0xab, 0xe1, 0x53, 0xd9, 0x8c, 0x8f, 0x6b, 0x2e, 0x6f, 0xd5, 0x09, 0x6b, 0xf3, 0x4e, - 0x18, 0xf1, 0x17, 0x9d, 0xba, 0x32, 0x76, 0xd7, 0x7c, 0xc2, 0xd6, 0xda, 0x38, 0xa0, 0x1e, 0x96, - 0xa4, 0x3e, 0xf0, 0xa0, 0x91, 0xd6, 0x5a, 0x06, 0xe1, 0x73, 0x9f, 0x6b, 0xf1, 0x71, 0x7c, 0xa2, - 0x46, 0x6a, 0xa0, 0x9e, 0x8c, 0xf9, 0x4d, 0x9f, 0x73, 0x3f, 0x20, 0xca, 0x45, 0xcc, 0x18, 0x97, - 0x58, 0x52, 0xce, 0x84, 0x59, 0xbd, 0x65, 0x56, 0xbb, 0x0c, 0x2f, 0x8e, 0x94, 0x81, 0x59, 0xbf, - 0x91, 0x5f, 0x27, 0xad, 0x50, 0x76, 0x5e, 0x25, 0x3e, 0x8b, 0x70, 0x18, 0x92, 0x28, 0x85, 0xff, - 0xf7, 0x55, 0x41, 0x3a, 0xa1, 0x3d, 0xa3, 0x9b, 0x83, 0x46, 0xb1, 0x48, 0xe3, 0x67, 0xfd, 0x6b, - 0x70, 0x95, 0xe3, 0x58, 0x36, 0x53, 0x0f, 0x06, 0x97, 0x23, 0xea, 0x37, 0xa5, 0x81, 0xaf, 0xfe, - 0x3e, 0x05, 0xd5, 0x46, 0x2c, 0x9b, 0x7b, 0xec, 0x84, 0xdb, 0x44, 0x84, 0x9c, 0x09, 0x82, 0x76, - 0x61, 0x06, 0x87, 0xd4, 0x39, 0x25, 0x9d, 0xa5, 0xc2, 0x4a, 0xe1, 0x76, 0x69, 0x7d, 0xad, 0xd6, - 0x9f, 0xa5, 0x5a, 0x5e, 0x52, 0x6b, 0x1c, 0xee, 0x1d, 0x90, 0x4e, 0xc3, 0x75, 0x89, 0x10, 0xbb, - 0x97, 0xec, 0x69, 0x1c, 0xd2, 0x03, 0xd2, 0x41, 0x87, 0x80, 0x94, 0x37, 0x0e, 0x56, 0x2b, 0x8e, - 0xe4, 0xa7, 0x84, 0x2d, 0x4d, 0x28, 0xe8, 0x4a, 0x1e, 0xfa, 0x38, 0xa1, 0x6a, 0xc4, 0xd3, 0xc4, - 0x6e, 0xf7, 0x92, 0x5d, 0x55, 0xea, 0xcc, 0x1c, 0x7a, 0x0f, 0xca, 0xc9, 0xdb, 0x3b, 0x82, 0x08, - 0x41, 0x39, 0x5b, 0x9a, 0x52, 0xac, 0x1b, 0x79, 0xd6, 0x91, 0x20, 0xd1, 0x13, 0x6d, 0xb2, 0x7b, - 0xc9, 0x2e, 0xc5, 0xbd, 0x21, 0x7a, 0x0a, 0x15, 0x1f, 0x4b, 0x72, 0x86, 0x3b, 0xc6, 0x9d, 0xe9, - 0x31, 0xdf, 0x71, 0x47, 0xab, 0x52, 0xdf, 0xca, 0x7e, 0x66, 0x8c, 0x1a, 0x50, 0x8d, 0x19, 0x6d, - 0x93, 0x48, 0xe0, 0xc0, 0xd1, 0x21, 0x5e, 0xba, 0xac, 0xc0, 0xd7, 0xf2, 0x60, 0x5b, 0xad, 0xda, - 0xf3, 0x5d, 0x7b, 0x3d, 0x81, 0x96, 0xa1, 0x48, 0x85, 0x83, 0xbd, 0x16, 0x65, 0x4b, 0x93, 0x2b, - 0x85, 0xdb, 0x45, 0x7b, 0x86, 0x8a, 0x46, 0x32, 0xb4, 0x7e, 0x2c, 0x40, 0x39, 0x1b, 0x62, 0xf4, - 0x4e, 0x3e, 0x45, 0x03, 0xbb, 0x68, 0xf3, 0xcd, 0xe2, 0x5f, 0x9b, 0x53, 0xdf, 0x14, 0x26, 0xaa, - 0x85, 0x6e, 0x4e, 0xf6, 0x01, 0xf4, 0x77, 0xe8, 0x50, 0x4f, 0x98, 0x5c, 0xfc, 0x27, 0xaf, 0xde, - 0x56, 0x16, 0x7b, 0xbd, 0x62, 0xcc, 0x80, 0x66, 0x89, 0x59, 0x14, 0xd6, 0x77, 0x05, 0x28, 0x67, - 0xc3, 0x82, 0x1e, 0x41, 0x29, 0x0d, 0x6e, 0x42, 0xd7, 0xbe, 0xad, 0xe6, 0xe9, 0x46, 0x32, 0x1c, - 0x0f, 0x7e, 0xba, 0x2a, 0xd0, 0x1a, 0x4c, 0x9b, 0x58, 0x4e, 0xaf, 0x5c, 0xbe, 0x3d, 0xb7, 0xbe, - 0x38, 0x34, 0x96, 0xb6, 0x31, 0xda, 0x9c, 0x87, 0x8a, 0x29, 0xb4, 0x16, 0x91, 0x4d, 0xee, 0xad, - 0xde, 0x80, 0xe5, 0x1d, 0x22, 0xf7, 0xc4, 0x16, 0x67, 0x27, 0xd4, 0x37, 0x5f, 0xae, 0x4d, 0x9e, - 0xc7, 0x44, 0xc8, 0xd5, 0xaf, 0x17, 0x60, 0x3e, 0xb7, 0x84, 0x3e, 0x85, 0x2b, 0xaa, 0xbc, 0x22, - 0xe2, 0x53, 0x21, 0xf5, 0xa4, 0xc9, 0xe3, 0x5b, 0xf9, 0xbd, 0x73, 0x5a, 0x55, 0x73, 0x76, 0x46, - 0x67, 0x57, 0xe3, 0xdc, 0x0c, 0xfa, 0x10, 0xe6, 0xc3, 0x88, 0x9f, 0xd0, 0x80, 0x38, 0x21, 0x75, - 0x65, 0x1c, 0x11, 0x95, 0xe9, 0xd2, 0x7a, 0x6d, 0x14, 0xfc, 0x50, 0xcb, 0x0e, 0xb5, 0xca, 0x9e, - 0x0b, 0xfb, 0xc6, 0xe8, 0x33, 0x40, 0x84, 0x79, 0x8e, 0x47, 0xda, 0xd4, 0xed, 0xb1, 0xa7, 0xc6, - 0x73, 0x7c, 0x9b, 0x79, 0x0f, 0x94, 0x30, 0xa5, 0x57, 0x49, 0x6e, 0x06, 0x1d, 0x40, 0x49, 0xc7, - 0x25, 0xcd, 0x46, 0x02, 0xbe, 0x33, 0x56, 0x44, 0x74, 0xb5, 0x43, 0xdc, 0x7d, 0x46, 0xbb, 0xa0, - 0x46, 0x4e, 0xc0, 0x7d, 0xca, 0x96, 0x66, 0x14, 0xeb, 0xff, 0xe3, 0xb0, 0x1e, 0x26, 0x02, 0x7b, - 0x36, 0x4e, 0x1f, 0xd1, 0x07, 0x50, 0x56, 0xdf, 0x4b, 0xea, 0x57, 0x51, 0xb1, 0xde, 0x18, 0xc5, - 0x52, 0x1f, 0x95, 0x71, 0xac, 0x84, 0x7b, 0x03, 0xeb, 0xb7, 0x22, 0x54, 0xf3, 0x69, 0x44, 0x9f, - 0x00, 0x50, 0xd6, 0xa6, 0xfa, 0x5e, 0x30, 0x25, 0x7d, 0xef, 0xa2, 0xc5, 0x50, 0xdb, 0xeb, 0x22, - 0xec, 0x0c, 0x0e, 0x7d, 0x01, 0xd7, 0x5d, 0xce, 0x24, 0x76, 0xa5, 0x43, 0xd9, 0x09, 0x77, 0xcc, - 0x5d, 0x96, 0xec, 0xa4, 0x3f, 0xcd, 0xf7, 0x2f, 0xbc, 0xd3, 0x96, 0xe6, 0x25, 0x67, 0xd7, 0xb3, - 0x2e, 0xcd, 0x5e, 0x74, 0x87, 0x4d, 0x23, 0x02, 0x73, 0x3a, 0x82, 0x38, 0x0c, 0x23, 0xde, 0xc6, - 0x81, 0xa9, 0xf6, 0x77, 0x2f, 0xbc, 0xad, 0x0a, 0x6a, 0xc3, 0x50, 0xec, 0x0a, 0xce, 0x0e, 0xd1, - 0x4b, 0x58, 0x0c, 0xb1, 0x10, 0x67, 0x3c, 0xf2, 0x9c, 0x88, 0x3c, 0x8f, 0x69, 0x44, 0x5a, 0x84, - 0x49, 0x61, 0xca, 0x7f, 0xfb, 0xc2, 0xbb, 0x1d, 0x1a, 0x9a, 0x9d, 0x81, 0xd9, 0x57, 0xc3, 0x21, - 0xb3, 0x68, 0x09, 0x66, 0x08, 0xc3, 0xc7, 0x01, 0xf1, 0xd4, 0x07, 0x51, 0xb4, 0xd3, 0xa1, 0xf5, - 0x39, 0x40, 0x2f, 0x2d, 0xe8, 0x2e, 0x14, 0x8d, 0x6b, 0x9e, 0xc9, 0xb2, 0x55, 0xd3, 0x17, 0x78, - 0x2d, 0xbd, 0xc0, 0x6b, 0x9b, 0x9c, 0x07, 0xcf, 0x70, 0x10, 0x13, 0xbb, 0x6b, 0x8b, 0xee, 0xc2, - 0xac, 0xba, 0x48, 0x1c, 0x29, 0x03, 0x93, 0xb4, 0xe5, 0x01, 0xe1, 0x83, 0xf4, 0xf0, 0x29, 0x2a, - 0xdb, 0xa7, 0x32, 0xb0, 0x1e, 0xc3, 0xe2, 0xd0, 0x54, 0xbd, 0xae, 0x23, 0xd6, 0x0e, 0x54, 0xfa, - 0x92, 0xf0, 0xda, 0xa0, 0x5f, 0x26, 0xe0, 0xea, 0xb0, 0x00, 0xa3, 0x7b, 0x00, 0x49, 0xad, 0x04, - 0x84, 0xf9, 0xb2, 0x69, 0x90, 0x37, 0x07, 0x90, 0x47, 0x7b, 0x4c, 0x6e, 0xac, 0x6b, 0xe8, 0x6c, - 0x8b, 0xb2, 0x87, 0xca, 0x5c, 0x89, 0xf1, 0x8b, 0x54, 0x3c, 0x31, 0x96, 0x18, 0xbf, 0x30, 0xe2, - 0x06, 0x54, 0x92, 0x9d, 0xe3, 0xa4, 0x7d, 0x72, 0xb1, 0x20, 0xa6, 0x4c, 0xcf, 0xd7, 0x97, 0x5b, - 0x94, 0x1d, 0xa5, 0x8a, 0xd4, 0x79, 0x8f, 0xfa, 0xb4, 0x5b, 0x78, 0xa3, 0x9d, 0x7f, 0xa0, 0xcc, - 0xd1, 0x7d, 0x28, 0x25, 0x62, 0x11, 0x12, 0x97, 0xe2, 0xc0, 0x9c, 0xac, 0xe7, 0xab, 0x93, 0xdd, - 0x9e, 0x68, 0x7b, 0xeb, 0xfb, 0x02, 0xcc, 0xf5, 0x1f, 0xe1, 0xa8, 0x01, 0x73, 0x1e, 0x15, 0x49, - 0x21, 0x3a, 0x71, 0x18, 0x70, 0x3c, 0x4e, 0x8a, 0x2a, 0x46, 0x71, 0xa4, 0x04, 0xe8, 0xbe, 0x6a, - 0x86, 0x1c, 0x3f, 0xc2, 0x6d, 0x2c, 0x71, 0x64, 0x62, 0x7a, 0x1e, 0x20, 0x39, 0xc5, 0x77, 0x8c, - 0xb9, 0x75, 0x04, 0xd5, 0xfc, 0xd1, 0xff, 0x0f, 0x78, 0x65, 0xfd, 0x34, 0x01, 0xd0, 0x3b, 0xf9, - 0xd1, 0x01, 0x2c, 0xb8, 0x11, 0xc1, 0x92, 0x24, 0x47, 0x4c, 0x40, 0x5d, 0xdd, 0x5e, 0x8f, 0x81, - 0x45, 0x5a, 0xd6, 0xc8, 0xa8, 0x12, 0xf7, 0x0c, 0xcc, 0x0d, 0xa8, 0x3a, 0x40, 0x46, 0xbf, 0x73, - 0x45, 0x2b, 0xb6, 0xb4, 0x00, 0x6d, 0xc1, 0xbc, 0x41, 0x98, 0x46, 0x23, 0x6d, 0xd4, 0xce, 0x63, - 0x98, 0x5d, 0x4d, 0xe3, 0x22, 0xd0, 0x23, 0xb8, 0x6a, 0x20, 0x3c, 0xf2, 0x31, 0xa3, 0x2f, 0xcd, - 0x5b, 0x4d, 0x8e, 0x24, 0x99, 0x60, 0x3c, 0xce, 0xca, 0x2c, 0x17, 0x66, 0xbb, 0xf7, 0x1b, 0x7a, - 0x06, 0xcb, 0x69, 0x0a, 0xdc, 0x88, 0xa8, 0x1e, 0x09, 0x07, 0xc2, 0xdc, 0x96, 0xa3, 0xc3, 0x76, - 0xdd, 0x88, 0xb7, 0x7a, 0x5a, 0xc5, 0xb5, 0xee, 0x41, 0x29, 0x73, 0xf1, 0xa1, 0x37, 0xe1, 0x32, - 0x0e, 0x82, 0x31, 0x80, 0x89, 0xd9, 0xfe, 0x64, 0x71, 0xb6, 0x0a, 0xfb, 0x93, 0x45, 0xa8, 0x96, - 0xf6, 0x27, 0x8b, 0xa5, 0x6a, 0x79, 0x7f, 0xb2, 0x58, 0xae, 0x56, 0xec, 0x39, 0x46, 0xe4, 0x19, - 0x8f, 0x4e, 0x9d, 0x80, 0xb6, 0xa8, 0x14, 0x36, 0xca, 0x24, 0x39, 0x9d, 0x5b, 0xc8, 0xc6, 0x28, - 0x9d, 0xd4, 0xfd, 0x84, 0x1e, 0xac, 0xba, 0x60, 0x0d, 0xeb, 0xd3, 0xcc, 0xff, 0xc8, 0x36, 0x54, - 0xdc, 0xec, 0x82, 0xf1, 0xf9, 0xdf, 0x23, 0x2e, 0x0d, 0xbb, 0x5f, 0xb5, 0xde, 0x84, 0xb2, 0x6e, - 0x6b, 0x4d, 0x0f, 0xfd, 0x11, 0x14, 0xd3, 0x1e, 0x1f, 0x5d, 0x1b, 0x78, 0xff, 0xed, 0xe4, 0x3f, - 0xce, 0x5a, 0x19, 0xf5, 0x57, 0xb0, 0x8a, 0xbe, 0xfc, 0xf5, 0xcf, 0x1f, 0x26, 0xca, 0x08, 0xea, - 0xea, 0x47, 0x27, 0xb9, 0xc4, 0xd7, 0xbf, 0x2d, 0xc0, 0xc4, 0x9e, 0x40, 0x5f, 0x15, 0xa0, 0xba, - 0x43, 0x64, 0x7f, 0x87, 0x39, 0xd0, 0xe8, 0xbc, 0xb2, 0x41, 0xb5, 0xee, 0x8c, 0x63, 0x6a, 0xdc, - 0x58, 0x56, 0x6e, 0x2c, 0xa0, 0x2b, 0x75, 0x2a, 0xea, 0x7d, 0xef, 0xbd, 0xf9, 0xf6, 0xcf, 0x7f, - 0xdc, 0x2a, 0x7c, 0x5c, 0xf7, 0x79, 0x4d, 0x36, 0x89, 0x6c, 0x52, 0xe6, 0x8b, 0x9a, 0xc9, 0x5a, - 0xbd, 0xff, 0xf7, 0xb0, 0xbd, 0x51, 0x0f, 0x4f, 0xfd, 0xba, 0x94, 0x2c, 0x3c, 0x3e, 0x9e, 0x56, - 0xa1, 0xd8, 0xf8, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x8c, 0x04, 0x70, 0x5e, 0xca, 0x0f, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// EntityAccessClient is the client API for EntityAccess service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type EntityAccessClient interface { - // AuthInfo returns information about the authentication that is used on the request. - AuthInfo(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*AuthInfoResponse, error) +type IsConfiguration_UserRegistration_ContactInfoValidation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Required *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=required,proto3" json:"required,omitempty"` } -type entityAccessClient struct { - cc *grpc.ClientConn +func (x *IsConfiguration_UserRegistration_ContactInfoValidation) Reset() { + *x = IsConfiguration_UserRegistration_ContactInfoValidation{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func NewEntityAccessClient(cc *grpc.ClientConn) EntityAccessClient { - return &entityAccessClient{cc} +func (x *IsConfiguration_UserRegistration_ContactInfoValidation) String() string { + return protoimpl.X.MessageStringOf(x) } -func (c *entityAccessClient) AuthInfo(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*AuthInfoResponse, error) { - out := new(AuthInfoResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EntityAccess/AuthInfo", in, out, opts...) - if err != nil { - return nil, err +func (*IsConfiguration_UserRegistration_ContactInfoValidation) ProtoMessage() {} + +func (x *IsConfiguration_UserRegistration_ContactInfoValidation) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return out, nil + return mi.MessageOf(x) } -// EntityAccessServer is the server API for EntityAccess service. -type EntityAccessServer interface { - // AuthInfo returns information about the authentication that is used on the request. - AuthInfo(context.Context, *types.Empty) (*AuthInfoResponse, error) +// Deprecated: Use IsConfiguration_UserRegistration_ContactInfoValidation.ProtoReflect.Descriptor instead. +func (*IsConfiguration_UserRegistration_ContactInfoValidation) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identityserver_proto_rawDescGZIP(), []int{2, 0, 1} } -// UnimplementedEntityAccessServer can be embedded to have forward compatible implementations. -type UnimplementedEntityAccessServer struct { +func (x *IsConfiguration_UserRegistration_ContactInfoValidation) GetRequired() *wrapperspb.BoolValue { + if x != nil { + return x.Required + } + return nil } -func (*UnimplementedEntityAccessServer) AuthInfo(ctx context.Context, req *types.Empty) (*AuthInfoResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AuthInfo not implemented") -} +type IsConfiguration_UserRegistration_AdminApproval struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func RegisterEntityAccessServer(s *grpc.Server, srv EntityAccessServer) { - s.RegisterService(&_EntityAccess_serviceDesc, srv) + Required *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=required,proto3" json:"required,omitempty"` } -func _EntityAccess_AuthInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityAccessServer).AuthInfo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EntityAccess/AuthInfo", +func (x *IsConfiguration_UserRegistration_AdminApproval) Reset() { + *x = IsConfiguration_UserRegistration_AdminApproval{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityAccessServer).AuthInfo(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) } -var _EntityAccess_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.EntityAccess", - HandlerType: (*EntityAccessServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "AuthInfo", - Handler: _EntityAccess_AuthInfo_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/identityserver.proto", +func (x *IsConfiguration_UserRegistration_AdminApproval) String() string { + return protoimpl.X.MessageStringOf(x) } -// IsClient is the client API for Is service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type IsClient interface { - // Get the configuration of the Identity Server. The response is typically used - // to enable or disable features in a user interface. - GetConfiguration(ctx context.Context, in *GetIsConfigurationRequest, opts ...grpc.CallOption) (*GetIsConfigurationResponse, error) +func (*IsConfiguration_UserRegistration_AdminApproval) ProtoMessage() {} + +func (x *IsConfiguration_UserRegistration_AdminApproval) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type isClient struct { - cc *grpc.ClientConn +// Deprecated: Use IsConfiguration_UserRegistration_AdminApproval.ProtoReflect.Descriptor instead. +func (*IsConfiguration_UserRegistration_AdminApproval) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identityserver_proto_rawDescGZIP(), []int{2, 0, 2} } -func NewIsClient(cc *grpc.ClientConn) IsClient { - return &isClient{cc} +func (x *IsConfiguration_UserRegistration_AdminApproval) GetRequired() *wrapperspb.BoolValue { + if x != nil { + return x.Required + } + return nil } -func (c *isClient) GetConfiguration(ctx context.Context, in *GetIsConfigurationRequest, opts ...grpc.CallOption) (*GetIsConfigurationResponse, error) { - out := new(GetIsConfigurationResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Is/GetConfiguration", in, out, opts...) - if err != nil { - return nil, err +type IsConfiguration_UserRegistration_PasswordRequirements struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MinLength *wrapperspb.UInt32Value `protobuf:"bytes,1,opt,name=min_length,json=minLength,proto3" json:"min_length,omitempty"` + MaxLength *wrapperspb.UInt32Value `protobuf:"bytes,2,opt,name=max_length,json=maxLength,proto3" json:"max_length,omitempty"` + MinUppercase *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=min_uppercase,json=minUppercase,proto3" json:"min_uppercase,omitempty"` + MinDigits *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=min_digits,json=minDigits,proto3" json:"min_digits,omitempty"` + MinSpecial *wrapperspb.UInt32Value `protobuf:"bytes,5,opt,name=min_special,json=minSpecial,proto3" json:"min_special,omitempty"` +} + +func (x *IsConfiguration_UserRegistration_PasswordRequirements) Reset() { + *x = IsConfiguration_UserRegistration_PasswordRequirements{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return out, nil } -// IsServer is the server API for Is service. -type IsServer interface { - // Get the configuration of the Identity Server. The response is typically used - // to enable or disable features in a user interface. - GetConfiguration(context.Context, *GetIsConfigurationRequest) (*GetIsConfigurationResponse, error) +func (x *IsConfiguration_UserRegistration_PasswordRequirements) String() string { + return protoimpl.X.MessageStringOf(x) } -// UnimplementedIsServer can be embedded to have forward compatible implementations. -type UnimplementedIsServer struct { +func (*IsConfiguration_UserRegistration_PasswordRequirements) ProtoMessage() {} + +func (x *IsConfiguration_UserRegistration_PasswordRequirements) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_identityserver_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (*UnimplementedIsServer) GetConfiguration(ctx context.Context, req *GetIsConfigurationRequest) (*GetIsConfigurationResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetConfiguration not implemented") +// Deprecated: Use IsConfiguration_UserRegistration_PasswordRequirements.ProtoReflect.Descriptor instead. +func (*IsConfiguration_UserRegistration_PasswordRequirements) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_identityserver_proto_rawDescGZIP(), []int{2, 0, 3} } -func RegisterIsServer(s *grpc.Server, srv IsServer) { - s.RegisterService(&_Is_serviceDesc, srv) +func (x *IsConfiguration_UserRegistration_PasswordRequirements) GetMinLength() *wrapperspb.UInt32Value { + if x != nil { + return x.MinLength + } + return nil } -func _Is_GetConfiguration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetIsConfigurationRequest) - if err := dec(in); err != nil { - return nil, err +func (x *IsConfiguration_UserRegistration_PasswordRequirements) GetMaxLength() *wrapperspb.UInt32Value { + if x != nil { + return x.MaxLength } - if interceptor == nil { - return srv.(IsServer).GetConfiguration(ctx, in) + return nil +} + +func (x *IsConfiguration_UserRegistration_PasswordRequirements) GetMinUppercase() *wrapperspb.UInt32Value { + if x != nil { + return x.MinUppercase } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Is/GetConfiguration", + return nil +} + +func (x *IsConfiguration_UserRegistration_PasswordRequirements) GetMinDigits() *wrapperspb.UInt32Value { + if x != nil { + return x.MinDigits } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IsServer).GetConfiguration(ctx, req.(*GetIsConfigurationRequest)) + return nil +} + +func (x *IsConfiguration_UserRegistration_PasswordRequirements) GetMinSpecial() *wrapperspb.UInt32Value { + if x != nil { + return x.MinSpecial } - return interceptor(ctx, in, info, handler) + return nil } -var _Is_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.Is", - HandlerType: (*IsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetConfiguration", - Handler: _Is_GetConfiguration_Handler, +var File_lorawan_stack_api_identityserver_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_identityserver_proto_rawDesc = []byte{ + 0x0a, 0x26, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, + 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x61, 0x75, 0x74, + 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdc, 0x05, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x68, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x07, + 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x06, + 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x50, 0x0a, 0x12, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x40, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x75, + 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x0d, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x48, 0x00, 0x52, 0x0c, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x41, 0x0a, 0x10, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x5f, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x52, 0x0f, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x52, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x1a, 0x95, + 0x01, 0x0a, 0x0c, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, + 0x39, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x4a, 0x0a, 0x0a, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x49, 0x64, 0x73, 0x1a, 0x8c, 0x01, 0x0a, 0x0c, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x49, 0x73, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x88, 0x13, 0x0a, 0x0f, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x11, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, + 0x0e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, + 0x5e, 0x0a, 0x12, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x69, + 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x10, 0x65, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, + 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x48, 0x0a, 0x0a, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x09, 0x75, 0x73, 0x65, + 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x4e, 0x0a, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x64, + 0x6d, 0x69, 0x6e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x1a, 0xd6, 0x08, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0a, 0x69, + 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x69, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7e, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x65, 0x0a, 0x0e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, + 0x52, 0x0d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, + 0x7a, 0x0a, 0x15, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x14, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0x7c, 0x0a, 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x09, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x54, 0x74, 0x6c, 0x1a, 0x4f, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, + 0x66, 0x6f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x08, + 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x64, 0x1a, 0x47, 0x0a, 0x0d, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x1a, 0xcf, 0x02, + 0x0a, 0x14, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x12, 0x3b, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x12, 0x41, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x63, 0x61, 0x73, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x63, + 0x61, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x69, 0x67, 0x69, 0x74, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x44, 0x69, 0x67, 0x69, 0x74, 0x73, + 0x12, 0x3d, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x1a, + 0x92, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, + 0x72, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x5f, 0x67, 0x72, 0x61, + 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x47, 0x72, 0x61, 0x76, + 0x61, 0x74, 0x61, 0x72, 0x1a, 0x55, 0x0a, 0x10, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0xb0, 0x02, 0x0a, 0x0a, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x13, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, + 0x4d, 0x0a, 0x14, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x63, + 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x56, 0x0a, 0x19, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x17, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x4c, 0x6f, + 0x67, 0x69, 0x6e, 0x1a, 0x3b, 0x0a, 0x0b, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x61, 0x6c, 0x6c, + 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0b, + 0x10, 0x0c, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x52, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x12, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x13, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x73, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x22, 0x63, + 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0d, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x32, 0x68, 0x0a, 0x0c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x12, 0x58, 0x0a, 0x08, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x0c, 0x12, 0x0a, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x32, 0x8b, 0x01, + 0x0a, 0x02, 0x49, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x69, 0x73, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x35, 0x5a, 0x2f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, + 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_identityserver_proto_rawDescOnce sync.Once + file_lorawan_stack_api_identityserver_proto_rawDescData = file_lorawan_stack_api_identityserver_proto_rawDesc +) + +func file_lorawan_stack_api_identityserver_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_identityserver_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_identityserver_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_identityserver_proto_rawDescData) + }) + return file_lorawan_stack_api_identityserver_proto_rawDescData +} + +var file_lorawan_stack_api_identityserver_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_lorawan_stack_api_identityserver_proto_goTypes = []interface{}{ + (*AuthInfoResponse)(nil), // 0: ttn.lorawan.v3.AuthInfoResponse + (*GetIsConfigurationRequest)(nil), // 1: ttn.lorawan.v3.GetIsConfigurationRequest + (*IsConfiguration)(nil), // 2: ttn.lorawan.v3.IsConfiguration + (*GetIsConfigurationResponse)(nil), // 3: ttn.lorawan.v3.GetIsConfigurationResponse + (*AuthInfoResponse_APIKeyAccess)(nil), // 4: ttn.lorawan.v3.AuthInfoResponse.APIKeyAccess + (*AuthInfoResponse_GatewayToken)(nil), // 5: ttn.lorawan.v3.AuthInfoResponse.GatewayToken + (*IsConfiguration_UserRegistration)(nil), // 6: ttn.lorawan.v3.IsConfiguration.UserRegistration + (*IsConfiguration_ProfilePicture)(nil), // 7: ttn.lorawan.v3.IsConfiguration.ProfilePicture + (*IsConfiguration_EndDevicePicture)(nil), // 8: ttn.lorawan.v3.IsConfiguration.EndDevicePicture + (*IsConfiguration_UserRights)(nil), // 9: ttn.lorawan.v3.IsConfiguration.UserRights + (*IsConfiguration_UserLogin)(nil), // 10: ttn.lorawan.v3.IsConfiguration.UserLogin + (*IsConfiguration_AdminRights)(nil), // 11: ttn.lorawan.v3.IsConfiguration.AdminRights + (*IsConfiguration_UserRegistration_Invitation)(nil), // 12: ttn.lorawan.v3.IsConfiguration.UserRegistration.Invitation + (*IsConfiguration_UserRegistration_ContactInfoValidation)(nil), // 13: ttn.lorawan.v3.IsConfiguration.UserRegistration.ContactInfoValidation + (*IsConfiguration_UserRegistration_AdminApproval)(nil), // 14: ttn.lorawan.v3.IsConfiguration.UserRegistration.AdminApproval + (*IsConfiguration_UserRegistration_PasswordRequirements)(nil), // 15: ttn.lorawan.v3.IsConfiguration.UserRegistration.PasswordRequirements + (*OAuthAccessToken)(nil), // 16: ttn.lorawan.v3.OAuthAccessToken + (*UserSession)(nil), // 17: ttn.lorawan.v3.UserSession + (*Rights)(nil), // 18: ttn.lorawan.v3.Rights + (*APIKey)(nil), // 19: ttn.lorawan.v3.APIKey + (*EntityIdentifiers)(nil), // 20: ttn.lorawan.v3.EntityIdentifiers + (*GatewayIdentifiers)(nil), // 21: ttn.lorawan.v3.GatewayIdentifiers + (Right)(0), // 22: ttn.lorawan.v3.Right + (*wrapperspb.BoolValue)(nil), // 23: google.protobuf.BoolValue + (*durationpb.Duration)(nil), // 24: google.protobuf.Duration + (*wrapperspb.UInt32Value)(nil), // 25: google.protobuf.UInt32Value + (*emptypb.Empty)(nil), // 26: google.protobuf.Empty +} +var file_lorawan_stack_api_identityserver_proto_depIdxs = []int32{ + 4, // 0: ttn.lorawan.v3.AuthInfoResponse.api_key:type_name -> ttn.lorawan.v3.AuthInfoResponse.APIKeyAccess + 16, // 1: ttn.lorawan.v3.AuthInfoResponse.oauth_access_token:type_name -> ttn.lorawan.v3.OAuthAccessToken + 17, // 2: ttn.lorawan.v3.AuthInfoResponse.user_session:type_name -> ttn.lorawan.v3.UserSession + 5, // 3: ttn.lorawan.v3.AuthInfoResponse.gateway_token:type_name -> ttn.lorawan.v3.AuthInfoResponse.GatewayToken + 18, // 4: ttn.lorawan.v3.AuthInfoResponse.universal_rights:type_name -> ttn.lorawan.v3.Rights + 6, // 5: ttn.lorawan.v3.IsConfiguration.user_registration:type_name -> ttn.lorawan.v3.IsConfiguration.UserRegistration + 7, // 6: ttn.lorawan.v3.IsConfiguration.profile_picture:type_name -> ttn.lorawan.v3.IsConfiguration.ProfilePicture + 8, // 7: ttn.lorawan.v3.IsConfiguration.end_device_picture:type_name -> ttn.lorawan.v3.IsConfiguration.EndDevicePicture + 9, // 8: ttn.lorawan.v3.IsConfiguration.user_rights:type_name -> ttn.lorawan.v3.IsConfiguration.UserRights + 10, // 9: ttn.lorawan.v3.IsConfiguration.user_login:type_name -> ttn.lorawan.v3.IsConfiguration.UserLogin + 11, // 10: ttn.lorawan.v3.IsConfiguration.admin_rights:type_name -> ttn.lorawan.v3.IsConfiguration.AdminRights + 2, // 11: ttn.lorawan.v3.GetIsConfigurationResponse.configuration:type_name -> ttn.lorawan.v3.IsConfiguration + 19, // 12: ttn.lorawan.v3.AuthInfoResponse.APIKeyAccess.api_key:type_name -> ttn.lorawan.v3.APIKey + 20, // 13: ttn.lorawan.v3.AuthInfoResponse.APIKeyAccess.entity_ids:type_name -> ttn.lorawan.v3.EntityIdentifiers + 21, // 14: ttn.lorawan.v3.AuthInfoResponse.GatewayToken.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 22, // 15: ttn.lorawan.v3.AuthInfoResponse.GatewayToken.rights:type_name -> ttn.lorawan.v3.Right + 12, // 16: ttn.lorawan.v3.IsConfiguration.UserRegistration.invitation:type_name -> ttn.lorawan.v3.IsConfiguration.UserRegistration.Invitation + 13, // 17: ttn.lorawan.v3.IsConfiguration.UserRegistration.contact_info_validation:type_name -> ttn.lorawan.v3.IsConfiguration.UserRegistration.ContactInfoValidation + 14, // 18: ttn.lorawan.v3.IsConfiguration.UserRegistration.admin_approval:type_name -> ttn.lorawan.v3.IsConfiguration.UserRegistration.AdminApproval + 15, // 19: ttn.lorawan.v3.IsConfiguration.UserRegistration.password_requirements:type_name -> ttn.lorawan.v3.IsConfiguration.UserRegistration.PasswordRequirements + 23, // 20: ttn.lorawan.v3.IsConfiguration.ProfilePicture.disable_upload:type_name -> google.protobuf.BoolValue + 23, // 21: ttn.lorawan.v3.IsConfiguration.ProfilePicture.use_gravatar:type_name -> google.protobuf.BoolValue + 23, // 22: ttn.lorawan.v3.IsConfiguration.EndDevicePicture.disable_upload:type_name -> google.protobuf.BoolValue + 23, // 23: ttn.lorawan.v3.IsConfiguration.UserRights.create_applications:type_name -> google.protobuf.BoolValue + 23, // 24: ttn.lorawan.v3.IsConfiguration.UserRights.create_clients:type_name -> google.protobuf.BoolValue + 23, // 25: ttn.lorawan.v3.IsConfiguration.UserRights.create_gateways:type_name -> google.protobuf.BoolValue + 23, // 26: ttn.lorawan.v3.IsConfiguration.UserRights.create_organizations:type_name -> google.protobuf.BoolValue + 23, // 27: ttn.lorawan.v3.IsConfiguration.UserLogin.disable_credentials_login:type_name -> google.protobuf.BoolValue + 23, // 28: ttn.lorawan.v3.IsConfiguration.AdminRights.all:type_name -> google.protobuf.BoolValue + 23, // 29: ttn.lorawan.v3.IsConfiguration.UserRegistration.Invitation.required:type_name -> google.protobuf.BoolValue + 24, // 30: ttn.lorawan.v3.IsConfiguration.UserRegistration.Invitation.token_ttl:type_name -> google.protobuf.Duration + 23, // 31: ttn.lorawan.v3.IsConfiguration.UserRegistration.ContactInfoValidation.required:type_name -> google.protobuf.BoolValue + 23, // 32: ttn.lorawan.v3.IsConfiguration.UserRegistration.AdminApproval.required:type_name -> google.protobuf.BoolValue + 25, // 33: ttn.lorawan.v3.IsConfiguration.UserRegistration.PasswordRequirements.min_length:type_name -> google.protobuf.UInt32Value + 25, // 34: ttn.lorawan.v3.IsConfiguration.UserRegistration.PasswordRequirements.max_length:type_name -> google.protobuf.UInt32Value + 25, // 35: ttn.lorawan.v3.IsConfiguration.UserRegistration.PasswordRequirements.min_uppercase:type_name -> google.protobuf.UInt32Value + 25, // 36: ttn.lorawan.v3.IsConfiguration.UserRegistration.PasswordRequirements.min_digits:type_name -> google.protobuf.UInt32Value + 25, // 37: ttn.lorawan.v3.IsConfiguration.UserRegistration.PasswordRequirements.min_special:type_name -> google.protobuf.UInt32Value + 26, // 38: ttn.lorawan.v3.EntityAccess.AuthInfo:input_type -> google.protobuf.Empty + 1, // 39: ttn.lorawan.v3.Is.GetConfiguration:input_type -> ttn.lorawan.v3.GetIsConfigurationRequest + 0, // 40: ttn.lorawan.v3.EntityAccess.AuthInfo:output_type -> ttn.lorawan.v3.AuthInfoResponse + 3, // 41: ttn.lorawan.v3.Is.GetConfiguration:output_type -> ttn.lorawan.v3.GetIsConfigurationResponse + 40, // [40:42] is the sub-list for method output_type + 38, // [38:40] is the sub-list for method input_type + 38, // [38:38] is the sub-list for extension type_name + 38, // [38:38] is the sub-list for extension extendee + 0, // [0:38] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_identityserver_proto_init() } +func file_lorawan_stack_api_identityserver_proto_init() { + if File_lorawan_stack_api_identityserver_proto != nil { + return + } + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_user_proto_init() + file_lorawan_stack_api_oauth_proto_init() + file_lorawan_stack_api_rights_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_identityserver_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AuthInfoResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identityserver_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetIsConfigurationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identityserver_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsConfiguration); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identityserver_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetIsConfigurationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identityserver_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AuthInfoResponse_APIKeyAccess); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identityserver_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AuthInfoResponse_GatewayToken); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identityserver_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsConfiguration_UserRegistration); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identityserver_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsConfiguration_ProfilePicture); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identityserver_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsConfiguration_EndDevicePicture); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identityserver_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsConfiguration_UserRights); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identityserver_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsConfiguration_UserLogin); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identityserver_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsConfiguration_AdminRights); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identityserver_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsConfiguration_UserRegistration_Invitation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identityserver_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsConfiguration_UserRegistration_ContactInfoValidation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identityserver_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsConfiguration_UserRegistration_AdminApproval); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_identityserver_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsConfiguration_UserRegistration_PasswordRequirements); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_lorawan_stack_api_identityserver_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*AuthInfoResponse_ApiKey)(nil), + (*AuthInfoResponse_OauthAccessToken)(nil), + (*AuthInfoResponse_UserSession)(nil), + (*AuthInfoResponse_GatewayToken_)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_identityserver_proto_rawDesc, + NumEnums: 0, + NumMessages: 16, + NumExtensions: 0, + NumServices: 2, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/identityserver.proto", + GoTypes: file_lorawan_stack_api_identityserver_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_identityserver_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_identityserver_proto_msgTypes, + }.Build() + File_lorawan_stack_api_identityserver_proto = out.File + file_lorawan_stack_api_identityserver_proto_rawDesc = nil + file_lorawan_stack_api_identityserver_proto_goTypes = nil + file_lorawan_stack_api_identityserver_proto_depIdxs = nil } diff --git a/pkg/ttnpb/identityserver.pb.gw.go b/pkg/ttnpb/identityserver.pb.gw.go index 0ad8d3973f..f9b14cc415 100644 --- a/pkg/ttnpb/identityserver.pb.gw.go +++ b/pkg/ttnpb/identityserver.pb.gw.go @@ -13,16 +13,15 @@ import ( "io" "net/http" - "github.com/gogo/protobuf/types" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/emptypb" ) // Suppress "imported and not used" errors @@ -31,11 +30,10 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join func request_EntityAccess_AuthInfo_0(ctx context.Context, marshaler runtime.Marshaler, client EntityAccessClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := client.AuthInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -44,7 +42,7 @@ func request_EntityAccess_AuthInfo_0(ctx context.Context, marshaler runtime.Mars } func local_request_EntityAccess_AuthInfo_0(ctx context.Context, marshaler runtime.Marshaler, server EntityAccessServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := server.AuthInfo(ctx, &protoReq) @@ -82,20 +80,22 @@ func RegisterEntityAccessHandlerServer(ctx context.Context, mux *runtime.ServeMu var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EntityAccess/AuthInfo", runtime.WithHTTPPathPattern("/auth_info")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EntityAccess_AuthInfo_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EntityAccess_AuthInfo_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityAccess_AuthInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityAccess_AuthInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -114,20 +114,22 @@ func RegisterIsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Is/GetConfiguration", runtime.WithHTTPPathPattern("/is/configuration")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Is_GetConfiguration_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Is_GetConfiguration_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Is_GetConfiguration_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Is_GetConfiguration_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -176,19 +178,21 @@ func RegisterEntityAccessHandlerClient(ctx context.Context, mux *runtime.ServeMu ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EntityAccess/AuthInfo", runtime.WithHTTPPathPattern("/auth_info")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EntityAccess_AuthInfo_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EntityAccess_AuthInfo_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityAccess_AuthInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityAccess_AuthInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -196,7 +200,7 @@ func RegisterEntityAccessHandlerClient(ctx context.Context, mux *runtime.ServeMu } var ( - pattern_EntityAccess_AuthInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"auth_info"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EntityAccess_AuthInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"auth_info"}, "")) ) var ( @@ -245,19 +249,21 @@ func RegisterIsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Is/GetConfiguration", runtime.WithHTTPPathPattern("/is/configuration")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Is_GetConfiguration_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Is_GetConfiguration_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Is_GetConfiguration_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Is_GetConfiguration_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -265,7 +271,7 @@ func RegisterIsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client } var ( - pattern_Is_GetConfiguration_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"is", "configuration"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Is_GetConfiguration_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"is", "configuration"}, "")) ) var ( diff --git a/pkg/ttnpb/identityserver.pb.validate.go b/pkg/ttnpb/identityserver.pb.validate.go index 889f564e03..0dbd8313fc 100644 --- a/pkg/ttnpb/identityserver.pb.validate.go +++ b/pkg/ttnpb/identityserver.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _identityserver_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on AuthInfoResponse with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/identityserver_grpc.pb.go b/pkg/ttnpb/identityserver_grpc.pb.go new file mode 100644 index 0000000000..a8b03f0e90 --- /dev/null +++ b/pkg/ttnpb/identityserver_grpc.pb.go @@ -0,0 +1,198 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/identityserver.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// EntityAccessClient is the client API for EntityAccess service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type EntityAccessClient interface { + // AuthInfo returns information about the authentication that is used on the request. + AuthInfo(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*AuthInfoResponse, error) +} + +type entityAccessClient struct { + cc grpc.ClientConnInterface +} + +func NewEntityAccessClient(cc grpc.ClientConnInterface) EntityAccessClient { + return &entityAccessClient{cc} +} + +func (c *entityAccessClient) AuthInfo(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*AuthInfoResponse, error) { + out := new(AuthInfoResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EntityAccess/AuthInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// EntityAccessServer is the server API for EntityAccess service. +// All implementations must embed UnimplementedEntityAccessServer +// for forward compatibility +type EntityAccessServer interface { + // AuthInfo returns information about the authentication that is used on the request. + AuthInfo(context.Context, *emptypb.Empty) (*AuthInfoResponse, error) + mustEmbedUnimplementedEntityAccessServer() +} + +// UnimplementedEntityAccessServer must be embedded to have forward compatible implementations. +type UnimplementedEntityAccessServer struct { +} + +func (UnimplementedEntityAccessServer) AuthInfo(context.Context, *emptypb.Empty) (*AuthInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AuthInfo not implemented") +} +func (UnimplementedEntityAccessServer) mustEmbedUnimplementedEntityAccessServer() {} + +// UnsafeEntityAccessServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to EntityAccessServer will +// result in compilation errors. +type UnsafeEntityAccessServer interface { + mustEmbedUnimplementedEntityAccessServer() +} + +func RegisterEntityAccessServer(s grpc.ServiceRegistrar, srv EntityAccessServer) { + s.RegisterService(&EntityAccess_ServiceDesc, srv) +} + +func _EntityAccess_AuthInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EntityAccessServer).AuthInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EntityAccess/AuthInfo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EntityAccessServer).AuthInfo(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +// EntityAccess_ServiceDesc is the grpc.ServiceDesc for EntityAccess service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var EntityAccess_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.EntityAccess", + HandlerType: (*EntityAccessServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "AuthInfo", + Handler: _EntityAccess_AuthInfo_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/identityserver.proto", +} + +// IsClient is the client API for Is service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type IsClient interface { + // Get the configuration of the Identity Server. The response is typically used + // to enable or disable features in a user interface. + GetConfiguration(ctx context.Context, in *GetIsConfigurationRequest, opts ...grpc.CallOption) (*GetIsConfigurationResponse, error) +} + +type isClient struct { + cc grpc.ClientConnInterface +} + +func NewIsClient(cc grpc.ClientConnInterface) IsClient { + return &isClient{cc} +} + +func (c *isClient) GetConfiguration(ctx context.Context, in *GetIsConfigurationRequest, opts ...grpc.CallOption) (*GetIsConfigurationResponse, error) { + out := new(GetIsConfigurationResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Is/GetConfiguration", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// IsServer is the server API for Is service. +// All implementations must embed UnimplementedIsServer +// for forward compatibility +type IsServer interface { + // Get the configuration of the Identity Server. The response is typically used + // to enable or disable features in a user interface. + GetConfiguration(context.Context, *GetIsConfigurationRequest) (*GetIsConfigurationResponse, error) + mustEmbedUnimplementedIsServer() +} + +// UnimplementedIsServer must be embedded to have forward compatible implementations. +type UnimplementedIsServer struct { +} + +func (UnimplementedIsServer) GetConfiguration(context.Context, *GetIsConfigurationRequest) (*GetIsConfigurationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetConfiguration not implemented") +} +func (UnimplementedIsServer) mustEmbedUnimplementedIsServer() {} + +// UnsafeIsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to IsServer will +// result in compilation errors. +type UnsafeIsServer interface { + mustEmbedUnimplementedIsServer() +} + +func RegisterIsServer(s grpc.ServiceRegistrar, srv IsServer) { + s.RegisterService(&Is_ServiceDesc, srv) +} + +func _Is_GetConfiguration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetIsConfigurationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IsServer).GetConfiguration(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Is/GetConfiguration", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IsServer).GetConfiguration(ctx, req.(*GetIsConfigurationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Is_ServiceDesc is the grpc.ServiceDesc for Is service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Is_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.Is", + HandlerType: (*IsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetConfiguration", + Handler: _Is_GetConfiguration_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/identityserver.proto", +} diff --git a/pkg/ttnpb/identityserver_json.pb.go b/pkg/ttnpb/identityserver_json.pb.go index adfd2b2550..f1d6f06196 100644 --- a/pkg/ttnpb/identityserver_json.pb.go +++ b/pkg/ttnpb/identityserver_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/identityserver.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" ) @@ -159,7 +159,7 @@ func (x *AuthInfoResponse) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("user_session") // NOTE: UserSession does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.UserSession) + golang.MarshalMessage(s, ov.UserSession) case *AuthInfoResponse_GatewayToken_: s.WriteMoreIf(&wroteField) s.WriteObjectField("gateway_token") @@ -221,7 +221,7 @@ func (x *AuthInfoResponse) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: UserSession does not seem to implement UnmarshalProtoJSON. var v UserSession - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.UserSession = &v case "gateway_token", "gatewayToken": ov := &AuthInfoResponse_GatewayToken_{} diff --git a/pkg/ttnpb/join.pb.go b/pkg/ttnpb/join.pb.go index caa1869beb..0163dc0d3e 100644 --- a/pkg/ttnpb/join.pb.go +++ b/pkg/ttnpb/join.pb.go @@ -1,33 +1,49 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/join.proto package ttnpb import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type JoinRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + RawPayload []byte `protobuf:"bytes,1,opt,name=raw_payload,json=rawPayload,proto3" json:"raw_payload,omitempty"` Payload *Message `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` DevAddr []byte `protobuf:"bytes,3,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` @@ -39,229 +55,376 @@ type JoinRequest struct { CfList *CFList `protobuf:"bytes,8,opt,name=cf_list,json=cfList,proto3" json:"cf_list,omitempty"` CorrelationIds []string `protobuf:"bytes,10,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` // Consumed airtime for the transmission of the join request. Calculated by Network Server using the RawPayload size and the transmission settings. - ConsumedAirtime *types.Duration `protobuf:"bytes,11,opt,name=consumed_airtime,json=consumedAirtime,proto3" json:"consumed_airtime,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ConsumedAirtime *durationpb.Duration `protobuf:"bytes,11,opt,name=consumed_airtime,json=consumedAirtime,proto3" json:"consumed_airtime,omitempty"` } -func (m *JoinRequest) Reset() { *m = JoinRequest{} } -func (m *JoinRequest) String() string { return proto.CompactTextString(m) } -func (*JoinRequest) ProtoMessage() {} -func (*JoinRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_dd69b88666e72e14, []int{0} -} -func (m *JoinRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_JoinRequest.Unmarshal(m, b) -} -func (m *JoinRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_JoinRequest.Marshal(b, m, deterministic) -} -func (m *JoinRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_JoinRequest.Merge(m, src) +func (x *JoinRequest) Reset() { + *x = JoinRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_join_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *JoinRequest) XXX_Size() int { - return xxx_messageInfo_JoinRequest.Size(m) + +func (x *JoinRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *JoinRequest) XXX_DiscardUnknown() { - xxx_messageInfo_JoinRequest.DiscardUnknown(m) + +func (*JoinRequest) ProtoMessage() {} + +func (x *JoinRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_join_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_JoinRequest proto.InternalMessageInfo +// Deprecated: Use JoinRequest.ProtoReflect.Descriptor instead. +func (*JoinRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_join_proto_rawDescGZIP(), []int{0} +} -func (m *JoinRequest) GetRawPayload() []byte { - if m != nil { - return m.RawPayload +func (x *JoinRequest) GetRawPayload() []byte { + if x != nil { + return x.RawPayload } return nil } -func (m *JoinRequest) GetPayload() *Message { - if m != nil { - return m.Payload +func (x *JoinRequest) GetPayload() *Message { + if x != nil { + return x.Payload } return nil } -func (m *JoinRequest) GetDevAddr() []byte { - if m != nil { - return m.DevAddr +func (x *JoinRequest) GetDevAddr() []byte { + if x != nil { + return x.DevAddr } return nil } -func (m *JoinRequest) GetSelectedMacVersion() MACVersion { - if m != nil { - return m.SelectedMacVersion +func (x *JoinRequest) GetSelectedMacVersion() MACVersion { + if x != nil { + return x.SelectedMacVersion } return MACVersion_MAC_UNKNOWN } -func (m *JoinRequest) GetNetId() []byte { - if m != nil { - return m.NetId +func (x *JoinRequest) GetNetId() []byte { + if x != nil { + return x.NetId } return nil } -func (m *JoinRequest) GetDownlinkSettings() *DLSettings { - if m != nil { - return m.DownlinkSettings +func (x *JoinRequest) GetDownlinkSettings() *DLSettings { + if x != nil { + return x.DownlinkSettings } return nil } -func (m *JoinRequest) GetRxDelay() RxDelay { - if m != nil { - return m.RxDelay +func (x *JoinRequest) GetRxDelay() RxDelay { + if x != nil { + return x.RxDelay } return RxDelay_RX_DELAY_0 } -func (m *JoinRequest) GetCfList() *CFList { - if m != nil { - return m.CfList +func (x *JoinRequest) GetCfList() *CFList { + if x != nil { + return x.CfList } return nil } -func (m *JoinRequest) GetCorrelationIds() []string { - if m != nil { - return m.CorrelationIds +func (x *JoinRequest) GetCorrelationIds() []string { + if x != nil { + return x.CorrelationIds } return nil } -func (m *JoinRequest) GetConsumedAirtime() *types.Duration { - if m != nil { - return m.ConsumedAirtime +func (x *JoinRequest) GetConsumedAirtime() *durationpb.Duration { + if x != nil { + return x.ConsumedAirtime } return nil } type JoinResponse struct { - RawPayload []byte `protobuf:"bytes,1,opt,name=raw_payload,json=rawPayload,proto3" json:"raw_payload,omitempty"` - SessionKeys *SessionKeys `protobuf:"bytes,2,opt,name=session_keys,json=sessionKeys,proto3" json:"session_keys,omitempty"` - Lifetime *types.Duration `protobuf:"bytes,3,opt,name=lifetime,proto3" json:"lifetime,omitempty"` - CorrelationIds []string `protobuf:"bytes,4,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *JoinResponse) Reset() { *m = JoinResponse{} } -func (m *JoinResponse) String() string { return proto.CompactTextString(m) } -func (*JoinResponse) ProtoMessage() {} -func (*JoinResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_dd69b88666e72e14, []int{1} -} -func (m *JoinResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_JoinResponse.Unmarshal(m, b) + RawPayload []byte `protobuf:"bytes,1,opt,name=raw_payload,json=rawPayload,proto3" json:"raw_payload,omitempty"` + SessionKeys *SessionKeys `protobuf:"bytes,2,opt,name=session_keys,json=sessionKeys,proto3" json:"session_keys,omitempty"` + Lifetime *durationpb.Duration `protobuf:"bytes,3,opt,name=lifetime,proto3" json:"lifetime,omitempty"` + CorrelationIds []string `protobuf:"bytes,4,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` } -func (m *JoinResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_JoinResponse.Marshal(b, m, deterministic) -} -func (m *JoinResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_JoinResponse.Merge(m, src) + +func (x *JoinResponse) Reset() { + *x = JoinResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_join_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *JoinResponse) XXX_Size() int { - return xxx_messageInfo_JoinResponse.Size(m) + +func (x *JoinResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *JoinResponse) XXX_DiscardUnknown() { - xxx_messageInfo_JoinResponse.DiscardUnknown(m) + +func (*JoinResponse) ProtoMessage() {} + +func (x *JoinResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_join_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_JoinResponse proto.InternalMessageInfo +// Deprecated: Use JoinResponse.ProtoReflect.Descriptor instead. +func (*JoinResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_join_proto_rawDescGZIP(), []int{1} +} -func (m *JoinResponse) GetRawPayload() []byte { - if m != nil { - return m.RawPayload +func (x *JoinResponse) GetRawPayload() []byte { + if x != nil { + return x.RawPayload } return nil } -func (m *JoinResponse) GetSessionKeys() *SessionKeys { - if m != nil { - return m.SessionKeys +func (x *JoinResponse) GetSessionKeys() *SessionKeys { + if x != nil { + return x.SessionKeys } return nil } -func (m *JoinResponse) GetLifetime() *types.Duration { - if m != nil { - return m.Lifetime +func (x *JoinResponse) GetLifetime() *durationpb.Duration { + if x != nil { + return x.Lifetime } return nil } -func (m *JoinResponse) GetCorrelationIds() []string { - if m != nil { - return m.CorrelationIds +func (x *JoinResponse) GetCorrelationIds() []string { + if x != nil { + return x.CorrelationIds } return nil } -func init() { - proto.RegisterType((*JoinRequest)(nil), "ttn.lorawan.v3.JoinRequest") - golang_proto.RegisterType((*JoinRequest)(nil), "ttn.lorawan.v3.JoinRequest") - proto.RegisterType((*JoinResponse)(nil), "ttn.lorawan.v3.JoinResponse") - golang_proto.RegisterType((*JoinResponse)(nil), "ttn.lorawan.v3.JoinResponse") +var File_lorawan_stack_api_join_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_join_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x41, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, + 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, + 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, + 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, + 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, + 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x07, 0x0a, 0x0b, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x7a, 0x02, + 0x68, 0x17, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x31, + 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x12, 0xc8, 0x01, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0xac, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x04, 0x70, 0x01, + 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, + 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, + 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, + 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x4c, 0x0a, 0x14, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x4d, 0x61, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xc2, 0x01, 0x0a, 0x06, 0x6e, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xaa, 0x01, 0xfa, 0x42, + 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, + 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, + 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, + 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, + 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, + 0x51, 0x0a, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x4c, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x72, 0x78, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x72, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, + 0x12, 0x2f, 0x0a, 0x07, 0x63, 0x66, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x46, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x06, 0x63, 0x66, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, + 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, + 0x75, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, + 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x41, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x4a, 0x04, + 0x08, 0x09, 0x10, 0x0a, 0x22, 0xf2, 0x01, 0x0a, 0x0c, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x7a, + 0x04, 0x10, 0x11, 0x18, 0x21, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x12, 0x48, 0x0a, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x4b, 0x65, 0x79, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x6c, + 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, + 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, + 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_join_proto_rawDescOnce sync.Once + file_lorawan_stack_api_join_proto_rawDescData = file_lorawan_stack_api_join_proto_rawDesc +) + +func file_lorawan_stack_api_join_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_join_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_join_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_join_proto_rawDescData) + }) + return file_lorawan_stack_api_join_proto_rawDescData } -func init() { proto.RegisterFile("lorawan-stack/api/join.proto", fileDescriptor_dd69b88666e72e14) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/join.proto", fileDescriptor_dd69b88666e72e14) +var file_lorawan_stack_api_join_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_lorawan_stack_api_join_proto_goTypes = []interface{}{ + (*JoinRequest)(nil), // 0: ttn.lorawan.v3.JoinRequest + (*JoinResponse)(nil), // 1: ttn.lorawan.v3.JoinResponse + (*Message)(nil), // 2: ttn.lorawan.v3.Message + (MACVersion)(0), // 3: ttn.lorawan.v3.MACVersion + (*DLSettings)(nil), // 4: ttn.lorawan.v3.DLSettings + (RxDelay)(0), // 5: ttn.lorawan.v3.RxDelay + (*CFList)(nil), // 6: ttn.lorawan.v3.CFList + (*durationpb.Duration)(nil), // 7: google.protobuf.Duration + (*SessionKeys)(nil), // 8: ttn.lorawan.v3.SessionKeys +} +var file_lorawan_stack_api_join_proto_depIdxs = []int32{ + 2, // 0: ttn.lorawan.v3.JoinRequest.payload:type_name -> ttn.lorawan.v3.Message + 3, // 1: ttn.lorawan.v3.JoinRequest.selected_mac_version:type_name -> ttn.lorawan.v3.MACVersion + 4, // 2: ttn.lorawan.v3.JoinRequest.downlink_settings:type_name -> ttn.lorawan.v3.DLSettings + 5, // 3: ttn.lorawan.v3.JoinRequest.rx_delay:type_name -> ttn.lorawan.v3.RxDelay + 6, // 4: ttn.lorawan.v3.JoinRequest.cf_list:type_name -> ttn.lorawan.v3.CFList + 7, // 5: ttn.lorawan.v3.JoinRequest.consumed_airtime:type_name -> google.protobuf.Duration + 8, // 6: ttn.lorawan.v3.JoinResponse.session_keys:type_name -> ttn.lorawan.v3.SessionKeys + 7, // 7: ttn.lorawan.v3.JoinResponse.lifetime:type_name -> google.protobuf.Duration + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } -var fileDescriptor_dd69b88666e72e14 = []byte{ - // 770 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x94, 0x41, 0x6f, 0xe3, 0x44, - 0x14, 0xc7, 0x35, 0x69, 0x1a, 0xa7, 0x93, 0xaa, 0x9b, 0xb5, 0x10, 0x75, 0x0b, 0x5a, 0x4a, 0x4e, - 0x11, 0x52, 0xec, 0x6c, 0x43, 0x39, 0x21, 0xa1, 0xb8, 0x01, 0x6d, 0x4b, 0x2b, 0x81, 0x77, 0x41, - 0x88, 0x8b, 0x35, 0xf5, 0xbc, 0x3a, 0xb3, 0x71, 0x66, 0xcc, 0xcc, 0xc4, 0xa9, 0xf7, 0xb8, 0x47, - 0x24, 0x2e, 0x3d, 0x72, 0xe4, 0xb8, 0xe2, 0x43, 0x20, 0x4e, 0x7c, 0x0f, 0x6e, 0x1c, 0x39, 0xe6, - 0x84, 0x32, 0xb6, 0xd9, 0x74, 0x13, 0x69, 0xd5, 0xdb, 0x9e, 0x32, 0x33, 0xef, 0xff, 0xfe, 0xf3, - 0xe6, 0x97, 0xf7, 0x8c, 0x3f, 0x4c, 0x84, 0x24, 0x73, 0xc2, 0x7b, 0x4a, 0x93, 0x68, 0xe2, 0x91, - 0x94, 0x79, 0xcf, 0x05, 0xe3, 0x6e, 0x2a, 0x85, 0x16, 0xf6, 0x9e, 0xd6, 0xdc, 0x2d, 0x15, 0x6e, - 0x36, 0x38, 0x1c, 0xc6, 0x4c, 0x8f, 0x67, 0x57, 0x6e, 0x24, 0xa6, 0x1e, 0xf0, 0x4c, 0xe4, 0xa9, - 0x14, 0x37, 0xb9, 0x67, 0xc4, 0x51, 0x2f, 0x06, 0xde, 0xcb, 0x48, 0xc2, 0x28, 0xd1, 0xe0, 0xad, - 0x2d, 0x0a, 0xcb, 0xc3, 0xde, 0x8a, 0x45, 0x2c, 0x62, 0x51, 0x24, 0x5f, 0xcd, 0xae, 0xcd, 0xce, - 0x6c, 0xcc, 0xaa, 0x94, 0x9f, 0xae, 0xc8, 0x9f, 0x8d, 0xe1, 0xd9, 0x98, 0xf1, 0x58, 0x9d, 0x71, - 0x3a, 0x53, 0x5a, 0x32, 0x50, 0xab, 0x57, 0xc7, 0xa2, 0xf7, 0x5c, 0x09, 0xee, 0x11, 0xce, 0x85, - 0x26, 0x9a, 0x09, 0xae, 0x4a, 0x93, 0x47, 0xb1, 0x10, 0x71, 0x02, 0xaf, 0xaf, 0xa2, 0x33, 0x69, - 0x04, 0x65, 0x7c, 0x03, 0x84, 0x09, 0xe4, 0x55, 0xf6, 0x47, 0xeb, 0xd1, 0x0a, 0x49, 0x21, 0x70, - 0x57, 0x8a, 0x10, 0x29, 0x70, 0x92, 0xb2, 0xec, 0xd8, 0x13, 0xa9, 0x29, 0x61, 0xbd, 0x9c, 0xce, - 0x2f, 0x16, 0x6e, 0x9d, 0x0b, 0xc6, 0x03, 0xf8, 0x69, 0x06, 0x4a, 0xdb, 0x5d, 0xdc, 0x92, 0x64, - 0x1e, 0xa6, 0x24, 0x4f, 0x04, 0xa1, 0x0e, 0x3a, 0x42, 0xdd, 0x5d, 0xdf, 0x5a, 0xf8, 0xf5, 0x17, - 0xb5, 0xf1, 0x7e, 0x80, 0x25, 0x99, 0x7f, 0x53, 0x84, 0xec, 0xc7, 0xd8, 0xaa, 0x54, 0xb5, 0x23, - 0xd4, 0x6d, 0x1d, 0xef, 0xbb, 0x77, 0xff, 0x21, 0xf7, 0x12, 0x94, 0x22, 0x31, 0x04, 0x95, 0xce, - 0xfe, 0x0b, 0xe1, 0x26, 0x85, 0x2c, 0x24, 0x94, 0x4a, 0x67, 0xcb, 0x58, 0xff, 0x8e, 0x6e, 0x87, - 0x07, 0xe7, 0xb8, 0x73, 0xfc, 0x59, 0xbf, 0x3f, 0xf4, 0x4f, 0x47, 0x9d, 0x5f, 0x6b, 0xc8, 0xfa, - 0xad, 0xd6, 0x58, 0x22, 0xe5, 0xf1, 0xc2, 0x6f, 0xbc, 0xa8, 0x8f, 0xeb, 0x29, 0xfa, 0xe7, 0xd5, - 0xc1, 0x4b, 0x84, 0xbf, 0x88, 0x85, 0xab, 0xc7, 0xa0, 0x0d, 0x78, 0x97, 0x83, 0x9e, 0x0b, 0x39, - 0xf1, 0xee, 0x22, 0xc9, 0x06, 0x5e, 0x3a, 0x89, 0x3d, 0x9d, 0xa7, 0xa0, 0xdc, 0x4b, 0x22, 0xd5, - 0x98, 0x24, 0x4f, 0xbe, 0xfc, 0xc1, 0xcf, 0x35, 0x28, 0xfb, 0xde, 0x06, 0xdf, 0xf1, 0x69, 0x61, - 0xf1, 0xa9, 0x31, 0x08, 0x2c, 0x0a, 0xd9, 0x90, 0x52, 0x69, 0x5f, 0xe0, 0xf7, 0x14, 0x24, 0x10, - 0x69, 0xa0, 0xe1, 0x94, 0x44, 0x61, 0x06, 0x52, 0x31, 0xc1, 0x9d, 0xfa, 0x11, 0xea, 0xee, 0x1d, - 0x1f, 0xae, 0xa1, 0x18, 0x9e, 0x7e, 0x5f, 0x28, 0x02, 0xbb, 0xca, 0xbb, 0x24, 0x51, 0x79, 0x66, - 0xff, 0x89, 0x70, 0x83, 0x83, 0x0e, 0x19, 0x75, 0xb6, 0x0d, 0x96, 0x57, 0xe8, 0x76, 0xb8, 0x7f, - 0xde, 0xec, 0xf4, 0xfb, 0xfd, 0xfe, 0xe3, 0xc1, 0x26, 0x28, 0x5b, 0xef, 0x00, 0x94, 0x41, 0x01, - 0x65, 0x9b, 0x83, 0x3e, 0xa3, 0xf6, 0xb7, 0xf8, 0x21, 0x15, 0x73, 0x9e, 0x30, 0x3e, 0x09, 0x15, - 0x68, 0xbd, 0xb4, 0x73, 0x1a, 0xa6, 0x35, 0xd6, 0x78, 0x8c, 0x2e, 0x9e, 0x96, 0x0a, 0xbf, 0xb9, - 0xf0, 0xb7, 0x7f, 0x46, 0xb5, 0x36, 0x0a, 0xda, 0x55, 0x7a, 0x15, 0xb3, 0x3f, 0xc7, 0x4d, 0x79, - 0x13, 0x52, 0x48, 0x48, 0xee, 0x58, 0x86, 0xec, 0x5a, 0x93, 0x05, 0x37, 0xa3, 0x65, 0xd8, 0xd8, - 0xbc, 0x34, 0x36, 0x96, 0x2c, 0x8e, 0x6c, 0x0f, 0x5b, 0xd1, 0x75, 0x98, 0x30, 0xa5, 0x9d, 0xa6, - 0x29, 0xe3, 0xfd, 0x37, 0x93, 0x4f, 0xbf, 0xba, 0x60, 0x4a, 0x07, 0x8d, 0xe8, 0x7a, 0xf9, 0x6b, - 0x9f, 0xe0, 0x07, 0x91, 0x90, 0x12, 0x12, 0x33, 0x22, 0x21, 0xa3, 0xca, 0xc1, 0x47, 0x5b, 0xdd, - 0x1d, 0x7f, 0x77, 0xe1, 0xef, 0xdc, 0xa2, 0x46, 0xa7, 0x2e, 0x6b, 0x0e, 0x0d, 0xf6, 0x56, 0x44, - 0x67, 0x54, 0xd9, 0x23, 0xdc, 0x8e, 0x04, 0x57, 0xb3, 0x29, 0xd0, 0x90, 0x30, 0xa9, 0xd9, 0x14, - 0x9c, 0x96, 0xb9, 0xf0, 0xc0, 0x2d, 0xa6, 0xdd, 0xad, 0xa6, 0xdd, 0x1d, 0x95, 0xd3, 0x1e, 0x3c, - 0xa8, 0x52, 0x86, 0x45, 0xc6, 0x79, 0xbd, 0xb9, 0xd3, 0xc6, 0x9d, 0x7f, 0x11, 0xde, 0x2d, 0xe6, - 0x51, 0xa5, 0x82, 0x2b, 0xb0, 0x3f, 0xd9, 0x34, 0x90, 0x3b, 0xa6, 0x07, 0xda, 0x0f, 0x9d, 0x8f, - 0xef, 0x8c, 0xe4, 0x13, 0xbc, 0xab, 0x40, 0x2d, 0x3b, 0x2a, 0x5c, 0x7e, 0x33, 0xca, 0xb9, 0xfc, - 0xe0, 0xcd, 0x57, 0x3f, 0x2d, 0x34, 0x5f, 0x43, 0xbe, 0x4a, 0xbf, 0xa5, 0x5e, 0x1f, 0xdb, 0x27, - 0xb8, 0x99, 0xb0, 0x6b, 0x30, 0x4f, 0xd9, 0x7a, 0xdb, 0x53, 0xfe, 0x97, 0x6e, 0x02, 0x58, 0x7f, - 0x3b, 0x40, 0xff, 0xe4, 0x8f, 0xbf, 0x1f, 0xa1, 0x1f, 0xbd, 0x7b, 0xf4, 0xa1, 0xe6, 0xe9, 0xd5, - 0x55, 0xc3, 0x94, 0x32, 0xf8, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xa3, 0xc3, 0x60, 0x3e, 0x38, 0x06, - 0x00, 0x00, +func init() { file_lorawan_stack_api_join_proto_init() } +func file_lorawan_stack_api_join_proto_init() { + if File_lorawan_stack_api_join_proto != nil { + return + } + file_lorawan_stack_api_keys_proto_init() + file_lorawan_stack_api_lorawan_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_join_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*JoinRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_join_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*JoinResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_join_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_join_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_join_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_join_proto_msgTypes, + }.Build() + File_lorawan_stack_api_join_proto = out.File + file_lorawan_stack_api_join_proto_rawDesc = nil + file_lorawan_stack_api_join_proto_goTypes = nil + file_lorawan_stack_api_join_proto_depIdxs = nil } diff --git a/pkg/ttnpb/join.pb.setters.fm.go b/pkg/ttnpb/join.pb.setters.fm.go index bd9c9d6f3c..9d4a468620 100644 --- a/pkg/ttnpb/join.pb.setters.fm.go +++ b/pkg/ttnpb/join.pb.setters.fm.go @@ -57,8 +57,7 @@ func (dst *JoinRequest) SetFields(src *JoinRequest, paths ...string) error { if src != nil { dst.SelectedMacVersion = src.SelectedMacVersion } else { - var zero MACVersion - dst.SelectedMacVersion = zero + dst.SelectedMacVersion = 0 } case "net_id": if len(subs) > 0 { @@ -101,8 +100,7 @@ func (dst *JoinRequest) SetFields(src *JoinRequest, paths ...string) error { if src != nil { dst.RxDelay = src.RxDelay } else { - var zero RxDelay - dst.RxDelay = zero + dst.RxDelay = 0 } case "cf_list": if len(subs) > 0 { diff --git a/pkg/ttnpb/join.pb.validate.go b/pkg/ttnpb/join.pb.validate.go index a14df33c30..4262bf6f1c 100644 --- a/pkg/ttnpb/join.pb.validate.go +++ b/pkg/ttnpb/join.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _join_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on JoinRequest with the rules defined // in the proto definition for this message. If any rules are violated, an // error is returned. diff --git a/pkg/ttnpb/join_json.pb.go b/pkg/ttnpb/join_json.pb.go index ba7822dfed..1b7e4070b6 100644 --- a/pkg/ttnpb/join_json.pb.go +++ b/pkg/ttnpb/join_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/join.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" types "go.thethings.network/lorawan-stack/v3/pkg/types" ) @@ -71,7 +71,7 @@ func (x *JoinRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ConsumedAirtime == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.ConsumedAirtime) + golang.MarshalDuration(s, x.ConsumedAirtime) } } s.WriteObjectEnd() @@ -140,7 +140,7 @@ func (x *JoinRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ConsumedAirtime = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -178,7 +178,7 @@ func (x *JoinResponse) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.Lifetime == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.Lifetime) + golang.MarshalDuration(s, x.Lifetime) } } if len(x.CorrelationIds) > 0 || s.HasField("correlation_ids") { @@ -219,7 +219,7 @@ func (x *JoinResponse) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.Lifetime = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } diff --git a/pkg/ttnpb/joinserver.pb.go b/pkg/ttnpb/joinserver.pb.go index 839e298be3..52b6d088c3 100644 --- a/pkg/ttnpb/joinserver.pb.go +++ b/pkg/ttnpb/joinserver.pb.go @@ -1,192 +1,233 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/joinserver.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + structpb "google.golang.org/protobuf/types/known/structpb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type SessionKeyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Join Server issued identifier for the session keys. SessionKeyId []byte `protobuf:"bytes,1,opt,name=session_key_id,json=sessionKeyId,proto3" json:"session_key_id,omitempty"` // LoRaWAN DevEUI. DevEui []byte `protobuf:"bytes,2,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"` // The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices). - JoinEui []byte `protobuf:"bytes,3,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + JoinEui []byte `protobuf:"bytes,3,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` } -func (m *SessionKeyRequest) Reset() { *m = SessionKeyRequest{} } -func (m *SessionKeyRequest) String() string { return proto.CompactTextString(m) } -func (*SessionKeyRequest) ProtoMessage() {} -func (*SessionKeyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{0} -} -func (m *SessionKeyRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SessionKeyRequest.Unmarshal(m, b) -} -func (m *SessionKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SessionKeyRequest.Marshal(b, m, deterministic) -} -func (m *SessionKeyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SessionKeyRequest.Merge(m, src) +func (x *SessionKeyRequest) Reset() { + *x = SessionKeyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SessionKeyRequest) XXX_Size() int { - return xxx_messageInfo_SessionKeyRequest.Size(m) + +func (x *SessionKeyRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SessionKeyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SessionKeyRequest.DiscardUnknown(m) + +func (*SessionKeyRequest) ProtoMessage() {} + +func (x *SessionKeyRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SessionKeyRequest proto.InternalMessageInfo +// Deprecated: Use SessionKeyRequest.ProtoReflect.Descriptor instead. +func (*SessionKeyRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{0} +} -func (m *SessionKeyRequest) GetSessionKeyId() []byte { - if m != nil { - return m.SessionKeyId +func (x *SessionKeyRequest) GetSessionKeyId() []byte { + if x != nil { + return x.SessionKeyId } return nil } -func (m *SessionKeyRequest) GetDevEui() []byte { - if m != nil { - return m.DevEui +func (x *SessionKeyRequest) GetDevEui() []byte { + if x != nil { + return x.DevEui } return nil } -func (m *SessionKeyRequest) GetJoinEui() []byte { - if m != nil { - return m.JoinEui +func (x *SessionKeyRequest) GetJoinEui() []byte { + if x != nil { + return x.JoinEui } return nil } type NwkSKeysResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The (encrypted) Forwarding Network Session Integrity Key (or Network Session Key in 1.0 compatibility mode). FNwkSIntKey *KeyEnvelope `protobuf:"bytes,1,opt,name=f_nwk_s_int_key,json=fNwkSIntKey,proto3" json:"f_nwk_s_int_key,omitempty"` // The (encrypted) Serving Network Session Integrity Key. SNwkSIntKey *KeyEnvelope `protobuf:"bytes,2,opt,name=s_nwk_s_int_key,json=sNwkSIntKey,proto3" json:"s_nwk_s_int_key,omitempty"` // The (encrypted) Network Session Encryption Key. - NwkSEncKey *KeyEnvelope `protobuf:"bytes,3,opt,name=nwk_s_enc_key,json=nwkSEncKey,proto3" json:"nwk_s_enc_key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + NwkSEncKey *KeyEnvelope `protobuf:"bytes,3,opt,name=nwk_s_enc_key,json=nwkSEncKey,proto3" json:"nwk_s_enc_key,omitempty"` } -func (m *NwkSKeysResponse) Reset() { *m = NwkSKeysResponse{} } -func (m *NwkSKeysResponse) String() string { return proto.CompactTextString(m) } -func (*NwkSKeysResponse) ProtoMessage() {} -func (*NwkSKeysResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{1} -} -func (m *NwkSKeysResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NwkSKeysResponse.Unmarshal(m, b) -} -func (m *NwkSKeysResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NwkSKeysResponse.Marshal(b, m, deterministic) -} -func (m *NwkSKeysResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_NwkSKeysResponse.Merge(m, src) +func (x *NwkSKeysResponse) Reset() { + *x = NwkSKeysResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *NwkSKeysResponse) XXX_Size() int { - return xxx_messageInfo_NwkSKeysResponse.Size(m) + +func (x *NwkSKeysResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *NwkSKeysResponse) XXX_DiscardUnknown() { - xxx_messageInfo_NwkSKeysResponse.DiscardUnknown(m) + +func (*NwkSKeysResponse) ProtoMessage() {} + +func (x *NwkSKeysResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_NwkSKeysResponse proto.InternalMessageInfo +// Deprecated: Use NwkSKeysResponse.ProtoReflect.Descriptor instead. +func (*NwkSKeysResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{1} +} -func (m *NwkSKeysResponse) GetFNwkSIntKey() *KeyEnvelope { - if m != nil { - return m.FNwkSIntKey +func (x *NwkSKeysResponse) GetFNwkSIntKey() *KeyEnvelope { + if x != nil { + return x.FNwkSIntKey } return nil } -func (m *NwkSKeysResponse) GetSNwkSIntKey() *KeyEnvelope { - if m != nil { - return m.SNwkSIntKey +func (x *NwkSKeysResponse) GetSNwkSIntKey() *KeyEnvelope { + if x != nil { + return x.SNwkSIntKey } return nil } -func (m *NwkSKeysResponse) GetNwkSEncKey() *KeyEnvelope { - if m != nil { - return m.NwkSEncKey +func (x *NwkSKeysResponse) GetNwkSEncKey() *KeyEnvelope { + if x != nil { + return x.NwkSEncKey } return nil } type AppSKeyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The (encrypted) Application Session Key. - AppSKey *KeyEnvelope `protobuf:"bytes,1,opt,name=app_s_key,json=appSKey,proto3" json:"app_s_key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + AppSKey *KeyEnvelope `protobuf:"bytes,1,opt,name=app_s_key,json=appSKey,proto3" json:"app_s_key,omitempty"` } -func (m *AppSKeyResponse) Reset() { *m = AppSKeyResponse{} } -func (m *AppSKeyResponse) String() string { return proto.CompactTextString(m) } -func (*AppSKeyResponse) ProtoMessage() {} -func (*AppSKeyResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{2} -} -func (m *AppSKeyResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AppSKeyResponse.Unmarshal(m, b) -} -func (m *AppSKeyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AppSKeyResponse.Marshal(b, m, deterministic) -} -func (m *AppSKeyResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AppSKeyResponse.Merge(m, src) +func (x *AppSKeyResponse) Reset() { + *x = AppSKeyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *AppSKeyResponse) XXX_Size() int { - return xxx_messageInfo_AppSKeyResponse.Size(m) + +func (x *AppSKeyResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *AppSKeyResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AppSKeyResponse.DiscardUnknown(m) + +func (*AppSKeyResponse) ProtoMessage() {} + +func (x *AppSKeyResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_AppSKeyResponse proto.InternalMessageInfo +// Deprecated: Use AppSKeyResponse.ProtoReflect.Descriptor instead. +func (*AppSKeyResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{2} +} -func (m *AppSKeyResponse) GetAppSKey() *KeyEnvelope { - if m != nil { - return m.AppSKey +func (x *AppSKeyResponse) GetAppSKey() *KeyEnvelope { + if x != nil { + return x.AppSKey } return nil } type CryptoServicePayloadRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // End device identifiers for the cryptographic operation. Ids *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` // LoRaWAN version to use for the cryptographic operation. @@ -196,168 +237,195 @@ type CryptoServicePayloadRequest struct { // Provisioner that provisioned the end device. ProvisionerId string `protobuf:"bytes,4,opt,name=provisioner_id,json=provisionerId,proto3" json:"provisioner_id,omitempty"` // Provisioning data for the provisioner. - ProvisioningData *types.Struct `protobuf:"bytes,5,opt,name=provisioning_data,json=provisioningData,proto3" json:"provisioning_data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ProvisioningData *structpb.Struct `protobuf:"bytes,5,opt,name=provisioning_data,json=provisioningData,proto3" json:"provisioning_data,omitempty"` } -func (m *CryptoServicePayloadRequest) Reset() { *m = CryptoServicePayloadRequest{} } -func (m *CryptoServicePayloadRequest) String() string { return proto.CompactTextString(m) } -func (*CryptoServicePayloadRequest) ProtoMessage() {} -func (*CryptoServicePayloadRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{3} -} -func (m *CryptoServicePayloadRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CryptoServicePayloadRequest.Unmarshal(m, b) -} -func (m *CryptoServicePayloadRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CryptoServicePayloadRequest.Marshal(b, m, deterministic) -} -func (m *CryptoServicePayloadRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CryptoServicePayloadRequest.Merge(m, src) +func (x *CryptoServicePayloadRequest) Reset() { + *x = CryptoServicePayloadRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CryptoServicePayloadRequest) XXX_Size() int { - return xxx_messageInfo_CryptoServicePayloadRequest.Size(m) + +func (x *CryptoServicePayloadRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CryptoServicePayloadRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CryptoServicePayloadRequest.DiscardUnknown(m) + +func (*CryptoServicePayloadRequest) ProtoMessage() {} + +func (x *CryptoServicePayloadRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CryptoServicePayloadRequest proto.InternalMessageInfo +// Deprecated: Use CryptoServicePayloadRequest.ProtoReflect.Descriptor instead. +func (*CryptoServicePayloadRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{3} +} -func (m *CryptoServicePayloadRequest) GetIds() *EndDeviceIdentifiers { - if m != nil { - return m.Ids +func (x *CryptoServicePayloadRequest) GetIds() *EndDeviceIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *CryptoServicePayloadRequest) GetLorawanVersion() MACVersion { - if m != nil { - return m.LorawanVersion +func (x *CryptoServicePayloadRequest) GetLorawanVersion() MACVersion { + if x != nil { + return x.LorawanVersion } return MACVersion_MAC_UNKNOWN } -func (m *CryptoServicePayloadRequest) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *CryptoServicePayloadRequest) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *CryptoServicePayloadRequest) GetProvisionerId() string { - if m != nil { - return m.ProvisionerId +func (x *CryptoServicePayloadRequest) GetProvisionerId() string { + if x != nil { + return x.ProvisionerId } return "" } -func (m *CryptoServicePayloadRequest) GetProvisioningData() *types.Struct { - if m != nil { - return m.ProvisioningData +func (x *CryptoServicePayloadRequest) GetProvisioningData() *structpb.Struct { + if x != nil { + return x.ProvisioningData } return nil } type CryptoServicePayloadResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Raw output payload. - Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` } -func (m *CryptoServicePayloadResponse) Reset() { *m = CryptoServicePayloadResponse{} } -func (m *CryptoServicePayloadResponse) String() string { return proto.CompactTextString(m) } -func (*CryptoServicePayloadResponse) ProtoMessage() {} -func (*CryptoServicePayloadResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{4} -} -func (m *CryptoServicePayloadResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CryptoServicePayloadResponse.Unmarshal(m, b) -} -func (m *CryptoServicePayloadResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CryptoServicePayloadResponse.Marshal(b, m, deterministic) -} -func (m *CryptoServicePayloadResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CryptoServicePayloadResponse.Merge(m, src) +func (x *CryptoServicePayloadResponse) Reset() { + *x = CryptoServicePayloadResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CryptoServicePayloadResponse) XXX_Size() int { - return xxx_messageInfo_CryptoServicePayloadResponse.Size(m) + +func (x *CryptoServicePayloadResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CryptoServicePayloadResponse) XXX_DiscardUnknown() { - xxx_messageInfo_CryptoServicePayloadResponse.DiscardUnknown(m) + +func (*CryptoServicePayloadResponse) ProtoMessage() {} + +func (x *CryptoServicePayloadResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CryptoServicePayloadResponse proto.InternalMessageInfo +// Deprecated: Use CryptoServicePayloadResponse.ProtoReflect.Descriptor instead. +func (*CryptoServicePayloadResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{4} +} -func (m *CryptoServicePayloadResponse) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *CryptoServicePayloadResponse) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } type JoinAcceptMICRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Request data for the cryptographic operation. PayloadRequest *CryptoServicePayloadRequest `protobuf:"bytes,1,opt,name=payload_request,json=payloadRequest,proto3" json:"payload_request,omitempty"` // LoRaWAN join-request type. JoinRequestType JoinRequestType `protobuf:"varint,2,opt,name=join_request_type,json=joinRequestType,proto3,enum=ttn.lorawan.v3.JoinRequestType" json:"join_request_type,omitempty"` // LoRaWAN DevNonce. - DevNonce []byte `protobuf:"bytes,3,opt,name=dev_nonce,json=devNonce,proto3" json:"dev_nonce,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + DevNonce []byte `protobuf:"bytes,3,opt,name=dev_nonce,json=devNonce,proto3" json:"dev_nonce,omitempty"` } -func (m *JoinAcceptMICRequest) Reset() { *m = JoinAcceptMICRequest{} } -func (m *JoinAcceptMICRequest) String() string { return proto.CompactTextString(m) } -func (*JoinAcceptMICRequest) ProtoMessage() {} -func (*JoinAcceptMICRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{5} -} -func (m *JoinAcceptMICRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_JoinAcceptMICRequest.Unmarshal(m, b) -} -func (m *JoinAcceptMICRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_JoinAcceptMICRequest.Marshal(b, m, deterministic) -} -func (m *JoinAcceptMICRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_JoinAcceptMICRequest.Merge(m, src) +func (x *JoinAcceptMICRequest) Reset() { + *x = JoinAcceptMICRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *JoinAcceptMICRequest) XXX_Size() int { - return xxx_messageInfo_JoinAcceptMICRequest.Size(m) + +func (x *JoinAcceptMICRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *JoinAcceptMICRequest) XXX_DiscardUnknown() { - xxx_messageInfo_JoinAcceptMICRequest.DiscardUnknown(m) + +func (*JoinAcceptMICRequest) ProtoMessage() {} + +func (x *JoinAcceptMICRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_JoinAcceptMICRequest proto.InternalMessageInfo +// Deprecated: Use JoinAcceptMICRequest.ProtoReflect.Descriptor instead. +func (*JoinAcceptMICRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{5} +} -func (m *JoinAcceptMICRequest) GetPayloadRequest() *CryptoServicePayloadRequest { - if m != nil { - return m.PayloadRequest +func (x *JoinAcceptMICRequest) GetPayloadRequest() *CryptoServicePayloadRequest { + if x != nil { + return x.PayloadRequest } return nil } -func (m *JoinAcceptMICRequest) GetJoinRequestType() JoinRequestType { - if m != nil { - return m.JoinRequestType +func (x *JoinAcceptMICRequest) GetJoinRequestType() JoinRequestType { + if x != nil { + return x.JoinRequestType } return JoinRequestType_REJOIN_CONTEXT } -func (m *JoinAcceptMICRequest) GetDevNonce() []byte { - if m != nil { - return m.DevNonce +func (x *JoinAcceptMICRequest) GetDevNonce() []byte { + if x != nil { + return x.DevNonce } return nil } type DeriveSessionKeysRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // End device identifiers to use for key derivation. // The DevAddr must be set in this request. The DevEUI may need to be set, depending on the provisioner. Ids *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` @@ -372,2049 +440,1823 @@ type DeriveSessionKeysRequest struct { // Provisioner that provisioned the end device. ProvisionerId string `protobuf:"bytes,6,opt,name=provisioner_id,json=provisionerId,proto3" json:"provisioner_id,omitempty"` // Provisioning data for the provisioner. - ProvisioningData *types.Struct `protobuf:"bytes,7,opt,name=provisioning_data,json=provisioningData,proto3" json:"provisioning_data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ProvisioningData *structpb.Struct `protobuf:"bytes,7,opt,name=provisioning_data,json=provisioningData,proto3" json:"provisioning_data,omitempty"` } -func (m *DeriveSessionKeysRequest) Reset() { *m = DeriveSessionKeysRequest{} } -func (m *DeriveSessionKeysRequest) String() string { return proto.CompactTextString(m) } -func (*DeriveSessionKeysRequest) ProtoMessage() {} -func (*DeriveSessionKeysRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{6} -} -func (m *DeriveSessionKeysRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeriveSessionKeysRequest.Unmarshal(m, b) -} -func (m *DeriveSessionKeysRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeriveSessionKeysRequest.Marshal(b, m, deterministic) -} -func (m *DeriveSessionKeysRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeriveSessionKeysRequest.Merge(m, src) +func (x *DeriveSessionKeysRequest) Reset() { + *x = DeriveSessionKeysRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DeriveSessionKeysRequest) XXX_Size() int { - return xxx_messageInfo_DeriveSessionKeysRequest.Size(m) + +func (x *DeriveSessionKeysRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DeriveSessionKeysRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DeriveSessionKeysRequest.DiscardUnknown(m) + +func (*DeriveSessionKeysRequest) ProtoMessage() {} + +func (x *DeriveSessionKeysRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DeriveSessionKeysRequest proto.InternalMessageInfo +// Deprecated: Use DeriveSessionKeysRequest.ProtoReflect.Descriptor instead. +func (*DeriveSessionKeysRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{6} +} -func (m *DeriveSessionKeysRequest) GetIds() *EndDeviceIdentifiers { - if m != nil { - return m.Ids +func (x *DeriveSessionKeysRequest) GetIds() *EndDeviceIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *DeriveSessionKeysRequest) GetLorawanVersion() MACVersion { - if m != nil { - return m.LorawanVersion +func (x *DeriveSessionKeysRequest) GetLorawanVersion() MACVersion { + if x != nil { + return x.LorawanVersion } return MACVersion_MAC_UNKNOWN } -func (m *DeriveSessionKeysRequest) GetJoinNonce() []byte { - if m != nil { - return m.JoinNonce +func (x *DeriveSessionKeysRequest) GetJoinNonce() []byte { + if x != nil { + return x.JoinNonce } return nil } -func (m *DeriveSessionKeysRequest) GetDevNonce() []byte { - if m != nil { - return m.DevNonce +func (x *DeriveSessionKeysRequest) GetDevNonce() []byte { + if x != nil { + return x.DevNonce } return nil } -func (m *DeriveSessionKeysRequest) GetNetId() []byte { - if m != nil { - return m.NetId +func (x *DeriveSessionKeysRequest) GetNetId() []byte { + if x != nil { + return x.NetId } return nil } -func (m *DeriveSessionKeysRequest) GetProvisionerId() string { - if m != nil { - return m.ProvisionerId +func (x *DeriveSessionKeysRequest) GetProvisionerId() string { + if x != nil { + return x.ProvisionerId } return "" } -func (m *DeriveSessionKeysRequest) GetProvisioningData() *types.Struct { - if m != nil { - return m.ProvisioningData +func (x *DeriveSessionKeysRequest) GetProvisioningData() *structpb.Struct { + if x != nil { + return x.ProvisioningData } return nil } type GetRootKeysRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // End device identifiers to request the root keys for. Ids *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` // Provisioner that provisioned the end device. ProvisionerId string `protobuf:"bytes,2,opt,name=provisioner_id,json=provisionerId,proto3" json:"provisioner_id,omitempty"` // Provisioning data for the provisioner. - ProvisioningData *types.Struct `protobuf:"bytes,3,opt,name=provisioning_data,json=provisioningData,proto3" json:"provisioning_data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ProvisioningData *structpb.Struct `protobuf:"bytes,3,opt,name=provisioning_data,json=provisioningData,proto3" json:"provisioning_data,omitempty"` } -func (m *GetRootKeysRequest) Reset() { *m = GetRootKeysRequest{} } -func (m *GetRootKeysRequest) String() string { return proto.CompactTextString(m) } -func (*GetRootKeysRequest) ProtoMessage() {} -func (*GetRootKeysRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{7} -} -func (m *GetRootKeysRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetRootKeysRequest.Unmarshal(m, b) -} -func (m *GetRootKeysRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetRootKeysRequest.Marshal(b, m, deterministic) -} -func (m *GetRootKeysRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetRootKeysRequest.Merge(m, src) +func (x *GetRootKeysRequest) Reset() { + *x = GetRootKeysRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetRootKeysRequest) XXX_Size() int { - return xxx_messageInfo_GetRootKeysRequest.Size(m) + +func (x *GetRootKeysRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetRootKeysRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetRootKeysRequest.DiscardUnknown(m) + +func (*GetRootKeysRequest) ProtoMessage() {} + +func (x *GetRootKeysRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetRootKeysRequest proto.InternalMessageInfo +// Deprecated: Use GetRootKeysRequest.ProtoReflect.Descriptor instead. +func (*GetRootKeysRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{7} +} -func (m *GetRootKeysRequest) GetIds() *EndDeviceIdentifiers { - if m != nil { - return m.Ids +func (x *GetRootKeysRequest) GetIds() *EndDeviceIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *GetRootKeysRequest) GetProvisionerId() string { - if m != nil { - return m.ProvisionerId +func (x *GetRootKeysRequest) GetProvisionerId() string { + if x != nil { + return x.ProvisionerId } return "" } -func (m *GetRootKeysRequest) GetProvisioningData() *types.Struct { - if m != nil { - return m.ProvisioningData +func (x *GetRootKeysRequest) GetProvisioningData() *structpb.Struct { + if x != nil { + return x.ProvisioningData } return nil } // Deprecated: Do not use. type ProvisionEndDevicesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` // ID of the provisioner service as configured in the Join Server. ProvisionerId string `protobuf:"bytes,2,opt,name=provisioner_id,json=provisionerId,proto3" json:"provisioner_id,omitempty"` // Vendor-specific provisioning data. ProvisioningData []byte `protobuf:"bytes,3,opt,name=provisioning_data,json=provisioningData,proto3" json:"provisioning_data,omitempty"` - // Types that are valid to be assigned to EndDevices: + // Types that are assignable to EndDevices: // *ProvisionEndDevicesRequest_List // *ProvisionEndDevicesRequest_Range // *ProvisionEndDevicesRequest_FromData - EndDevices isProvisionEndDevicesRequest_EndDevices `protobuf_oneof:"end_devices"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + EndDevices isProvisionEndDevicesRequest_EndDevices `protobuf_oneof:"end_devices"` } -func (m *ProvisionEndDevicesRequest) Reset() { *m = ProvisionEndDevicesRequest{} } -func (m *ProvisionEndDevicesRequest) String() string { return proto.CompactTextString(m) } -func (*ProvisionEndDevicesRequest) ProtoMessage() {} -func (*ProvisionEndDevicesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{8} -} -func (m *ProvisionEndDevicesRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ProvisionEndDevicesRequest.Unmarshal(m, b) -} -func (m *ProvisionEndDevicesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ProvisionEndDevicesRequest.Marshal(b, m, deterministic) -} -func (m *ProvisionEndDevicesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ProvisionEndDevicesRequest.Merge(m, src) -} -func (m *ProvisionEndDevicesRequest) XXX_Size() int { - return xxx_messageInfo_ProvisionEndDevicesRequest.Size(m) +func (x *ProvisionEndDevicesRequest) Reset() { + *x = ProvisionEndDevicesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ProvisionEndDevicesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ProvisionEndDevicesRequest.DiscardUnknown(m) + +func (x *ProvisionEndDevicesRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ProvisionEndDevicesRequest proto.InternalMessageInfo +func (*ProvisionEndDevicesRequest) ProtoMessage() {} -type isProvisionEndDevicesRequest_EndDevices interface { - isProvisionEndDevicesRequest_EndDevices() +func (x *ProvisionEndDevicesRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type ProvisionEndDevicesRequest_List struct { - List *ProvisionEndDevicesRequest_IdentifiersList `protobuf:"bytes,4,opt,name=list,proto3,oneof" json:"list,omitempty"` -} -type ProvisionEndDevicesRequest_Range struct { - Range *ProvisionEndDevicesRequest_IdentifiersRange `protobuf:"bytes,5,opt,name=range,proto3,oneof" json:"range,omitempty"` -} -type ProvisionEndDevicesRequest_FromData struct { - FromData *ProvisionEndDevicesRequest_IdentifiersFromData `protobuf:"bytes,6,opt,name=from_data,json=fromData,proto3,oneof" json:"from_data,omitempty"` +// Deprecated: Use ProvisionEndDevicesRequest.ProtoReflect.Descriptor instead. +func (*ProvisionEndDevicesRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{8} } -func (*ProvisionEndDevicesRequest_List) isProvisionEndDevicesRequest_EndDevices() {} -func (*ProvisionEndDevicesRequest_Range) isProvisionEndDevicesRequest_EndDevices() {} -func (*ProvisionEndDevicesRequest_FromData) isProvisionEndDevicesRequest_EndDevices() {} - -func (m *ProvisionEndDevicesRequest) GetEndDevices() isProvisionEndDevicesRequest_EndDevices { - if m != nil { - return m.EndDevices +func (x *ProvisionEndDevicesRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *ProvisionEndDevicesRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *ProvisionEndDevicesRequest) GetProvisionerId() string { + if x != nil { + return x.ProvisionerId } - return nil + return "" } -func (m *ProvisionEndDevicesRequest) GetProvisionerId() string { - if m != nil { - return m.ProvisionerId +func (x *ProvisionEndDevicesRequest) GetProvisioningData() []byte { + if x != nil { + return x.ProvisioningData } - return "" + return nil } -func (m *ProvisionEndDevicesRequest) GetProvisioningData() []byte { +func (m *ProvisionEndDevicesRequest) GetEndDevices() isProvisionEndDevicesRequest_EndDevices { if m != nil { - return m.ProvisioningData + return m.EndDevices } return nil } -func (m *ProvisionEndDevicesRequest) GetList() *ProvisionEndDevicesRequest_IdentifiersList { - if x, ok := m.GetEndDevices().(*ProvisionEndDevicesRequest_List); ok { +func (x *ProvisionEndDevicesRequest) GetList() *ProvisionEndDevicesRequest_IdentifiersList { + if x, ok := x.GetEndDevices().(*ProvisionEndDevicesRequest_List); ok { return x.List } return nil } -func (m *ProvisionEndDevicesRequest) GetRange() *ProvisionEndDevicesRequest_IdentifiersRange { - if x, ok := m.GetEndDevices().(*ProvisionEndDevicesRequest_Range); ok { +func (x *ProvisionEndDevicesRequest) GetRange() *ProvisionEndDevicesRequest_IdentifiersRange { + if x, ok := x.GetEndDevices().(*ProvisionEndDevicesRequest_Range); ok { return x.Range } return nil } -func (m *ProvisionEndDevicesRequest) GetFromData() *ProvisionEndDevicesRequest_IdentifiersFromData { - if x, ok := m.GetEndDevices().(*ProvisionEndDevicesRequest_FromData); ok { +func (x *ProvisionEndDevicesRequest) GetFromData() *ProvisionEndDevicesRequest_IdentifiersFromData { + if x, ok := x.GetEndDevices().(*ProvisionEndDevicesRequest_FromData); ok { return x.FromData } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*ProvisionEndDevicesRequest) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*ProvisionEndDevicesRequest_List)(nil), - (*ProvisionEndDevicesRequest_Range)(nil), - (*ProvisionEndDevicesRequest_FromData)(nil), - } +type isProvisionEndDevicesRequest_EndDevices interface { + isProvisionEndDevicesRequest_EndDevices() } -type ProvisionEndDevicesRequest_IdentifiersList struct { - JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` - EndDeviceIds []*EndDeviceIdentifiers `protobuf:"bytes,2,rep,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type ProvisionEndDevicesRequest_List struct { + // List of device identifiers that will be provisioned. + // The device identifiers must contain device_id and dev_eui. + // If set, the application_ids must equal the provision request's application_ids. + // The number of entries in data must match the number of given identifiers. + List *ProvisionEndDevicesRequest_IdentifiersList `protobuf:"bytes,4,opt,name=list,proto3,oneof"` } -func (m *ProvisionEndDevicesRequest_IdentifiersList) Reset() { - *m = ProvisionEndDevicesRequest_IdentifiersList{} -} -func (m *ProvisionEndDevicesRequest_IdentifiersList) String() string { - return proto.CompactTextString(m) +type ProvisionEndDevicesRequest_Range struct { + // Provision devices in a range. + // The device_id will be generated by the provisioner from the vendor-specific data. + // The dev_eui will be issued from the given start_dev_eui. + Range *ProvisionEndDevicesRequest_IdentifiersRange `protobuf:"bytes,5,opt,name=range,proto3,oneof"` } -func (*ProvisionEndDevicesRequest_IdentifiersList) ProtoMessage() {} -func (*ProvisionEndDevicesRequest_IdentifiersList) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{8, 0} + +type ProvisionEndDevicesRequest_FromData struct { + // Provision devices with identifiers from the given data. + // The device_id and dev_eui will be generated by the provisioner from the vendor-specific data. + FromData *ProvisionEndDevicesRequest_IdentifiersFromData `protobuf:"bytes,6,opt,name=from_data,json=fromData,proto3,oneof"` } -func (m *ProvisionEndDevicesRequest_IdentifiersList) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersList.Unmarshal(m, b) + +func (*ProvisionEndDevicesRequest_List) isProvisionEndDevicesRequest_EndDevices() {} + +func (*ProvisionEndDevicesRequest_Range) isProvisionEndDevicesRequest_EndDevices() {} + +func (*ProvisionEndDevicesRequest_FromData) isProvisionEndDevicesRequest_EndDevices() {} + +type ApplicationActivationSettings struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The KEK label to use for wrapping application keys. + KekLabel string `protobuf:"bytes,1,opt,name=kek_label,json=kekLabel,proto3" json:"kek_label,omitempty"` + // The (encrypted) Key Encryption Key. + Kek *KeyEnvelope `protobuf:"bytes,2,opt,name=kek,proto3" json:"kek,omitempty"` + // Home NetID. + HomeNetId []byte `protobuf:"bytes,3,opt,name=home_net_id,json=homeNetId,proto3" json:"home_net_id,omitempty"` + // The AS-ID of the Application Server to use. + ApplicationServerId string `protobuf:"bytes,4,opt,name=application_server_id,json=applicationServerId,proto3" json:"application_server_id,omitempty"` } -func (m *ProvisionEndDevicesRequest_IdentifiersList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersList.Marshal(b, m, deterministic) + +func (x *ApplicationActivationSettings) Reset() { + *x = ApplicationActivationSettings{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ProvisionEndDevicesRequest_IdentifiersList) XXX_Merge(src proto.Message) { - xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersList.Merge(m, src) + +func (x *ApplicationActivationSettings) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ProvisionEndDevicesRequest_IdentifiersList) XXX_Size() int { - return xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersList.Size(m) + +func (*ApplicationActivationSettings) ProtoMessage() {} + +func (x *ApplicationActivationSettings) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *ProvisionEndDevicesRequest_IdentifiersList) XXX_DiscardUnknown() { - xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersList.DiscardUnknown(m) + +// Deprecated: Use ApplicationActivationSettings.ProtoReflect.Descriptor instead. +func (*ApplicationActivationSettings) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{9} } -var xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersList proto.InternalMessageInfo +func (x *ApplicationActivationSettings) GetKekLabel() string { + if x != nil { + return x.KekLabel + } + return "" +} -func (m *ProvisionEndDevicesRequest_IdentifiersList) GetJoinEui() []byte { - if m != nil { - return m.JoinEui +func (x *ApplicationActivationSettings) GetKek() *KeyEnvelope { + if x != nil { + return x.Kek } return nil } -func (m *ProvisionEndDevicesRequest_IdentifiersList) GetEndDeviceIds() []*EndDeviceIdentifiers { - if m != nil { - return m.EndDeviceIds +func (x *ApplicationActivationSettings) GetHomeNetId() []byte { + if x != nil { + return x.HomeNetId } return nil } -type ProvisionEndDevicesRequest_IdentifiersRange struct { - JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` - // DevEUI to start issuing from. - StartDevEui []byte `protobuf:"bytes,2,opt,name=start_dev_eui,json=startDevEui,proto3" json:"start_dev_eui,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *ApplicationActivationSettings) GetApplicationServerId() string { + if x != nil { + return x.ApplicationServerId + } + return "" } -func (m *ProvisionEndDevicesRequest_IdentifiersRange) Reset() { - *m = ProvisionEndDevicesRequest_IdentifiersRange{} -} -func (m *ProvisionEndDevicesRequest_IdentifiersRange) String() string { - return proto.CompactTextString(m) -} -func (*ProvisionEndDevicesRequest_IdentifiersRange) ProtoMessage() {} -func (*ProvisionEndDevicesRequest_IdentifiersRange) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{8, 1} -} -func (m *ProvisionEndDevicesRequest_IdentifiersRange) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersRange.Unmarshal(m, b) -} -func (m *ProvisionEndDevicesRequest_IdentifiersRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersRange.Marshal(b, m, deterministic) +type GetApplicationActivationSettingsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *ProvisionEndDevicesRequest_IdentifiersRange) XXX_Merge(src proto.Message) { - xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersRange.Merge(m, src) + +func (x *GetApplicationActivationSettingsRequest) Reset() { + *x = GetApplicationActivationSettingsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ProvisionEndDevicesRequest_IdentifiersRange) XXX_Size() int { - return xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersRange.Size(m) + +func (x *GetApplicationActivationSettingsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ProvisionEndDevicesRequest_IdentifiersRange) XXX_DiscardUnknown() { - xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersRange.DiscardUnknown(m) + +func (*GetApplicationActivationSettingsRequest) ProtoMessage() {} + +func (x *GetApplicationActivationSettingsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersRange proto.InternalMessageInfo +// Deprecated: Use GetApplicationActivationSettingsRequest.ProtoReflect.Descriptor instead. +func (*GetApplicationActivationSettingsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{10} +} -func (m *ProvisionEndDevicesRequest_IdentifiersRange) GetJoinEui() []byte { - if m != nil { - return m.JoinEui +func (x *GetApplicationActivationSettingsRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *ProvisionEndDevicesRequest_IdentifiersRange) GetStartDevEui() []byte { - if m != nil { - return m.StartDevEui +func (x *GetApplicationActivationSettingsRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -type ProvisionEndDevicesRequest_IdentifiersFromData struct { - JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type SetApplicationActivationSettingsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ProvisionEndDevicesRequest_IdentifiersFromData) Reset() { - *m = ProvisionEndDevicesRequest_IdentifiersFromData{} -} -func (m *ProvisionEndDevicesRequest_IdentifiersFromData) String() string { - return proto.CompactTextString(m) -} -func (*ProvisionEndDevicesRequest_IdentifiersFromData) ProtoMessage() {} -func (*ProvisionEndDevicesRequest_IdentifiersFromData) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{8, 2} -} -func (m *ProvisionEndDevicesRequest_IdentifiersFromData) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersFromData.Unmarshal(m, b) + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` + Settings *ApplicationActivationSettings `protobuf:"bytes,2,opt,name=settings,proto3" json:"settings,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *ProvisionEndDevicesRequest_IdentifiersFromData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersFromData.Marshal(b, m, deterministic) + +func (x *SetApplicationActivationSettingsRequest) Reset() { + *x = SetApplicationActivationSettingsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ProvisionEndDevicesRequest_IdentifiersFromData) XXX_Merge(src proto.Message) { - xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersFromData.Merge(m, src) + +func (x *SetApplicationActivationSettingsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ProvisionEndDevicesRequest_IdentifiersFromData) XXX_Size() int { - return xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersFromData.Size(m) + +func (*SetApplicationActivationSettingsRequest) ProtoMessage() {} + +func (x *SetApplicationActivationSettingsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *ProvisionEndDevicesRequest_IdentifiersFromData) XXX_DiscardUnknown() { - xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersFromData.DiscardUnknown(m) + +// Deprecated: Use SetApplicationActivationSettingsRequest.ProtoReflect.Descriptor instead. +func (*SetApplicationActivationSettingsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{11} } -var xxx_messageInfo_ProvisionEndDevicesRequest_IdentifiersFromData proto.InternalMessageInfo +func (x *SetApplicationActivationSettingsRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds + } + return nil +} -func (m *ProvisionEndDevicesRequest_IdentifiersFromData) GetJoinEui() []byte { - if m != nil { - return m.JoinEui +func (x *SetApplicationActivationSettingsRequest) GetSettings() *ApplicationActivationSettings { + if x != nil { + return x.Settings } return nil } -type ApplicationActivationSettings struct { - // The KEK label to use for wrapping application keys. - KekLabel string `protobuf:"bytes,1,opt,name=kek_label,json=kekLabel,proto3" json:"kek_label,omitempty"` - // The (encrypted) Key Encryption Key. - Kek *KeyEnvelope `protobuf:"bytes,2,opt,name=kek,proto3" json:"kek,omitempty"` - // Home NetID. - HomeNetId []byte `protobuf:"bytes,3,opt,name=home_net_id,json=homeNetId,proto3" json:"home_net_id,omitempty"` - // The AS-ID of the Application Server to use. - ApplicationServerId string `protobuf:"bytes,4,opt,name=application_server_id,json=applicationServerId,proto3" json:"application_server_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *SetApplicationActivationSettingsRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask + } + return nil } -func (m *ApplicationActivationSettings) Reset() { *m = ApplicationActivationSettings{} } -func (m *ApplicationActivationSettings) String() string { return proto.CompactTextString(m) } -func (*ApplicationActivationSettings) ProtoMessage() {} -func (*ApplicationActivationSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{9} +type DeleteApplicationActivationSettingsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` } -func (m *ApplicationActivationSettings) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationActivationSettings.Unmarshal(m, b) -} -func (m *ApplicationActivationSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationActivationSettings.Marshal(b, m, deterministic) -} -func (m *ApplicationActivationSettings) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationActivationSettings.Merge(m, src) -} -func (m *ApplicationActivationSettings) XXX_Size() int { - return xxx_messageInfo_ApplicationActivationSettings.Size(m) -} -func (m *ApplicationActivationSettings) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationActivationSettings.DiscardUnknown(m) -} - -var xxx_messageInfo_ApplicationActivationSettings proto.InternalMessageInfo -func (m *ApplicationActivationSettings) GetKekLabel() string { - if m != nil { - return m.KekLabel +func (x *DeleteApplicationActivationSettingsRequest) Reset() { + *x = DeleteApplicationActivationSettingsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (m *ApplicationActivationSettings) GetKek() *KeyEnvelope { - if m != nil { - return m.Kek - } - return nil +func (x *DeleteApplicationActivationSettingsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationActivationSettings) GetHomeNetId() []byte { - if m != nil { - return m.HomeNetId - } - return nil -} +func (*DeleteApplicationActivationSettingsRequest) ProtoMessage() {} -func (m *ApplicationActivationSettings) GetApplicationServerId() string { - if m != nil { - return m.ApplicationServerId +func (x *DeleteApplicationActivationSettingsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" -} - -type GetApplicationActivationSettingsRequest struct { - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + return mi.MessageOf(x) } -func (m *GetApplicationActivationSettingsRequest) Reset() { - *m = GetApplicationActivationSettingsRequest{} -} -func (m *GetApplicationActivationSettingsRequest) String() string { return proto.CompactTextString(m) } -func (*GetApplicationActivationSettingsRequest) ProtoMessage() {} -func (*GetApplicationActivationSettingsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{10} -} -func (m *GetApplicationActivationSettingsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetApplicationActivationSettingsRequest.Unmarshal(m, b) -} -func (m *GetApplicationActivationSettingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetApplicationActivationSettingsRequest.Marshal(b, m, deterministic) -} -func (m *GetApplicationActivationSettingsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetApplicationActivationSettingsRequest.Merge(m, src) -} -func (m *GetApplicationActivationSettingsRequest) XXX_Size() int { - return xxx_messageInfo_GetApplicationActivationSettingsRequest.Size(m) -} -func (m *GetApplicationActivationSettingsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetApplicationActivationSettingsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetApplicationActivationSettingsRequest proto.InternalMessageInfo - -func (m *GetApplicationActivationSettingsRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds - } - return nil +// Deprecated: Use DeleteApplicationActivationSettingsRequest.ProtoReflect.Descriptor instead. +func (*DeleteApplicationActivationSettingsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{12} } -func (m *GetApplicationActivationSettingsRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *DeleteApplicationActivationSettingsRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -type SetApplicationActivationSettingsRequest struct { - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` - Settings *ApplicationActivationSettings `protobuf:"bytes,2,opt,name=settings,proto3" json:"settings,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SetApplicationActivationSettingsRequest) Reset() { - *m = SetApplicationActivationSettingsRequest{} -} -func (m *SetApplicationActivationSettingsRequest) String() string { return proto.CompactTextString(m) } -func (*SetApplicationActivationSettingsRequest) ProtoMessage() {} -func (*SetApplicationActivationSettingsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{11} -} -func (m *SetApplicationActivationSettingsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetApplicationActivationSettingsRequest.Unmarshal(m, b) -} -func (m *SetApplicationActivationSettingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetApplicationActivationSettingsRequest.Marshal(b, m, deterministic) -} -func (m *SetApplicationActivationSettingsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetApplicationActivationSettingsRequest.Merge(m, src) -} -func (m *SetApplicationActivationSettingsRequest) XXX_Size() int { - return xxx_messageInfo_SetApplicationActivationSettingsRequest.Size(m) -} -func (m *SetApplicationActivationSettingsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetApplicationActivationSettingsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_SetApplicationActivationSettingsRequest proto.InternalMessageInfo - -func (m *SetApplicationActivationSettingsRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds - } - return nil -} +type JoinEUIPrefix struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SetApplicationActivationSettingsRequest) GetSettings() *ApplicationActivationSettings { - if m != nil { - return m.Settings - } - return nil + JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` + Length uint32 `protobuf:"varint,2,opt,name=length,proto3" json:"length,omitempty"` } -func (m *SetApplicationActivationSettingsRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *JoinEUIPrefix) Reset() { + *x = JoinEUIPrefix{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -type DeleteApplicationActivationSettingsRequest struct { - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *JoinEUIPrefix) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DeleteApplicationActivationSettingsRequest) Reset() { - *m = DeleteApplicationActivationSettingsRequest{} -} -func (m *DeleteApplicationActivationSettingsRequest) String() string { - return proto.CompactTextString(m) -} -func (*DeleteApplicationActivationSettingsRequest) ProtoMessage() {} -func (*DeleteApplicationActivationSettingsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{12} -} -func (m *DeleteApplicationActivationSettingsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteApplicationActivationSettingsRequest.Unmarshal(m, b) -} -func (m *DeleteApplicationActivationSettingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteApplicationActivationSettingsRequest.Marshal(b, m, deterministic) -} -func (m *DeleteApplicationActivationSettingsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteApplicationActivationSettingsRequest.Merge(m, src) -} -func (m *DeleteApplicationActivationSettingsRequest) XXX_Size() int { - return xxx_messageInfo_DeleteApplicationActivationSettingsRequest.Size(m) -} -func (m *DeleteApplicationActivationSettingsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteApplicationActivationSettingsRequest.DiscardUnknown(m) -} +func (*JoinEUIPrefix) ProtoMessage() {} -var xxx_messageInfo_DeleteApplicationActivationSettingsRequest proto.InternalMessageInfo - -func (m *DeleteApplicationActivationSettingsRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *JoinEUIPrefix) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type JoinEUIPrefix struct { - JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` - Length uint32 `protobuf:"varint,2,opt,name=length,proto3" json:"length,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *JoinEUIPrefix) Reset() { *m = JoinEUIPrefix{} } -func (m *JoinEUIPrefix) String() string { return proto.CompactTextString(m) } -func (*JoinEUIPrefix) ProtoMessage() {} +// Deprecated: Use JoinEUIPrefix.ProtoReflect.Descriptor instead. func (*JoinEUIPrefix) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{13} -} -func (m *JoinEUIPrefix) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_JoinEUIPrefix.Unmarshal(m, b) -} -func (m *JoinEUIPrefix) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_JoinEUIPrefix.Marshal(b, m, deterministic) -} -func (m *JoinEUIPrefix) XXX_Merge(src proto.Message) { - xxx_messageInfo_JoinEUIPrefix.Merge(m, src) -} -func (m *JoinEUIPrefix) XXX_Size() int { - return xxx_messageInfo_JoinEUIPrefix.Size(m) -} -func (m *JoinEUIPrefix) XXX_DiscardUnknown() { - xxx_messageInfo_JoinEUIPrefix.DiscardUnknown(m) + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{13} } -var xxx_messageInfo_JoinEUIPrefix proto.InternalMessageInfo - -func (m *JoinEUIPrefix) GetJoinEui() []byte { - if m != nil { - return m.JoinEui +func (x *JoinEUIPrefix) GetJoinEui() []byte { + if x != nil { + return x.JoinEui } return nil } -func (m *JoinEUIPrefix) GetLength() uint32 { - if m != nil { - return m.Length +func (x *JoinEUIPrefix) GetLength() uint32 { + if x != nil { + return x.Length } return 0 } type JoinEUIPrefixes struct { - Prefixes []*JoinEUIPrefix `protobuf:"bytes,1,rep,name=prefixes,proto3" json:"prefixes,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *JoinEUIPrefixes) Reset() { *m = JoinEUIPrefixes{} } -func (m *JoinEUIPrefixes) String() string { return proto.CompactTextString(m) } -func (*JoinEUIPrefixes) ProtoMessage() {} -func (*JoinEUIPrefixes) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{14} + Prefixes []*JoinEUIPrefix `protobuf:"bytes,1,rep,name=prefixes,proto3" json:"prefixes,omitempty"` } -func (m *JoinEUIPrefixes) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_JoinEUIPrefixes.Unmarshal(m, b) -} -func (m *JoinEUIPrefixes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_JoinEUIPrefixes.Marshal(b, m, deterministic) -} -func (m *JoinEUIPrefixes) XXX_Merge(src proto.Message) { - xxx_messageInfo_JoinEUIPrefixes.Merge(m, src) -} -func (m *JoinEUIPrefixes) XXX_Size() int { - return xxx_messageInfo_JoinEUIPrefixes.Size(m) -} -func (m *JoinEUIPrefixes) XXX_DiscardUnknown() { - xxx_messageInfo_JoinEUIPrefixes.DiscardUnknown(m) -} - -var xxx_messageInfo_JoinEUIPrefixes proto.InternalMessageInfo -func (m *JoinEUIPrefixes) GetPrefixes() []*JoinEUIPrefix { - if m != nil { - return m.Prefixes +func (x *JoinEUIPrefixes) Reset() { + *x = JoinEUIPrefixes{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -type GetDefaultJoinEUIResponse struct { - JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *JoinEUIPrefixes) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetDefaultJoinEUIResponse) Reset() { *m = GetDefaultJoinEUIResponse{} } -func (m *GetDefaultJoinEUIResponse) String() string { return proto.CompactTextString(m) } -func (*GetDefaultJoinEUIResponse) ProtoMessage() {} -func (*GetDefaultJoinEUIResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_1b695d5f526759a7, []int{15} -} -func (m *GetDefaultJoinEUIResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetDefaultJoinEUIResponse.Unmarshal(m, b) -} -func (m *GetDefaultJoinEUIResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetDefaultJoinEUIResponse.Marshal(b, m, deterministic) -} -func (m *GetDefaultJoinEUIResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetDefaultJoinEUIResponse.Merge(m, src) -} -func (m *GetDefaultJoinEUIResponse) XXX_Size() int { - return xxx_messageInfo_GetDefaultJoinEUIResponse.Size(m) -} -func (m *GetDefaultJoinEUIResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetDefaultJoinEUIResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetDefaultJoinEUIResponse proto.InternalMessageInfo - -func (m *GetDefaultJoinEUIResponse) GetJoinEui() []byte { - if m != nil { - return m.JoinEui - } - return nil -} - -func init() { - proto.RegisterType((*SessionKeyRequest)(nil), "ttn.lorawan.v3.SessionKeyRequest") - golang_proto.RegisterType((*SessionKeyRequest)(nil), "ttn.lorawan.v3.SessionKeyRequest") - proto.RegisterType((*NwkSKeysResponse)(nil), "ttn.lorawan.v3.NwkSKeysResponse") - golang_proto.RegisterType((*NwkSKeysResponse)(nil), "ttn.lorawan.v3.NwkSKeysResponse") - proto.RegisterType((*AppSKeyResponse)(nil), "ttn.lorawan.v3.AppSKeyResponse") - golang_proto.RegisterType((*AppSKeyResponse)(nil), "ttn.lorawan.v3.AppSKeyResponse") - proto.RegisterType((*CryptoServicePayloadRequest)(nil), "ttn.lorawan.v3.CryptoServicePayloadRequest") - golang_proto.RegisterType((*CryptoServicePayloadRequest)(nil), "ttn.lorawan.v3.CryptoServicePayloadRequest") - proto.RegisterType((*CryptoServicePayloadResponse)(nil), "ttn.lorawan.v3.CryptoServicePayloadResponse") - golang_proto.RegisterType((*CryptoServicePayloadResponse)(nil), "ttn.lorawan.v3.CryptoServicePayloadResponse") - proto.RegisterType((*JoinAcceptMICRequest)(nil), "ttn.lorawan.v3.JoinAcceptMICRequest") - golang_proto.RegisterType((*JoinAcceptMICRequest)(nil), "ttn.lorawan.v3.JoinAcceptMICRequest") - proto.RegisterType((*DeriveSessionKeysRequest)(nil), "ttn.lorawan.v3.DeriveSessionKeysRequest") - golang_proto.RegisterType((*DeriveSessionKeysRequest)(nil), "ttn.lorawan.v3.DeriveSessionKeysRequest") - proto.RegisterType((*GetRootKeysRequest)(nil), "ttn.lorawan.v3.GetRootKeysRequest") - golang_proto.RegisterType((*GetRootKeysRequest)(nil), "ttn.lorawan.v3.GetRootKeysRequest") - proto.RegisterType((*ProvisionEndDevicesRequest)(nil), "ttn.lorawan.v3.ProvisionEndDevicesRequest") - golang_proto.RegisterType((*ProvisionEndDevicesRequest)(nil), "ttn.lorawan.v3.ProvisionEndDevicesRequest") - proto.RegisterType((*ProvisionEndDevicesRequest_IdentifiersList)(nil), "ttn.lorawan.v3.ProvisionEndDevicesRequest.IdentifiersList") - golang_proto.RegisterType((*ProvisionEndDevicesRequest_IdentifiersList)(nil), "ttn.lorawan.v3.ProvisionEndDevicesRequest.IdentifiersList") - proto.RegisterType((*ProvisionEndDevicesRequest_IdentifiersRange)(nil), "ttn.lorawan.v3.ProvisionEndDevicesRequest.IdentifiersRange") - golang_proto.RegisterType((*ProvisionEndDevicesRequest_IdentifiersRange)(nil), "ttn.lorawan.v3.ProvisionEndDevicesRequest.IdentifiersRange") - proto.RegisterType((*ProvisionEndDevicesRequest_IdentifiersFromData)(nil), "ttn.lorawan.v3.ProvisionEndDevicesRequest.IdentifiersFromData") - golang_proto.RegisterType((*ProvisionEndDevicesRequest_IdentifiersFromData)(nil), "ttn.lorawan.v3.ProvisionEndDevicesRequest.IdentifiersFromData") - proto.RegisterType((*ApplicationActivationSettings)(nil), "ttn.lorawan.v3.ApplicationActivationSettings") - golang_proto.RegisterType((*ApplicationActivationSettings)(nil), "ttn.lorawan.v3.ApplicationActivationSettings") - proto.RegisterType((*GetApplicationActivationSettingsRequest)(nil), "ttn.lorawan.v3.GetApplicationActivationSettingsRequest") - golang_proto.RegisterType((*GetApplicationActivationSettingsRequest)(nil), "ttn.lorawan.v3.GetApplicationActivationSettingsRequest") - proto.RegisterType((*SetApplicationActivationSettingsRequest)(nil), "ttn.lorawan.v3.SetApplicationActivationSettingsRequest") - golang_proto.RegisterType((*SetApplicationActivationSettingsRequest)(nil), "ttn.lorawan.v3.SetApplicationActivationSettingsRequest") - proto.RegisterType((*DeleteApplicationActivationSettingsRequest)(nil), "ttn.lorawan.v3.DeleteApplicationActivationSettingsRequest") - golang_proto.RegisterType((*DeleteApplicationActivationSettingsRequest)(nil), "ttn.lorawan.v3.DeleteApplicationActivationSettingsRequest") - proto.RegisterType((*JoinEUIPrefix)(nil), "ttn.lorawan.v3.JoinEUIPrefix") - golang_proto.RegisterType((*JoinEUIPrefix)(nil), "ttn.lorawan.v3.JoinEUIPrefix") - proto.RegisterType((*JoinEUIPrefixes)(nil), "ttn.lorawan.v3.JoinEUIPrefixes") - golang_proto.RegisterType((*JoinEUIPrefixes)(nil), "ttn.lorawan.v3.JoinEUIPrefixes") - proto.RegisterType((*GetDefaultJoinEUIResponse)(nil), "ttn.lorawan.v3.GetDefaultJoinEUIResponse") - golang_proto.RegisterType((*GetDefaultJoinEUIResponse)(nil), "ttn.lorawan.v3.GetDefaultJoinEUIResponse") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/joinserver.proto", fileDescriptor_1b695d5f526759a7) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/joinserver.proto", fileDescriptor_1b695d5f526759a7) -} - -var fileDescriptor_1b695d5f526759a7 = []byte{ - // 2162 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x59, 0x4b, 0x6c, 0x1b, 0xc7, - 0x19, 0xce, 0x2c, 0x29, 0x8a, 0x1c, 0x59, 0x94, 0x3c, 0x7e, 0xd1, 0xb4, 0x1d, 0xdb, 0x1b, 0xa5, - 0x76, 0x94, 0xf0, 0x51, 0x0a, 0x81, 0x13, 0xa5, 0xa8, 0x4b, 0x8a, 0xb4, 0x44, 0xc9, 0x12, 0x9c, - 0xa5, 0x5d, 0x24, 0x4e, 0x6d, 0x62, 0xcd, 0x1d, 0x52, 0x6b, 0x2e, 0x67, 0xb7, 0x3b, 0x43, 0xca, - 0x74, 0x6a, 0xa0, 0xf0, 0xa1, 0x2d, 0x7a, 0x74, 0x91, 0x1e, 0x7a, 0x68, 0x83, 0xf6, 0xd0, 0xc2, - 0x97, 0x3e, 0x60, 0xa0, 0xb7, 0xbe, 0x50, 0xf4, 0xd0, 0x43, 0x5b, 0xa0, 0xa7, 0x9e, 0x5b, 0xa0, - 0x41, 0x0b, 0xb4, 0x45, 0x0e, 0x39, 0xe8, 0x54, 0xec, 0xec, 0x72, 0xb9, 0x5c, 0x3e, 0x4c, 0xfa, - 0x91, 0xd8, 0xba, 0x2d, 0x77, 0xfe, 0xf9, 0xe6, 0xff, 0xbf, 0xff, 0xb1, 0xff, 0xfc, 0x84, 0xa2, - 0xa6, 0x9b, 0xf2, 0x8e, 0x4c, 0x12, 0x94, 0xc9, 0x95, 0x7a, 0x4a, 0x36, 0xd4, 0xd4, 0x4d, 0x5d, - 0x25, 0x14, 0x9b, 0x2d, 0x6c, 0x26, 0x0d, 0x53, 0x67, 0x3a, 0x8a, 0x32, 0x46, 0x92, 0x8e, 0x5c, - 0xb2, 0xb5, 0x14, 0xcf, 0xd6, 0x54, 0xb6, 0xdd, 0xbc, 0x91, 0xac, 0xe8, 0x8d, 0x14, 0x26, 0x2d, - 0xbd, 0x6d, 0x98, 0xfa, 0xad, 0x76, 0x8a, 0x0b, 0x57, 0x12, 0x35, 0x4c, 0x12, 0x2d, 0x59, 0x53, - 0x15, 0x99, 0xe1, 0x54, 0xdf, 0x83, 0x0d, 0x19, 0x4f, 0x78, 0x20, 0x6a, 0x7a, 0x4d, 0xb7, 0x37, - 0xdf, 0x68, 0x56, 0xf9, 0x2f, 0xfe, 0x83, 0x3f, 0x39, 0xe2, 0x79, 0x8f, 0xf8, 0xe5, 0x6d, 0x7c, - 0x79, 0x5b, 0x25, 0x35, 0x5a, 0x24, 0x4a, 0x93, 0x32, 0x53, 0xc5, 0xd4, 0x7b, 0x74, 0x4d, 0x4f, - 0x54, 0x35, 0xb9, 0x46, 0x53, 0x32, 0x21, 0x3a, 0x93, 0x99, 0xaa, 0x13, 0xea, 0xa0, 0xac, 0x4c, - 0x84, 0x72, 0x93, 0xea, 0x64, 0x00, 0xc8, 0xf1, 0x9a, 0xae, 0xd7, 0x34, 0xcc, 0x99, 0xea, 0x5f, - 0x3d, 0xe6, 0xac, 0xba, 0xe6, 0xe0, 0x86, 0xc1, 0xda, 0xce, 0xe2, 0x29, 0xff, 0x62, 0x55, 0xc5, - 0x9a, 0x52, 0x6e, 0xc8, 0xb4, 0xee, 0x03, 0x77, 0x25, 0x28, 0x33, 0x9b, 0x15, 0xe6, 0xac, 0x0e, - 0xf0, 0x15, 0x26, 0x4a, 0x59, 0xc1, 0x2d, 0xb5, 0xd2, 0x21, 0xf6, 0xa5, 0x7e, 0x19, 0x55, 0xc1, - 0x84, 0xa9, 0x55, 0x15, 0x9b, 0xae, 0x0d, 0x83, 0x9d, 0x3e, 0x7c, 0xb5, 0x8e, 0xdb, 0x9d, 0xbd, - 0x27, 0xfb, 0x57, 0x3b, 0xa1, 0x61, 0x0b, 0x24, 0x3d, 0x34, 0xea, 0x06, 0x26, 0xb2, 0xa1, 0xb6, - 0x32, 0x29, 0xdd, 0xe0, 0x34, 0xf5, 0x53, 0x26, 0xfe, 0x33, 0x00, 0xf7, 0x97, 0x30, 0xa5, 0xaa, - 0x4e, 0x36, 0x70, 0x5b, 0xc2, 0x5f, 0x6d, 0x62, 0xca, 0x50, 0x12, 0x46, 0xa9, 0xfd, 0xb2, 0x5c, - 0xc7, 0xed, 0xb2, 0xaa, 0xc4, 0xc0, 0x29, 0x70, 0x76, 0x5f, 0x2e, 0xbc, 0x9b, 0x9b, 0xba, 0x1d, - 0x88, 0x7d, 0x7d, 0x5e, 0xda, 0x47, 0xdd, 0x4d, 0x45, 0x05, 0xfd, 0x09, 0xc0, 0x69, 0x05, 0xb7, - 0xca, 0xb8, 0xa9, 0xc6, 0x04, 0x2e, 0xf9, 0x00, 0xdc, 0xcb, 0x9e, 0x5e, 0x47, 0xe2, 0xb9, 0x74, - 0x6e, 0x29, 0xff, 0xfa, 0xb9, 0x42, 0x3e, 0x9d, 0x4e, 0x67, 0x73, 0x2b, 0x79, 0xf1, 0x7b, 0x02, - 0x98, 0xfe, 0xa1, 0x10, 0xb2, 0x9c, 0x4e, 0x6a, 0xbb, 0xb9, 0xd0, 0xed, 0xe0, 0x76, 0xd8, 0x00, - 0xff, 0xba, 0x7f, 0xf4, 0x2e, 0x80, 0xe7, 0x6b, 0x7a, 0x92, 0x6d, 0x63, 0xc6, 0x43, 0x23, 0x49, - 0x30, 0xdb, 0xd1, 0xcd, 0x7a, 0xaa, 0xd7, 0xe4, 0xd6, 0x52, 0xca, 0xa8, 0xd7, 0x52, 0xac, 0x6d, - 0x60, 0x9a, 0xdc, 0x94, 0x4d, 0xba, 0x2d, 0x6b, 0x6b, 0x85, 0x77, 0x72, 0x6d, 0x86, 0x29, 0x9a, - 0x18, 0xe0, 0x0a, 0x69, 0xd8, 0x10, 0x6f, 0x70, 0x00, 0x29, 0xa4, 0xe0, 0x56, 0xa1, 0xa9, 0xa2, - 0xbf, 0x00, 0x18, 0xb6, 0x9c, 0xc2, 0x2d, 0x0a, 0x3c, 0xcf, 0x16, 0x4d, 0x5b, 0x66, 0x14, 0x9a, - 0xaa, 0xf8, 0x09, 0x80, 0xf3, 0x5b, 0x3b, 0xf5, 0xd2, 0x06, 0x6e, 0x53, 0x09, 0x53, 0x43, 0x27, - 0x14, 0xa3, 0x0d, 0x38, 0x57, 0x2d, 0x93, 0x9d, 0x7a, 0x99, 0x96, 0x55, 0xc2, 0x2c, 0x67, 0x73, - 0x4f, 0xcf, 0x64, 0x8e, 0x25, 0x7b, 0xcb, 0x4e, 0x72, 0x03, 0xb7, 0x0b, 0xa4, 0x85, 0x35, 0xdd, - 0xc0, 0x3c, 0x0c, 0xbe, 0x0d, 0x84, 0x79, 0x20, 0xcd, 0x54, 0x2d, 0xc8, 0x22, 0x61, 0x1b, 0xb8, - 0x6d, 0x81, 0x51, 0x1f, 0x98, 0x30, 0x11, 0x18, 0xf5, 0x80, 0xad, 0xc1, 0x59, 0x1b, 0x0a, 0x93, - 0x0a, 0x87, 0x0a, 0x4c, 0x02, 0x05, 0xc9, 0x4e, 0xbd, 0x54, 0x20, 0x95, 0x0d, 0xdc, 0x16, 0x2f, - 0xc3, 0xb9, 0xac, 0x61, 0x94, 0x78, 0x78, 0x3b, 0x66, 0x67, 0x61, 0x44, 0x36, 0x8c, 0x32, 0x9d, - 0xdc, 0xe0, 0x69, 0xd9, 0x86, 0x12, 0xff, 0x2d, 0xc0, 0x63, 0x2b, 0x66, 0xdb, 0x60, 0x7a, 0x09, - 0x9b, 0x56, 0x09, 0xb8, 0x24, 0xb7, 0x35, 0x5d, 0x56, 0x3a, 0x29, 0xf4, 0x25, 0x18, 0x50, 0x15, - 0xea, 0x80, 0x2f, 0xf8, 0xc1, 0x0b, 0x44, 0xc9, 0xf3, 0xc2, 0x51, 0xec, 0x96, 0x07, 0xcf, 0x29, - 0xd6, 0x56, 0xb4, 0x09, 0xe7, 0x9c, 0x1d, 0xe5, 0x16, 0x36, 0xad, 0x64, 0xe3, 0x74, 0x46, 0x33, - 0x71, 0x3f, 0xda, 0x66, 0x76, 0xe5, 0xcb, 0xb6, 0x04, 0xc7, 0xb8, 0xcb, 0x31, 0xa2, 0x8e, 0x80, - 0xb3, 0x82, 0x44, 0x38, 0x6d, 0xd8, 0x2a, 0x3a, 0x01, 0xdd, 0x49, 0x66, 0x41, 0xea, 0x2c, 0xa0, - 0xb7, 0x61, 0xd4, 0x30, 0xf5, 0x96, 0x6a, 0x6d, 0xc0, 0xa6, 0x95, 0xf7, 0xc1, 0x53, 0xe0, 0x6c, - 0x24, 0xb7, 0xb8, 0x9b, 0x3b, 0x63, 0xbe, 0x1c, 0x5b, 0xc8, 0x9c, 0xbe, 0xfe, 0x9e, 0x9c, 0xb8, - 0x9d, 0x4e, 0xbc, 0x79, 0xed, 0xec, 0xf9, 0xe5, 0xf7, 0x12, 0xd7, 0xce, 0x77, 0x7e, 0xbe, 0xf2, - 0x7e, 0xe6, 0xb5, 0x3b, 0x0b, 0x5f, 0xbb, 0xbe, 0x20, 0xcd, 0x7a, 0x10, 0x8a, 0x0a, 0xca, 0xc3, - 0xfd, 0xee, 0x0b, 0x95, 0xd4, 0xca, 0x8a, 0xcc, 0xe4, 0xd8, 0x14, 0x67, 0xe5, 0x48, 0xd2, 0x2e, - 0xb8, 0xc9, 0x4e, 0xc1, 0x4d, 0x96, 0x78, 0xc1, 0x95, 0xe6, 0xbd, 0x3b, 0xf2, 0x32, 0x93, 0xc5, - 0x37, 0xe0, 0xf1, 0xc1, 0x64, 0x3b, 0x0e, 0x8d, 0x75, 0x8d, 0xe3, 0x95, 0xca, 0x35, 0x49, 0xfc, - 0x6e, 0x00, 0x1e, 0x5c, 0xd7, 0x55, 0x92, 0xad, 0x54, 0xb0, 0xc1, 0x36, 0x8b, 0x2b, 0x1d, 0x07, - 0x5d, 0x87, 0x73, 0x8e, 0x4c, 0xd9, 0xb4, 0x5f, 0x39, 0xce, 0x7a, 0xd5, 0x4f, 0xef, 0x08, 0x37, - 0x7b, 0x7c, 0x16, 0x35, 0x7a, 0x03, 0xe0, 0x0a, 0xdc, 0xcf, 0x2b, 0x88, 0x03, 0x5e, 0xb6, 0xd2, - 0xd3, 0x71, 0xe0, 0x49, 0xff, 0x09, 0x96, 0x82, 0xce, 0xbe, 0xcb, 0x6d, 0x27, 0xde, 0x6c, 0x2f, - 0xce, 0xdd, 0xec, 0x5d, 0x42, 0x7f, 0x00, 0x30, 0x62, 0x95, 0x5a, 0xa2, 0x93, 0x0a, 0x76, 0x3c, - 0xf9, 0x13, 0x70, 0x2f, 0x7b, 0x68, 0x3d, 0x24, 0x0e, 0x2b, 0x47, 0xc2, 0x33, 0x50, 0x8e, 0x32, - 0x76, 0x39, 0x0a, 0x2b, 0xb8, 0xb5, 0x65, 0xa9, 0x2e, 0xfe, 0x60, 0x1a, 0xc6, 0xf2, 0xd8, 0x54, - 0x5b, 0xb8, 0xfb, 0xfd, 0xa1, 0xcf, 0x6c, 0xf6, 0xfc, 0x11, 0x40, 0xc8, 0xdd, 0xe9, 0xe5, 0xfd, - 0x3e, 0xb8, 0x97, 0x3d, 0xb2, 0x1e, 0xe6, 0xbc, 0x17, 0x2e, 0x0c, 0x62, 0x3e, 0xf0, 0x0c, 0x30, - 0xbf, 0x64, 0x33, 0x1f, 0xb1, 0xd4, 0xe7, 0xd4, 0xfb, 0x62, 0x28, 0xf8, 0xdc, 0xc6, 0x10, 0xfa, - 0x1d, 0x80, 0x21, 0x82, 0x99, 0x55, 0xa8, 0xa6, 0x7a, 0x3c, 0x92, 0x4e, 0xa7, 0xd3, 0x9f, 0x5f, - 0x7a, 0xc6, 0x3d, 0x32, 0x45, 0x30, 0x2b, 0x0e, 0x2a, 0xba, 0xa1, 0xa7, 0x52, 0x74, 0xa7, 0x27, - 0x2d, 0xba, 0xff, 0x05, 0x10, 0xad, 0x62, 0x26, 0xe9, 0x3a, 0x7b, 0xb2, 0xb9, 0xd9, 0x6f, 0xb1, - 0xf0, 0x54, 0x2c, 0x0e, 0x4c, 0x6c, 0xf1, 0x0c, 0x8c, 0x5f, 0xea, 0xbc, 0x74, 0x2d, 0x71, 0x2d, - 0x7f, 0x17, 0xce, 0xc9, 0x86, 0xa1, 0xa9, 0x15, 0xde, 0x42, 0x97, 0xbb, 0x2c, 0x7c, 0xce, 0xcf, - 0x42, 0xb6, 0x2b, 0x36, 0x98, 0x87, 0xa8, 0xec, 0x95, 0xa0, 0x68, 0x6b, 0x08, 0x25, 0x67, 0x76, - 0x73, 0x0b, 0xa6, 0x18, 0x5b, 0xc8, 0xbc, 0x38, 0x9a, 0x12, 0x3f, 0x1f, 0xaf, 0x0e, 0xe3, 0x63, - 0x5f, 0xbf, 0xd9, 0xe8, 0x12, 0x0c, 0x6a, 0x2a, 0x65, 0xbc, 0x12, 0xcc, 0x64, 0x96, 0xfd, 0xc6, - 0x0c, 0x67, 0x24, 0xe9, 0x31, 0xee, 0xa2, 0x4a, 0xd9, 0xda, 0x0b, 0x12, 0x47, 0x42, 0x25, 0x38, - 0x65, 0xca, 0xa4, 0x86, 0x9d, 0x2f, 0xfd, 0x5b, 0x8f, 0x06, 0x29, 0x59, 0x10, 0x6b, 0x2f, 0x48, - 0x36, 0x16, 0xba, 0x06, 0x23, 0x55, 0x53, 0x6f, 0xd8, 0xb6, 0x84, 0x38, 0xf0, 0x17, 0x1f, 0x0d, - 0xf8, 0x82, 0xa9, 0x37, 0x2c, 0xcb, 0xd7, 0x5e, 0x90, 0xc2, 0x55, 0xe7, 0x39, 0xfe, 0x33, 0x01, - 0xce, 0xf9, 0xec, 0xe9, 0xbd, 0x07, 0x80, 0xbd, 0x70, 0x0f, 0x40, 0xeb, 0x30, 0xda, 0xbd, 0xb7, - 0xf2, 0x18, 0x16, 0x4e, 0x05, 0xc6, 0xcd, 0x64, 0x69, 0x1f, 0xee, 0xbe, 0xa5, 0xf1, 0xdf, 0x06, - 0xe0, 0xbc, 0xdf, 0x5f, 0x7b, 0x91, 0xb3, 0xbf, 0x01, 0x38, 0x4b, 0x99, 0x6c, 0xb2, 0xf2, 0x9e, - 0xb8, 0xe5, 0xce, 0x70, 0x5b, 0xf2, 0xfc, 0xaa, 0x1b, 0xff, 0x08, 0xc0, 0x03, 0x03, 0x52, 0x63, - 0x0f, 0xba, 0x71, 0x59, 0x88, 0x81, 0xdc, 0x2c, 0x9c, 0xe9, 0x86, 0x3f, 0x15, 0x7f, 0x1a, 0x84, - 0x27, 0x3c, 0xc5, 0x3a, 0x5b, 0x61, 0x6a, 0x8b, 0x3f, 0x95, 0x30, 0x63, 0xd6, 0x81, 0xe8, 0x65, - 0x18, 0xa9, 0xe3, 0x7a, 0x59, 0x93, 0x6f, 0x60, 0x8d, 0xf3, 0x10, 0xe1, 0x65, 0xdc, 0xe4, 0x63, - 0x90, 0x70, 0x1d, 0xd7, 0x2f, 0x5a, 0x2b, 0x28, 0x01, 0x03, 0x75, 0x5c, 0x1f, 0xe3, 0xc2, 0x2b, - 0x59, 0x72, 0xe8, 0x7f, 0x02, 0x9c, 0xd9, 0xd6, 0x1b, 0xb8, 0xec, 0xb4, 0x2f, 0x76, 0x43, 0xf9, - 0x67, 0xe1, 0xf9, 0x69, 0x5f, 0x3e, 0xbe, 0x7f, 0xf4, 0x43, 0x10, 0xdf, 0x1a, 0x0f, 0xa5, 0xd2, - 0x50, 0x52, 0x8c, 0x91, 0x84, 0xb6, 0x93, 0xa8, 0x68, 0x6a, 0xaa, 0xd2, 0xa4, 0x4c, 0x6f, 0xf0, - 0x49, 0x61, 0x72, 0x0b, 0xef, 0xd8, 0x80, 0x17, 0x34, 0xb9, 0x26, 0x3e, 0x3e, 0xde, 0x2a, 0x66, - 0x85, 0x5b, 0x72, 0x85, 0x39, 0x5d, 0xaf, 0x45, 0xf2, 0x16, 0xef, 0xb3, 0xde, 0x82, 0x87, 0xbc, - 0x5f, 0x6f, 0x7b, 0xc8, 0xda, 0xbd, 0xe3, 0x4e, 0xef, 0xe6, 0x82, 0xa6, 0x10, 0x53, 0xa4, 0x03, - 0x1e, 0xa9, 0x12, 0x17, 0x2a, 0x2a, 0xcb, 0xe1, 0x8f, 0xef, 0x1f, 0x0d, 0x86, 0xc1, 0x3c, 0x10, - 0x7f, 0x0d, 0xe0, 0x99, 0x55, 0xcc, 0x46, 0x06, 0xcd, 0xa7, 0xd0, 0x30, 0xbc, 0x09, 0x61, 0x77, - 0x80, 0xe9, 0x84, 0x5d, 0xbc, 0xaf, 0xd3, 0xb9, 0x60, 0x89, 0x6c, 0xca, 0xb4, 0x2e, 0x45, 0xaa, - 0x9d, 0x47, 0xf1, 0xfb, 0x02, 0x3c, 0x53, 0xfa, 0xec, 0x2d, 0x28, 0xc1, 0x30, 0x75, 0x4e, 0x73, - 0xf4, 0x4f, 0x8c, 0xc0, 0xec, 0x57, 0xd1, 0x03, 0xed, 0x02, 0xf9, 0x68, 0x09, 0x4c, 0x40, 0x8b, - 0xc7, 0xc5, 0xdf, 0x04, 0x70, 0x31, 0x8f, 0x35, 0xcc, 0xf0, 0x67, 0xcc, 0x91, 0xb8, 0x0b, 0xe0, - 0xec, 0xba, 0x55, 0xbd, 0xae, 0x14, 0x2f, 0x99, 0xb8, 0xaa, 0xde, 0xda, 0x8b, 0x5f, 0xd7, 0xc3, - 0x30, 0xa4, 0x61, 0x52, 0x63, 0xdb, 0x3c, 0x0c, 0x66, 0x25, 0xe7, 0x97, 0x78, 0x11, 0xce, 0xf5, - 0xd8, 0x8e, 0x2d, 0xf7, 0x86, 0x0d, 0xe7, 0x39, 0x06, 0x78, 0xdb, 0x72, 0x62, 0xd0, 0x2c, 0xc5, - 0xdd, 0x22, 0xb9, 0xe2, 0xe2, 0x7f, 0x00, 0x3c, 0xba, 0x8a, 0x59, 0x1e, 0x57, 0xe5, 0xa6, 0xc6, - 0x1c, 0x29, 0x77, 0x80, 0xb4, 0xf7, 0x68, 0xcd, 0xfc, 0x08, 0xc0, 0xe0, 0x16, 0x5d, 0xa7, 0x68, - 0x15, 0xc2, 0x35, 0x99, 0x28, 0x1a, 0xb6, 0x8c, 0x46, 0xc7, 0x46, 0x0c, 0x9f, 0xe2, 0xc7, 0x07, - 0x2f, 0x3a, 0x24, 0x49, 0x70, 0x66, 0x15, 0xb3, 0xce, 0x10, 0x19, 0x9d, 0xf6, 0x0b, 0xf7, 0xfd, - 0x91, 0x10, 0x3f, 0xe5, 0x17, 0xf1, 0x4f, 0xa0, 0x33, 0xef, 0xc0, 0x60, 0xd6, 0x52, 0xf2, 0x12, - 0x84, 0x76, 0x55, 0xb5, 0x96, 0xc7, 0x81, 0x3e, 0x39, 0x20, 0xb9, 0xbc, 0x43, 0xde, 0xcc, 0xbb, - 0x70, 0x2a, 0x6b, 0x18, 0x4f, 0x05, 0xfa, 0x93, 0x20, 0x3c, 0xb8, 0x65, 0xbb, 0xa6, 0x67, 0x38, - 0x88, 0xea, 0x30, 0xea, 0xa1, 0x73, 0xb3, 0xb8, 0x82, 0x26, 0x99, 0x26, 0xc6, 0x5f, 0x1b, 0x4f, - 0xd8, 0x71, 0x47, 0xc5, 0xae, 0x0d, 0xee, 0x64, 0x13, 0x2d, 0x0c, 0xf2, 0x9e, 0x7f, 0xf0, 0x39, - 0xe1, 0x21, 0x04, 0xee, 0x2f, 0x90, 0x8a, 0x25, 0xd1, 0x05, 0x7b, 0x9a, 0x46, 0x19, 0xf0, 0x80, - 0x73, 0x9e, 0x84, 0x6f, 0x7e, 0x2a, 0x27, 0x7e, 0x05, 0x46, 0xed, 0x39, 0xa4, 0x1b, 0xd8, 0x67, - 0xfd, 0xfb, 0x87, 0xcd, 0x29, 0x1f, 0x1e, 0xdf, 0xe8, 0x22, 0x8c, 0xd8, 0x39, 0x63, 0xc5, 0x9e, - 0xe8, 0x17, 0xef, 0x1f, 0xaf, 0xc4, 0x47, 0xf5, 0x8e, 0x99, 0xdf, 0x03, 0x18, 0xf3, 0x7c, 0x44, - 0x7a, 0x83, 0xef, 0x2a, 0x9c, 0xb5, 0x15, 0xed, 0x84, 0xfa, 0xf8, 0x76, 0x3c, 0x2c, 0xe2, 0x1d, - 0x33, 0xb2, 0x86, 0xf1, 0x44, 0xcc, 0xf8, 0x20, 0x04, 0x0f, 0xac, 0x53, 0xf7, 0x82, 0x29, 0xe1, - 0x9a, 0x4a, 0x99, 0xd9, 0x46, 0xbf, 0x00, 0x30, 0xb0, 0x8a, 0x19, 0x7a, 0x69, 0xc0, 0x01, 0x1e, - 0x69, 0xfb, 0x84, 0xa3, 0x43, 0x2f, 0xac, 0x62, 0xfd, 0xee, 0x5f, 0xff, 0xf1, 0x1d, 0x01, 0xa3, - 0x4a, 0xea, 0x26, 0x4d, 0x79, 0x3e, 0xa9, 0x34, 0xf5, 0x7e, 0xef, 0xdd, 0x37, 0xe9, 0xfb, 0x70, - 0xfb, 0x7e, 0xdf, 0x49, 0x39, 0xf7, 0x84, 0xbe, 0x7d, 0xee, 0xe3, 0x1d, 0xf4, 0x0d, 0x01, 0x06, - 0x4a, 0x83, 0x94, 0x2e, 0x4d, 0xa6, 0xf4, 0xaf, 0x00, 0xd7, 0xfa, 0x97, 0x20, 0x3e, 0x52, 0xed, - 0xe4, 0x23, 0xaa, 0x9d, 0xec, 0x55, 0x7b, 0x19, 0x2c, 0x5e, 0xdd, 0x14, 0xd7, 0x9e, 0xd4, 0x49, - 0xcb, 0x60, 0x11, 0xfd, 0x18, 0xc0, 0x88, 0x3b, 0x7f, 0x41, 0x8b, 0xe3, 0x8f, 0x66, 0x46, 0xb1, - 0xf2, 0x36, 0x27, 0x65, 0x2d, 0xbe, 0xd2, 0xaf, 0xe9, 0xc3, 0x54, 0x73, 0xe7, 0x5c, 0x89, 0xae, - 0x92, 0xdf, 0x12, 0x40, 0x1a, 0xa0, 0x0f, 0x00, 0x0c, 0xd9, 0x0d, 0x1e, 0x1a, 0x6b, 0xec, 0x11, - 0x3f, 0xdc, 0xd7, 0x42, 0x16, 0x1a, 0x06, 0x6b, 0x8b, 0x9b, 0x5c, 0xbb, 0xd5, 0xc5, 0xc2, 0xe4, - 0xda, 0xb9, 0x2e, 0xea, 0xfa, 0x24, 0xf3, 0x20, 0x08, 0x17, 0x46, 0xb5, 0x9c, 0x6e, 0xa2, 0xfc, - 0xdc, 0x49, 0x94, 0x73, 0x03, 0x12, 0x65, 0x9c, 0x9e, 0x35, 0x3e, 0x59, 0xab, 0x2d, 0xe6, 0xb8, - 0x9d, 0x5f, 0x40, 0xcb, 0x93, 0xdb, 0xe9, 0xb6, 0xe6, 0x0f, 0x80, 0x9d, 0x27, 0xe7, 0x06, 0xe4, - 0xc9, 0xd3, 0xd0, 0xb9, 0xc0, 0x75, 0x3e, 0x2f, 0x3e, 0x86, 0xce, 0x56, 0x54, 0x7f, 0xd8, 0x8d, - 0x95, 0xe5, 0xfe, 0x7a, 0x3a, 0xee, 0x25, 0x61, 0x68, 0x04, 0x39, 0xcc, 0x2e, 0x3e, 0x86, 0x96, - 0x99, 0x8f, 0x00, 0x14, 0xd6, 0x29, 0xd2, 0xf8, 0xb8, 0xde, 0xdf, 0x32, 0x0f, 0x39, 0x38, 0x7e, - 0x72, 0x64, 0xe3, 0x8c, 0xa9, 0x78, 0x82, 0x6b, 0x76, 0x04, 0x1d, 0xb2, 0x34, 0xeb, 0xf4, 0xc6, - 0xe5, 0x4e, 0x3f, 0x8d, 0x18, 0xdc, 0xdf, 0xd7, 0x4e, 0x0f, 0x3d, 0xec, 0x95, 0x01, 0x71, 0x3a, - 0xb8, 0x13, 0x17, 0x8f, 0xf3, 0x63, 0x0f, 0xa3, 0x83, 0xd6, 0xb1, 0x8a, 0x2d, 0x53, 0xee, 0x1c, - 0x9f, 0x7b, 0xfd, 0x37, 0x7f, 0x7f, 0x11, 0x5c, 0x4d, 0x4d, 0xd0, 0x24, 0x33, 0x62, 0xdc, 0xb8, - 0x11, 0xe2, 0xfa, 0x2c, 0xfd, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xf4, 0x72, 0xe1, 0x95, 0x71, 0x25, - 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// NsJsClient is the client API for NsJs service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type NsJsClient interface { - // Handle a join-request message. - HandleJoin(ctx context.Context, in *JoinRequest, opts ...grpc.CallOption) (*JoinResponse, error) - // Request the network session keys for a particular session. - GetNwkSKeys(ctx context.Context, in *SessionKeyRequest, opts ...grpc.CallOption) (*NwkSKeysResponse, error) -} - -type nsJsClient struct { - cc *grpc.ClientConn -} - -func NewNsJsClient(cc *grpc.ClientConn) NsJsClient { - return &nsJsClient{cc} -} - -func (c *nsJsClient) HandleJoin(ctx context.Context, in *JoinRequest, opts ...grpc.CallOption) (*JoinResponse, error) { - out := new(JoinResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsJs/HandleJoin", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *nsJsClient) GetNwkSKeys(ctx context.Context, in *SessionKeyRequest, opts ...grpc.CallOption) (*NwkSKeysResponse, error) { - out := new(NwkSKeysResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsJs/GetNwkSKeys", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// NsJsServer is the server API for NsJs service. -type NsJsServer interface { - // Handle a join-request message. - HandleJoin(context.Context, *JoinRequest) (*JoinResponse, error) - // Request the network session keys for a particular session. - GetNwkSKeys(context.Context, *SessionKeyRequest) (*NwkSKeysResponse, error) -} - -// UnimplementedNsJsServer can be embedded to have forward compatible implementations. -type UnimplementedNsJsServer struct { -} - -func (*UnimplementedNsJsServer) HandleJoin(ctx context.Context, req *JoinRequest) (*JoinResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method HandleJoin not implemented") -} -func (*UnimplementedNsJsServer) GetNwkSKeys(ctx context.Context, req *SessionKeyRequest) (*NwkSKeysResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetNwkSKeys not implemented") -} - -func RegisterNsJsServer(s *grpc.Server, srv NsJsServer) { - s.RegisterService(&_NsJs_serviceDesc, srv) -} - -func _NsJs_HandleJoin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(JoinRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NsJsServer).HandleJoin(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NsJs/HandleJoin", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NsJsServer).HandleJoin(ctx, req.(*JoinRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _NsJs_GetNwkSKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SessionKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NsJsServer).GetNwkSKeys(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NsJs/GetNwkSKeys", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NsJsServer).GetNwkSKeys(ctx, req.(*SessionKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _NsJs_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.NsJs", - HandlerType: (*NsJsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "HandleJoin", - Handler: _NsJs_HandleJoin_Handler, - }, - { - MethodName: "GetNwkSKeys", - Handler: _NsJs_GetNwkSKeys_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/joinserver.proto", -} - -// AsJsClient is the client API for AsJs service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type AsJsClient interface { - // Request the application session key for a particular session. - GetAppSKey(ctx context.Context, in *SessionKeyRequest, opts ...grpc.CallOption) (*AppSKeyResponse, error) -} - -type asJsClient struct { - cc *grpc.ClientConn -} - -func NewAsJsClient(cc *grpc.ClientConn) AsJsClient { - return &asJsClient{cc} -} - -func (c *asJsClient) GetAppSKey(ctx context.Context, in *SessionKeyRequest, opts ...grpc.CallOption) (*AppSKeyResponse, error) { - out := new(AppSKeyResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AsJs/GetAppSKey", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// AsJsServer is the server API for AsJs service. -type AsJsServer interface { - // Request the application session key for a particular session. - GetAppSKey(context.Context, *SessionKeyRequest) (*AppSKeyResponse, error) -} - -// UnimplementedAsJsServer can be embedded to have forward compatible implementations. -type UnimplementedAsJsServer struct { -} - -func (*UnimplementedAsJsServer) GetAppSKey(ctx context.Context, req *SessionKeyRequest) (*AppSKeyResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetAppSKey not implemented") -} - -func RegisterAsJsServer(s *grpc.Server, srv AsJsServer) { - s.RegisterService(&_AsJs_serviceDesc, srv) -} - -func _AsJs_GetAppSKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SessionKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AsJsServer).GetAppSKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.AsJs/GetAppSKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AsJsServer).GetAppSKey(ctx, req.(*SessionKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _AsJs_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.AsJs", - HandlerType: (*AsJsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetAppSKey", - Handler: _AsJs_GetAppSKey_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/joinserver.proto", -} - -// AppJsClient is the client API for AppJs service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type AppJsClient interface { - // Request the application session key for a particular session. - GetAppSKey(ctx context.Context, in *SessionKeyRequest, opts ...grpc.CallOption) (*AppSKeyResponse, error) -} - -type appJsClient struct { - cc *grpc.ClientConn -} - -func NewAppJsClient(cc *grpc.ClientConn) AppJsClient { - return &appJsClient{cc} -} - -func (c *appJsClient) GetAppSKey(ctx context.Context, in *SessionKeyRequest, opts ...grpc.CallOption) (*AppSKeyResponse, error) { - out := new(AppSKeyResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppJs/GetAppSKey", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// AppJsServer is the server API for AppJs service. -type AppJsServer interface { - // Request the application session key for a particular session. - GetAppSKey(context.Context, *SessionKeyRequest) (*AppSKeyResponse, error) -} - -// UnimplementedAppJsServer can be embedded to have forward compatible implementations. -type UnimplementedAppJsServer struct { -} - -func (*UnimplementedAppJsServer) GetAppSKey(ctx context.Context, req *SessionKeyRequest) (*AppSKeyResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetAppSKey not implemented") -} - -func RegisterAppJsServer(s *grpc.Server, srv AppJsServer) { - s.RegisterService(&_AppJs_serviceDesc, srv) -} - -func _AppJs_GetAppSKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SessionKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AppJsServer).GetAppSKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.AppJs/GetAppSKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AppJsServer).GetAppSKey(ctx, req.(*SessionKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _AppJs_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.AppJs", - HandlerType: (*AppJsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetAppSKey", - Handler: _AppJs_GetAppSKey_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/joinserver.proto", -} - -// NetworkCryptoServiceClient is the client API for NetworkCryptoService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type NetworkCryptoServiceClient interface { - // Calculate the join-request message MIC. - JoinRequestMIC(ctx context.Context, in *CryptoServicePayloadRequest, opts ...grpc.CallOption) (*CryptoServicePayloadResponse, error) - // Calculate the join-accept message MIC. - JoinAcceptMIC(ctx context.Context, in *JoinAcceptMICRequest, opts ...grpc.CallOption) (*CryptoServicePayloadResponse, error) - // Encrypt the join-accept payload. - EncryptJoinAccept(ctx context.Context, in *CryptoServicePayloadRequest, opts ...grpc.CallOption) (*CryptoServicePayloadResponse, error) - // Encrypt the rejoin-accept payload. - EncryptRejoinAccept(ctx context.Context, in *CryptoServicePayloadRequest, opts ...grpc.CallOption) (*CryptoServicePayloadResponse, error) - // Derive network session keys (NwkSKey, or FNwkSKey, SNwkSKey and NwkSEncKey) - DeriveNwkSKeys(ctx context.Context, in *DeriveSessionKeysRequest, opts ...grpc.CallOption) (*NwkSKeysResponse, error) - // Get the NwkKey. Crypto Servers may return status code FAILED_PRECONDITION when root keys are not exposed. - GetNwkKey(ctx context.Context, in *GetRootKeysRequest, opts ...grpc.CallOption) (*KeyEnvelope, error) -} - -type networkCryptoServiceClient struct { - cc *grpc.ClientConn -} - -func NewNetworkCryptoServiceClient(cc *grpc.ClientConn) NetworkCryptoServiceClient { - return &networkCryptoServiceClient{cc} -} - -func (c *networkCryptoServiceClient) JoinRequestMIC(ctx context.Context, in *CryptoServicePayloadRequest, opts ...grpc.CallOption) (*CryptoServicePayloadResponse, error) { - out := new(CryptoServicePayloadResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NetworkCryptoService/JoinRequestMIC", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} +func (*JoinEUIPrefixes) ProtoMessage() {} -func (c *networkCryptoServiceClient) JoinAcceptMIC(ctx context.Context, in *JoinAcceptMICRequest, opts ...grpc.CallOption) (*CryptoServicePayloadResponse, error) { - out := new(CryptoServicePayloadResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NetworkCryptoService/JoinAcceptMIC", in, out, opts...) - if err != nil { - return nil, err +func (x *JoinEUIPrefixes) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return out, nil + return mi.MessageOf(x) } -func (c *networkCryptoServiceClient) EncryptJoinAccept(ctx context.Context, in *CryptoServicePayloadRequest, opts ...grpc.CallOption) (*CryptoServicePayloadResponse, error) { - out := new(CryptoServicePayloadResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NetworkCryptoService/EncryptJoinAccept", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *networkCryptoServiceClient) EncryptRejoinAccept(ctx context.Context, in *CryptoServicePayloadRequest, opts ...grpc.CallOption) (*CryptoServicePayloadResponse, error) { - out := new(CryptoServicePayloadResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NetworkCryptoService/EncryptRejoinAccept", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *networkCryptoServiceClient) DeriveNwkSKeys(ctx context.Context, in *DeriveSessionKeysRequest, opts ...grpc.CallOption) (*NwkSKeysResponse, error) { - out := new(NwkSKeysResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NetworkCryptoService/DeriveNwkSKeys", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// Deprecated: Use JoinEUIPrefixes.ProtoReflect.Descriptor instead. +func (*JoinEUIPrefixes) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{14} } -func (c *networkCryptoServiceClient) GetNwkKey(ctx context.Context, in *GetRootKeysRequest, opts ...grpc.CallOption) (*KeyEnvelope, error) { - out := new(KeyEnvelope) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NetworkCryptoService/GetNwkKey", in, out, opts...) - if err != nil { - return nil, err +func (x *JoinEUIPrefixes) GetPrefixes() []*JoinEUIPrefix { + if x != nil { + return x.Prefixes } - return out, nil -} - -// NetworkCryptoServiceServer is the server API for NetworkCryptoService service. -type NetworkCryptoServiceServer interface { - // Calculate the join-request message MIC. - JoinRequestMIC(context.Context, *CryptoServicePayloadRequest) (*CryptoServicePayloadResponse, error) - // Calculate the join-accept message MIC. - JoinAcceptMIC(context.Context, *JoinAcceptMICRequest) (*CryptoServicePayloadResponse, error) - // Encrypt the join-accept payload. - EncryptJoinAccept(context.Context, *CryptoServicePayloadRequest) (*CryptoServicePayloadResponse, error) - // Encrypt the rejoin-accept payload. - EncryptRejoinAccept(context.Context, *CryptoServicePayloadRequest) (*CryptoServicePayloadResponse, error) - // Derive network session keys (NwkSKey, or FNwkSKey, SNwkSKey and NwkSEncKey) - DeriveNwkSKeys(context.Context, *DeriveSessionKeysRequest) (*NwkSKeysResponse, error) - // Get the NwkKey. Crypto Servers may return status code FAILED_PRECONDITION when root keys are not exposed. - GetNwkKey(context.Context, *GetRootKeysRequest) (*KeyEnvelope, error) -} - -// UnimplementedNetworkCryptoServiceServer can be embedded to have forward compatible implementations. -type UnimplementedNetworkCryptoServiceServer struct { + return nil } -func (*UnimplementedNetworkCryptoServiceServer) JoinRequestMIC(ctx context.Context, req *CryptoServicePayloadRequest) (*CryptoServicePayloadResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method JoinRequestMIC not implemented") -} -func (*UnimplementedNetworkCryptoServiceServer) JoinAcceptMIC(ctx context.Context, req *JoinAcceptMICRequest) (*CryptoServicePayloadResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method JoinAcceptMIC not implemented") -} -func (*UnimplementedNetworkCryptoServiceServer) EncryptJoinAccept(ctx context.Context, req *CryptoServicePayloadRequest) (*CryptoServicePayloadResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method EncryptJoinAccept not implemented") -} -func (*UnimplementedNetworkCryptoServiceServer) EncryptRejoinAccept(ctx context.Context, req *CryptoServicePayloadRequest) (*CryptoServicePayloadResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method EncryptRejoinAccept not implemented") -} -func (*UnimplementedNetworkCryptoServiceServer) DeriveNwkSKeys(ctx context.Context, req *DeriveSessionKeysRequest) (*NwkSKeysResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeriveNwkSKeys not implemented") -} -func (*UnimplementedNetworkCryptoServiceServer) GetNwkKey(ctx context.Context, req *GetRootKeysRequest) (*KeyEnvelope, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetNwkKey not implemented") -} +type GetDefaultJoinEUIResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func RegisterNetworkCryptoServiceServer(s *grpc.Server, srv NetworkCryptoServiceServer) { - s.RegisterService(&_NetworkCryptoService_serviceDesc, srv) + JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` } -func _NetworkCryptoService_JoinRequestMIC_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CryptoServicePayloadRequest) - if err := dec(in); err != nil { - return nil, err +func (x *GetDefaultJoinEUIResponse) Reset() { + *x = GetDefaultJoinEUIResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - if interceptor == nil { - return srv.(NetworkCryptoServiceServer).JoinRequestMIC(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NetworkCryptoService/JoinRequestMIC", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NetworkCryptoServiceServer).JoinRequestMIC(ctx, req.(*CryptoServicePayloadRequest)) - } - return interceptor(ctx, in, info, handler) } -func _NetworkCryptoService_JoinAcceptMIC_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(JoinAcceptMICRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NetworkCryptoServiceServer).JoinAcceptMIC(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NetworkCryptoService/JoinAcceptMIC", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NetworkCryptoServiceServer).JoinAcceptMIC(ctx, req.(*JoinAcceptMICRequest)) - } - return interceptor(ctx, in, info, handler) +func (x *GetDefaultJoinEUIResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func _NetworkCryptoService_EncryptJoinAccept_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CryptoServicePayloadRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NetworkCryptoServiceServer).EncryptJoinAccept(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NetworkCryptoService/EncryptJoinAccept", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NetworkCryptoServiceServer).EncryptJoinAccept(ctx, req.(*CryptoServicePayloadRequest)) - } - return interceptor(ctx, in, info, handler) -} +func (*GetDefaultJoinEUIResponse) ProtoMessage() {} -func _NetworkCryptoService_EncryptRejoinAccept_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CryptoServicePayloadRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NetworkCryptoServiceServer).EncryptRejoinAccept(ctx, in) +func (x *GetDefaultJoinEUIResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NetworkCryptoService/EncryptRejoinAccept", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NetworkCryptoServiceServer).EncryptRejoinAccept(ctx, req.(*CryptoServicePayloadRequest)) - } - return interceptor(ctx, in, info, handler) + return mi.MessageOf(x) } -func _NetworkCryptoService_DeriveNwkSKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeriveSessionKeysRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NetworkCryptoServiceServer).DeriveNwkSKeys(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NetworkCryptoService/DeriveNwkSKeys", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NetworkCryptoServiceServer).DeriveNwkSKeys(ctx, req.(*DeriveSessionKeysRequest)) - } - return interceptor(ctx, in, info, handler) +// Deprecated: Use GetDefaultJoinEUIResponse.ProtoReflect.Descriptor instead. +func (*GetDefaultJoinEUIResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{15} } -func _NetworkCryptoService_GetNwkKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetRootKeysRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NetworkCryptoServiceServer).GetNwkKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NetworkCryptoService/GetNwkKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NetworkCryptoServiceServer).GetNwkKey(ctx, req.(*GetRootKeysRequest)) +func (x *GetDefaultJoinEUIResponse) GetJoinEui() []byte { + if x != nil { + return x.JoinEui } - return interceptor(ctx, in, info, handler) -} - -var _NetworkCryptoService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.NetworkCryptoService", - HandlerType: (*NetworkCryptoServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "JoinRequestMIC", - Handler: _NetworkCryptoService_JoinRequestMIC_Handler, - }, - { - MethodName: "JoinAcceptMIC", - Handler: _NetworkCryptoService_JoinAcceptMIC_Handler, - }, - { - MethodName: "EncryptJoinAccept", - Handler: _NetworkCryptoService_EncryptJoinAccept_Handler, - }, - { - MethodName: "EncryptRejoinAccept", - Handler: _NetworkCryptoService_EncryptRejoinAccept_Handler, - }, - { - MethodName: "DeriveNwkSKeys", - Handler: _NetworkCryptoService_DeriveNwkSKeys_Handler, - }, - { - MethodName: "GetNwkKey", - Handler: _NetworkCryptoService_GetNwkKey_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/joinserver.proto", -} - -// ApplicationCryptoServiceClient is the client API for ApplicationCryptoService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ApplicationCryptoServiceClient interface { - // Derive the application session key (AppSKey). - DeriveAppSKey(ctx context.Context, in *DeriveSessionKeysRequest, opts ...grpc.CallOption) (*AppSKeyResponse, error) - // Get the AppKey. Crypto Servers may return status code FAILED_PRECONDITION when root keys are not exposed. - GetAppKey(ctx context.Context, in *GetRootKeysRequest, opts ...grpc.CallOption) (*KeyEnvelope, error) + return nil } -type applicationCryptoServiceClient struct { - cc *grpc.ClientConn -} +type ProvisionEndDevicesRequest_IdentifiersList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func NewApplicationCryptoServiceClient(cc *grpc.ClientConn) ApplicationCryptoServiceClient { - return &applicationCryptoServiceClient{cc} + JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` + EndDeviceIds []*EndDeviceIdentifiers `protobuf:"bytes,2,rep,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` } -func (c *applicationCryptoServiceClient) DeriveAppSKey(ctx context.Context, in *DeriveSessionKeysRequest, opts ...grpc.CallOption) (*AppSKeyResponse, error) { - out := new(AppSKeyResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationCryptoService/DeriveAppSKey", in, out, opts...) - if err != nil { - return nil, err +func (x *ProvisionEndDevicesRequest_IdentifiersList) Reset() { + *x = ProvisionEndDevicesRequest_IdentifiersList{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return out, nil -} - -func (c *applicationCryptoServiceClient) GetAppKey(ctx context.Context, in *GetRootKeysRequest, opts ...grpc.CallOption) (*KeyEnvelope, error) { - out := new(KeyEnvelope) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationCryptoService/GetAppKey", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ApplicationCryptoServiceServer is the server API for ApplicationCryptoService service. -type ApplicationCryptoServiceServer interface { - // Derive the application session key (AppSKey). - DeriveAppSKey(context.Context, *DeriveSessionKeysRequest) (*AppSKeyResponse, error) - // Get the AppKey. Crypto Servers may return status code FAILED_PRECONDITION when root keys are not exposed. - GetAppKey(context.Context, *GetRootKeysRequest) (*KeyEnvelope, error) -} - -// UnimplementedApplicationCryptoServiceServer can be embedded to have forward compatible implementations. -type UnimplementedApplicationCryptoServiceServer struct { -} - -func (*UnimplementedApplicationCryptoServiceServer) DeriveAppSKey(ctx context.Context, req *DeriveSessionKeysRequest) (*AppSKeyResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeriveAppSKey not implemented") -} -func (*UnimplementedApplicationCryptoServiceServer) GetAppKey(ctx context.Context, req *GetRootKeysRequest) (*KeyEnvelope, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetAppKey not implemented") } -func RegisterApplicationCryptoServiceServer(s *grpc.Server, srv ApplicationCryptoServiceServer) { - s.RegisterService(&_ApplicationCryptoService_serviceDesc, srv) +func (x *ProvisionEndDevicesRequest_IdentifiersList) String() string { + return protoimpl.X.MessageStringOf(x) } -func _ApplicationCryptoService_DeriveAppSKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeriveSessionKeysRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationCryptoServiceServer).DeriveAppSKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationCryptoService/DeriveAppSKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationCryptoServiceServer).DeriveAppSKey(ctx, req.(*DeriveSessionKeysRequest)) - } - return interceptor(ctx, in, info, handler) -} +func (*ProvisionEndDevicesRequest_IdentifiersList) ProtoMessage() {} -func _ApplicationCryptoService_GetAppKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetRootKeysRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationCryptoServiceServer).GetAppKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationCryptoService/GetAppKey", +func (x *ProvisionEndDevicesRequest_IdentifiersList) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationCryptoServiceServer).GetAppKey(ctx, req.(*GetRootKeysRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ApplicationCryptoService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.ApplicationCryptoService", - HandlerType: (*ApplicationCryptoServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "DeriveAppSKey", - Handler: _ApplicationCryptoService_DeriveAppSKey_Handler, - }, - { - MethodName: "GetAppKey", - Handler: _ApplicationCryptoService_GetAppKey_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/joinserver.proto", -} - -// JsEndDeviceRegistryClient is the client API for JsEndDeviceRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type JsEndDeviceRegistryClient interface { - // Get returns the device that matches the given identifiers. - // If there are multiple matches, an error will be returned. - Get(ctx context.Context, in *GetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) - // Set creates or updates the device. - Set(ctx context.Context, in *SetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) - // This rpc is deprecated; use EndDeviceTemplateConverter service instead. - // TODO: Remove (https://github.com/TheThingsNetwork/lorawan-stack/issues/999) - Provision(ctx context.Context, in *ProvisionEndDevicesRequest, opts ...grpc.CallOption) (JsEndDeviceRegistry_ProvisionClient, error) - // Delete deletes the device that matches the given identifiers. - // If there are multiple matches, an error will be returned. - Delete(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) -} - -type jsEndDeviceRegistryClient struct { - cc *grpc.ClientConn + return mi.MessageOf(x) } -func NewJsEndDeviceRegistryClient(cc *grpc.ClientConn) JsEndDeviceRegistryClient { - return &jsEndDeviceRegistryClient{cc} -} - -func (c *jsEndDeviceRegistryClient) Get(ctx context.Context, in *GetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { - out := new(EndDevice) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.JsEndDeviceRegistry/Get", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// Deprecated: Use ProvisionEndDevicesRequest_IdentifiersList.ProtoReflect.Descriptor instead. +func (*ProvisionEndDevicesRequest_IdentifiersList) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{8, 0} } -func (c *jsEndDeviceRegistryClient) Set(ctx context.Context, in *SetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { - out := new(EndDevice) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.JsEndDeviceRegistry/Set", in, out, opts...) - if err != nil { - return nil, err +func (x *ProvisionEndDevicesRequest_IdentifiersList) GetJoinEui() []byte { + if x != nil { + return x.JoinEui } - return out, nil + return nil } -// Deprecated: Do not use. -func (c *jsEndDeviceRegistryClient) Provision(ctx context.Context, in *ProvisionEndDevicesRequest, opts ...grpc.CallOption) (JsEndDeviceRegistry_ProvisionClient, error) { - stream, err := c.cc.NewStream(ctx, &_JsEndDeviceRegistry_serviceDesc.Streams[0], "/ttn.lorawan.v3.JsEndDeviceRegistry/Provision", opts...) - if err != nil { - return nil, err +func (x *ProvisionEndDevicesRequest_IdentifiersList) GetEndDeviceIds() []*EndDeviceIdentifiers { + if x != nil { + return x.EndDeviceIds } - x := &jsEndDeviceRegistryProvisionClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type JsEndDeviceRegistry_ProvisionClient interface { - Recv() (*EndDevice, error) - grpc.ClientStream + return nil } -type jsEndDeviceRegistryProvisionClient struct { - grpc.ClientStream -} +type ProvisionEndDevicesRequest_IdentifiersRange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *jsEndDeviceRegistryProvisionClient) Recv() (*EndDevice, error) { - m := new(EndDevice) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil + JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` + // DevEUI to start issuing from. + StartDevEui []byte `protobuf:"bytes,2,opt,name=start_dev_eui,json=startDevEui,proto3" json:"start_dev_eui,omitempty"` } -func (c *jsEndDeviceRegistryClient) Delete(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.JsEndDeviceRegistry/Delete", in, out, opts...) - if err != nil { - return nil, err +func (x *ProvisionEndDevicesRequest_IdentifiersRange) Reset() { + *x = ProvisionEndDevicesRequest_IdentifiersRange{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return out, nil -} - -// JsEndDeviceRegistryServer is the server API for JsEndDeviceRegistry service. -type JsEndDeviceRegistryServer interface { - // Get returns the device that matches the given identifiers. - // If there are multiple matches, an error will be returned. - Get(context.Context, *GetEndDeviceRequest) (*EndDevice, error) - // Set creates or updates the device. - Set(context.Context, *SetEndDeviceRequest) (*EndDevice, error) - // This rpc is deprecated; use EndDeviceTemplateConverter service instead. - // TODO: Remove (https://github.com/TheThingsNetwork/lorawan-stack/issues/999) - Provision(*ProvisionEndDevicesRequest, JsEndDeviceRegistry_ProvisionServer) error - // Delete deletes the device that matches the given identifiers. - // If there are multiple matches, an error will be returned. - Delete(context.Context, *EndDeviceIdentifiers) (*types.Empty, error) -} - -// UnimplementedJsEndDeviceRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedJsEndDeviceRegistryServer struct { } -func (*UnimplementedJsEndDeviceRegistryServer) Get(ctx context.Context, req *GetEndDeviceRequest) (*EndDevice, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") -} -func (*UnimplementedJsEndDeviceRegistryServer) Set(ctx context.Context, req *SetEndDeviceRequest) (*EndDevice, error) { - return nil, status.Errorf(codes.Unimplemented, "method Set not implemented") -} -func (*UnimplementedJsEndDeviceRegistryServer) Provision(req *ProvisionEndDevicesRequest, srv JsEndDeviceRegistry_ProvisionServer) error { - return status.Errorf(codes.Unimplemented, "method Provision not implemented") -} -func (*UnimplementedJsEndDeviceRegistryServer) Delete(ctx context.Context, req *EndDeviceIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +func (x *ProvisionEndDevicesRequest_IdentifiersRange) String() string { + return protoimpl.X.MessageStringOf(x) } -func RegisterJsEndDeviceRegistryServer(s *grpc.Server, srv JsEndDeviceRegistryServer) { - s.RegisterService(&_JsEndDeviceRegistry_serviceDesc, srv) -} +func (*ProvisionEndDevicesRequest_IdentifiersRange) ProtoMessage() {} -func _JsEndDeviceRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetEndDeviceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JsEndDeviceRegistryServer).Get(ctx, in) +func (x *ProvisionEndDevicesRequest_IdentifiersRange) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.JsEndDeviceRegistry/Get", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JsEndDeviceRegistryServer).Get(ctx, req.(*GetEndDeviceRequest)) - } - return interceptor(ctx, in, info, handler) + return mi.MessageOf(x) } -func _JsEndDeviceRegistry_Set_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetEndDeviceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JsEndDeviceRegistryServer).Set(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.JsEndDeviceRegistry/Set", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JsEndDeviceRegistryServer).Set(ctx, req.(*SetEndDeviceRequest)) - } - return interceptor(ctx, in, info, handler) +// Deprecated: Use ProvisionEndDevicesRequest_IdentifiersRange.ProtoReflect.Descriptor instead. +func (*ProvisionEndDevicesRequest_IdentifiersRange) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{8, 1} } -func _JsEndDeviceRegistry_Provision_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(ProvisionEndDevicesRequest) - if err := stream.RecvMsg(m); err != nil { - return err +func (x *ProvisionEndDevicesRequest_IdentifiersRange) GetJoinEui() []byte { + if x != nil { + return x.JoinEui } - return srv.(JsEndDeviceRegistryServer).Provision(m, &jsEndDeviceRegistryProvisionServer{stream}) -} - -type JsEndDeviceRegistry_ProvisionServer interface { - Send(*EndDevice) error - grpc.ServerStream -} - -type jsEndDeviceRegistryProvisionServer struct { - grpc.ServerStream -} - -func (x *jsEndDeviceRegistryProvisionServer) Send(m *EndDevice) error { - return x.ServerStream.SendMsg(m) + return nil } -func _JsEndDeviceRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(EndDeviceIdentifiers) - if err := dec(in); err != nil { - return nil, err +func (x *ProvisionEndDevicesRequest_IdentifiersRange) GetStartDevEui() []byte { + if x != nil { + return x.StartDevEui } - if interceptor == nil { - return srv.(JsEndDeviceRegistryServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.JsEndDeviceRegistry/Delete", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JsEndDeviceRegistryServer).Delete(ctx, req.(*EndDeviceIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -var _JsEndDeviceRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.JsEndDeviceRegistry", - HandlerType: (*JsEndDeviceRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Get", - Handler: _JsEndDeviceRegistry_Get_Handler, - }, - { - MethodName: "Set", - Handler: _JsEndDeviceRegistry_Set_Handler, - }, - { - MethodName: "Delete", - Handler: _JsEndDeviceRegistry_Delete_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "Provision", - Handler: _JsEndDeviceRegistry_Provision_Handler, - ServerStreams: true, - }, - }, - Metadata: "lorawan-stack/api/joinserver.proto", -} - -// ApplicationActivationSettingRegistryClient is the client API for ApplicationActivationSettingRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ApplicationActivationSettingRegistryClient interface { - // Get returns application activation settings. - Get(ctx context.Context, in *GetApplicationActivationSettingsRequest, opts ...grpc.CallOption) (*ApplicationActivationSettings, error) - // Set creates or updates application activation settings. - Set(ctx context.Context, in *SetApplicationActivationSettingsRequest, opts ...grpc.CallOption) (*ApplicationActivationSettings, error) - // Delete deletes application activation settings. - Delete(ctx context.Context, in *DeleteApplicationActivationSettingsRequest, opts ...grpc.CallOption) (*types.Empty, error) -} - -type applicationActivationSettingRegistryClient struct { - cc *grpc.ClientConn -} - -func NewApplicationActivationSettingRegistryClient(cc *grpc.ClientConn) ApplicationActivationSettingRegistryClient { - return &applicationActivationSettingRegistryClient{cc} + return nil } -func (c *applicationActivationSettingRegistryClient) Get(ctx context.Context, in *GetApplicationActivationSettingsRequest, opts ...grpc.CallOption) (*ApplicationActivationSettings, error) { - out := new(ApplicationActivationSettings) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Get", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} +type ProvisionEndDevicesRequest_IdentifiersFromData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (c *applicationActivationSettingRegistryClient) Set(ctx context.Context, in *SetApplicationActivationSettingsRequest, opts ...grpc.CallOption) (*ApplicationActivationSettings, error) { - out := new(ApplicationActivationSettings) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Set", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil + JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` } -func (c *applicationActivationSettingRegistryClient) Delete(ctx context.Context, in *DeleteApplicationActivationSettingsRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Delete", in, out, opts...) - if err != nil { - return nil, err +func (x *ProvisionEndDevicesRequest_IdentifiersFromData) Reset() { + *x = ProvisionEndDevicesRequest_IdentifiersFromData{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return out, nil } -// ApplicationActivationSettingRegistryServer is the server API for ApplicationActivationSettingRegistry service. -type ApplicationActivationSettingRegistryServer interface { - // Get returns application activation settings. - Get(context.Context, *GetApplicationActivationSettingsRequest) (*ApplicationActivationSettings, error) - // Set creates or updates application activation settings. - Set(context.Context, *SetApplicationActivationSettingsRequest) (*ApplicationActivationSettings, error) - // Delete deletes application activation settings. - Delete(context.Context, *DeleteApplicationActivationSettingsRequest) (*types.Empty, error) +func (x *ProvisionEndDevicesRequest_IdentifiersFromData) String() string { + return protoimpl.X.MessageStringOf(x) } -// UnimplementedApplicationActivationSettingRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedApplicationActivationSettingRegistryServer struct { -} - -func (*UnimplementedApplicationActivationSettingRegistryServer) Get(ctx context.Context, req *GetApplicationActivationSettingsRequest) (*ApplicationActivationSettings, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") -} -func (*UnimplementedApplicationActivationSettingRegistryServer) Set(ctx context.Context, req *SetApplicationActivationSettingsRequest) (*ApplicationActivationSettings, error) { - return nil, status.Errorf(codes.Unimplemented, "method Set not implemented") -} -func (*UnimplementedApplicationActivationSettingRegistryServer) Delete(ctx context.Context, req *DeleteApplicationActivationSettingsRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} - -func RegisterApplicationActivationSettingRegistryServer(s *grpc.Server, srv ApplicationActivationSettingRegistryServer) { - s.RegisterService(&_ApplicationActivationSettingRegistry_serviceDesc, srv) -} - -func _ApplicationActivationSettingRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetApplicationActivationSettingsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationActivationSettingRegistryServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Get", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationActivationSettingRegistryServer).Get(ctx, req.(*GetApplicationActivationSettingsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ApplicationActivationSettingRegistry_Set_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetApplicationActivationSettingsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationActivationSettingRegistryServer).Set(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Set", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationActivationSettingRegistryServer).Set(ctx, req.(*SetApplicationActivationSettingsRequest)) - } - return interceptor(ctx, in, info, handler) -} +func (*ProvisionEndDevicesRequest_IdentifiersFromData) ProtoMessage() {} -func _ApplicationActivationSettingRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteApplicationActivationSettingsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationActivationSettingRegistryServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Delete", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationActivationSettingRegistryServer).Delete(ctx, req.(*DeleteApplicationActivationSettingsRequest)) +func (x *ProvisionEndDevicesRequest_IdentifiersFromData) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_joinserver_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return interceptor(ctx, in, info, handler) + return mi.MessageOf(x) } -var _ApplicationActivationSettingRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.ApplicationActivationSettingRegistry", - HandlerType: (*ApplicationActivationSettingRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Get", - Handler: _ApplicationActivationSettingRegistry_Get_Handler, - }, - { - MethodName: "Set", - Handler: _ApplicationActivationSettingRegistry_Set_Handler, - }, - { - MethodName: "Delete", - Handler: _ApplicationActivationSettingRegistry_Delete_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/joinserver.proto", -} - -// JsClient is the client API for Js service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type JsClient interface { - // Request the JoinEUI prefixes that are configured for this Join Server. - GetJoinEUIPrefixes(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*JoinEUIPrefixes, error) - // Request the default JoinEUI that is configured for this Join Server. - GetDefaultJoinEUI(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*GetDefaultJoinEUIResponse, error) -} - -type jsClient struct { - cc *grpc.ClientConn -} - -func NewJsClient(cc *grpc.ClientConn) JsClient { - return &jsClient{cc} -} - -func (c *jsClient) GetJoinEUIPrefixes(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*JoinEUIPrefixes, error) { - out := new(JoinEUIPrefixes) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Js/GetJoinEUIPrefixes", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// Deprecated: Use ProvisionEndDevicesRequest_IdentifiersFromData.ProtoReflect.Descriptor instead. +func (*ProvisionEndDevicesRequest_IdentifiersFromData) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_joinserver_proto_rawDescGZIP(), []int{8, 2} } -func (c *jsClient) GetDefaultJoinEUI(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*GetDefaultJoinEUIResponse, error) { - out := new(GetDefaultJoinEUIResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Js/GetDefaultJoinEUI", in, out, opts...) - if err != nil { - return nil, err +func (x *ProvisionEndDevicesRequest_IdentifiersFromData) GetJoinEui() []byte { + if x != nil { + return x.JoinEui } - return out, nil -} - -// JsServer is the server API for Js service. -type JsServer interface { - // Request the JoinEUI prefixes that are configured for this Join Server. - GetJoinEUIPrefixes(context.Context, *types.Empty) (*JoinEUIPrefixes, error) - // Request the default JoinEUI that is configured for this Join Server. - GetDefaultJoinEUI(context.Context, *types.Empty) (*GetDefaultJoinEUIResponse, error) -} - -// UnimplementedJsServer can be embedded to have forward compatible implementations. -type UnimplementedJsServer struct { -} - -func (*UnimplementedJsServer) GetJoinEUIPrefixes(ctx context.Context, req *types.Empty) (*JoinEUIPrefixes, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetJoinEUIPrefixes not implemented") -} -func (*UnimplementedJsServer) GetDefaultJoinEUI(ctx context.Context, req *types.Empty) (*GetDefaultJoinEUIResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetDefaultJoinEUI not implemented") -} - -func RegisterJsServer(s *grpc.Server, srv JsServer) { - s.RegisterService(&_Js_serviceDesc, srv) + return nil } -func _Js_GetJoinEUIPrefixes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JsServer).GetJoinEUIPrefixes(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Js/GetJoinEUIPrefixes", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JsServer).GetJoinEUIPrefixes(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) -} +var File_lorawan_stack_api_joinserver_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_joinserver_proto_rawDesc = []byte{ + 0x0a, 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, + 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, + 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xe7, 0x03, 0x0a, 0x11, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0xce, 0x01, 0x0a, 0x07, 0x64, 0x65, 0x76, + 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, + 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, + 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, + 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, + 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, + 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, + 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, + 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, + 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, + 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, + 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x22, 0xf6, 0x01, 0x0a, + 0x10, 0x4e, 0x77, 0x6b, 0x53, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x4b, 0x0a, 0x0f, 0x66, 0x5f, 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x69, 0x6e, 0x74, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, + 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x0b, 0x66, 0x4e, 0x77, 0x6b, 0x53, 0x49, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x4b, + 0x0a, 0x0f, 0x73, 0x5f, 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, + 0x6c, 0x6f, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, + 0x73, 0x4e, 0x77, 0x6b, 0x53, 0x49, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x0d, 0x6e, + 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x65, 0x6e, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x6e, 0x77, 0x6b, 0x53, 0x45, + 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x54, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, + 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, + 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x07, 0x61, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, 0x22, 0xeb, 0x02, 0x0a, 0x1b, + 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x03, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x4d, 0x0a, + 0x0f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x07, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x02, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x12, 0x51, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, + 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, + 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, + 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x22, 0x38, 0x0a, 0x1c, 0x43, 0x72, 0x79, + 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x22, 0x96, 0x03, 0x0a, 0x14, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x4d, 0x49, 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0f, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x55, 0x0a, 0x11, + 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa8, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, + 0x02, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, + 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, + 0x73, 0x68, 0x61, 0x6c, 0x32, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x15, 0x4a, 0x06, 0x22, + 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x52, 0x08, 0x64, 0x65, 0x76, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x22, 0x9f, 0x07, 0x0a, + 0x18, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, + 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x03, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x4d, 0x0a, 0x0f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xca, 0x01, 0x0a, 0x0a, 0x6a, + 0x6f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0xaa, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, + 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x22, 0x9a, + 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x6a, 0x6f, + 0x69, 0x6e, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x5f, + 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa8, 0x01, 0xfa, 0x42, + 0x06, 0x7a, 0x04, 0x68, 0x02, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, + 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, + 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x32, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, + 0x15, 0x4a, 0x06, 0x22, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, + 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x64, 0x65, 0x76, 0x4e, 0x6f, 0x6e, 0x63, 0x65, + 0x12, 0xc2, 0x01, 0x0a, 0x06, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0xaa, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, + 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, + 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, + 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, + 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x22, 0xef, + 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x51, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x0d, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x11, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, + 0x22, 0xef, 0x0b, 0x0a, 0x1a, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x4e, 0x0a, 0x0e, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x0d, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x50, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, + 0x74, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x05, 0x72, 0x61, 0x6e, + 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x5d, + 0x0a, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, + 0x61, 0x48, 0x00, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x1a, 0xb0, 0x02, + 0x0a, 0x0f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, + 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, + 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, + 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, + 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, + 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, + 0x6e, 0x45, 0x75, 0x69, 0x12, 0x4a, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, + 0x1a, 0xc1, 0x03, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, + 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, + 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, + 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, + 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, + 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, + 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, + 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, 0xd9, 0x01, 0x0a, 0x0d, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, + 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, + 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, + 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, + 0x76, 0x45, 0x75, 0x69, 0x1a, 0xe8, 0x01, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x12, 0xd0, 0x01, 0x0a, + 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, + 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, + 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, + 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x3a, + 0x02, 0x18, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x22, 0xaf, 0x04, 0x0a, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x25, 0x0a, 0x09, 0x6b, 0x65, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, + 0x10, 0x52, 0x08, 0x6b, 0x65, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x2d, 0x0a, 0x03, 0x6b, + 0x65, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, + 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x03, 0x6b, 0x65, 0x6b, 0x12, 0xf0, 0x02, 0x0a, 0x0b, 0x68, + 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0xcf, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, + 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, + 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, + 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, + 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x52, 0x09, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3b, 0x0a, + 0x15, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x13, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, + 0x08, 0x01, 0x10, 0x01, 0x22, 0xbf, 0x01, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x9e, 0x02, 0x0a, 0x27, 0x53, 0x65, 0x74, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x53, 0x0a, + 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x3a, 0x08, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x87, 0x01, 0x0a, 0x2a, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x73, 0x22, 0xfa, 0x01, 0x0a, 0x0d, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x50, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, + 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, + 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, + 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, + 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, + 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, + 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x4c, + 0x0a, 0x0f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, + 0x73, 0x12, 0x39, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x50, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x22, 0xee, 0x01, 0x0a, + 0x19, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x45, + 0x55, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, + 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, + 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, + 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, + 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x32, 0xa3, 0x01, + 0x0a, 0x04, 0x4e, 0x73, 0x4a, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x52, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4e, 0x77, 0x6b, 0x53, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x21, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4e, 0x77, 0x6b, 0x53, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x32, 0x58, 0x0a, 0x04, 0x41, 0x73, 0x4a, 0x73, 0x12, 0x50, 0x0a, 0x0a, 0x47, + 0x65, 0x74, 0x41, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x53, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x59, 0x0a, + 0x05, 0x41, 0x70, 0x70, 0x4a, 0x73, 0x12, 0x50, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, + 0x53, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xf6, 0x04, 0x0a, 0x14, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x6b, 0x0a, 0x0e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x4d, 0x49, 0x43, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, + 0x0a, 0x0d, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x4d, 0x49, 0x43, 0x12, + 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x4d, 0x49, 0x43, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x11, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, 0x6f, + 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x13, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x52, 0x65, + 0x6a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, + 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x4e, + 0x77, 0x6b, 0x53, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4e, 0x77, 0x6b, 0x53, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4e, 0x77, 0x6b, 0x4b, 0x65, 0x79, + 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, + 0x65, 0x32, 0xc4, 0x01, 0x0a, 0x18, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5a, + 0x0a, 0x0d, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x41, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, 0x12, + 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, + 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x53, 0x4b, + 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x09, 0x47, 0x65, + 0x74, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x74, + 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, + 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x32, 0x95, 0x06, 0x0a, 0x13, 0x4a, 0x73, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, + 0x12, 0xb2, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, + 0x12, 0x63, 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x86, 0x02, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x23, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, + 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0xbe, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb7, 0x01, 0x1a, 0x63, 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, + 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, + 0x4d, 0x22, 0x48, 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xa7, + 0x01, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x22, 0x51, 0x88, 0x02, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x1a, 0x43, + 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2d, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x30, 0x01, 0x12, 0x95, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x2a, 0x45, 0x2f, 0x6a, 0x73, 0x2f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x32, 0xb4, 0x04, 0x0a, 0x24, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xb1, 0x01, 0x0a, 0x03, 0x47, 0x65, + 0x74, 0x12, 0x37, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x3c, 0x12, 0x3a, 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xb4, 0x01, + 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x37, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x45, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x22, 0x3a, 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xa0, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, + 0x3a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x2a, 0x3a, 0x2f, 0x6a, 0x73, + 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x32, 0xe8, 0x01, 0x0a, 0x02, 0x4a, 0x73, 0x12, 0x6c, + 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x50, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1f, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x6f, + 0x69, 0x6e, 0x45, 0x55, 0x49, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x22, 0x1d, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x6a, 0x73, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, + 0x65, 0x75, 0x69, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x74, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, + 0x49, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x6a, + 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, + 0x75, 0x69, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_lorawan_stack_api_joinserver_proto_rawDescOnce sync.Once + file_lorawan_stack_api_joinserver_proto_rawDescData = file_lorawan_stack_api_joinserver_proto_rawDesc +) -func _Js_GetDefaultJoinEUI_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JsServer).GetDefaultJoinEUI(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Js/GetDefaultJoinEUI", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JsServer).GetDefaultJoinEUI(ctx, req.(*types.Empty)) +func file_lorawan_stack_api_joinserver_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_joinserver_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_joinserver_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_joinserver_proto_rawDescData) + }) + return file_lorawan_stack_api_joinserver_proto_rawDescData +} + +var file_lorawan_stack_api_joinserver_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_lorawan_stack_api_joinserver_proto_goTypes = []interface{}{ + (*SessionKeyRequest)(nil), // 0: ttn.lorawan.v3.SessionKeyRequest + (*NwkSKeysResponse)(nil), // 1: ttn.lorawan.v3.NwkSKeysResponse + (*AppSKeyResponse)(nil), // 2: ttn.lorawan.v3.AppSKeyResponse + (*CryptoServicePayloadRequest)(nil), // 3: ttn.lorawan.v3.CryptoServicePayloadRequest + (*CryptoServicePayloadResponse)(nil), // 4: ttn.lorawan.v3.CryptoServicePayloadResponse + (*JoinAcceptMICRequest)(nil), // 5: ttn.lorawan.v3.JoinAcceptMICRequest + (*DeriveSessionKeysRequest)(nil), // 6: ttn.lorawan.v3.DeriveSessionKeysRequest + (*GetRootKeysRequest)(nil), // 7: ttn.lorawan.v3.GetRootKeysRequest + (*ProvisionEndDevicesRequest)(nil), // 8: ttn.lorawan.v3.ProvisionEndDevicesRequest + (*ApplicationActivationSettings)(nil), // 9: ttn.lorawan.v3.ApplicationActivationSettings + (*GetApplicationActivationSettingsRequest)(nil), // 10: ttn.lorawan.v3.GetApplicationActivationSettingsRequest + (*SetApplicationActivationSettingsRequest)(nil), // 11: ttn.lorawan.v3.SetApplicationActivationSettingsRequest + (*DeleteApplicationActivationSettingsRequest)(nil), // 12: ttn.lorawan.v3.DeleteApplicationActivationSettingsRequest + (*JoinEUIPrefix)(nil), // 13: ttn.lorawan.v3.JoinEUIPrefix + (*JoinEUIPrefixes)(nil), // 14: ttn.lorawan.v3.JoinEUIPrefixes + (*GetDefaultJoinEUIResponse)(nil), // 15: ttn.lorawan.v3.GetDefaultJoinEUIResponse + (*ProvisionEndDevicesRequest_IdentifiersList)(nil), // 16: ttn.lorawan.v3.ProvisionEndDevicesRequest.IdentifiersList + (*ProvisionEndDevicesRequest_IdentifiersRange)(nil), // 17: ttn.lorawan.v3.ProvisionEndDevicesRequest.IdentifiersRange + (*ProvisionEndDevicesRequest_IdentifiersFromData)(nil), // 18: ttn.lorawan.v3.ProvisionEndDevicesRequest.IdentifiersFromData + (*KeyEnvelope)(nil), // 19: ttn.lorawan.v3.KeyEnvelope + (*EndDeviceIdentifiers)(nil), // 20: ttn.lorawan.v3.EndDeviceIdentifiers + (MACVersion)(0), // 21: ttn.lorawan.v3.MACVersion + (*structpb.Struct)(nil), // 22: google.protobuf.Struct + (JoinRequestType)(0), // 23: ttn.lorawan.v3.JoinRequestType + (*ApplicationIdentifiers)(nil), // 24: ttn.lorawan.v3.ApplicationIdentifiers + (*fieldmaskpb.FieldMask)(nil), // 25: google.protobuf.FieldMask + (*JoinRequest)(nil), // 26: ttn.lorawan.v3.JoinRequest + (*GetEndDeviceRequest)(nil), // 27: ttn.lorawan.v3.GetEndDeviceRequest + (*SetEndDeviceRequest)(nil), // 28: ttn.lorawan.v3.SetEndDeviceRequest + (*emptypb.Empty)(nil), // 29: google.protobuf.Empty + (*JoinResponse)(nil), // 30: ttn.lorawan.v3.JoinResponse + (*EndDevice)(nil), // 31: ttn.lorawan.v3.EndDevice +} +var file_lorawan_stack_api_joinserver_proto_depIdxs = []int32{ + 19, // 0: ttn.lorawan.v3.NwkSKeysResponse.f_nwk_s_int_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 19, // 1: ttn.lorawan.v3.NwkSKeysResponse.s_nwk_s_int_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 19, // 2: ttn.lorawan.v3.NwkSKeysResponse.nwk_s_enc_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 19, // 3: ttn.lorawan.v3.AppSKeyResponse.app_s_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 20, // 4: ttn.lorawan.v3.CryptoServicePayloadRequest.ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 21, // 5: ttn.lorawan.v3.CryptoServicePayloadRequest.lorawan_version:type_name -> ttn.lorawan.v3.MACVersion + 22, // 6: ttn.lorawan.v3.CryptoServicePayloadRequest.provisioning_data:type_name -> google.protobuf.Struct + 3, // 7: ttn.lorawan.v3.JoinAcceptMICRequest.payload_request:type_name -> ttn.lorawan.v3.CryptoServicePayloadRequest + 23, // 8: ttn.lorawan.v3.JoinAcceptMICRequest.join_request_type:type_name -> ttn.lorawan.v3.JoinRequestType + 20, // 9: ttn.lorawan.v3.DeriveSessionKeysRequest.ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 21, // 10: ttn.lorawan.v3.DeriveSessionKeysRequest.lorawan_version:type_name -> ttn.lorawan.v3.MACVersion + 22, // 11: ttn.lorawan.v3.DeriveSessionKeysRequest.provisioning_data:type_name -> google.protobuf.Struct + 20, // 12: ttn.lorawan.v3.GetRootKeysRequest.ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 22, // 13: ttn.lorawan.v3.GetRootKeysRequest.provisioning_data:type_name -> google.protobuf.Struct + 24, // 14: ttn.lorawan.v3.ProvisionEndDevicesRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 16, // 15: ttn.lorawan.v3.ProvisionEndDevicesRequest.list:type_name -> ttn.lorawan.v3.ProvisionEndDevicesRequest.IdentifiersList + 17, // 16: ttn.lorawan.v3.ProvisionEndDevicesRequest.range:type_name -> ttn.lorawan.v3.ProvisionEndDevicesRequest.IdentifiersRange + 18, // 17: ttn.lorawan.v3.ProvisionEndDevicesRequest.from_data:type_name -> ttn.lorawan.v3.ProvisionEndDevicesRequest.IdentifiersFromData + 19, // 18: ttn.lorawan.v3.ApplicationActivationSettings.kek:type_name -> ttn.lorawan.v3.KeyEnvelope + 24, // 19: ttn.lorawan.v3.GetApplicationActivationSettingsRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 25, // 20: ttn.lorawan.v3.GetApplicationActivationSettingsRequest.field_mask:type_name -> google.protobuf.FieldMask + 24, // 21: ttn.lorawan.v3.SetApplicationActivationSettingsRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 9, // 22: ttn.lorawan.v3.SetApplicationActivationSettingsRequest.settings:type_name -> ttn.lorawan.v3.ApplicationActivationSettings + 25, // 23: ttn.lorawan.v3.SetApplicationActivationSettingsRequest.field_mask:type_name -> google.protobuf.FieldMask + 24, // 24: ttn.lorawan.v3.DeleteApplicationActivationSettingsRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 13, // 25: ttn.lorawan.v3.JoinEUIPrefixes.prefixes:type_name -> ttn.lorawan.v3.JoinEUIPrefix + 20, // 26: ttn.lorawan.v3.ProvisionEndDevicesRequest.IdentifiersList.end_device_ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 26, // 27: ttn.lorawan.v3.NsJs.HandleJoin:input_type -> ttn.lorawan.v3.JoinRequest + 0, // 28: ttn.lorawan.v3.NsJs.GetNwkSKeys:input_type -> ttn.lorawan.v3.SessionKeyRequest + 0, // 29: ttn.lorawan.v3.AsJs.GetAppSKey:input_type -> ttn.lorawan.v3.SessionKeyRequest + 0, // 30: ttn.lorawan.v3.AppJs.GetAppSKey:input_type -> ttn.lorawan.v3.SessionKeyRequest + 3, // 31: ttn.lorawan.v3.NetworkCryptoService.JoinRequestMIC:input_type -> ttn.lorawan.v3.CryptoServicePayloadRequest + 5, // 32: ttn.lorawan.v3.NetworkCryptoService.JoinAcceptMIC:input_type -> ttn.lorawan.v3.JoinAcceptMICRequest + 3, // 33: ttn.lorawan.v3.NetworkCryptoService.EncryptJoinAccept:input_type -> ttn.lorawan.v3.CryptoServicePayloadRequest + 3, // 34: ttn.lorawan.v3.NetworkCryptoService.EncryptRejoinAccept:input_type -> ttn.lorawan.v3.CryptoServicePayloadRequest + 6, // 35: ttn.lorawan.v3.NetworkCryptoService.DeriveNwkSKeys:input_type -> ttn.lorawan.v3.DeriveSessionKeysRequest + 7, // 36: ttn.lorawan.v3.NetworkCryptoService.GetNwkKey:input_type -> ttn.lorawan.v3.GetRootKeysRequest + 6, // 37: ttn.lorawan.v3.ApplicationCryptoService.DeriveAppSKey:input_type -> ttn.lorawan.v3.DeriveSessionKeysRequest + 7, // 38: ttn.lorawan.v3.ApplicationCryptoService.GetAppKey:input_type -> ttn.lorawan.v3.GetRootKeysRequest + 27, // 39: ttn.lorawan.v3.JsEndDeviceRegistry.Get:input_type -> ttn.lorawan.v3.GetEndDeviceRequest + 28, // 40: ttn.lorawan.v3.JsEndDeviceRegistry.Set:input_type -> ttn.lorawan.v3.SetEndDeviceRequest + 8, // 41: ttn.lorawan.v3.JsEndDeviceRegistry.Provision:input_type -> ttn.lorawan.v3.ProvisionEndDevicesRequest + 20, // 42: ttn.lorawan.v3.JsEndDeviceRegistry.Delete:input_type -> ttn.lorawan.v3.EndDeviceIdentifiers + 10, // 43: ttn.lorawan.v3.ApplicationActivationSettingRegistry.Get:input_type -> ttn.lorawan.v3.GetApplicationActivationSettingsRequest + 11, // 44: ttn.lorawan.v3.ApplicationActivationSettingRegistry.Set:input_type -> ttn.lorawan.v3.SetApplicationActivationSettingsRequest + 12, // 45: ttn.lorawan.v3.ApplicationActivationSettingRegistry.Delete:input_type -> ttn.lorawan.v3.DeleteApplicationActivationSettingsRequest + 29, // 46: ttn.lorawan.v3.Js.GetJoinEUIPrefixes:input_type -> google.protobuf.Empty + 29, // 47: ttn.lorawan.v3.Js.GetDefaultJoinEUI:input_type -> google.protobuf.Empty + 30, // 48: ttn.lorawan.v3.NsJs.HandleJoin:output_type -> ttn.lorawan.v3.JoinResponse + 1, // 49: ttn.lorawan.v3.NsJs.GetNwkSKeys:output_type -> ttn.lorawan.v3.NwkSKeysResponse + 2, // 50: ttn.lorawan.v3.AsJs.GetAppSKey:output_type -> ttn.lorawan.v3.AppSKeyResponse + 2, // 51: ttn.lorawan.v3.AppJs.GetAppSKey:output_type -> ttn.lorawan.v3.AppSKeyResponse + 4, // 52: ttn.lorawan.v3.NetworkCryptoService.JoinRequestMIC:output_type -> ttn.lorawan.v3.CryptoServicePayloadResponse + 4, // 53: ttn.lorawan.v3.NetworkCryptoService.JoinAcceptMIC:output_type -> ttn.lorawan.v3.CryptoServicePayloadResponse + 4, // 54: ttn.lorawan.v3.NetworkCryptoService.EncryptJoinAccept:output_type -> ttn.lorawan.v3.CryptoServicePayloadResponse + 4, // 55: ttn.lorawan.v3.NetworkCryptoService.EncryptRejoinAccept:output_type -> ttn.lorawan.v3.CryptoServicePayloadResponse + 1, // 56: ttn.lorawan.v3.NetworkCryptoService.DeriveNwkSKeys:output_type -> ttn.lorawan.v3.NwkSKeysResponse + 19, // 57: ttn.lorawan.v3.NetworkCryptoService.GetNwkKey:output_type -> ttn.lorawan.v3.KeyEnvelope + 2, // 58: ttn.lorawan.v3.ApplicationCryptoService.DeriveAppSKey:output_type -> ttn.lorawan.v3.AppSKeyResponse + 19, // 59: ttn.lorawan.v3.ApplicationCryptoService.GetAppKey:output_type -> ttn.lorawan.v3.KeyEnvelope + 31, // 60: ttn.lorawan.v3.JsEndDeviceRegistry.Get:output_type -> ttn.lorawan.v3.EndDevice + 31, // 61: ttn.lorawan.v3.JsEndDeviceRegistry.Set:output_type -> ttn.lorawan.v3.EndDevice + 31, // 62: ttn.lorawan.v3.JsEndDeviceRegistry.Provision:output_type -> ttn.lorawan.v3.EndDevice + 29, // 63: ttn.lorawan.v3.JsEndDeviceRegistry.Delete:output_type -> google.protobuf.Empty + 9, // 64: ttn.lorawan.v3.ApplicationActivationSettingRegistry.Get:output_type -> ttn.lorawan.v3.ApplicationActivationSettings + 9, // 65: ttn.lorawan.v3.ApplicationActivationSettingRegistry.Set:output_type -> ttn.lorawan.v3.ApplicationActivationSettings + 29, // 66: ttn.lorawan.v3.ApplicationActivationSettingRegistry.Delete:output_type -> google.protobuf.Empty + 14, // 67: ttn.lorawan.v3.Js.GetJoinEUIPrefixes:output_type -> ttn.lorawan.v3.JoinEUIPrefixes + 15, // 68: ttn.lorawan.v3.Js.GetDefaultJoinEUI:output_type -> ttn.lorawan.v3.GetDefaultJoinEUIResponse + 48, // [48:69] is the sub-list for method output_type + 27, // [27:48] is the sub-list for method input_type + 27, // [27:27] is the sub-list for extension type_name + 27, // [27:27] is the sub-list for extension extendee + 0, // [0:27] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_joinserver_proto_init() } +func file_lorawan_stack_api_joinserver_proto_init() { + if File_lorawan_stack_api_joinserver_proto != nil { + return + } + file_lorawan_stack_api_end_device_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_join_proto_init() + file_lorawan_stack_api_keys_proto_init() + file_lorawan_stack_api_lorawan_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_joinserver_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SessionKeyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NwkSKeysResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AppSKeyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CryptoServicePayloadRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CryptoServicePayloadResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*JoinAcceptMICRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeriveSessionKeysRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetRootKeysRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProvisionEndDevicesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationActivationSettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetApplicationActivationSettingsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetApplicationActivationSettingsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteApplicationActivationSettingsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*JoinEUIPrefix); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*JoinEUIPrefixes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetDefaultJoinEUIResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProvisionEndDevicesRequest_IdentifiersList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProvisionEndDevicesRequest_IdentifiersRange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProvisionEndDevicesRequest_IdentifiersFromData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_lorawan_stack_api_joinserver_proto_msgTypes[8].OneofWrappers = []interface{}{ + (*ProvisionEndDevicesRequest_List)(nil), + (*ProvisionEndDevicesRequest_Range)(nil), + (*ProvisionEndDevicesRequest_FromData)(nil), } - return interceptor(ctx, in, info, handler) -} - -var _Js_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.Js", - HandlerType: (*JsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetJoinEUIPrefixes", - Handler: _Js_GetJoinEUIPrefixes_Handler, - }, - { - MethodName: "GetDefaultJoinEUI", - Handler: _Js_GetDefaultJoinEUI_Handler, + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_joinserver_proto_rawDesc, + NumEnums: 0, + NumMessages: 19, + NumExtensions: 0, + NumServices: 8, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/joinserver.proto", + GoTypes: file_lorawan_stack_api_joinserver_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_joinserver_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_joinserver_proto_msgTypes, + }.Build() + File_lorawan_stack_api_joinserver_proto = out.File + file_lorawan_stack_api_joinserver_proto_rawDesc = nil + file_lorawan_stack_api_joinserver_proto_goTypes = nil + file_lorawan_stack_api_joinserver_proto_depIdxs = nil } diff --git a/pkg/ttnpb/joinserver.pb.gw.go b/pkg/ttnpb/joinserver.pb.gw.go index 55e0956bad..f4091247a7 100644 --- a/pkg/ttnpb/joinserver.pb.gw.go +++ b/pkg/ttnpb/joinserver.pb.gw.go @@ -13,16 +13,15 @@ import ( "io" "net/http" - "github.com/gogo/protobuf/types" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/emptypb" ) // Suppress "imported and not used" errors @@ -31,7 +30,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join var ( @@ -55,7 +53,6 @@ func request_JsEndDeviceRegistry_Get_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -66,7 +63,6 @@ func request_JsEndDeviceRegistry_Get_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -100,7 +96,6 @@ func local_request_JsEndDeviceRegistry_Get_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -111,7 +106,6 @@ func local_request_JsEndDeviceRegistry_Get_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -153,7 +147,6 @@ func request_JsEndDeviceRegistry_Set_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.application_ids.application_id", err) } @@ -164,7 +157,6 @@ func request_JsEndDeviceRegistry_Set_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.device_id", err) } @@ -199,7 +191,6 @@ func local_request_JsEndDeviceRegistry_Set_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.application_ids.application_id", err) } @@ -210,7 +201,6 @@ func local_request_JsEndDeviceRegistry_Set_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.device_id", err) } @@ -245,7 +235,6 @@ func request_JsEndDeviceRegistry_Set_1(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.application_ids.application_id", err) } @@ -280,7 +269,6 @@ func local_request_JsEndDeviceRegistry_Set_1(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.application_ids.application_id", err) } @@ -315,7 +303,6 @@ func request_JsEndDeviceRegistry_Provision_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -354,7 +341,6 @@ func request_JsEndDeviceRegistry_Delete_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -365,7 +351,6 @@ func request_JsEndDeviceRegistry_Delete_0(ctx context.Context, marshaler runtime } protoReq.DeviceId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "device_id", err) } @@ -399,7 +384,6 @@ func local_request_JsEndDeviceRegistry_Delete_0(ctx context.Context, marshaler r } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -410,7 +394,6 @@ func local_request_JsEndDeviceRegistry_Delete_0(ctx context.Context, marshaler r } protoReq.DeviceId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "device_id", err) } @@ -448,7 +431,6 @@ func request_ApplicationActivationSettingRegistry_Get_0(ctx context.Context, mar } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -482,7 +464,6 @@ func local_request_ApplicationActivationSettingRegistry_Get_0(ctx context.Contex } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -524,7 +505,6 @@ func request_ApplicationActivationSettingRegistry_Set_0(ctx context.Context, mar } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -559,7 +539,6 @@ func local_request_ApplicationActivationSettingRegistry_Set_0(ctx context.Contex } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -590,7 +569,6 @@ func request_ApplicationActivationSettingRegistry_Delete_0(ctx context.Context, } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -624,7 +602,6 @@ func local_request_ApplicationActivationSettingRegistry_Delete_0(ctx context.Con } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -642,7 +619,7 @@ func local_request_ApplicationActivationSettingRegistry_Delete_0(ctx context.Con } func request_Js_GetJoinEUIPrefixes_0(ctx context.Context, marshaler runtime.Marshaler, client JsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := client.GetJoinEUIPrefixes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -651,7 +628,7 @@ func request_Js_GetJoinEUIPrefixes_0(ctx context.Context, marshaler runtime.Mars } func local_request_Js_GetJoinEUIPrefixes_0(ctx context.Context, marshaler runtime.Marshaler, server JsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := server.GetJoinEUIPrefixes(ctx, &protoReq) @@ -660,7 +637,7 @@ func local_request_Js_GetJoinEUIPrefixes_0(ctx context.Context, marshaler runtim } func request_Js_GetDefaultJoinEUI_0(ctx context.Context, marshaler runtime.Marshaler, client JsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := client.GetDefaultJoinEUI(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -669,7 +646,7 @@ func request_Js_GetDefaultJoinEUI_0(ctx context.Context, marshaler runtime.Marsh } func local_request_Js_GetDefaultJoinEUI_0(ctx context.Context, marshaler runtime.Marshaler, server JsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := server.GetDefaultJoinEUI(ctx, &protoReq) @@ -689,20 +666,22 @@ func RegisterJsEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.JsEndDeviceRegistry/Get", runtime.WithHTTPPathPattern("/js/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_JsEndDeviceRegistry_Get_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_JsEndDeviceRegistry_Get_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_JsEndDeviceRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_JsEndDeviceRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -712,20 +691,22 @@ func RegisterJsEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.JsEndDeviceRegistry/Set", runtime.WithHTTPPathPattern("/js/applications/{end_device.ids.application_ids.application_id}/devices/{end_device.ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_JsEndDeviceRegistry_Set_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_JsEndDeviceRegistry_Set_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_JsEndDeviceRegistry_Set_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_JsEndDeviceRegistry_Set_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -735,20 +716,22 @@ func RegisterJsEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.JsEndDeviceRegistry/Set", runtime.WithHTTPPathPattern("/js/applications/{end_device.ids.application_ids.application_id}/devices")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_JsEndDeviceRegistry_Set_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_JsEndDeviceRegistry_Set_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_JsEndDeviceRegistry_Set_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_JsEndDeviceRegistry_Set_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -765,20 +748,22 @@ func RegisterJsEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.JsEndDeviceRegistry/Delete", runtime.WithHTTPPathPattern("/js/applications/{application_ids.application_id}/devices/{device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_JsEndDeviceRegistry_Delete_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_JsEndDeviceRegistry_Delete_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_JsEndDeviceRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_JsEndDeviceRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -797,20 +782,22 @@ func RegisterApplicationActivationSettingRegistryHandlerServer(ctx context.Conte var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Get", runtime.WithHTTPPathPattern("/js/applications/{application_ids.application_id}/settings")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationActivationSettingRegistry_Get_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationActivationSettingRegistry_Get_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationActivationSettingRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationActivationSettingRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -820,20 +807,22 @@ func RegisterApplicationActivationSettingRegistryHandlerServer(ctx context.Conte var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Set", runtime.WithHTTPPathPattern("/js/applications/{application_ids.application_id}/settings")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationActivationSettingRegistry_Set_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationActivationSettingRegistry_Set_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationActivationSettingRegistry_Set_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationActivationSettingRegistry_Set_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -843,20 +832,22 @@ func RegisterApplicationActivationSettingRegistryHandlerServer(ctx context.Conte var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Delete", runtime.WithHTTPPathPattern("/js/applications/{application_ids.application_id}/settings")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ApplicationActivationSettingRegistry_Delete_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ApplicationActivationSettingRegistry_Delete_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationActivationSettingRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationActivationSettingRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -875,20 +866,22 @@ func RegisterJsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Js/GetJoinEUIPrefixes", runtime.WithHTTPPathPattern("/js/join_eui_prefixes")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Js_GetJoinEUIPrefixes_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Js_GetJoinEUIPrefixes_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Js_GetJoinEUIPrefixes_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Js_GetJoinEUIPrefixes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -898,20 +891,22 @@ func RegisterJsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Js/GetDefaultJoinEUI", runtime.WithHTTPPathPattern("/js/default_join_eui")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Js_GetDefaultJoinEUI_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Js_GetDefaultJoinEUI_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Js_GetDefaultJoinEUI_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Js_GetDefaultJoinEUI_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -960,19 +955,21 @@ func RegisterJsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.JsEndDeviceRegistry/Get", runtime.WithHTTPPathPattern("/js/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_JsEndDeviceRegistry_Get_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_JsEndDeviceRegistry_Get_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_JsEndDeviceRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_JsEndDeviceRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -980,19 +977,21 @@ func RegisterJsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.JsEndDeviceRegistry/Set", runtime.WithHTTPPathPattern("/js/applications/{end_device.ids.application_ids.application_id}/devices/{end_device.ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_JsEndDeviceRegistry_Set_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_JsEndDeviceRegistry_Set_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_JsEndDeviceRegistry_Set_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_JsEndDeviceRegistry_Set_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1000,19 +999,21 @@ func RegisterJsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.JsEndDeviceRegistry/Set", runtime.WithHTTPPathPattern("/js/applications/{end_device.ids.application_ids.application_id}/devices")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_JsEndDeviceRegistry_Set_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_JsEndDeviceRegistry_Set_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_JsEndDeviceRegistry_Set_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_JsEndDeviceRegistry_Set_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1020,19 +1021,21 @@ func RegisterJsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.JsEndDeviceRegistry/Provision", runtime.WithHTTPPathPattern("/js/applications/{application_ids.application_id}/provision-devices")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_JsEndDeviceRegistry_Provision_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_JsEndDeviceRegistry_Provision_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_JsEndDeviceRegistry_Provision_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) + forward_JsEndDeviceRegistry_Provision_0(annotatedContext, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...) }) @@ -1040,19 +1043,21 @@ func RegisterJsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.JsEndDeviceRegistry/Delete", runtime.WithHTTPPathPattern("/js/applications/{application_ids.application_id}/devices/{device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_JsEndDeviceRegistry_Delete_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_JsEndDeviceRegistry_Delete_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_JsEndDeviceRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_JsEndDeviceRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1060,15 +1065,15 @@ func RegisterJsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. } var ( - pattern_JsEndDeviceRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"js", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_JsEndDeviceRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"js", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id"}, "")) - pattern_JsEndDeviceRegistry_Set_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"js", "applications", "end_device.ids.application_ids.application_id", "devices", "end_device.ids.device_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_JsEndDeviceRegistry_Set_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"js", "applications", "end_device.ids.application_ids.application_id", "devices", "end_device.ids.device_id"}, "")) - pattern_JsEndDeviceRegistry_Set_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"js", "applications", "end_device.ids.application_ids.application_id", "devices"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_JsEndDeviceRegistry_Set_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"js", "applications", "end_device.ids.application_ids.application_id", "devices"}, "")) - pattern_JsEndDeviceRegistry_Provision_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"js", "applications", "application_ids.application_id", "provision-devices"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_JsEndDeviceRegistry_Provision_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"js", "applications", "application_ids.application_id", "provision-devices"}, "")) - pattern_JsEndDeviceRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"js", "applications", "application_ids.application_id", "devices", "device_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_JsEndDeviceRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"js", "applications", "application_ids.application_id", "devices", "device_id"}, "")) ) var ( @@ -1125,19 +1130,21 @@ func RegisterApplicationActivationSettingRegistryHandlerClient(ctx context.Conte ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Get", runtime.WithHTTPPathPattern("/js/applications/{application_ids.application_id}/settings")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationActivationSettingRegistry_Get_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationActivationSettingRegistry_Get_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationActivationSettingRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationActivationSettingRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1145,19 +1152,21 @@ func RegisterApplicationActivationSettingRegistryHandlerClient(ctx context.Conte ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Set", runtime.WithHTTPPathPattern("/js/applications/{application_ids.application_id}/settings")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationActivationSettingRegistry_Set_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationActivationSettingRegistry_Set_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationActivationSettingRegistry_Set_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationActivationSettingRegistry_Set_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1165,19 +1174,21 @@ func RegisterApplicationActivationSettingRegistryHandlerClient(ctx context.Conte ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Delete", runtime.WithHTTPPathPattern("/js/applications/{application_ids.application_id}/settings")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ApplicationActivationSettingRegistry_Delete_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_ApplicationActivationSettingRegistry_Delete_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_ApplicationActivationSettingRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ApplicationActivationSettingRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1185,11 +1196,11 @@ func RegisterApplicationActivationSettingRegistryHandlerClient(ctx context.Conte } var ( - pattern_ApplicationActivationSettingRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"js", "applications", "application_ids.application_id", "settings"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationActivationSettingRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"js", "applications", "application_ids.application_id", "settings"}, "")) - pattern_ApplicationActivationSettingRegistry_Set_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"js", "applications", "application_ids.application_id", "settings"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationActivationSettingRegistry_Set_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"js", "applications", "application_ids.application_id", "settings"}, "")) - pattern_ApplicationActivationSettingRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"js", "applications", "application_ids.application_id", "settings"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ApplicationActivationSettingRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"js", "applications", "application_ids.application_id", "settings"}, "")) ) var ( @@ -1242,19 +1253,21 @@ func RegisterJsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Js/GetJoinEUIPrefixes", runtime.WithHTTPPathPattern("/js/join_eui_prefixes")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Js_GetJoinEUIPrefixes_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Js_GetJoinEUIPrefixes_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Js_GetJoinEUIPrefixes_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Js_GetJoinEUIPrefixes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1262,19 +1275,21 @@ func RegisterJsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Js/GetDefaultJoinEUI", runtime.WithHTTPPathPattern("/js/default_join_eui")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Js_GetDefaultJoinEUI_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Js_GetDefaultJoinEUI_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Js_GetDefaultJoinEUI_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Js_GetDefaultJoinEUI_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1282,9 +1297,9 @@ func RegisterJsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client } var ( - pattern_Js_GetJoinEUIPrefixes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"js", "join_eui_prefixes"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Js_GetJoinEUIPrefixes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"js", "join_eui_prefixes"}, "")) - pattern_Js_GetDefaultJoinEUI_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"js", "default_join_eui"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Js_GetDefaultJoinEUI_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"js", "default_join_eui"}, "")) ) var ( diff --git a/pkg/ttnpb/joinserver.pb.setters.fm.go b/pkg/ttnpb/joinserver.pb.setters.fm.go index bd8455765f..7e53f51cf4 100644 --- a/pkg/ttnpb/joinserver.pb.setters.fm.go +++ b/pkg/ttnpb/joinserver.pb.setters.fm.go @@ -199,8 +199,7 @@ func (dst *CryptoServicePayloadRequest) SetFields(src *CryptoServicePayloadReque if src != nil { dst.LorawanVersion = src.LorawanVersion } else { - var zero MACVersion - dst.LorawanVersion = zero + dst.LorawanVersion = 0 } case "payload": if len(subs) > 0 { @@ -293,8 +292,7 @@ func (dst *JoinAcceptMICRequest) SetFields(src *JoinAcceptMICRequest, paths ...s if src != nil { dst.JoinRequestType = src.JoinRequestType } else { - var zero JoinRequestType - dst.JoinRequestType = zero + dst.JoinRequestType = 0 } case "dev_nonce": if len(subs) > 0 { @@ -348,8 +346,7 @@ func (dst *DeriveSessionKeysRequest) SetFields(src *DeriveSessionKeysRequest, pa if src != nil { dst.LorawanVersion = src.LorawanVersion } else { - var zero MACVersion - dst.LorawanVersion = zero + dst.LorawanVersion = 0 } case "join_nonce": if len(subs) > 0 { diff --git a/pkg/ttnpb/joinserver.pb.validate.go b/pkg/ttnpb/joinserver.pb.validate.go index 65522ef475..09e01805da 100644 --- a/pkg/ttnpb/joinserver.pb.validate.go +++ b/pkg/ttnpb/joinserver.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _joinserver_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on SessionKeyRequest with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/joinserver_flags.pb.go b/pkg/ttnpb/joinserver_flags.pb.go index 5b4b15fc61..48a0d8bb2f 100644 --- a/pkg/ttnpb/joinserver_flags.pb.go +++ b/pkg/ttnpb/joinserver_flags.pb.go @@ -1,14 +1,14 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/joinserver.proto package ttnpb import ( flagsplugin "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - gogo "github.com/TheThingsIndustries/protoc-gen-go-flags/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-flags/golang" pflag "github.com/spf13/pflag" customflags "go.thethings.network/lorawan-stack/v3/cmd/ttn-lw-cli/customflags" ) @@ -164,7 +164,7 @@ func (m *SetApplicationActivationSettingsRequest) SetFromFlags(flags *pflag.Flag if val, changed, err := flagsplugin.GetStringSlice(flags, flagsplugin.Prefix("field_mask", prefix)); err != nil { return nil, err } else if changed { - m.FieldMask = gogo.SetFieldMask(val) + m.FieldMask = golang.SetFieldMask(val) paths = append(paths, flagsplugin.Prefix("field_mask", prefix)) } return paths, nil diff --git a/pkg/ttnpb/joinserver_grpc.pb.go b/pkg/ttnpb/joinserver_grpc.pb.go new file mode 100644 index 0000000000..bb95cb7e1f --- /dev/null +++ b/pkg/ttnpb/joinserver_grpc.pb.go @@ -0,0 +1,1257 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/joinserver.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// NsJsClient is the client API for NsJs service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type NsJsClient interface { + // Handle a join-request message. + HandleJoin(ctx context.Context, in *JoinRequest, opts ...grpc.CallOption) (*JoinResponse, error) + // Request the network session keys for a particular session. + GetNwkSKeys(ctx context.Context, in *SessionKeyRequest, opts ...grpc.CallOption) (*NwkSKeysResponse, error) +} + +type nsJsClient struct { + cc grpc.ClientConnInterface +} + +func NewNsJsClient(cc grpc.ClientConnInterface) NsJsClient { + return &nsJsClient{cc} +} + +func (c *nsJsClient) HandleJoin(ctx context.Context, in *JoinRequest, opts ...grpc.CallOption) (*JoinResponse, error) { + out := new(JoinResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsJs/HandleJoin", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nsJsClient) GetNwkSKeys(ctx context.Context, in *SessionKeyRequest, opts ...grpc.CallOption) (*NwkSKeysResponse, error) { + out := new(NwkSKeysResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsJs/GetNwkSKeys", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// NsJsServer is the server API for NsJs service. +// All implementations must embed UnimplementedNsJsServer +// for forward compatibility +type NsJsServer interface { + // Handle a join-request message. + HandleJoin(context.Context, *JoinRequest) (*JoinResponse, error) + // Request the network session keys for a particular session. + GetNwkSKeys(context.Context, *SessionKeyRequest) (*NwkSKeysResponse, error) + mustEmbedUnimplementedNsJsServer() +} + +// UnimplementedNsJsServer must be embedded to have forward compatible implementations. +type UnimplementedNsJsServer struct { +} + +func (UnimplementedNsJsServer) HandleJoin(context.Context, *JoinRequest) (*JoinResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method HandleJoin not implemented") +} +func (UnimplementedNsJsServer) GetNwkSKeys(context.Context, *SessionKeyRequest) (*NwkSKeysResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetNwkSKeys not implemented") +} +func (UnimplementedNsJsServer) mustEmbedUnimplementedNsJsServer() {} + +// UnsafeNsJsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to NsJsServer will +// result in compilation errors. +type UnsafeNsJsServer interface { + mustEmbedUnimplementedNsJsServer() +} + +func RegisterNsJsServer(s grpc.ServiceRegistrar, srv NsJsServer) { + s.RegisterService(&NsJs_ServiceDesc, srv) +} + +func _NsJs_HandleJoin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(JoinRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NsJsServer).HandleJoin(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NsJs/HandleJoin", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NsJsServer).HandleJoin(ctx, req.(*JoinRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NsJs_GetNwkSKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SessionKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NsJsServer).GetNwkSKeys(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NsJs/GetNwkSKeys", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NsJsServer).GetNwkSKeys(ctx, req.(*SessionKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// NsJs_ServiceDesc is the grpc.ServiceDesc for NsJs service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var NsJs_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.NsJs", + HandlerType: (*NsJsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "HandleJoin", + Handler: _NsJs_HandleJoin_Handler, + }, + { + MethodName: "GetNwkSKeys", + Handler: _NsJs_GetNwkSKeys_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/joinserver.proto", +} + +// AsJsClient is the client API for AsJs service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type AsJsClient interface { + // Request the application session key for a particular session. + GetAppSKey(ctx context.Context, in *SessionKeyRequest, opts ...grpc.CallOption) (*AppSKeyResponse, error) +} + +type asJsClient struct { + cc grpc.ClientConnInterface +} + +func NewAsJsClient(cc grpc.ClientConnInterface) AsJsClient { + return &asJsClient{cc} +} + +func (c *asJsClient) GetAppSKey(ctx context.Context, in *SessionKeyRequest, opts ...grpc.CallOption) (*AppSKeyResponse, error) { + out := new(AppSKeyResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AsJs/GetAppSKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AsJsServer is the server API for AsJs service. +// All implementations must embed UnimplementedAsJsServer +// for forward compatibility +type AsJsServer interface { + // Request the application session key for a particular session. + GetAppSKey(context.Context, *SessionKeyRequest) (*AppSKeyResponse, error) + mustEmbedUnimplementedAsJsServer() +} + +// UnimplementedAsJsServer must be embedded to have forward compatible implementations. +type UnimplementedAsJsServer struct { +} + +func (UnimplementedAsJsServer) GetAppSKey(context.Context, *SessionKeyRequest) (*AppSKeyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAppSKey not implemented") +} +func (UnimplementedAsJsServer) mustEmbedUnimplementedAsJsServer() {} + +// UnsafeAsJsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AsJsServer will +// result in compilation errors. +type UnsafeAsJsServer interface { + mustEmbedUnimplementedAsJsServer() +} + +func RegisterAsJsServer(s grpc.ServiceRegistrar, srv AsJsServer) { + s.RegisterService(&AsJs_ServiceDesc, srv) +} + +func _AsJs_GetAppSKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SessionKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AsJsServer).GetAppSKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.AsJs/GetAppSKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AsJsServer).GetAppSKey(ctx, req.(*SessionKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// AsJs_ServiceDesc is the grpc.ServiceDesc for AsJs service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var AsJs_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.AsJs", + HandlerType: (*AsJsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetAppSKey", + Handler: _AsJs_GetAppSKey_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/joinserver.proto", +} + +// AppJsClient is the client API for AppJs service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type AppJsClient interface { + // Request the application session key for a particular session. + GetAppSKey(ctx context.Context, in *SessionKeyRequest, opts ...grpc.CallOption) (*AppSKeyResponse, error) +} + +type appJsClient struct { + cc grpc.ClientConnInterface +} + +func NewAppJsClient(cc grpc.ClientConnInterface) AppJsClient { + return &appJsClient{cc} +} + +func (c *appJsClient) GetAppSKey(ctx context.Context, in *SessionKeyRequest, opts ...grpc.CallOption) (*AppSKeyResponse, error) { + out := new(AppSKeyResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AppJs/GetAppSKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AppJsServer is the server API for AppJs service. +// All implementations must embed UnimplementedAppJsServer +// for forward compatibility +type AppJsServer interface { + // Request the application session key for a particular session. + GetAppSKey(context.Context, *SessionKeyRequest) (*AppSKeyResponse, error) + mustEmbedUnimplementedAppJsServer() +} + +// UnimplementedAppJsServer must be embedded to have forward compatible implementations. +type UnimplementedAppJsServer struct { +} + +func (UnimplementedAppJsServer) GetAppSKey(context.Context, *SessionKeyRequest) (*AppSKeyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAppSKey not implemented") +} +func (UnimplementedAppJsServer) mustEmbedUnimplementedAppJsServer() {} + +// UnsafeAppJsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AppJsServer will +// result in compilation errors. +type UnsafeAppJsServer interface { + mustEmbedUnimplementedAppJsServer() +} + +func RegisterAppJsServer(s grpc.ServiceRegistrar, srv AppJsServer) { + s.RegisterService(&AppJs_ServiceDesc, srv) +} + +func _AppJs_GetAppSKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SessionKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AppJsServer).GetAppSKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.AppJs/GetAppSKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AppJsServer).GetAppSKey(ctx, req.(*SessionKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// AppJs_ServiceDesc is the grpc.ServiceDesc for AppJs service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var AppJs_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.AppJs", + HandlerType: (*AppJsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetAppSKey", + Handler: _AppJs_GetAppSKey_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/joinserver.proto", +} + +// NetworkCryptoServiceClient is the client API for NetworkCryptoService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type NetworkCryptoServiceClient interface { + // Calculate the join-request message MIC. + JoinRequestMIC(ctx context.Context, in *CryptoServicePayloadRequest, opts ...grpc.CallOption) (*CryptoServicePayloadResponse, error) + // Calculate the join-accept message MIC. + JoinAcceptMIC(ctx context.Context, in *JoinAcceptMICRequest, opts ...grpc.CallOption) (*CryptoServicePayloadResponse, error) + // Encrypt the join-accept payload. + EncryptJoinAccept(ctx context.Context, in *CryptoServicePayloadRequest, opts ...grpc.CallOption) (*CryptoServicePayloadResponse, error) + // Encrypt the rejoin-accept payload. + EncryptRejoinAccept(ctx context.Context, in *CryptoServicePayloadRequest, opts ...grpc.CallOption) (*CryptoServicePayloadResponse, error) + // Derive network session keys (NwkSKey, or FNwkSKey, SNwkSKey and NwkSEncKey) + DeriveNwkSKeys(ctx context.Context, in *DeriveSessionKeysRequest, opts ...grpc.CallOption) (*NwkSKeysResponse, error) + // Get the NwkKey. Crypto Servers may return status code FAILED_PRECONDITION when root keys are not exposed. + GetNwkKey(ctx context.Context, in *GetRootKeysRequest, opts ...grpc.CallOption) (*KeyEnvelope, error) +} + +type networkCryptoServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewNetworkCryptoServiceClient(cc grpc.ClientConnInterface) NetworkCryptoServiceClient { + return &networkCryptoServiceClient{cc} +} + +func (c *networkCryptoServiceClient) JoinRequestMIC(ctx context.Context, in *CryptoServicePayloadRequest, opts ...grpc.CallOption) (*CryptoServicePayloadResponse, error) { + out := new(CryptoServicePayloadResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NetworkCryptoService/JoinRequestMIC", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *networkCryptoServiceClient) JoinAcceptMIC(ctx context.Context, in *JoinAcceptMICRequest, opts ...grpc.CallOption) (*CryptoServicePayloadResponse, error) { + out := new(CryptoServicePayloadResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NetworkCryptoService/JoinAcceptMIC", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *networkCryptoServiceClient) EncryptJoinAccept(ctx context.Context, in *CryptoServicePayloadRequest, opts ...grpc.CallOption) (*CryptoServicePayloadResponse, error) { + out := new(CryptoServicePayloadResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NetworkCryptoService/EncryptJoinAccept", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *networkCryptoServiceClient) EncryptRejoinAccept(ctx context.Context, in *CryptoServicePayloadRequest, opts ...grpc.CallOption) (*CryptoServicePayloadResponse, error) { + out := new(CryptoServicePayloadResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NetworkCryptoService/EncryptRejoinAccept", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *networkCryptoServiceClient) DeriveNwkSKeys(ctx context.Context, in *DeriveSessionKeysRequest, opts ...grpc.CallOption) (*NwkSKeysResponse, error) { + out := new(NwkSKeysResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NetworkCryptoService/DeriveNwkSKeys", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *networkCryptoServiceClient) GetNwkKey(ctx context.Context, in *GetRootKeysRequest, opts ...grpc.CallOption) (*KeyEnvelope, error) { + out := new(KeyEnvelope) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NetworkCryptoService/GetNwkKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// NetworkCryptoServiceServer is the server API for NetworkCryptoService service. +// All implementations must embed UnimplementedNetworkCryptoServiceServer +// for forward compatibility +type NetworkCryptoServiceServer interface { + // Calculate the join-request message MIC. + JoinRequestMIC(context.Context, *CryptoServicePayloadRequest) (*CryptoServicePayloadResponse, error) + // Calculate the join-accept message MIC. + JoinAcceptMIC(context.Context, *JoinAcceptMICRequest) (*CryptoServicePayloadResponse, error) + // Encrypt the join-accept payload. + EncryptJoinAccept(context.Context, *CryptoServicePayloadRequest) (*CryptoServicePayloadResponse, error) + // Encrypt the rejoin-accept payload. + EncryptRejoinAccept(context.Context, *CryptoServicePayloadRequest) (*CryptoServicePayloadResponse, error) + // Derive network session keys (NwkSKey, or FNwkSKey, SNwkSKey and NwkSEncKey) + DeriveNwkSKeys(context.Context, *DeriveSessionKeysRequest) (*NwkSKeysResponse, error) + // Get the NwkKey. Crypto Servers may return status code FAILED_PRECONDITION when root keys are not exposed. + GetNwkKey(context.Context, *GetRootKeysRequest) (*KeyEnvelope, error) + mustEmbedUnimplementedNetworkCryptoServiceServer() +} + +// UnimplementedNetworkCryptoServiceServer must be embedded to have forward compatible implementations. +type UnimplementedNetworkCryptoServiceServer struct { +} + +func (UnimplementedNetworkCryptoServiceServer) JoinRequestMIC(context.Context, *CryptoServicePayloadRequest) (*CryptoServicePayloadResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method JoinRequestMIC not implemented") +} +func (UnimplementedNetworkCryptoServiceServer) JoinAcceptMIC(context.Context, *JoinAcceptMICRequest) (*CryptoServicePayloadResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method JoinAcceptMIC not implemented") +} +func (UnimplementedNetworkCryptoServiceServer) EncryptJoinAccept(context.Context, *CryptoServicePayloadRequest) (*CryptoServicePayloadResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method EncryptJoinAccept not implemented") +} +func (UnimplementedNetworkCryptoServiceServer) EncryptRejoinAccept(context.Context, *CryptoServicePayloadRequest) (*CryptoServicePayloadResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method EncryptRejoinAccept not implemented") +} +func (UnimplementedNetworkCryptoServiceServer) DeriveNwkSKeys(context.Context, *DeriveSessionKeysRequest) (*NwkSKeysResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeriveNwkSKeys not implemented") +} +func (UnimplementedNetworkCryptoServiceServer) GetNwkKey(context.Context, *GetRootKeysRequest) (*KeyEnvelope, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetNwkKey not implemented") +} +func (UnimplementedNetworkCryptoServiceServer) mustEmbedUnimplementedNetworkCryptoServiceServer() {} + +// UnsafeNetworkCryptoServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to NetworkCryptoServiceServer will +// result in compilation errors. +type UnsafeNetworkCryptoServiceServer interface { + mustEmbedUnimplementedNetworkCryptoServiceServer() +} + +func RegisterNetworkCryptoServiceServer(s grpc.ServiceRegistrar, srv NetworkCryptoServiceServer) { + s.RegisterService(&NetworkCryptoService_ServiceDesc, srv) +} + +func _NetworkCryptoService_JoinRequestMIC_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CryptoServicePayloadRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NetworkCryptoServiceServer).JoinRequestMIC(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NetworkCryptoService/JoinRequestMIC", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NetworkCryptoServiceServer).JoinRequestMIC(ctx, req.(*CryptoServicePayloadRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NetworkCryptoService_JoinAcceptMIC_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(JoinAcceptMICRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NetworkCryptoServiceServer).JoinAcceptMIC(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NetworkCryptoService/JoinAcceptMIC", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NetworkCryptoServiceServer).JoinAcceptMIC(ctx, req.(*JoinAcceptMICRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NetworkCryptoService_EncryptJoinAccept_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CryptoServicePayloadRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NetworkCryptoServiceServer).EncryptJoinAccept(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NetworkCryptoService/EncryptJoinAccept", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NetworkCryptoServiceServer).EncryptJoinAccept(ctx, req.(*CryptoServicePayloadRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NetworkCryptoService_EncryptRejoinAccept_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CryptoServicePayloadRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NetworkCryptoServiceServer).EncryptRejoinAccept(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NetworkCryptoService/EncryptRejoinAccept", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NetworkCryptoServiceServer).EncryptRejoinAccept(ctx, req.(*CryptoServicePayloadRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NetworkCryptoService_DeriveNwkSKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeriveSessionKeysRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NetworkCryptoServiceServer).DeriveNwkSKeys(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NetworkCryptoService/DeriveNwkSKeys", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NetworkCryptoServiceServer).DeriveNwkSKeys(ctx, req.(*DeriveSessionKeysRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NetworkCryptoService_GetNwkKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetRootKeysRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NetworkCryptoServiceServer).GetNwkKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NetworkCryptoService/GetNwkKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NetworkCryptoServiceServer).GetNwkKey(ctx, req.(*GetRootKeysRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// NetworkCryptoService_ServiceDesc is the grpc.ServiceDesc for NetworkCryptoService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var NetworkCryptoService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.NetworkCryptoService", + HandlerType: (*NetworkCryptoServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "JoinRequestMIC", + Handler: _NetworkCryptoService_JoinRequestMIC_Handler, + }, + { + MethodName: "JoinAcceptMIC", + Handler: _NetworkCryptoService_JoinAcceptMIC_Handler, + }, + { + MethodName: "EncryptJoinAccept", + Handler: _NetworkCryptoService_EncryptJoinAccept_Handler, + }, + { + MethodName: "EncryptRejoinAccept", + Handler: _NetworkCryptoService_EncryptRejoinAccept_Handler, + }, + { + MethodName: "DeriveNwkSKeys", + Handler: _NetworkCryptoService_DeriveNwkSKeys_Handler, + }, + { + MethodName: "GetNwkKey", + Handler: _NetworkCryptoService_GetNwkKey_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/joinserver.proto", +} + +// ApplicationCryptoServiceClient is the client API for ApplicationCryptoService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ApplicationCryptoServiceClient interface { + // Derive the application session key (AppSKey). + DeriveAppSKey(ctx context.Context, in *DeriveSessionKeysRequest, opts ...grpc.CallOption) (*AppSKeyResponse, error) + // Get the AppKey. Crypto Servers may return status code FAILED_PRECONDITION when root keys are not exposed. + GetAppKey(ctx context.Context, in *GetRootKeysRequest, opts ...grpc.CallOption) (*KeyEnvelope, error) +} + +type applicationCryptoServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewApplicationCryptoServiceClient(cc grpc.ClientConnInterface) ApplicationCryptoServiceClient { + return &applicationCryptoServiceClient{cc} +} + +func (c *applicationCryptoServiceClient) DeriveAppSKey(ctx context.Context, in *DeriveSessionKeysRequest, opts ...grpc.CallOption) (*AppSKeyResponse, error) { + out := new(AppSKeyResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationCryptoService/DeriveAppSKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationCryptoServiceClient) GetAppKey(ctx context.Context, in *GetRootKeysRequest, opts ...grpc.CallOption) (*KeyEnvelope, error) { + out := new(KeyEnvelope) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationCryptoService/GetAppKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ApplicationCryptoServiceServer is the server API for ApplicationCryptoService service. +// All implementations must embed UnimplementedApplicationCryptoServiceServer +// for forward compatibility +type ApplicationCryptoServiceServer interface { + // Derive the application session key (AppSKey). + DeriveAppSKey(context.Context, *DeriveSessionKeysRequest) (*AppSKeyResponse, error) + // Get the AppKey. Crypto Servers may return status code FAILED_PRECONDITION when root keys are not exposed. + GetAppKey(context.Context, *GetRootKeysRequest) (*KeyEnvelope, error) + mustEmbedUnimplementedApplicationCryptoServiceServer() +} + +// UnimplementedApplicationCryptoServiceServer must be embedded to have forward compatible implementations. +type UnimplementedApplicationCryptoServiceServer struct { +} + +func (UnimplementedApplicationCryptoServiceServer) DeriveAppSKey(context.Context, *DeriveSessionKeysRequest) (*AppSKeyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeriveAppSKey not implemented") +} +func (UnimplementedApplicationCryptoServiceServer) GetAppKey(context.Context, *GetRootKeysRequest) (*KeyEnvelope, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAppKey not implemented") +} +func (UnimplementedApplicationCryptoServiceServer) mustEmbedUnimplementedApplicationCryptoServiceServer() { +} + +// UnsafeApplicationCryptoServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ApplicationCryptoServiceServer will +// result in compilation errors. +type UnsafeApplicationCryptoServiceServer interface { + mustEmbedUnimplementedApplicationCryptoServiceServer() +} + +func RegisterApplicationCryptoServiceServer(s grpc.ServiceRegistrar, srv ApplicationCryptoServiceServer) { + s.RegisterService(&ApplicationCryptoService_ServiceDesc, srv) +} + +func _ApplicationCryptoService_DeriveAppSKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeriveSessionKeysRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationCryptoServiceServer).DeriveAppSKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationCryptoService/DeriveAppSKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationCryptoServiceServer).DeriveAppSKey(ctx, req.(*DeriveSessionKeysRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationCryptoService_GetAppKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetRootKeysRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationCryptoServiceServer).GetAppKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationCryptoService/GetAppKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationCryptoServiceServer).GetAppKey(ctx, req.(*GetRootKeysRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ApplicationCryptoService_ServiceDesc is the grpc.ServiceDesc for ApplicationCryptoService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ApplicationCryptoService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.ApplicationCryptoService", + HandlerType: (*ApplicationCryptoServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "DeriveAppSKey", + Handler: _ApplicationCryptoService_DeriveAppSKey_Handler, + }, + { + MethodName: "GetAppKey", + Handler: _ApplicationCryptoService_GetAppKey_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/joinserver.proto", +} + +// JsEndDeviceRegistryClient is the client API for JsEndDeviceRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type JsEndDeviceRegistryClient interface { + // Get returns the device that matches the given identifiers. + // If there are multiple matches, an error will be returned. + Get(ctx context.Context, in *GetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) + // Set creates or updates the device. + Set(ctx context.Context, in *SetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) + // Deprecated: Do not use. + // This rpc is deprecated; use EndDeviceTemplateConverter service instead. + // TODO: Remove (https://github.com/TheThingsNetwork/lorawan-stack/issues/999) + Provision(ctx context.Context, in *ProvisionEndDevicesRequest, opts ...grpc.CallOption) (JsEndDeviceRegistry_ProvisionClient, error) + // Delete deletes the device that matches the given identifiers. + // If there are multiple matches, an error will be returned. + Delete(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type jsEndDeviceRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewJsEndDeviceRegistryClient(cc grpc.ClientConnInterface) JsEndDeviceRegistryClient { + return &jsEndDeviceRegistryClient{cc} +} + +func (c *jsEndDeviceRegistryClient) Get(ctx context.Context, in *GetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { + out := new(EndDevice) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.JsEndDeviceRegistry/Get", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *jsEndDeviceRegistryClient) Set(ctx context.Context, in *SetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { + out := new(EndDevice) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.JsEndDeviceRegistry/Set", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Deprecated: Do not use. +func (c *jsEndDeviceRegistryClient) Provision(ctx context.Context, in *ProvisionEndDevicesRequest, opts ...grpc.CallOption) (JsEndDeviceRegistry_ProvisionClient, error) { + stream, err := c.cc.NewStream(ctx, &JsEndDeviceRegistry_ServiceDesc.Streams[0], "/ttn.lorawan.v3.JsEndDeviceRegistry/Provision", opts...) + if err != nil { + return nil, err + } + x := &jsEndDeviceRegistryProvisionClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type JsEndDeviceRegistry_ProvisionClient interface { + Recv() (*EndDevice, error) + grpc.ClientStream +} + +type jsEndDeviceRegistryProvisionClient struct { + grpc.ClientStream +} + +func (x *jsEndDeviceRegistryProvisionClient) Recv() (*EndDevice, error) { + m := new(EndDevice) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *jsEndDeviceRegistryClient) Delete(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.JsEndDeviceRegistry/Delete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// JsEndDeviceRegistryServer is the server API for JsEndDeviceRegistry service. +// All implementations must embed UnimplementedJsEndDeviceRegistryServer +// for forward compatibility +type JsEndDeviceRegistryServer interface { + // Get returns the device that matches the given identifiers. + // If there are multiple matches, an error will be returned. + Get(context.Context, *GetEndDeviceRequest) (*EndDevice, error) + // Set creates or updates the device. + Set(context.Context, *SetEndDeviceRequest) (*EndDevice, error) + // Deprecated: Do not use. + // This rpc is deprecated; use EndDeviceTemplateConverter service instead. + // TODO: Remove (https://github.com/TheThingsNetwork/lorawan-stack/issues/999) + Provision(*ProvisionEndDevicesRequest, JsEndDeviceRegistry_ProvisionServer) error + // Delete deletes the device that matches the given identifiers. + // If there are multiple matches, an error will be returned. + Delete(context.Context, *EndDeviceIdentifiers) (*emptypb.Empty, error) + mustEmbedUnimplementedJsEndDeviceRegistryServer() +} + +// UnimplementedJsEndDeviceRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedJsEndDeviceRegistryServer struct { +} + +func (UnimplementedJsEndDeviceRegistryServer) Get(context.Context, *GetEndDeviceRequest) (*EndDevice, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (UnimplementedJsEndDeviceRegistryServer) Set(context.Context, *SetEndDeviceRequest) (*EndDevice, error) { + return nil, status.Errorf(codes.Unimplemented, "method Set not implemented") +} +func (UnimplementedJsEndDeviceRegistryServer) Provision(*ProvisionEndDevicesRequest, JsEndDeviceRegistry_ProvisionServer) error { + return status.Errorf(codes.Unimplemented, "method Provision not implemented") +} +func (UnimplementedJsEndDeviceRegistryServer) Delete(context.Context, *EndDeviceIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedJsEndDeviceRegistryServer) mustEmbedUnimplementedJsEndDeviceRegistryServer() {} + +// UnsafeJsEndDeviceRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to JsEndDeviceRegistryServer will +// result in compilation errors. +type UnsafeJsEndDeviceRegistryServer interface { + mustEmbedUnimplementedJsEndDeviceRegistryServer() +} + +func RegisterJsEndDeviceRegistryServer(s grpc.ServiceRegistrar, srv JsEndDeviceRegistryServer) { + s.RegisterService(&JsEndDeviceRegistry_ServiceDesc, srv) +} + +func _JsEndDeviceRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetEndDeviceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JsEndDeviceRegistryServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.JsEndDeviceRegistry/Get", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JsEndDeviceRegistryServer).Get(ctx, req.(*GetEndDeviceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _JsEndDeviceRegistry_Set_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetEndDeviceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JsEndDeviceRegistryServer).Set(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.JsEndDeviceRegistry/Set", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JsEndDeviceRegistryServer).Set(ctx, req.(*SetEndDeviceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _JsEndDeviceRegistry_Provision_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(ProvisionEndDevicesRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(JsEndDeviceRegistryServer).Provision(m, &jsEndDeviceRegistryProvisionServer{stream}) +} + +type JsEndDeviceRegistry_ProvisionServer interface { + Send(*EndDevice) error + grpc.ServerStream +} + +type jsEndDeviceRegistryProvisionServer struct { + grpc.ServerStream +} + +func (x *jsEndDeviceRegistryProvisionServer) Send(m *EndDevice) error { + return x.ServerStream.SendMsg(m) +} + +func _JsEndDeviceRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EndDeviceIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JsEndDeviceRegistryServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.JsEndDeviceRegistry/Delete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JsEndDeviceRegistryServer).Delete(ctx, req.(*EndDeviceIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// JsEndDeviceRegistry_ServiceDesc is the grpc.ServiceDesc for JsEndDeviceRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var JsEndDeviceRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.JsEndDeviceRegistry", + HandlerType: (*JsEndDeviceRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Get", + Handler: _JsEndDeviceRegistry_Get_Handler, + }, + { + MethodName: "Set", + Handler: _JsEndDeviceRegistry_Set_Handler, + }, + { + MethodName: "Delete", + Handler: _JsEndDeviceRegistry_Delete_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "Provision", + Handler: _JsEndDeviceRegistry_Provision_Handler, + ServerStreams: true, + }, + }, + Metadata: "lorawan-stack/api/joinserver.proto", +} + +// ApplicationActivationSettingRegistryClient is the client API for ApplicationActivationSettingRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ApplicationActivationSettingRegistryClient interface { + // Get returns application activation settings. + Get(ctx context.Context, in *GetApplicationActivationSettingsRequest, opts ...grpc.CallOption) (*ApplicationActivationSettings, error) + // Set creates or updates application activation settings. + Set(ctx context.Context, in *SetApplicationActivationSettingsRequest, opts ...grpc.CallOption) (*ApplicationActivationSettings, error) + // Delete deletes application activation settings. + Delete(ctx context.Context, in *DeleteApplicationActivationSettingsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type applicationActivationSettingRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewApplicationActivationSettingRegistryClient(cc grpc.ClientConnInterface) ApplicationActivationSettingRegistryClient { + return &applicationActivationSettingRegistryClient{cc} +} + +func (c *applicationActivationSettingRegistryClient) Get(ctx context.Context, in *GetApplicationActivationSettingsRequest, opts ...grpc.CallOption) (*ApplicationActivationSettings, error) { + out := new(ApplicationActivationSettings) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Get", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationActivationSettingRegistryClient) Set(ctx context.Context, in *SetApplicationActivationSettingsRequest, opts ...grpc.CallOption) (*ApplicationActivationSettings, error) { + out := new(ApplicationActivationSettings) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Set", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *applicationActivationSettingRegistryClient) Delete(ctx context.Context, in *DeleteApplicationActivationSettingsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Delete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ApplicationActivationSettingRegistryServer is the server API for ApplicationActivationSettingRegistry service. +// All implementations must embed UnimplementedApplicationActivationSettingRegistryServer +// for forward compatibility +type ApplicationActivationSettingRegistryServer interface { + // Get returns application activation settings. + Get(context.Context, *GetApplicationActivationSettingsRequest) (*ApplicationActivationSettings, error) + // Set creates or updates application activation settings. + Set(context.Context, *SetApplicationActivationSettingsRequest) (*ApplicationActivationSettings, error) + // Delete deletes application activation settings. + Delete(context.Context, *DeleteApplicationActivationSettingsRequest) (*emptypb.Empty, error) + mustEmbedUnimplementedApplicationActivationSettingRegistryServer() +} + +// UnimplementedApplicationActivationSettingRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedApplicationActivationSettingRegistryServer struct { +} + +func (UnimplementedApplicationActivationSettingRegistryServer) Get(context.Context, *GetApplicationActivationSettingsRequest) (*ApplicationActivationSettings, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (UnimplementedApplicationActivationSettingRegistryServer) Set(context.Context, *SetApplicationActivationSettingsRequest) (*ApplicationActivationSettings, error) { + return nil, status.Errorf(codes.Unimplemented, "method Set not implemented") +} +func (UnimplementedApplicationActivationSettingRegistryServer) Delete(context.Context, *DeleteApplicationActivationSettingsRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedApplicationActivationSettingRegistryServer) mustEmbedUnimplementedApplicationActivationSettingRegistryServer() { +} + +// UnsafeApplicationActivationSettingRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ApplicationActivationSettingRegistryServer will +// result in compilation errors. +type UnsafeApplicationActivationSettingRegistryServer interface { + mustEmbedUnimplementedApplicationActivationSettingRegistryServer() +} + +func RegisterApplicationActivationSettingRegistryServer(s grpc.ServiceRegistrar, srv ApplicationActivationSettingRegistryServer) { + s.RegisterService(&ApplicationActivationSettingRegistry_ServiceDesc, srv) +} + +func _ApplicationActivationSettingRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetApplicationActivationSettingsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationActivationSettingRegistryServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Get", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationActivationSettingRegistryServer).Get(ctx, req.(*GetApplicationActivationSettingsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationActivationSettingRegistry_Set_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetApplicationActivationSettingsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationActivationSettingRegistryServer).Set(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Set", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationActivationSettingRegistryServer).Set(ctx, req.(*SetApplicationActivationSettingsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ApplicationActivationSettingRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteApplicationActivationSettingsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ApplicationActivationSettingRegistryServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.ApplicationActivationSettingRegistry/Delete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ApplicationActivationSettingRegistryServer).Delete(ctx, req.(*DeleteApplicationActivationSettingsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ApplicationActivationSettingRegistry_ServiceDesc is the grpc.ServiceDesc for ApplicationActivationSettingRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ApplicationActivationSettingRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.ApplicationActivationSettingRegistry", + HandlerType: (*ApplicationActivationSettingRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Get", + Handler: _ApplicationActivationSettingRegistry_Get_Handler, + }, + { + MethodName: "Set", + Handler: _ApplicationActivationSettingRegistry_Set_Handler, + }, + { + MethodName: "Delete", + Handler: _ApplicationActivationSettingRegistry_Delete_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/joinserver.proto", +} + +// JsClient is the client API for Js service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type JsClient interface { + // Request the JoinEUI prefixes that are configured for this Join Server. + GetJoinEUIPrefixes(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*JoinEUIPrefixes, error) + // Request the default JoinEUI that is configured for this Join Server. + GetDefaultJoinEUI(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetDefaultJoinEUIResponse, error) +} + +type jsClient struct { + cc grpc.ClientConnInterface +} + +func NewJsClient(cc grpc.ClientConnInterface) JsClient { + return &jsClient{cc} +} + +func (c *jsClient) GetJoinEUIPrefixes(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*JoinEUIPrefixes, error) { + out := new(JoinEUIPrefixes) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Js/GetJoinEUIPrefixes", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *jsClient) GetDefaultJoinEUI(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetDefaultJoinEUIResponse, error) { + out := new(GetDefaultJoinEUIResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Js/GetDefaultJoinEUI", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// JsServer is the server API for Js service. +// All implementations must embed UnimplementedJsServer +// for forward compatibility +type JsServer interface { + // Request the JoinEUI prefixes that are configured for this Join Server. + GetJoinEUIPrefixes(context.Context, *emptypb.Empty) (*JoinEUIPrefixes, error) + // Request the default JoinEUI that is configured for this Join Server. + GetDefaultJoinEUI(context.Context, *emptypb.Empty) (*GetDefaultJoinEUIResponse, error) + mustEmbedUnimplementedJsServer() +} + +// UnimplementedJsServer must be embedded to have forward compatible implementations. +type UnimplementedJsServer struct { +} + +func (UnimplementedJsServer) GetJoinEUIPrefixes(context.Context, *emptypb.Empty) (*JoinEUIPrefixes, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetJoinEUIPrefixes not implemented") +} +func (UnimplementedJsServer) GetDefaultJoinEUI(context.Context, *emptypb.Empty) (*GetDefaultJoinEUIResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDefaultJoinEUI not implemented") +} +func (UnimplementedJsServer) mustEmbedUnimplementedJsServer() {} + +// UnsafeJsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to JsServer will +// result in compilation errors. +type UnsafeJsServer interface { + mustEmbedUnimplementedJsServer() +} + +func RegisterJsServer(s grpc.ServiceRegistrar, srv JsServer) { + s.RegisterService(&Js_ServiceDesc, srv) +} + +func _Js_GetJoinEUIPrefixes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JsServer).GetJoinEUIPrefixes(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Js/GetJoinEUIPrefixes", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JsServer).GetJoinEUIPrefixes(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Js_GetDefaultJoinEUI_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JsServer).GetDefaultJoinEUI(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Js/GetDefaultJoinEUI", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JsServer).GetDefaultJoinEUI(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +// Js_ServiceDesc is the grpc.ServiceDesc for Js service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Js_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.Js", + HandlerType: (*JsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetJoinEUIPrefixes", + Handler: _Js_GetJoinEUIPrefixes_Handler, + }, + { + MethodName: "GetDefaultJoinEUI", + Handler: _Js_GetDefaultJoinEUI_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/joinserver.proto", +} diff --git a/pkg/ttnpb/joinserver_json.pb.go b/pkg/ttnpb/joinserver_json.pb.go index fb84a65fce..f62bfacee6 100644 --- a/pkg/ttnpb/joinserver_json.pb.go +++ b/pkg/ttnpb/joinserver_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/joinserver.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" types "go.thethings.network/lorawan-stack/v3/pkg/types" ) @@ -220,7 +220,7 @@ func (x *CryptoServicePayloadRequest) MarshalProtoJSON(s *jsonplugin.MarshalStat if x.ProvisioningData == nil { s.WriteNil() } else { - gogo.MarshalStruct(s, x.ProvisioningData) + golang.MarshalStruct(s, x.ProvisioningData) } } s.WriteObjectEnd() @@ -262,7 +262,7 @@ func (x *CryptoServicePayloadRequest) UnmarshalProtoJSON(s *jsonplugin.Unmarshal x.ProvisioningData = nil return } - v := gogo.UnmarshalStruct(s) + v := golang.UnmarshalStruct(s) if s.Err() != nil { return } @@ -382,7 +382,7 @@ func (x *DeriveSessionKeysRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) if x.ProvisioningData == nil { s.WriteNil() } else { - gogo.MarshalStruct(s, x.ProvisioningData) + golang.MarshalStruct(s, x.ProvisioningData) } } s.WriteObjectEnd() @@ -430,7 +430,7 @@ func (x *DeriveSessionKeysRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalSta x.ProvisioningData = nil return } - v := gogo.UnmarshalStruct(s) + v := golang.UnmarshalStruct(s) if s.Err() != nil { return } @@ -468,7 +468,7 @@ func (x *GetRootKeysRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ProvisioningData == nil { s.WriteNil() } else { - gogo.MarshalStruct(s, x.ProvisioningData) + golang.MarshalStruct(s, x.ProvisioningData) } } s.WriteObjectEnd() @@ -504,7 +504,7 @@ func (x *GetRootKeysRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ProvisioningData = nil return } - v := gogo.UnmarshalStruct(s) + v := golang.UnmarshalStruct(s) if s.Err() != nil { return } @@ -693,7 +693,7 @@ func (x *ProvisionEndDevicesRequest) MarshalProtoJSON(s *jsonplugin.MarshalState s.WriteMoreIf(&wroteField) s.WriteObjectField("application_ids") // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ApplicationIds) + golang.MarshalMessage(s, x.ApplicationIds) } if x.ProvisionerId != "" || s.HasField("provisioner_id") { s.WriteMoreIf(&wroteField) @@ -746,7 +746,7 @@ func (x *ProvisionEndDevicesRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalS } // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. var v ApplicationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ApplicationIds = &v case "provisioner_id", "provisionerId": s.AddField("provisioner_id") @@ -860,6 +860,76 @@ func (x *ApplicationActivationSettings) UnmarshalJSON(b []byte) error { return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) } +// MarshalProtoJSON marshals the GetApplicationActivationSettingsRequest message to JSON. +func (x *GetApplicationActivationSettingsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.ApplicationIds != nil || s.HasField("application_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("application_ids") + // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.ApplicationIds) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the GetApplicationActivationSettingsRequest to JSON. +func (x *GetApplicationActivationSettingsRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the GetApplicationActivationSettingsRequest message from JSON. +func (x *GetApplicationActivationSettingsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "application_ids", "applicationIds": + s.AddField("application_ids") + if s.ReadNil() { + x.ApplicationIds = nil + return + } + // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationIdentifiers + golang.UnmarshalMessage(s, &v) + x.ApplicationIds = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the GetApplicationActivationSettingsRequest from JSON. +func (x *GetApplicationActivationSettingsRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + // MarshalProtoJSON marshals the SetApplicationActivationSettingsRequest message to JSON. func (x *SetApplicationActivationSettingsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x == nil { @@ -872,7 +942,7 @@ func (x *SetApplicationActivationSettingsRequest) MarshalProtoJSON(s *jsonplugin s.WriteMoreIf(&wroteField) s.WriteObjectField("application_ids") // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ApplicationIds) + golang.MarshalMessage(s, x.ApplicationIds) } if x.Settings != nil || s.HasField("settings") { s.WriteMoreIf(&wroteField) @@ -885,7 +955,7 @@ func (x *SetApplicationActivationSettingsRequest) MarshalProtoJSON(s *jsonplugin if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -913,7 +983,7 @@ func (x *SetApplicationActivationSettingsRequest) UnmarshalProtoJSON(s *jsonplug } // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. var v ApplicationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ApplicationIds = &v case "settings": if s.ReadNil() { @@ -928,7 +998,7 @@ func (x *SetApplicationActivationSettingsRequest) UnmarshalProtoJSON(s *jsonplug x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } diff --git a/pkg/ttnpb/keys.pb.go b/pkg/ttnpb/keys.pb.go index ba1cbf9db7..561baa1c14 100644 --- a/pkg/ttnpb/keys.pb.go +++ b/pkg/ttnpb/keys.pb.go @@ -1,84 +1,105 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/keys.proto package ttnpb import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - golang_proto "github.com/golang/protobuf/proto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type KeyEnvelope struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The unencrypted AES key. Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key. - KekLabel string `protobuf:"bytes,2,opt,name=kek_label,json=kekLabel,proto3" json:"kek_label,omitempty"` - EncryptedKey []byte `protobuf:"bytes,3,opt,name=encrypted_key,json=encryptedKey,proto3" json:"encrypted_key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + KekLabel string `protobuf:"bytes,2,opt,name=kek_label,json=kekLabel,proto3" json:"kek_label,omitempty"` + EncryptedKey []byte `protobuf:"bytes,3,opt,name=encrypted_key,json=encryptedKey,proto3" json:"encrypted_key,omitempty"` } -func (m *KeyEnvelope) Reset() { *m = KeyEnvelope{} } -func (m *KeyEnvelope) String() string { return proto.CompactTextString(m) } -func (*KeyEnvelope) ProtoMessage() {} -func (*KeyEnvelope) Descriptor() ([]byte, []int) { - return fileDescriptor_ee170ee4ccd55993, []int{0} -} -func (m *KeyEnvelope) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_KeyEnvelope.Unmarshal(m, b) -} -func (m *KeyEnvelope) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_KeyEnvelope.Marshal(b, m, deterministic) -} -func (m *KeyEnvelope) XXX_Merge(src proto.Message) { - xxx_messageInfo_KeyEnvelope.Merge(m, src) +func (x *KeyEnvelope) Reset() { + *x = KeyEnvelope{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_keys_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *KeyEnvelope) XXX_Size() int { - return xxx_messageInfo_KeyEnvelope.Size(m) + +func (x *KeyEnvelope) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *KeyEnvelope) XXX_DiscardUnknown() { - xxx_messageInfo_KeyEnvelope.DiscardUnknown(m) + +func (*KeyEnvelope) ProtoMessage() {} + +func (x *KeyEnvelope) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_keys_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_KeyEnvelope proto.InternalMessageInfo +// Deprecated: Use KeyEnvelope.ProtoReflect.Descriptor instead. +func (*KeyEnvelope) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_keys_proto_rawDescGZIP(), []int{0} +} -func (m *KeyEnvelope) GetKey() []byte { - if m != nil { - return m.Key +func (x *KeyEnvelope) GetKey() []byte { + if x != nil { + return x.Key } return nil } -func (m *KeyEnvelope) GetKekLabel() string { - if m != nil { - return m.KekLabel +func (x *KeyEnvelope) GetKekLabel() string { + if x != nil { + return x.KekLabel } return "" } -func (m *KeyEnvelope) GetEncryptedKey() []byte { - if m != nil { - return m.EncryptedKey +func (x *KeyEnvelope) GetEncryptedKey() []byte { + if x != nil { + return x.EncryptedKey } return nil } @@ -86,58 +107,67 @@ func (m *KeyEnvelope) GetEncryptedKey() []byte { // Root keys for a LoRaWAN device. // These are stored on the Join Server. type RootKeys struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Join Server issued identifier for the root keys. RootKeyId string `protobuf:"bytes,1,opt,name=root_key_id,json=rootKeyId,proto3" json:"root_key_id,omitempty"` // The (encrypted) Application Key. AppKey *KeyEnvelope `protobuf:"bytes,2,opt,name=app_key,json=appKey,proto3" json:"app_key,omitempty"` // The (encrypted) Network Key. - NwkKey *KeyEnvelope `protobuf:"bytes,3,opt,name=nwk_key,json=nwkKey,proto3" json:"nwk_key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + NwkKey *KeyEnvelope `protobuf:"bytes,3,opt,name=nwk_key,json=nwkKey,proto3" json:"nwk_key,omitempty"` } -func (m *RootKeys) Reset() { *m = RootKeys{} } -func (m *RootKeys) String() string { return proto.CompactTextString(m) } -func (*RootKeys) ProtoMessage() {} -func (*RootKeys) Descriptor() ([]byte, []int) { - return fileDescriptor_ee170ee4ccd55993, []int{1} -} -func (m *RootKeys) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RootKeys.Unmarshal(m, b) -} -func (m *RootKeys) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RootKeys.Marshal(b, m, deterministic) -} -func (m *RootKeys) XXX_Merge(src proto.Message) { - xxx_messageInfo_RootKeys.Merge(m, src) +func (x *RootKeys) Reset() { + *x = RootKeys{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_keys_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *RootKeys) XXX_Size() int { - return xxx_messageInfo_RootKeys.Size(m) + +func (x *RootKeys) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *RootKeys) XXX_DiscardUnknown() { - xxx_messageInfo_RootKeys.DiscardUnknown(m) + +func (*RootKeys) ProtoMessage() {} + +func (x *RootKeys) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_keys_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_RootKeys proto.InternalMessageInfo +// Deprecated: Use RootKeys.ProtoReflect.Descriptor instead. +func (*RootKeys) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_keys_proto_rawDescGZIP(), []int{1} +} -func (m *RootKeys) GetRootKeyId() string { - if m != nil { - return m.RootKeyId +func (x *RootKeys) GetRootKeyId() string { + if x != nil { + return x.RootKeyId } return "" } -func (m *RootKeys) GetAppKey() *KeyEnvelope { - if m != nil { - return m.AppKey +func (x *RootKeys) GetAppKey() *KeyEnvelope { + if x != nil { + return x.AppKey } return nil } -func (m *RootKeys) GetNwkKey() *KeyEnvelope { - if m != nil { - return m.NwkKey +func (x *RootKeys) GetNwkKey() *KeyEnvelope { + if x != nil { + return x.NwkKey } return nil } @@ -145,6 +175,10 @@ func (m *RootKeys) GetNwkKey() *KeyEnvelope { // Session keys for a LoRaWAN session. // Only the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys. type SessionKeys struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Join Server issued identifier for the session keys. // This ID can be used to request the keys from the Join Server in case the are lost. SessionKeyId []byte `protobuf:"bytes,1,opt,name=session_key_id,json=sessionKeyId,proto3" json:"session_key_id,omitempty"` @@ -159,129 +193,271 @@ type SessionKeys struct { NwkSEncKey *KeyEnvelope `protobuf:"bytes,4,opt,name=nwk_s_enc_key,json=nwkSEncKey,proto3" json:"nwk_s_enc_key,omitempty"` // The (encrypted) Application Session Key. // This key is stored by the Application Server. - AppSKey *KeyEnvelope `protobuf:"bytes,5,opt,name=app_s_key,json=appSKey,proto3" json:"app_s_key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + AppSKey *KeyEnvelope `protobuf:"bytes,5,opt,name=app_s_key,json=appSKey,proto3" json:"app_s_key,omitempty"` } -func (m *SessionKeys) Reset() { *m = SessionKeys{} } -func (m *SessionKeys) String() string { return proto.CompactTextString(m) } -func (*SessionKeys) ProtoMessage() {} -func (*SessionKeys) Descriptor() ([]byte, []int) { - return fileDescriptor_ee170ee4ccd55993, []int{2} -} -func (m *SessionKeys) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SessionKeys.Unmarshal(m, b) -} -func (m *SessionKeys) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SessionKeys.Marshal(b, m, deterministic) -} -func (m *SessionKeys) XXX_Merge(src proto.Message) { - xxx_messageInfo_SessionKeys.Merge(m, src) +func (x *SessionKeys) Reset() { + *x = SessionKeys{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_keys_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SessionKeys) XXX_Size() int { - return xxx_messageInfo_SessionKeys.Size(m) + +func (x *SessionKeys) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SessionKeys) XXX_DiscardUnknown() { - xxx_messageInfo_SessionKeys.DiscardUnknown(m) + +func (*SessionKeys) ProtoMessage() {} + +func (x *SessionKeys) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_keys_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SessionKeys proto.InternalMessageInfo +// Deprecated: Use SessionKeys.ProtoReflect.Descriptor instead. +func (*SessionKeys) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_keys_proto_rawDescGZIP(), []int{2} +} -func (m *SessionKeys) GetSessionKeyId() []byte { - if m != nil { - return m.SessionKeyId +func (x *SessionKeys) GetSessionKeyId() []byte { + if x != nil { + return x.SessionKeyId } return nil } -func (m *SessionKeys) GetFNwkSIntKey() *KeyEnvelope { - if m != nil { - return m.FNwkSIntKey +func (x *SessionKeys) GetFNwkSIntKey() *KeyEnvelope { + if x != nil { + return x.FNwkSIntKey } return nil } -func (m *SessionKeys) GetSNwkSIntKey() *KeyEnvelope { - if m != nil { - return m.SNwkSIntKey +func (x *SessionKeys) GetSNwkSIntKey() *KeyEnvelope { + if x != nil { + return x.SNwkSIntKey } return nil } -func (m *SessionKeys) GetNwkSEncKey() *KeyEnvelope { - if m != nil { - return m.NwkSEncKey +func (x *SessionKeys) GetNwkSEncKey() *KeyEnvelope { + if x != nil { + return x.NwkSEncKey } return nil } -func (m *SessionKeys) GetAppSKey() *KeyEnvelope { - if m != nil { - return m.AppSKey +func (x *SessionKeys) GetAppSKey() *KeyEnvelope { + if x != nil { + return x.AppSKey } return nil } -func init() { - proto.RegisterType((*KeyEnvelope)(nil), "ttn.lorawan.v3.KeyEnvelope") - golang_proto.RegisterType((*KeyEnvelope)(nil), "ttn.lorawan.v3.KeyEnvelope") - proto.RegisterType((*RootKeys)(nil), "ttn.lorawan.v3.RootKeys") - golang_proto.RegisterType((*RootKeys)(nil), "ttn.lorawan.v3.RootKeys") - proto.RegisterType((*SessionKeys)(nil), "ttn.lorawan.v3.SessionKeys") - golang_proto.RegisterType((*SessionKeys)(nil), "ttn.lorawan.v3.SessionKeys") +var File_lorawan_stack_api_keys_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_keys_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x41, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, + 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, + 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, + 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, + 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, + 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, + 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8e, 0x05, 0x0a, 0x0b, + 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x12, 0xfe, 0x02, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xeb, 0x02, 0xfa, 0x42, 0x06, 0x7a, + 0x04, 0x68, 0x10, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x83, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, + 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x40, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, + 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x31, 0x36, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, + 0xa1, 0x01, 0x1a, 0x4f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, + 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x31, 0x36, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, + 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, + 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x92, 0x41, 0x31, 0x4a, 0x22, 0x22, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, + 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x09, + 0x6b, 0x65, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x08, 0x6b, 0x65, 0x6b, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x12, 0xcc, 0x01, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, + 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa6, 0x01, 0xfa, 0x42, + 0x05, 0x7a, 0x03, 0x18, 0x80, 0x08, 0xf2, 0xaa, 0x19, 0x99, 0x01, 0x1a, 0x4e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4e, 0x65, 0x77, 0x48, + 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x47, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4b, + 0x65, 0x79, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xaa, 0x01, 0x0a, + 0x08, 0x52, 0x6f, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x28, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, + 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x09, 0x72, 0x6f, 0x6f, 0x74, 0x4b, 0x65, + 0x79, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, + 0x65, 0x52, 0x06, 0x61, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x07, 0x6e, 0x77, 0x6b, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, + 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x06, 0x6e, 0x77, 0x6b, 0x4b, 0x65, 0x79, 0x3a, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xc6, 0x02, 0x0a, 0x0b, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x0f, 0x66, 0x5f, 0x6e, + 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, + 0x0b, 0x66, 0x4e, 0x77, 0x6b, 0x53, 0x49, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x41, 0x0a, 0x0f, + 0x73, 0x5f, 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, + 0x70, 0x65, 0x52, 0x0b, 0x73, 0x4e, 0x77, 0x6b, 0x53, 0x49, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, + 0x3e, 0x0a, 0x0d, 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x65, 0x6e, 0x63, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, + 0x6f, 0x70, 0x65, 0x52, 0x0a, 0x6e, 0x77, 0x6b, 0x53, 0x45, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x12, + 0x37, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, + 0x07, 0x61, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, + 0x10, 0x01, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } -func init() { proto.RegisterFile("lorawan-stack/api/keys.proto", fileDescriptor_ee170ee4ccd55993) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/keys.proto", fileDescriptor_ee170ee4ccd55993) +var ( + file_lorawan_stack_api_keys_proto_rawDescOnce sync.Once + file_lorawan_stack_api_keys_proto_rawDescData = file_lorawan_stack_api_keys_proto_rawDesc +) + +func file_lorawan_stack_api_keys_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_keys_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_keys_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_keys_proto_rawDescData) + }) + return file_lorawan_stack_api_keys_proto_rawDescData +} + +var file_lorawan_stack_api_keys_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_lorawan_stack_api_keys_proto_goTypes = []interface{}{ + (*KeyEnvelope)(nil), // 0: ttn.lorawan.v3.KeyEnvelope + (*RootKeys)(nil), // 1: ttn.lorawan.v3.RootKeys + (*SessionKeys)(nil), // 2: ttn.lorawan.v3.SessionKeys +} +var file_lorawan_stack_api_keys_proto_depIdxs = []int32{ + 0, // 0: ttn.lorawan.v3.RootKeys.app_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 0, // 1: ttn.lorawan.v3.RootKeys.nwk_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 0, // 2: ttn.lorawan.v3.SessionKeys.f_nwk_s_int_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 0, // 3: ttn.lorawan.v3.SessionKeys.s_nwk_s_int_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 0, // 4: ttn.lorawan.v3.SessionKeys.nwk_s_enc_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 0, // 5: ttn.lorawan.v3.SessionKeys.app_s_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } -var fileDescriptor_ee170ee4ccd55993 = []byte{ - // 701 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x94, 0xbf, 0x6f, 0x1a, 0x49, - 0x14, 0xc7, 0xb5, 0x60, 0x30, 0x0c, 0xd8, 0x67, 0x6d, 0x85, 0xb9, 0xd3, 0xc9, 0x42, 0x3a, 0xc9, - 0x0d, 0xbb, 0x67, 0xe3, 0x1f, 0x77, 0x57, 0xdc, 0x1d, 0x6b, 0x63, 0x9b, 0xe3, 0x42, 0x24, 0x70, - 0xa4, 0x28, 0x0d, 0x1a, 0x96, 0xc7, 0xb2, 0xd9, 0x65, 0x66, 0xb4, 0x33, 0xb0, 0x5e, 0x57, 0x96, - 0xd2, 0xa7, 0x48, 0x97, 0x74, 0x49, 0x91, 0x82, 0xbf, 0x22, 0x55, 0xaa, 0xfc, 0x17, 0xe9, 0x92, - 0xce, 0xa5, 0x8b, 0x28, 0x9a, 0x01, 0x39, 0x8b, 0x1d, 0xc9, 0x76, 0xdc, 0xa0, 0x7d, 0xe2, 0xfb, - 0x3e, 0x7c, 0xbf, 0xef, 0x3d, 0x16, 0xfd, 0xe2, 0xd3, 0x00, 0x87, 0x98, 0x94, 0xb9, 0xc0, 0xb6, - 0x67, 0x62, 0xe6, 0x9a, 0x1e, 0x44, 0xdc, 0x60, 0x01, 0x15, 0x54, 0x5f, 0x16, 0x82, 0x18, 0x33, - 0x85, 0x31, 0xae, 0x14, 0xab, 0x8e, 0x2b, 0x06, 0xa3, 0xae, 0x61, 0xd3, 0xa1, 0x09, 0x64, 0x4c, - 0x23, 0x16, 0xd0, 0x93, 0xc8, 0x54, 0x62, 0xbb, 0xec, 0x00, 0x29, 0x8f, 0xb1, 0xef, 0xf6, 0xb0, - 0x00, 0xf3, 0xda, 0xc3, 0x14, 0x59, 0x2c, 0xc7, 0x10, 0x0e, 0x75, 0xe8, 0xb4, 0xb9, 0x3b, 0xea, - 0xab, 0x4a, 0x15, 0xea, 0x69, 0x26, 0xdf, 0x8f, 0xc9, 0x8f, 0x07, 0x70, 0x3c, 0x70, 0x89, 0xc3, - 0xeb, 0xa4, 0x37, 0xe2, 0x22, 0x70, 0x81, 0xc7, 0x7f, 0xda, 0xa1, 0xe5, 0xbe, 0x8f, 0x1d, 0x6e, - 0x62, 0x42, 0xa8, 0xc0, 0xc2, 0xa5, 0x64, 0x96, 0xa3, 0xb8, 0x77, 0x27, 0xca, 0x53, 0x4e, 0xc9, - 0x77, 0x20, 0x46, 0x4c, 0x45, 0x19, 0x10, 0xcc, 0xdc, 0xf1, 0xa6, 0x49, 0x99, 0xd2, 0x5c, 0xd7, - 0x97, 0x9e, 0xa7, 0x50, 0xae, 0x01, 0x51, 0x8d, 0x8c, 0xc1, 0xa7, 0x0c, 0xf4, 0x2f, 0x09, 0x94, - 0xf4, 0x20, 0x2a, 0x68, 0x6b, 0xda, 0x7a, 0xde, 0xfa, 0x9c, 0x78, 0x51, 0xdd, 0xf8, 0xaf, 0x54, - 0xfa, 0x7d, 0x63, 0xb3, 0xb2, 0xb5, 0xbd, 0xb3, 0xfb, 0xc7, 0x9f, 0x55, 0x6b, 0x6f, 0xbf, 0x76, - 0x70, 0xb5, 0x2e, 0xbd, 0x4a, 0x68, 0x8b, 0x6f, 0x12, 0x69, 0xe9, 0x94, 0x38, 0x17, 0x56, 0xfa, - 0x74, 0x61, 0xb0, 0xc2, 0xb4, 0x4f, 0x93, 0xd5, 0x67, 0x1a, 0xfa, 0xc7, 0xa1, 0x86, 0x18, 0x80, - 0x50, 0x79, 0x0c, 0x02, 0x22, 0xa4, 0x81, 0x67, 0xce, 0xaf, 0x74, 0x5c, 0x31, 0x99, 0xe7, 0x98, - 0x22, 0x62, 0xc0, 0x8d, 0x07, 0x38, 0xe0, 0x03, 0xec, 0x1f, 0xd5, 0x1e, 0x5b, 0x91, 0x00, 0xae, - 0xff, 0x7b, 0x57, 0xc0, 0x23, 0x32, 0x9c, 0x22, 0x36, 0x76, 0x14, 0xe1, 0x7c, 0xb2, 0xfa, 0x5a, - 0x2b, 0x3e, 0xbc, 0x1d, 0xc6, 0x1e, 0xf6, 0x4c, 0x21, 0x48, 0xd9, 0x0f, 0xcb, 0xb6, 0xef, 0x9a, - 0xf6, 0x88, 0x0b, 0x3a, 0x54, 0x3b, 0x33, 0x9a, 0x10, 0xce, 0x88, 0x07, 0x3e, 0x76, 0x4a, 0xcd, - 0x7b, 0x03, 0x0f, 0x41, 0xd4, 0x4e, 0xb0, 0x2d, 0x14, 0xb3, 0x25, 0x07, 0xaf, 0xff, 0x86, 0xb2, - 0x1e, 0x78, 0x1d, 0x1f, 0x77, 0xc1, 0x2f, 0x24, 0xd6, 0xb4, 0xf5, 0xac, 0x95, 0xb9, 0xb0, 0x52, - 0x41, 0xb2, 0x70, 0xb6, 0xd2, 0xca, 0x78, 0xe0, 0xfd, 0x2f, 0xbf, 0xd1, 0x3f, 0x68, 0x68, 0x09, - 0x88, 0x1d, 0x44, 0x4c, 0x40, 0xaf, 0x23, 0x37, 0x96, 0x54, 0x1b, 0x7b, 0xab, 0x5d, 0x58, 0xa9, - 0xd3, 0x64, 0xe1, 0x2c, 0x73, 0x3e, 0x59, 0x7d, 0xa9, 0x15, 0x9b, 0x3f, 0x70, 0x9a, 0xea, 0x93, - 0xf9, 0x23, 0xc7, 0x25, 0x32, 0xf2, 0x11, 0x9c, 0x7c, 0xcb, 0x7c, 0x78, 0x4f, 0xde, 0x21, 0xcc, - 0xc2, 0xe6, 0x2f, 0xdd, 0x37, 0x20, 0xfa, 0x4b, 0xba, 0x5d, 0xc8, 0x68, 0x2b, 0x5a, 0x69, 0xa2, - 0xa1, 0x4c, 0x8b, 0x52, 0xd1, 0x80, 0x88, 0xeb, 0xeb, 0x28, 0x17, 0x50, 0x2a, 0x64, 0xbe, 0x8e, - 0xdb, 0x53, 0x47, 0x19, 0x1f, 0x47, 0x36, 0x98, 0x0a, 0xeb, 0x3d, 0x7d, 0x0b, 0x2d, 0x62, 0xc6, - 0xd4, 0x20, 0xe4, 0xd0, 0x72, 0x9b, 0x3f, 0x1b, 0xf3, 0xaf, 0x05, 0x23, 0x76, 0xe5, 0xad, 0x34, - 0x66, 0xac, 0x01, 0x91, 0xec, 0x22, 0xa1, 0x77, 0x39, 0xbe, 0x9b, 0xba, 0x48, 0xe8, 0xcd, 0x9b, - 0x7d, 0x9f, 0x40, 0xb9, 0x36, 0x70, 0xee, 0x52, 0xa2, 0xfc, 0x1a, 0x68, 0x99, 0x4f, 0xcb, 0xb8, - 0xe5, 0xbc, 0xb2, 0x7c, 0xaa, 0x2c, 0xe7, 0xf9, 0xa5, 0xbc, 0xde, 0xd3, 0xab, 0xe8, 0xa7, 0x7e, - 0x47, 0x3a, 0xe0, 0x1d, 0x97, 0x88, 0xdb, 0xba, 0xcf, 0xf5, 0x9b, 0xa1, 0xd7, 0xae, 0x13, 0x19, - 0x5d, 0x22, 0xf8, 0x15, 0xc4, 0x2d, 0xa2, 0xe4, 0x78, 0x0c, 0xf1, 0x37, 0x5a, 0x9a, 0x02, 0x80, - 0xd8, 0x0a, 0xb0, 0x70, 0x33, 0x00, 0x91, 0xd0, 0x6b, 0xd7, 0x88, 0x2d, 0xfb, 0x77, 0x51, 0x56, - 0xce, 0x9e, 0xab, 0xde, 0xd4, 0xcd, 0xbd, 0x72, 0x53, 0xed, 0xb9, 0x41, 0x5a, 0xdb, 0xef, 0x3e, - 0xfe, 0xaa, 0x3d, 0x31, 0xef, 0xf0, 0x47, 0x17, 0x84, 0x75, 0xbb, 0x69, 0x75, 0x6e, 0x95, 0xaf, - 0x01, 0x00, 0x00, 0xff, 0xff, 0x99, 0xb5, 0xcd, 0x58, 0x21, 0x06, 0x00, 0x00, +func init() { file_lorawan_stack_api_keys_proto_init() } +func file_lorawan_stack_api_keys_proto_init() { + if File_lorawan_stack_api_keys_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_keys_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KeyEnvelope); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_keys_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RootKeys); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_keys_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SessionKeys); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_keys_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_keys_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_keys_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_keys_proto_msgTypes, + }.Build() + File_lorawan_stack_api_keys_proto = out.File + file_lorawan_stack_api_keys_proto_rawDesc = nil + file_lorawan_stack_api_keys_proto_goTypes = nil + file_lorawan_stack_api_keys_proto_depIdxs = nil } diff --git a/pkg/ttnpb/keys.pb.validate.go b/pkg/ttnpb/keys.pb.validate.go index 577a183802..e9cef7d612 100644 --- a/pkg/ttnpb/keys.pb.validate.go +++ b/pkg/ttnpb/keys.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _keys_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on KeyEnvelope with the rules defined // in the proto definition for this message. If any rules are violated, an // error is returned. diff --git a/pkg/ttnpb/keys_flags.pb.go b/pkg/ttnpb/keys_flags.pb.go index 778f700a76..f3b2848ecb 100644 --- a/pkg/ttnpb/keys_flags.pb.go +++ b/pkg/ttnpb/keys_flags.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/keys.proto package ttnpb diff --git a/pkg/ttnpb/keys_json.pb.go b/pkg/ttnpb/keys_json.pb.go index b9846adbc2..caaf8bd2b7 100644 --- a/pkg/ttnpb/keys_json.pb.go +++ b/pkg/ttnpb/keys_json.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/keys.proto package ttnpb diff --git a/pkg/ttnpb/lorawan.pb.go b/pkg/ttnpb/lorawan.pb.go index 5dcaf3033f..a375106849 100644 --- a/pkg/ttnpb/lorawan.pb.go +++ b/pkg/ttnpb/lorawan.pb.go @@ -1,32 +1,45 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/lorawan.proto package ttnpb import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type MType int32 @@ -41,34 +54,55 @@ const ( MType_PROPRIETARY MType = 7 ) -var MType_name = map[int32]string{ - 0: "JOIN_REQUEST", - 1: "JOIN_ACCEPT", - 2: "UNCONFIRMED_UP", - 3: "UNCONFIRMED_DOWN", - 4: "CONFIRMED_UP", - 5: "CONFIRMED_DOWN", - 6: "REJOIN_REQUEST", - 7: "PROPRIETARY", -} +// Enum value maps for MType. +var ( + MType_name = map[int32]string{ + 0: "JOIN_REQUEST", + 1: "JOIN_ACCEPT", + 2: "UNCONFIRMED_UP", + 3: "UNCONFIRMED_DOWN", + 4: "CONFIRMED_UP", + 5: "CONFIRMED_DOWN", + 6: "REJOIN_REQUEST", + 7: "PROPRIETARY", + } + MType_value = map[string]int32{ + "JOIN_REQUEST": 0, + "JOIN_ACCEPT": 1, + "UNCONFIRMED_UP": 2, + "UNCONFIRMED_DOWN": 3, + "CONFIRMED_UP": 4, + "CONFIRMED_DOWN": 5, + "REJOIN_REQUEST": 6, + "PROPRIETARY": 7, + } +) -var MType_value = map[string]int32{ - "JOIN_REQUEST": 0, - "JOIN_ACCEPT": 1, - "UNCONFIRMED_UP": 2, - "UNCONFIRMED_DOWN": 3, - "CONFIRMED_UP": 4, - "CONFIRMED_DOWN": 5, - "REJOIN_REQUEST": 6, - "PROPRIETARY": 7, +func (x MType) Enum() *MType { + p := new(MType) + *p = x + return p } func (x MType) String() string { - return proto.EnumName(MType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MType) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[0].Descriptor() } +func (MType) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[0] +} + +func (x MType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MType.Descriptor instead. func (MType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{0} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{0} } type Major int32 @@ -77,20 +111,41 @@ const ( Major_LORAWAN_R1 Major = 0 ) -var Major_name = map[int32]string{ - 0: "LORAWAN_R1", -} +// Enum value maps for Major. +var ( + Major_name = map[int32]string{ + 0: "LORAWAN_R1", + } + Major_value = map[string]int32{ + "LORAWAN_R1": 0, + } +) -var Major_value = map[string]int32{ - "LORAWAN_R1": 0, +func (x Major) Enum() *Major { + p := new(Major) + *p = x + return p } func (x Major) String() string { - return proto.EnumName(Major_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (Major) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[1].Descriptor() +} + +func (Major) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[1] +} + +func (x Major) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Major.Descriptor instead. func (Major) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{1} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{1} } type MACVersion int32 @@ -105,32 +160,53 @@ const ( MACVersion_MAC_V1_0_4 MACVersion = 6 ) -var MACVersion_name = map[int32]string{ - 0: "MAC_UNKNOWN", - 1: "MAC_V1_0", - 2: "MAC_V1_0_1", - 3: "MAC_V1_0_2", - 4: "MAC_V1_1", - 5: "MAC_V1_0_3", - 6: "MAC_V1_0_4", -} +// Enum value maps for MACVersion. +var ( + MACVersion_name = map[int32]string{ + 0: "MAC_UNKNOWN", + 1: "MAC_V1_0", + 2: "MAC_V1_0_1", + 3: "MAC_V1_0_2", + 4: "MAC_V1_1", + 5: "MAC_V1_0_3", + 6: "MAC_V1_0_4", + } + MACVersion_value = map[string]int32{ + "MAC_UNKNOWN": 0, + "MAC_V1_0": 1, + "MAC_V1_0_1": 2, + "MAC_V1_0_2": 3, + "MAC_V1_1": 4, + "MAC_V1_0_3": 5, + "MAC_V1_0_4": 6, + } +) -var MACVersion_value = map[string]int32{ - "MAC_UNKNOWN": 0, - "MAC_V1_0": 1, - "MAC_V1_0_1": 2, - "MAC_V1_0_2": 3, - "MAC_V1_1": 4, - "MAC_V1_0_3": 5, - "MAC_V1_0_4": 6, +func (x MACVersion) Enum() *MACVersion { + p := new(MACVersion) + *p = x + return p } func (x MACVersion) String() string { - return proto.EnumName(MACVersion_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MACVersion) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[2].Descriptor() +} + +func (MACVersion) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[2] +} + +func (x MACVersion) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use MACVersion.Descriptor instead. func (MACVersion) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{2} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{2} } type PHYVersion int32 @@ -157,56 +233,77 @@ const ( PHYVersion_RP002_V1_0_3 PHYVersion = 11 ) -var PHYVersion_name = map[int32]string{ - 0: "PHY_UNKNOWN", - 1: "PHY_V1_0", - // Duplicate value: 1: "TS001_V1_0", - 2: "PHY_V1_0_1", - // Duplicate value: 2: "TS001_V1_0_1", - 3: "PHY_V1_0_2_REV_A", - // Duplicate value: 3: "RP001_V1_0_2", - 4: "PHY_V1_0_2_REV_B", - // Duplicate value: 4: "RP001_V1_0_2_REV_B", - 5: "PHY_V1_1_REV_A", - // Duplicate value: 5: "RP001_V1_1_REV_A", - 6: "PHY_V1_1_REV_B", - // Duplicate value: 6: "RP001_V1_1_REV_B", - 7: "PHY_V1_0_3_REV_A", - // Duplicate value: 7: "RP001_V1_0_3_REV_A", - 8: "RP002_V1_0_0", - 9: "RP002_V1_0_1", - 10: "RP002_V1_0_2", - 11: "RP002_V1_0_3", -} - -var PHYVersion_value = map[string]int32{ - "PHY_UNKNOWN": 0, - "PHY_V1_0": 1, - "TS001_V1_0": 1, - "PHY_V1_0_1": 2, - "TS001_V1_0_1": 2, - "PHY_V1_0_2_REV_A": 3, - "RP001_V1_0_2": 3, - "PHY_V1_0_2_REV_B": 4, - "RP001_V1_0_2_REV_B": 4, - "PHY_V1_1_REV_A": 5, - "RP001_V1_1_REV_A": 5, - "PHY_V1_1_REV_B": 6, - "RP001_V1_1_REV_B": 6, - "PHY_V1_0_3_REV_A": 7, - "RP001_V1_0_3_REV_A": 7, - "RP002_V1_0_0": 8, - "RP002_V1_0_1": 9, - "RP002_V1_0_2": 10, - "RP002_V1_0_3": 11, +// Enum value maps for PHYVersion. +var ( + PHYVersion_name = map[int32]string{ + 0: "PHY_UNKNOWN", + 1: "PHY_V1_0", + // Duplicate value: 1: "TS001_V1_0", + 2: "PHY_V1_0_1", + // Duplicate value: 2: "TS001_V1_0_1", + 3: "PHY_V1_0_2_REV_A", + // Duplicate value: 3: "RP001_V1_0_2", + 4: "PHY_V1_0_2_REV_B", + // Duplicate value: 4: "RP001_V1_0_2_REV_B", + 5: "PHY_V1_1_REV_A", + // Duplicate value: 5: "RP001_V1_1_REV_A", + 6: "PHY_V1_1_REV_B", + // Duplicate value: 6: "RP001_V1_1_REV_B", + 7: "PHY_V1_0_3_REV_A", + // Duplicate value: 7: "RP001_V1_0_3_REV_A", + 8: "RP002_V1_0_0", + 9: "RP002_V1_0_1", + 10: "RP002_V1_0_2", + 11: "RP002_V1_0_3", + } + PHYVersion_value = map[string]int32{ + "PHY_UNKNOWN": 0, + "PHY_V1_0": 1, + "TS001_V1_0": 1, + "PHY_V1_0_1": 2, + "TS001_V1_0_1": 2, + "PHY_V1_0_2_REV_A": 3, + "RP001_V1_0_2": 3, + "PHY_V1_0_2_REV_B": 4, + "RP001_V1_0_2_REV_B": 4, + "PHY_V1_1_REV_A": 5, + "RP001_V1_1_REV_A": 5, + "PHY_V1_1_REV_B": 6, + "RP001_V1_1_REV_B": 6, + "PHY_V1_0_3_REV_A": 7, + "RP001_V1_0_3_REV_A": 7, + "RP002_V1_0_0": 8, + "RP002_V1_0_1": 9, + "RP002_V1_0_2": 10, + "RP002_V1_0_3": 11, + } +) + +func (x PHYVersion) Enum() *PHYVersion { + p := new(PHYVersion) + *p = x + return p } func (x PHYVersion) String() string { - return proto.EnumName(PHYVersion_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PHYVersion) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[3].Descriptor() +} + +func (PHYVersion) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[3] +} + +func (x PHYVersion) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use PHYVersion.Descriptor instead. func (PHYVersion) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{3} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{3} } type DataRateIndex int32 @@ -230,50 +327,71 @@ const ( DataRateIndex_DATA_RATE_15 DataRateIndex = 15 ) -var DataRateIndex_name = map[int32]string{ - 0: "DATA_RATE_0", - 1: "DATA_RATE_1", - 2: "DATA_RATE_2", - 3: "DATA_RATE_3", - 4: "DATA_RATE_4", - 5: "DATA_RATE_5", - 6: "DATA_RATE_6", - 7: "DATA_RATE_7", - 8: "DATA_RATE_8", - 9: "DATA_RATE_9", - 10: "DATA_RATE_10", - 11: "DATA_RATE_11", - 12: "DATA_RATE_12", - 13: "DATA_RATE_13", - 14: "DATA_RATE_14", - 15: "DATA_RATE_15", -} - -var DataRateIndex_value = map[string]int32{ - "DATA_RATE_0": 0, - "DATA_RATE_1": 1, - "DATA_RATE_2": 2, - "DATA_RATE_3": 3, - "DATA_RATE_4": 4, - "DATA_RATE_5": 5, - "DATA_RATE_6": 6, - "DATA_RATE_7": 7, - "DATA_RATE_8": 8, - "DATA_RATE_9": 9, - "DATA_RATE_10": 10, - "DATA_RATE_11": 11, - "DATA_RATE_12": 12, - "DATA_RATE_13": 13, - "DATA_RATE_14": 14, - "DATA_RATE_15": 15, +// Enum value maps for DataRateIndex. +var ( + DataRateIndex_name = map[int32]string{ + 0: "DATA_RATE_0", + 1: "DATA_RATE_1", + 2: "DATA_RATE_2", + 3: "DATA_RATE_3", + 4: "DATA_RATE_4", + 5: "DATA_RATE_5", + 6: "DATA_RATE_6", + 7: "DATA_RATE_7", + 8: "DATA_RATE_8", + 9: "DATA_RATE_9", + 10: "DATA_RATE_10", + 11: "DATA_RATE_11", + 12: "DATA_RATE_12", + 13: "DATA_RATE_13", + 14: "DATA_RATE_14", + 15: "DATA_RATE_15", + } + DataRateIndex_value = map[string]int32{ + "DATA_RATE_0": 0, + "DATA_RATE_1": 1, + "DATA_RATE_2": 2, + "DATA_RATE_3": 3, + "DATA_RATE_4": 4, + "DATA_RATE_5": 5, + "DATA_RATE_6": 6, + "DATA_RATE_7": 7, + "DATA_RATE_8": 8, + "DATA_RATE_9": 9, + "DATA_RATE_10": 10, + "DATA_RATE_11": 11, + "DATA_RATE_12": 12, + "DATA_RATE_13": 13, + "DATA_RATE_14": 14, + "DATA_RATE_15": 15, + } +) + +func (x DataRateIndex) Enum() *DataRateIndex { + p := new(DataRateIndex) + *p = x + return p } func (x DataRateIndex) String() string { - return proto.EnumName(DataRateIndex_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DataRateIndex) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[4].Descriptor() +} + +func (DataRateIndex) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[4] +} + +func (x DataRateIndex) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use DataRateIndex.Descriptor instead. func (DataRateIndex) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{4} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{4} } type DataRateOffset int32 @@ -289,93 +407,156 @@ const ( DataRateOffset_DATA_RATE_OFFSET_7 DataRateOffset = 7 ) -var DataRateOffset_name = map[int32]string{ - 0: "DATA_RATE_OFFSET_0", - 1: "DATA_RATE_OFFSET_1", - 2: "DATA_RATE_OFFSET_2", - 3: "DATA_RATE_OFFSET_3", - 4: "DATA_RATE_OFFSET_4", - 5: "DATA_RATE_OFFSET_5", - 6: "DATA_RATE_OFFSET_6", - 7: "DATA_RATE_OFFSET_7", -} +// Enum value maps for DataRateOffset. +var ( + DataRateOffset_name = map[int32]string{ + 0: "DATA_RATE_OFFSET_0", + 1: "DATA_RATE_OFFSET_1", + 2: "DATA_RATE_OFFSET_2", + 3: "DATA_RATE_OFFSET_3", + 4: "DATA_RATE_OFFSET_4", + 5: "DATA_RATE_OFFSET_5", + 6: "DATA_RATE_OFFSET_6", + 7: "DATA_RATE_OFFSET_7", + } + DataRateOffset_value = map[string]int32{ + "DATA_RATE_OFFSET_0": 0, + "DATA_RATE_OFFSET_1": 1, + "DATA_RATE_OFFSET_2": 2, + "DATA_RATE_OFFSET_3": 3, + "DATA_RATE_OFFSET_4": 4, + "DATA_RATE_OFFSET_5": 5, + "DATA_RATE_OFFSET_6": 6, + "DATA_RATE_OFFSET_7": 7, + } +) -var DataRateOffset_value = map[string]int32{ - "DATA_RATE_OFFSET_0": 0, - "DATA_RATE_OFFSET_1": 1, - "DATA_RATE_OFFSET_2": 2, - "DATA_RATE_OFFSET_3": 3, - "DATA_RATE_OFFSET_4": 4, - "DATA_RATE_OFFSET_5": 5, - "DATA_RATE_OFFSET_6": 6, - "DATA_RATE_OFFSET_7": 7, +func (x DataRateOffset) Enum() *DataRateOffset { + p := new(DataRateOffset) + *p = x + return p } func (x DataRateOffset) String() string { - return proto.EnumName(DataRateOffset_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DataRateOffset) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[5].Descriptor() +} + +func (DataRateOffset) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[5] } +func (x DataRateOffset) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DataRateOffset.Descriptor instead. func (DataRateOffset) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{5} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{5} } type JoinRequestType int32 const ( - JoinRequestType_REJOIN_CONTEXT JoinRequestType = 0 - JoinRequestType_REJOIN_SESSION JoinRequestType = 1 - JoinRequestType_REJOIN_KEYS JoinRequestType = 2 - JoinRequestType_JOIN JoinRequestType = 255 + JoinRequestType_REJOIN_CONTEXT JoinRequestType = 0 // Resets DevAddr, Session Keys, Frame Counters, Radio Parameters. + JoinRequestType_REJOIN_SESSION JoinRequestType = 1 // Equivalent to the initial JoinRequest. + JoinRequestType_REJOIN_KEYS JoinRequestType = 2 // Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters. + JoinRequestType_JOIN JoinRequestType = 255 // Normal join-request. ) -var JoinRequestType_name = map[int32]string{ - 0: "REJOIN_CONTEXT", - 1: "REJOIN_SESSION", - 2: "REJOIN_KEYS", - 255: "JOIN", -} +// Enum value maps for JoinRequestType. +var ( + JoinRequestType_name = map[int32]string{ + 0: "REJOIN_CONTEXT", + 1: "REJOIN_SESSION", + 2: "REJOIN_KEYS", + 255: "JOIN", + } + JoinRequestType_value = map[string]int32{ + "REJOIN_CONTEXT": 0, + "REJOIN_SESSION": 1, + "REJOIN_KEYS": 2, + "JOIN": 255, + } +) -var JoinRequestType_value = map[string]int32{ - "REJOIN_CONTEXT": 0, - "REJOIN_SESSION": 1, - "REJOIN_KEYS": 2, - "JOIN": 255, +func (x JoinRequestType) Enum() *JoinRequestType { + p := new(JoinRequestType) + *p = x + return p } func (x JoinRequestType) String() string { - return proto.EnumName(JoinRequestType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (JoinRequestType) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[6].Descriptor() } +func (JoinRequestType) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[6] +} + +func (x JoinRequestType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use JoinRequestType.Descriptor instead. func (JoinRequestType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{6} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{6} } type RejoinRequestType int32 const ( - RejoinRequestType_CONTEXT RejoinRequestType = 0 - RejoinRequestType_SESSION RejoinRequestType = 1 - RejoinRequestType_KEYS RejoinRequestType = 2 + RejoinRequestType_CONTEXT RejoinRequestType = 0 // Resets DevAddr, Session Keys, Frame Counters, Radio Parameters. + RejoinRequestType_SESSION RejoinRequestType = 1 // Equivalent to the initial JoinRequest. + RejoinRequestType_KEYS RejoinRequestType = 2 // Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters. ) -var RejoinRequestType_name = map[int32]string{ - 0: "CONTEXT", - 1: "SESSION", - 2: "KEYS", -} +// Enum value maps for RejoinRequestType. +var ( + RejoinRequestType_name = map[int32]string{ + 0: "CONTEXT", + 1: "SESSION", + 2: "KEYS", + } + RejoinRequestType_value = map[string]int32{ + "CONTEXT": 0, + "SESSION": 1, + "KEYS": 2, + } +) -var RejoinRequestType_value = map[string]int32{ - "CONTEXT": 0, - "SESSION": 1, - "KEYS": 2, +func (x RejoinRequestType) Enum() *RejoinRequestType { + p := new(RejoinRequestType) + *p = x + return p } func (x RejoinRequestType) String() string { - return proto.EnumName(RejoinRequestType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (RejoinRequestType) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[7].Descriptor() +} + +func (RejoinRequestType) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[7] +} + +func (x RejoinRequestType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RejoinRequestType.Descriptor instead. func (RejoinRequestType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{7} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{7} } type CFListType int32 @@ -385,22 +566,43 @@ const ( CFListType_CHANNEL_MASKS CFListType = 1 ) -var CFListType_name = map[int32]string{ - 0: "FREQUENCIES", - 1: "CHANNEL_MASKS", -} +// Enum value maps for CFListType. +var ( + CFListType_name = map[int32]string{ + 0: "FREQUENCIES", + 1: "CHANNEL_MASKS", + } + CFListType_value = map[string]int32{ + "FREQUENCIES": 0, + "CHANNEL_MASKS": 1, + } +) -var CFListType_value = map[string]int32{ - "FREQUENCIES": 0, - "CHANNEL_MASKS": 1, +func (x CFListType) Enum() *CFListType { + p := new(CFListType) + *p = x + return p } func (x CFListType) String() string { - return proto.EnumName(CFListType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CFListType) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[8].Descriptor() +} + +func (CFListType) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[8] +} + +func (x CFListType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use CFListType.Descriptor instead. func (CFListType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{8} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{8} } type Class int32 @@ -411,24 +613,45 @@ const ( Class_CLASS_C Class = 2 ) -var Class_name = map[int32]string{ - 0: "CLASS_A", - 1: "CLASS_B", - 2: "CLASS_C", -} +// Enum value maps for Class. +var ( + Class_name = map[int32]string{ + 0: "CLASS_A", + 1: "CLASS_B", + 2: "CLASS_C", + } + Class_value = map[string]int32{ + "CLASS_A": 0, + "CLASS_B": 1, + "CLASS_C": 2, + } +) -var Class_value = map[string]int32{ - "CLASS_A": 0, - "CLASS_B": 1, - "CLASS_C": 2, +func (x Class) Enum() *Class { + p := new(Class) + *p = x + return p } func (x Class) String() string { - return proto.EnumName(Class_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Class) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[9].Descriptor() +} + +func (Class) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[9] } +func (x Class) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Class.Descriptor instead. func (Class) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{9} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{9} } type TxSchedulePriority int32 @@ -443,32 +666,53 @@ const ( TxSchedulePriority_HIGHEST TxSchedulePriority = 6 ) -var TxSchedulePriority_name = map[int32]string{ - 0: "LOWEST", - 1: "LOW", - 2: "BELOW_NORMAL", - 3: "NORMAL", - 4: "ABOVE_NORMAL", - 5: "HIGH", - 6: "HIGHEST", -} +// Enum value maps for TxSchedulePriority. +var ( + TxSchedulePriority_name = map[int32]string{ + 0: "LOWEST", + 1: "LOW", + 2: "BELOW_NORMAL", + 3: "NORMAL", + 4: "ABOVE_NORMAL", + 5: "HIGH", + 6: "HIGHEST", + } + TxSchedulePriority_value = map[string]int32{ + "LOWEST": 0, + "LOW": 1, + "BELOW_NORMAL": 2, + "NORMAL": 3, + "ABOVE_NORMAL": 4, + "HIGH": 5, + "HIGHEST": 6, + } +) -var TxSchedulePriority_value = map[string]int32{ - "LOWEST": 0, - "LOW": 1, - "BELOW_NORMAL": 2, - "NORMAL": 3, - "ABOVE_NORMAL": 4, - "HIGH": 5, - "HIGHEST": 6, +func (x TxSchedulePriority) Enum() *TxSchedulePriority { + p := new(TxSchedulePriority) + *p = x + return p } func (x TxSchedulePriority) String() string { - return proto.EnumName(TxSchedulePriority_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TxSchedulePriority) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[10].Descriptor() +} + +func (TxSchedulePriority) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[10] +} + +func (x TxSchedulePriority) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use TxSchedulePriority.Descriptor instead. func (TxSchedulePriority) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{10} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{10} } type MACCommandIdentifier int32 @@ -492,175 +736,238 @@ const ( MACCommandIdentifier_CID_REJOIN_PARAM_SETUP MACCommandIdentifier = 15 MACCommandIdentifier_CID_PING_SLOT_INFO MACCommandIdentifier = 16 MACCommandIdentifier_CID_PING_SLOT_CHANNEL MACCommandIdentifier = 17 - MACCommandIdentifier_CID_BEACON_TIMING MACCommandIdentifier = 18 + MACCommandIdentifier_CID_BEACON_TIMING MACCommandIdentifier = 18 // Deprecated MACCommandIdentifier_CID_BEACON_FREQ MACCommandIdentifier = 19 MACCommandIdentifier_CID_DEVICE_MODE MACCommandIdentifier = 32 ) -var MACCommandIdentifier_name = map[int32]string{ - 0: "CID_RFU_0", - 1: "CID_RESET", - 2: "CID_LINK_CHECK", - 3: "CID_LINK_ADR", - 4: "CID_DUTY_CYCLE", - 5: "CID_RX_PARAM_SETUP", - 6: "CID_DEV_STATUS", - 7: "CID_NEW_CHANNEL", - 8: "CID_RX_TIMING_SETUP", - 9: "CID_TX_PARAM_SETUP", - 10: "CID_DL_CHANNEL", - 11: "CID_REKEY", - 12: "CID_ADR_PARAM_SETUP", - 13: "CID_DEVICE_TIME", - 14: "CID_FORCE_REJOIN", - 15: "CID_REJOIN_PARAM_SETUP", - 16: "CID_PING_SLOT_INFO", - 17: "CID_PING_SLOT_CHANNEL", - 18: "CID_BEACON_TIMING", - 19: "CID_BEACON_FREQ", - 32: "CID_DEVICE_MODE", -} - -var MACCommandIdentifier_value = map[string]int32{ - "CID_RFU_0": 0, - "CID_RESET": 1, - "CID_LINK_CHECK": 2, - "CID_LINK_ADR": 3, - "CID_DUTY_CYCLE": 4, - "CID_RX_PARAM_SETUP": 5, - "CID_DEV_STATUS": 6, - "CID_NEW_CHANNEL": 7, - "CID_RX_TIMING_SETUP": 8, - "CID_TX_PARAM_SETUP": 9, - "CID_DL_CHANNEL": 10, - "CID_REKEY": 11, - "CID_ADR_PARAM_SETUP": 12, - "CID_DEVICE_TIME": 13, - "CID_FORCE_REJOIN": 14, - "CID_REJOIN_PARAM_SETUP": 15, - "CID_PING_SLOT_INFO": 16, - "CID_PING_SLOT_CHANNEL": 17, - "CID_BEACON_TIMING": 18, - "CID_BEACON_FREQ": 19, - "CID_DEVICE_MODE": 32, +// Enum value maps for MACCommandIdentifier. +var ( + MACCommandIdentifier_name = map[int32]string{ + 0: "CID_RFU_0", + 1: "CID_RESET", + 2: "CID_LINK_CHECK", + 3: "CID_LINK_ADR", + 4: "CID_DUTY_CYCLE", + 5: "CID_RX_PARAM_SETUP", + 6: "CID_DEV_STATUS", + 7: "CID_NEW_CHANNEL", + 8: "CID_RX_TIMING_SETUP", + 9: "CID_TX_PARAM_SETUP", + 10: "CID_DL_CHANNEL", + 11: "CID_REKEY", + 12: "CID_ADR_PARAM_SETUP", + 13: "CID_DEVICE_TIME", + 14: "CID_FORCE_REJOIN", + 15: "CID_REJOIN_PARAM_SETUP", + 16: "CID_PING_SLOT_INFO", + 17: "CID_PING_SLOT_CHANNEL", + 18: "CID_BEACON_TIMING", + 19: "CID_BEACON_FREQ", + 32: "CID_DEVICE_MODE", + } + MACCommandIdentifier_value = map[string]int32{ + "CID_RFU_0": 0, + "CID_RESET": 1, + "CID_LINK_CHECK": 2, + "CID_LINK_ADR": 3, + "CID_DUTY_CYCLE": 4, + "CID_RX_PARAM_SETUP": 5, + "CID_DEV_STATUS": 6, + "CID_NEW_CHANNEL": 7, + "CID_RX_TIMING_SETUP": 8, + "CID_TX_PARAM_SETUP": 9, + "CID_DL_CHANNEL": 10, + "CID_REKEY": 11, + "CID_ADR_PARAM_SETUP": 12, + "CID_DEVICE_TIME": 13, + "CID_FORCE_REJOIN": 14, + "CID_REJOIN_PARAM_SETUP": 15, + "CID_PING_SLOT_INFO": 16, + "CID_PING_SLOT_CHANNEL": 17, + "CID_BEACON_TIMING": 18, + "CID_BEACON_FREQ": 19, + "CID_DEVICE_MODE": 32, + } +) + +func (x MACCommandIdentifier) Enum() *MACCommandIdentifier { + p := new(MACCommandIdentifier) + *p = x + return p } func (x MACCommandIdentifier) String() string { - return proto.EnumName(MACCommandIdentifier_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MACCommandIdentifier) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[11].Descriptor() } +func (MACCommandIdentifier) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[11] +} + +func (x MACCommandIdentifier) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MACCommandIdentifier.Descriptor instead. func (MACCommandIdentifier) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{11} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{11} } type AggregatedDutyCycle int32 const ( - AggregatedDutyCycle_DUTY_CYCLE_1 AggregatedDutyCycle = 0 - AggregatedDutyCycle_DUTY_CYCLE_2 AggregatedDutyCycle = 1 - AggregatedDutyCycle_DUTY_CYCLE_4 AggregatedDutyCycle = 2 - AggregatedDutyCycle_DUTY_CYCLE_8 AggregatedDutyCycle = 3 - AggregatedDutyCycle_DUTY_CYCLE_16 AggregatedDutyCycle = 4 - AggregatedDutyCycle_DUTY_CYCLE_32 AggregatedDutyCycle = 5 - AggregatedDutyCycle_DUTY_CYCLE_64 AggregatedDutyCycle = 6 - AggregatedDutyCycle_DUTY_CYCLE_128 AggregatedDutyCycle = 7 - AggregatedDutyCycle_DUTY_CYCLE_256 AggregatedDutyCycle = 8 - AggregatedDutyCycle_DUTY_CYCLE_512 AggregatedDutyCycle = 9 - AggregatedDutyCycle_DUTY_CYCLE_1024 AggregatedDutyCycle = 10 - AggregatedDutyCycle_DUTY_CYCLE_2048 AggregatedDutyCycle = 11 - AggregatedDutyCycle_DUTY_CYCLE_4096 AggregatedDutyCycle = 12 - AggregatedDutyCycle_DUTY_CYCLE_8192 AggregatedDutyCycle = 13 - AggregatedDutyCycle_DUTY_CYCLE_16384 AggregatedDutyCycle = 14 - AggregatedDutyCycle_DUTY_CYCLE_32768 AggregatedDutyCycle = 15 + AggregatedDutyCycle_DUTY_CYCLE_1 AggregatedDutyCycle = 0 // 100%. + AggregatedDutyCycle_DUTY_CYCLE_2 AggregatedDutyCycle = 1 // 50%. + AggregatedDutyCycle_DUTY_CYCLE_4 AggregatedDutyCycle = 2 // 25%. + AggregatedDutyCycle_DUTY_CYCLE_8 AggregatedDutyCycle = 3 // 12.5%. + AggregatedDutyCycle_DUTY_CYCLE_16 AggregatedDutyCycle = 4 // 6.25%. + AggregatedDutyCycle_DUTY_CYCLE_32 AggregatedDutyCycle = 5 // 3.125%. + AggregatedDutyCycle_DUTY_CYCLE_64 AggregatedDutyCycle = 6 // 1.5625%. + AggregatedDutyCycle_DUTY_CYCLE_128 AggregatedDutyCycle = 7 // Roughly 0.781%. + AggregatedDutyCycle_DUTY_CYCLE_256 AggregatedDutyCycle = 8 // Roughly 0.390%. + AggregatedDutyCycle_DUTY_CYCLE_512 AggregatedDutyCycle = 9 // Roughly 0.195%. + AggregatedDutyCycle_DUTY_CYCLE_1024 AggregatedDutyCycle = 10 // Roughly 0.098%. + AggregatedDutyCycle_DUTY_CYCLE_2048 AggregatedDutyCycle = 11 // Roughly 0.049%. + AggregatedDutyCycle_DUTY_CYCLE_4096 AggregatedDutyCycle = 12 // Roughly 0.024%. + AggregatedDutyCycle_DUTY_CYCLE_8192 AggregatedDutyCycle = 13 // Roughly 0.012%. + AggregatedDutyCycle_DUTY_CYCLE_16384 AggregatedDutyCycle = 14 // Roughly 0.006%. + AggregatedDutyCycle_DUTY_CYCLE_32768 AggregatedDutyCycle = 15 // Roughly 0.003%. ) -var AggregatedDutyCycle_name = map[int32]string{ - 0: "DUTY_CYCLE_1", - 1: "DUTY_CYCLE_2", - 2: "DUTY_CYCLE_4", - 3: "DUTY_CYCLE_8", - 4: "DUTY_CYCLE_16", - 5: "DUTY_CYCLE_32", - 6: "DUTY_CYCLE_64", - 7: "DUTY_CYCLE_128", - 8: "DUTY_CYCLE_256", - 9: "DUTY_CYCLE_512", - 10: "DUTY_CYCLE_1024", - 11: "DUTY_CYCLE_2048", - 12: "DUTY_CYCLE_4096", - 13: "DUTY_CYCLE_8192", - 14: "DUTY_CYCLE_16384", - 15: "DUTY_CYCLE_32768", -} - -var AggregatedDutyCycle_value = map[string]int32{ - "DUTY_CYCLE_1": 0, - "DUTY_CYCLE_2": 1, - "DUTY_CYCLE_4": 2, - "DUTY_CYCLE_8": 3, - "DUTY_CYCLE_16": 4, - "DUTY_CYCLE_32": 5, - "DUTY_CYCLE_64": 6, - "DUTY_CYCLE_128": 7, - "DUTY_CYCLE_256": 8, - "DUTY_CYCLE_512": 9, - "DUTY_CYCLE_1024": 10, - "DUTY_CYCLE_2048": 11, - "DUTY_CYCLE_4096": 12, - "DUTY_CYCLE_8192": 13, - "DUTY_CYCLE_16384": 14, - "DUTY_CYCLE_32768": 15, +// Enum value maps for AggregatedDutyCycle. +var ( + AggregatedDutyCycle_name = map[int32]string{ + 0: "DUTY_CYCLE_1", + 1: "DUTY_CYCLE_2", + 2: "DUTY_CYCLE_4", + 3: "DUTY_CYCLE_8", + 4: "DUTY_CYCLE_16", + 5: "DUTY_CYCLE_32", + 6: "DUTY_CYCLE_64", + 7: "DUTY_CYCLE_128", + 8: "DUTY_CYCLE_256", + 9: "DUTY_CYCLE_512", + 10: "DUTY_CYCLE_1024", + 11: "DUTY_CYCLE_2048", + 12: "DUTY_CYCLE_4096", + 13: "DUTY_CYCLE_8192", + 14: "DUTY_CYCLE_16384", + 15: "DUTY_CYCLE_32768", + } + AggregatedDutyCycle_value = map[string]int32{ + "DUTY_CYCLE_1": 0, + "DUTY_CYCLE_2": 1, + "DUTY_CYCLE_4": 2, + "DUTY_CYCLE_8": 3, + "DUTY_CYCLE_16": 4, + "DUTY_CYCLE_32": 5, + "DUTY_CYCLE_64": 6, + "DUTY_CYCLE_128": 7, + "DUTY_CYCLE_256": 8, + "DUTY_CYCLE_512": 9, + "DUTY_CYCLE_1024": 10, + "DUTY_CYCLE_2048": 11, + "DUTY_CYCLE_4096": 12, + "DUTY_CYCLE_8192": 13, + "DUTY_CYCLE_16384": 14, + "DUTY_CYCLE_32768": 15, + } +) + +func (x AggregatedDutyCycle) Enum() *AggregatedDutyCycle { + p := new(AggregatedDutyCycle) + *p = x + return p } func (x AggregatedDutyCycle) String() string { - return proto.EnumName(AggregatedDutyCycle_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AggregatedDutyCycle) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[12].Descriptor() +} + +func (AggregatedDutyCycle) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[12] +} + +func (x AggregatedDutyCycle) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use AggregatedDutyCycle.Descriptor instead. func (AggregatedDutyCycle) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{12} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{12} } type PingSlotPeriod int32 const ( - PingSlotPeriod_PING_EVERY_1S PingSlotPeriod = 0 - PingSlotPeriod_PING_EVERY_2S PingSlotPeriod = 1 - PingSlotPeriod_PING_EVERY_4S PingSlotPeriod = 2 - PingSlotPeriod_PING_EVERY_8S PingSlotPeriod = 3 - PingSlotPeriod_PING_EVERY_16S PingSlotPeriod = 4 - PingSlotPeriod_PING_EVERY_32S PingSlotPeriod = 5 - PingSlotPeriod_PING_EVERY_64S PingSlotPeriod = 6 - PingSlotPeriod_PING_EVERY_128S PingSlotPeriod = 7 + PingSlotPeriod_PING_EVERY_1S PingSlotPeriod = 0 // Every second. + PingSlotPeriod_PING_EVERY_2S PingSlotPeriod = 1 // Every 2 seconds. + PingSlotPeriod_PING_EVERY_4S PingSlotPeriod = 2 // Every 4 seconds. + PingSlotPeriod_PING_EVERY_8S PingSlotPeriod = 3 // Every 8 seconds. + PingSlotPeriod_PING_EVERY_16S PingSlotPeriod = 4 // Every 16 seconds. + PingSlotPeriod_PING_EVERY_32S PingSlotPeriod = 5 // Every 32 seconds. + PingSlotPeriod_PING_EVERY_64S PingSlotPeriod = 6 // Every 64 seconds. + PingSlotPeriod_PING_EVERY_128S PingSlotPeriod = 7 // Every 128 seconds. ) -var PingSlotPeriod_name = map[int32]string{ - 0: "PING_EVERY_1S", - 1: "PING_EVERY_2S", - 2: "PING_EVERY_4S", - 3: "PING_EVERY_8S", - 4: "PING_EVERY_16S", - 5: "PING_EVERY_32S", - 6: "PING_EVERY_64S", - 7: "PING_EVERY_128S", -} +// Enum value maps for PingSlotPeriod. +var ( + PingSlotPeriod_name = map[int32]string{ + 0: "PING_EVERY_1S", + 1: "PING_EVERY_2S", + 2: "PING_EVERY_4S", + 3: "PING_EVERY_8S", + 4: "PING_EVERY_16S", + 5: "PING_EVERY_32S", + 6: "PING_EVERY_64S", + 7: "PING_EVERY_128S", + } + PingSlotPeriod_value = map[string]int32{ + "PING_EVERY_1S": 0, + "PING_EVERY_2S": 1, + "PING_EVERY_4S": 2, + "PING_EVERY_8S": 3, + "PING_EVERY_16S": 4, + "PING_EVERY_32S": 5, + "PING_EVERY_64S": 6, + "PING_EVERY_128S": 7, + } +) -var PingSlotPeriod_value = map[string]int32{ - "PING_EVERY_1S": 0, - "PING_EVERY_2S": 1, - "PING_EVERY_4S": 2, - "PING_EVERY_8S": 3, - "PING_EVERY_16S": 4, - "PING_EVERY_32S": 5, - "PING_EVERY_64S": 6, - "PING_EVERY_128S": 7, +func (x PingSlotPeriod) Enum() *PingSlotPeriod { + p := new(PingSlotPeriod) + *p = x + return p } func (x PingSlotPeriod) String() string { - return proto.EnumName(PingSlotPeriod_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (PingSlotPeriod) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[13].Descriptor() +} + +func (PingSlotPeriod) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[13] +} + +func (x PingSlotPeriod) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PingSlotPeriod.Descriptor instead. func (PingSlotPeriod) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{13} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{13} } type RejoinCountExponent int32 @@ -684,227 +991,311 @@ const ( RejoinCountExponent_REJOIN_COUNT_524288 RejoinCountExponent = 15 ) -var RejoinCountExponent_name = map[int32]string{ - 0: "REJOIN_COUNT_16", - 1: "REJOIN_COUNT_32", - 2: "REJOIN_COUNT_64", - 3: "REJOIN_COUNT_128", - 4: "REJOIN_COUNT_256", - 5: "REJOIN_COUNT_512", - 6: "REJOIN_COUNT_1024", - 7: "REJOIN_COUNT_2048", - 8: "REJOIN_COUNT_4096", - 9: "REJOIN_COUNT_8192", - 10: "REJOIN_COUNT_16384", - 11: "REJOIN_COUNT_32768", - 12: "REJOIN_COUNT_65536", - 13: "REJOIN_COUNT_131072", - 14: "REJOIN_COUNT_262144", - 15: "REJOIN_COUNT_524288", -} - -var RejoinCountExponent_value = map[string]int32{ - "REJOIN_COUNT_16": 0, - "REJOIN_COUNT_32": 1, - "REJOIN_COUNT_64": 2, - "REJOIN_COUNT_128": 3, - "REJOIN_COUNT_256": 4, - "REJOIN_COUNT_512": 5, - "REJOIN_COUNT_1024": 6, - "REJOIN_COUNT_2048": 7, - "REJOIN_COUNT_4096": 8, - "REJOIN_COUNT_8192": 9, - "REJOIN_COUNT_16384": 10, - "REJOIN_COUNT_32768": 11, - "REJOIN_COUNT_65536": 12, - "REJOIN_COUNT_131072": 13, - "REJOIN_COUNT_262144": 14, - "REJOIN_COUNT_524288": 15, +// Enum value maps for RejoinCountExponent. +var ( + RejoinCountExponent_name = map[int32]string{ + 0: "REJOIN_COUNT_16", + 1: "REJOIN_COUNT_32", + 2: "REJOIN_COUNT_64", + 3: "REJOIN_COUNT_128", + 4: "REJOIN_COUNT_256", + 5: "REJOIN_COUNT_512", + 6: "REJOIN_COUNT_1024", + 7: "REJOIN_COUNT_2048", + 8: "REJOIN_COUNT_4096", + 9: "REJOIN_COUNT_8192", + 10: "REJOIN_COUNT_16384", + 11: "REJOIN_COUNT_32768", + 12: "REJOIN_COUNT_65536", + 13: "REJOIN_COUNT_131072", + 14: "REJOIN_COUNT_262144", + 15: "REJOIN_COUNT_524288", + } + RejoinCountExponent_value = map[string]int32{ + "REJOIN_COUNT_16": 0, + "REJOIN_COUNT_32": 1, + "REJOIN_COUNT_64": 2, + "REJOIN_COUNT_128": 3, + "REJOIN_COUNT_256": 4, + "REJOIN_COUNT_512": 5, + "REJOIN_COUNT_1024": 6, + "REJOIN_COUNT_2048": 7, + "REJOIN_COUNT_4096": 8, + "REJOIN_COUNT_8192": 9, + "REJOIN_COUNT_16384": 10, + "REJOIN_COUNT_32768": 11, + "REJOIN_COUNT_65536": 12, + "REJOIN_COUNT_131072": 13, + "REJOIN_COUNT_262144": 14, + "REJOIN_COUNT_524288": 15, + } +) + +func (x RejoinCountExponent) Enum() *RejoinCountExponent { + p := new(RejoinCountExponent) + *p = x + return p } func (x RejoinCountExponent) String() string { - return proto.EnumName(RejoinCountExponent_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RejoinCountExponent) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[14].Descriptor() +} + +func (RejoinCountExponent) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[14] +} + +func (x RejoinCountExponent) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use RejoinCountExponent.Descriptor instead. func (RejoinCountExponent) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{14} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{14} } type RejoinTimeExponent int32 const ( - RejoinTimeExponent_REJOIN_TIME_0 RejoinTimeExponent = 0 - RejoinTimeExponent_REJOIN_TIME_1 RejoinTimeExponent = 1 - RejoinTimeExponent_REJOIN_TIME_2 RejoinTimeExponent = 2 - RejoinTimeExponent_REJOIN_TIME_3 RejoinTimeExponent = 3 - RejoinTimeExponent_REJOIN_TIME_4 RejoinTimeExponent = 4 - RejoinTimeExponent_REJOIN_TIME_5 RejoinTimeExponent = 5 - RejoinTimeExponent_REJOIN_TIME_6 RejoinTimeExponent = 6 - RejoinTimeExponent_REJOIN_TIME_7 RejoinTimeExponent = 7 - RejoinTimeExponent_REJOIN_TIME_8 RejoinTimeExponent = 8 - RejoinTimeExponent_REJOIN_TIME_9 RejoinTimeExponent = 9 - RejoinTimeExponent_REJOIN_TIME_10 RejoinTimeExponent = 10 - RejoinTimeExponent_REJOIN_TIME_11 RejoinTimeExponent = 11 - RejoinTimeExponent_REJOIN_TIME_12 RejoinTimeExponent = 12 - RejoinTimeExponent_REJOIN_TIME_13 RejoinTimeExponent = 13 - RejoinTimeExponent_REJOIN_TIME_14 RejoinTimeExponent = 14 - RejoinTimeExponent_REJOIN_TIME_15 RejoinTimeExponent = 15 + RejoinTimeExponent_REJOIN_TIME_0 RejoinTimeExponent = 0 // Every ~17.1 minutes. + RejoinTimeExponent_REJOIN_TIME_1 RejoinTimeExponent = 1 // Every ~34.1 minutes. + RejoinTimeExponent_REJOIN_TIME_2 RejoinTimeExponent = 2 // Every ~1.1 hours. + RejoinTimeExponent_REJOIN_TIME_3 RejoinTimeExponent = 3 // Every ~2.3 hours. + RejoinTimeExponent_REJOIN_TIME_4 RejoinTimeExponent = 4 // Every ~4.6 hours. + RejoinTimeExponent_REJOIN_TIME_5 RejoinTimeExponent = 5 // Every ~9.1 hours. + RejoinTimeExponent_REJOIN_TIME_6 RejoinTimeExponent = 6 // Every ~18.2 hours. + RejoinTimeExponent_REJOIN_TIME_7 RejoinTimeExponent = 7 // Every ~1.5 days. + RejoinTimeExponent_REJOIN_TIME_8 RejoinTimeExponent = 8 // Every ~3.0 days. + RejoinTimeExponent_REJOIN_TIME_9 RejoinTimeExponent = 9 // Every ~6.1 days. + RejoinTimeExponent_REJOIN_TIME_10 RejoinTimeExponent = 10 // Every ~12.1 days. + RejoinTimeExponent_REJOIN_TIME_11 RejoinTimeExponent = 11 // Every ~3.5 weeks. + RejoinTimeExponent_REJOIN_TIME_12 RejoinTimeExponent = 12 // Every ~1.6 months. + RejoinTimeExponent_REJOIN_TIME_13 RejoinTimeExponent = 13 // Every ~3.2 months. + RejoinTimeExponent_REJOIN_TIME_14 RejoinTimeExponent = 14 // Every ~6.4 months. + RejoinTimeExponent_REJOIN_TIME_15 RejoinTimeExponent = 15 // Every ~1.1 year. +) + +// Enum value maps for RejoinTimeExponent. +var ( + RejoinTimeExponent_name = map[int32]string{ + 0: "REJOIN_TIME_0", + 1: "REJOIN_TIME_1", + 2: "REJOIN_TIME_2", + 3: "REJOIN_TIME_3", + 4: "REJOIN_TIME_4", + 5: "REJOIN_TIME_5", + 6: "REJOIN_TIME_6", + 7: "REJOIN_TIME_7", + 8: "REJOIN_TIME_8", + 9: "REJOIN_TIME_9", + 10: "REJOIN_TIME_10", + 11: "REJOIN_TIME_11", + 12: "REJOIN_TIME_12", + 13: "REJOIN_TIME_13", + 14: "REJOIN_TIME_14", + 15: "REJOIN_TIME_15", + } + RejoinTimeExponent_value = map[string]int32{ + "REJOIN_TIME_0": 0, + "REJOIN_TIME_1": 1, + "REJOIN_TIME_2": 2, + "REJOIN_TIME_3": 3, + "REJOIN_TIME_4": 4, + "REJOIN_TIME_5": 5, + "REJOIN_TIME_6": 6, + "REJOIN_TIME_7": 7, + "REJOIN_TIME_8": 8, + "REJOIN_TIME_9": 9, + "REJOIN_TIME_10": 10, + "REJOIN_TIME_11": 11, + "REJOIN_TIME_12": 12, + "REJOIN_TIME_13": 13, + "REJOIN_TIME_14": 14, + "REJOIN_TIME_15": 15, + } ) -var RejoinTimeExponent_name = map[int32]string{ - 0: "REJOIN_TIME_0", - 1: "REJOIN_TIME_1", - 2: "REJOIN_TIME_2", - 3: "REJOIN_TIME_3", - 4: "REJOIN_TIME_4", - 5: "REJOIN_TIME_5", - 6: "REJOIN_TIME_6", - 7: "REJOIN_TIME_7", - 8: "REJOIN_TIME_8", - 9: "REJOIN_TIME_9", - 10: "REJOIN_TIME_10", - 11: "REJOIN_TIME_11", - 12: "REJOIN_TIME_12", - 13: "REJOIN_TIME_13", - 14: "REJOIN_TIME_14", - 15: "REJOIN_TIME_15", -} - -var RejoinTimeExponent_value = map[string]int32{ - "REJOIN_TIME_0": 0, - "REJOIN_TIME_1": 1, - "REJOIN_TIME_2": 2, - "REJOIN_TIME_3": 3, - "REJOIN_TIME_4": 4, - "REJOIN_TIME_5": 5, - "REJOIN_TIME_6": 6, - "REJOIN_TIME_7": 7, - "REJOIN_TIME_8": 8, - "REJOIN_TIME_9": 9, - "REJOIN_TIME_10": 10, - "REJOIN_TIME_11": 11, - "REJOIN_TIME_12": 12, - "REJOIN_TIME_13": 13, - "REJOIN_TIME_14": 14, - "REJOIN_TIME_15": 15, +func (x RejoinTimeExponent) Enum() *RejoinTimeExponent { + p := new(RejoinTimeExponent) + *p = x + return p } func (x RejoinTimeExponent) String() string { - return proto.EnumName(RejoinTimeExponent_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RejoinTimeExponent) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[15].Descriptor() +} + +func (RejoinTimeExponent) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[15] +} + +func (x RejoinTimeExponent) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use RejoinTimeExponent.Descriptor instead. func (RejoinTimeExponent) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{15} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{15} } type RejoinPeriodExponent int32 const ( - RejoinPeriodExponent_REJOIN_PERIOD_0 RejoinPeriodExponent = 0 - RejoinPeriodExponent_REJOIN_PERIOD_1 RejoinPeriodExponent = 1 - RejoinPeriodExponent_REJOIN_PERIOD_2 RejoinPeriodExponent = 2 - RejoinPeriodExponent_REJOIN_PERIOD_3 RejoinPeriodExponent = 3 - RejoinPeriodExponent_REJOIN_PERIOD_4 RejoinPeriodExponent = 4 - RejoinPeriodExponent_REJOIN_PERIOD_5 RejoinPeriodExponent = 5 - RejoinPeriodExponent_REJOIN_PERIOD_6 RejoinPeriodExponent = 6 - RejoinPeriodExponent_REJOIN_PERIOD_7 RejoinPeriodExponent = 7 + RejoinPeriodExponent_REJOIN_PERIOD_0 RejoinPeriodExponent = 0 // Every 32 to 64 seconds. + RejoinPeriodExponent_REJOIN_PERIOD_1 RejoinPeriodExponent = 1 // Every 64 to 96 seconds. + RejoinPeriodExponent_REJOIN_PERIOD_2 RejoinPeriodExponent = 2 // Every 128 to 160 seconds. + RejoinPeriodExponent_REJOIN_PERIOD_3 RejoinPeriodExponent = 3 // Every 256 to 288 seconds. + RejoinPeriodExponent_REJOIN_PERIOD_4 RejoinPeriodExponent = 4 // Every 512 to 544 seconds. + RejoinPeriodExponent_REJOIN_PERIOD_5 RejoinPeriodExponent = 5 // Every 1024 to 1056 seconds. + RejoinPeriodExponent_REJOIN_PERIOD_6 RejoinPeriodExponent = 6 // Every 2048 to 2080 seconds. + RejoinPeriodExponent_REJOIN_PERIOD_7 RejoinPeriodExponent = 7 // Every 4096 to 4128 seconds. ) -var RejoinPeriodExponent_name = map[int32]string{ - 0: "REJOIN_PERIOD_0", - 1: "REJOIN_PERIOD_1", - 2: "REJOIN_PERIOD_2", - 3: "REJOIN_PERIOD_3", - 4: "REJOIN_PERIOD_4", - 5: "REJOIN_PERIOD_5", - 6: "REJOIN_PERIOD_6", - 7: "REJOIN_PERIOD_7", -} +// Enum value maps for RejoinPeriodExponent. +var ( + RejoinPeriodExponent_name = map[int32]string{ + 0: "REJOIN_PERIOD_0", + 1: "REJOIN_PERIOD_1", + 2: "REJOIN_PERIOD_2", + 3: "REJOIN_PERIOD_3", + 4: "REJOIN_PERIOD_4", + 5: "REJOIN_PERIOD_5", + 6: "REJOIN_PERIOD_6", + 7: "REJOIN_PERIOD_7", + } + RejoinPeriodExponent_value = map[string]int32{ + "REJOIN_PERIOD_0": 0, + "REJOIN_PERIOD_1": 1, + "REJOIN_PERIOD_2": 2, + "REJOIN_PERIOD_3": 3, + "REJOIN_PERIOD_4": 4, + "REJOIN_PERIOD_5": 5, + "REJOIN_PERIOD_6": 6, + "REJOIN_PERIOD_7": 7, + } +) -var RejoinPeriodExponent_value = map[string]int32{ - "REJOIN_PERIOD_0": 0, - "REJOIN_PERIOD_1": 1, - "REJOIN_PERIOD_2": 2, - "REJOIN_PERIOD_3": 3, - "REJOIN_PERIOD_4": 4, - "REJOIN_PERIOD_5": 5, - "REJOIN_PERIOD_6": 6, - "REJOIN_PERIOD_7": 7, +func (x RejoinPeriodExponent) Enum() *RejoinPeriodExponent { + p := new(RejoinPeriodExponent) + *p = x + return p } func (x RejoinPeriodExponent) String() string { - return proto.EnumName(RejoinPeriodExponent_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RejoinPeriodExponent) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[16].Descriptor() +} + +func (RejoinPeriodExponent) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[16] +} + +func (x RejoinPeriodExponent) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use RejoinPeriodExponent.Descriptor instead. func (RejoinPeriodExponent) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{16} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{16} } type DeviceEIRP int32 const ( - DeviceEIRP_DEVICE_EIRP_8 DeviceEIRP = 0 - DeviceEIRP_DEVICE_EIRP_10 DeviceEIRP = 1 - DeviceEIRP_DEVICE_EIRP_12 DeviceEIRP = 2 - DeviceEIRP_DEVICE_EIRP_13 DeviceEIRP = 3 - DeviceEIRP_DEVICE_EIRP_14 DeviceEIRP = 4 - DeviceEIRP_DEVICE_EIRP_16 DeviceEIRP = 5 - DeviceEIRP_DEVICE_EIRP_18 DeviceEIRP = 6 - DeviceEIRP_DEVICE_EIRP_20 DeviceEIRP = 7 - DeviceEIRP_DEVICE_EIRP_21 DeviceEIRP = 8 - DeviceEIRP_DEVICE_EIRP_24 DeviceEIRP = 9 - DeviceEIRP_DEVICE_EIRP_26 DeviceEIRP = 10 - DeviceEIRP_DEVICE_EIRP_27 DeviceEIRP = 11 - DeviceEIRP_DEVICE_EIRP_29 DeviceEIRP = 12 - DeviceEIRP_DEVICE_EIRP_30 DeviceEIRP = 13 - DeviceEIRP_DEVICE_EIRP_33 DeviceEIRP = 14 - DeviceEIRP_DEVICE_EIRP_36 DeviceEIRP = 15 + DeviceEIRP_DEVICE_EIRP_8 DeviceEIRP = 0 // 8 dBm. + DeviceEIRP_DEVICE_EIRP_10 DeviceEIRP = 1 // 10 dBm. + DeviceEIRP_DEVICE_EIRP_12 DeviceEIRP = 2 // 12 dBm. + DeviceEIRP_DEVICE_EIRP_13 DeviceEIRP = 3 // 13 dBm. + DeviceEIRP_DEVICE_EIRP_14 DeviceEIRP = 4 // 14 dBm. + DeviceEIRP_DEVICE_EIRP_16 DeviceEIRP = 5 // 16 dBm. + DeviceEIRP_DEVICE_EIRP_18 DeviceEIRP = 6 // 18 dBm. + DeviceEIRP_DEVICE_EIRP_20 DeviceEIRP = 7 // 20 dBm. + DeviceEIRP_DEVICE_EIRP_21 DeviceEIRP = 8 // 21 dBm. + DeviceEIRP_DEVICE_EIRP_24 DeviceEIRP = 9 // 24 dBm. + DeviceEIRP_DEVICE_EIRP_26 DeviceEIRP = 10 // 26 dBm. + DeviceEIRP_DEVICE_EIRP_27 DeviceEIRP = 11 // 27 dBm. + DeviceEIRP_DEVICE_EIRP_29 DeviceEIRP = 12 // 29 dBm. + DeviceEIRP_DEVICE_EIRP_30 DeviceEIRP = 13 // 30 dBm. + DeviceEIRP_DEVICE_EIRP_33 DeviceEIRP = 14 // 33 dBm. + DeviceEIRP_DEVICE_EIRP_36 DeviceEIRP = 15 // 36 dBm. +) + +// Enum value maps for DeviceEIRP. +var ( + DeviceEIRP_name = map[int32]string{ + 0: "DEVICE_EIRP_8", + 1: "DEVICE_EIRP_10", + 2: "DEVICE_EIRP_12", + 3: "DEVICE_EIRP_13", + 4: "DEVICE_EIRP_14", + 5: "DEVICE_EIRP_16", + 6: "DEVICE_EIRP_18", + 7: "DEVICE_EIRP_20", + 8: "DEVICE_EIRP_21", + 9: "DEVICE_EIRP_24", + 10: "DEVICE_EIRP_26", + 11: "DEVICE_EIRP_27", + 12: "DEVICE_EIRP_29", + 13: "DEVICE_EIRP_30", + 14: "DEVICE_EIRP_33", + 15: "DEVICE_EIRP_36", + } + DeviceEIRP_value = map[string]int32{ + "DEVICE_EIRP_8": 0, + "DEVICE_EIRP_10": 1, + "DEVICE_EIRP_12": 2, + "DEVICE_EIRP_13": 3, + "DEVICE_EIRP_14": 4, + "DEVICE_EIRP_16": 5, + "DEVICE_EIRP_18": 6, + "DEVICE_EIRP_20": 7, + "DEVICE_EIRP_21": 8, + "DEVICE_EIRP_24": 9, + "DEVICE_EIRP_26": 10, + "DEVICE_EIRP_27": 11, + "DEVICE_EIRP_29": 12, + "DEVICE_EIRP_30": 13, + "DEVICE_EIRP_33": 14, + "DEVICE_EIRP_36": 15, + } ) -var DeviceEIRP_name = map[int32]string{ - 0: "DEVICE_EIRP_8", - 1: "DEVICE_EIRP_10", - 2: "DEVICE_EIRP_12", - 3: "DEVICE_EIRP_13", - 4: "DEVICE_EIRP_14", - 5: "DEVICE_EIRP_16", - 6: "DEVICE_EIRP_18", - 7: "DEVICE_EIRP_20", - 8: "DEVICE_EIRP_21", - 9: "DEVICE_EIRP_24", - 10: "DEVICE_EIRP_26", - 11: "DEVICE_EIRP_27", - 12: "DEVICE_EIRP_29", - 13: "DEVICE_EIRP_30", - 14: "DEVICE_EIRP_33", - 15: "DEVICE_EIRP_36", -} - -var DeviceEIRP_value = map[string]int32{ - "DEVICE_EIRP_8": 0, - "DEVICE_EIRP_10": 1, - "DEVICE_EIRP_12": 2, - "DEVICE_EIRP_13": 3, - "DEVICE_EIRP_14": 4, - "DEVICE_EIRP_16": 5, - "DEVICE_EIRP_18": 6, - "DEVICE_EIRP_20": 7, - "DEVICE_EIRP_21": 8, - "DEVICE_EIRP_24": 9, - "DEVICE_EIRP_26": 10, - "DEVICE_EIRP_27": 11, - "DEVICE_EIRP_29": 12, - "DEVICE_EIRP_30": 13, - "DEVICE_EIRP_33": 14, - "DEVICE_EIRP_36": 15, +func (x DeviceEIRP) Enum() *DeviceEIRP { + p := new(DeviceEIRP) + *p = x + return p } func (x DeviceEIRP) String() string { - return proto.EnumName(DeviceEIRP_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DeviceEIRP) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[17].Descriptor() +} + +func (DeviceEIRP) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[17] } +func (x DeviceEIRP) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DeviceEIRP.Descriptor instead. func (DeviceEIRP) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{17} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{17} } type ADRAckLimitExponent int32 @@ -928,50 +1319,71 @@ const ( ADRAckLimitExponent_ADR_ACK_LIMIT_32768 ADRAckLimitExponent = 15 ) -var ADRAckLimitExponent_name = map[int32]string{ - 0: "ADR_ACK_LIMIT_1", - 1: "ADR_ACK_LIMIT_2", - 2: "ADR_ACK_LIMIT_4", - 3: "ADR_ACK_LIMIT_8", - 4: "ADR_ACK_LIMIT_16", - 5: "ADR_ACK_LIMIT_32", - 6: "ADR_ACK_LIMIT_64", - 7: "ADR_ACK_LIMIT_128", - 8: "ADR_ACK_LIMIT_256", - 9: "ADR_ACK_LIMIT_512", - 10: "ADR_ACK_LIMIT_1024", - 11: "ADR_ACK_LIMIT_2048", - 12: "ADR_ACK_LIMIT_4096", - 13: "ADR_ACK_LIMIT_8192", - 14: "ADR_ACK_LIMIT_16384", - 15: "ADR_ACK_LIMIT_32768", -} - -var ADRAckLimitExponent_value = map[string]int32{ - "ADR_ACK_LIMIT_1": 0, - "ADR_ACK_LIMIT_2": 1, - "ADR_ACK_LIMIT_4": 2, - "ADR_ACK_LIMIT_8": 3, - "ADR_ACK_LIMIT_16": 4, - "ADR_ACK_LIMIT_32": 5, - "ADR_ACK_LIMIT_64": 6, - "ADR_ACK_LIMIT_128": 7, - "ADR_ACK_LIMIT_256": 8, - "ADR_ACK_LIMIT_512": 9, - "ADR_ACK_LIMIT_1024": 10, - "ADR_ACK_LIMIT_2048": 11, - "ADR_ACK_LIMIT_4096": 12, - "ADR_ACK_LIMIT_8192": 13, - "ADR_ACK_LIMIT_16384": 14, - "ADR_ACK_LIMIT_32768": 15, +// Enum value maps for ADRAckLimitExponent. +var ( + ADRAckLimitExponent_name = map[int32]string{ + 0: "ADR_ACK_LIMIT_1", + 1: "ADR_ACK_LIMIT_2", + 2: "ADR_ACK_LIMIT_4", + 3: "ADR_ACK_LIMIT_8", + 4: "ADR_ACK_LIMIT_16", + 5: "ADR_ACK_LIMIT_32", + 6: "ADR_ACK_LIMIT_64", + 7: "ADR_ACK_LIMIT_128", + 8: "ADR_ACK_LIMIT_256", + 9: "ADR_ACK_LIMIT_512", + 10: "ADR_ACK_LIMIT_1024", + 11: "ADR_ACK_LIMIT_2048", + 12: "ADR_ACK_LIMIT_4096", + 13: "ADR_ACK_LIMIT_8192", + 14: "ADR_ACK_LIMIT_16384", + 15: "ADR_ACK_LIMIT_32768", + } + ADRAckLimitExponent_value = map[string]int32{ + "ADR_ACK_LIMIT_1": 0, + "ADR_ACK_LIMIT_2": 1, + "ADR_ACK_LIMIT_4": 2, + "ADR_ACK_LIMIT_8": 3, + "ADR_ACK_LIMIT_16": 4, + "ADR_ACK_LIMIT_32": 5, + "ADR_ACK_LIMIT_64": 6, + "ADR_ACK_LIMIT_128": 7, + "ADR_ACK_LIMIT_256": 8, + "ADR_ACK_LIMIT_512": 9, + "ADR_ACK_LIMIT_1024": 10, + "ADR_ACK_LIMIT_2048": 11, + "ADR_ACK_LIMIT_4096": 12, + "ADR_ACK_LIMIT_8192": 13, + "ADR_ACK_LIMIT_16384": 14, + "ADR_ACK_LIMIT_32768": 15, + } +) + +func (x ADRAckLimitExponent) Enum() *ADRAckLimitExponent { + p := new(ADRAckLimitExponent) + *p = x + return p } func (x ADRAckLimitExponent) String() string { - return proto.EnumName(ADRAckLimitExponent_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ADRAckLimitExponent) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[18].Descriptor() +} + +func (ADRAckLimitExponent) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[18] +} + +func (x ADRAckLimitExponent) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use ADRAckLimitExponent.Descriptor instead. func (ADRAckLimitExponent) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{18} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{18} } type ADRAckDelayExponent int32 @@ -995,117 +1407,159 @@ const ( ADRAckDelayExponent_ADR_ACK_DELAY_32768 ADRAckDelayExponent = 15 ) -var ADRAckDelayExponent_name = map[int32]string{ - 0: "ADR_ACK_DELAY_1", - 1: "ADR_ACK_DELAY_2", - 2: "ADR_ACK_DELAY_4", - 3: "ADR_ACK_DELAY_8", - 4: "ADR_ACK_DELAY_16", - 5: "ADR_ACK_DELAY_32", - 6: "ADR_ACK_DELAY_64", - 7: "ADR_ACK_DELAY_128", - 8: "ADR_ACK_DELAY_256", - 9: "ADR_ACK_DELAY_512", - 10: "ADR_ACK_DELAY_1024", - 11: "ADR_ACK_DELAY_2048", - 12: "ADR_ACK_DELAY_4096", - 13: "ADR_ACK_DELAY_8192", - 14: "ADR_ACK_DELAY_16384", - 15: "ADR_ACK_DELAY_32768", -} - -var ADRAckDelayExponent_value = map[string]int32{ - "ADR_ACK_DELAY_1": 0, - "ADR_ACK_DELAY_2": 1, - "ADR_ACK_DELAY_4": 2, - "ADR_ACK_DELAY_8": 3, - "ADR_ACK_DELAY_16": 4, - "ADR_ACK_DELAY_32": 5, - "ADR_ACK_DELAY_64": 6, - "ADR_ACK_DELAY_128": 7, - "ADR_ACK_DELAY_256": 8, - "ADR_ACK_DELAY_512": 9, - "ADR_ACK_DELAY_1024": 10, - "ADR_ACK_DELAY_2048": 11, - "ADR_ACK_DELAY_4096": 12, - "ADR_ACK_DELAY_8192": 13, - "ADR_ACK_DELAY_16384": 14, - "ADR_ACK_DELAY_32768": 15, +// Enum value maps for ADRAckDelayExponent. +var ( + ADRAckDelayExponent_name = map[int32]string{ + 0: "ADR_ACK_DELAY_1", + 1: "ADR_ACK_DELAY_2", + 2: "ADR_ACK_DELAY_4", + 3: "ADR_ACK_DELAY_8", + 4: "ADR_ACK_DELAY_16", + 5: "ADR_ACK_DELAY_32", + 6: "ADR_ACK_DELAY_64", + 7: "ADR_ACK_DELAY_128", + 8: "ADR_ACK_DELAY_256", + 9: "ADR_ACK_DELAY_512", + 10: "ADR_ACK_DELAY_1024", + 11: "ADR_ACK_DELAY_2048", + 12: "ADR_ACK_DELAY_4096", + 13: "ADR_ACK_DELAY_8192", + 14: "ADR_ACK_DELAY_16384", + 15: "ADR_ACK_DELAY_32768", + } + ADRAckDelayExponent_value = map[string]int32{ + "ADR_ACK_DELAY_1": 0, + "ADR_ACK_DELAY_2": 1, + "ADR_ACK_DELAY_4": 2, + "ADR_ACK_DELAY_8": 3, + "ADR_ACK_DELAY_16": 4, + "ADR_ACK_DELAY_32": 5, + "ADR_ACK_DELAY_64": 6, + "ADR_ACK_DELAY_128": 7, + "ADR_ACK_DELAY_256": 8, + "ADR_ACK_DELAY_512": 9, + "ADR_ACK_DELAY_1024": 10, + "ADR_ACK_DELAY_2048": 11, + "ADR_ACK_DELAY_4096": 12, + "ADR_ACK_DELAY_8192": 13, + "ADR_ACK_DELAY_16384": 14, + "ADR_ACK_DELAY_32768": 15, + } +) + +func (x ADRAckDelayExponent) Enum() *ADRAckDelayExponent { + p := new(ADRAckDelayExponent) + *p = x + return p } func (x ADRAckDelayExponent) String() string { - return proto.EnumName(ADRAckDelayExponent_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ADRAckDelayExponent) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[19].Descriptor() } +func (ADRAckDelayExponent) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[19] +} + +func (x ADRAckDelayExponent) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ADRAckDelayExponent.Descriptor instead. func (ADRAckDelayExponent) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{19} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{19} } type RxDelay int32 const ( - RxDelay_RX_DELAY_0 RxDelay = 0 - RxDelay_RX_DELAY_1 RxDelay = 1 - RxDelay_RX_DELAY_2 RxDelay = 2 - RxDelay_RX_DELAY_3 RxDelay = 3 - RxDelay_RX_DELAY_4 RxDelay = 4 - RxDelay_RX_DELAY_5 RxDelay = 5 - RxDelay_RX_DELAY_6 RxDelay = 6 - RxDelay_RX_DELAY_7 RxDelay = 7 - RxDelay_RX_DELAY_8 RxDelay = 8 - RxDelay_RX_DELAY_9 RxDelay = 9 - RxDelay_RX_DELAY_10 RxDelay = 10 - RxDelay_RX_DELAY_11 RxDelay = 11 - RxDelay_RX_DELAY_12 RxDelay = 12 - RxDelay_RX_DELAY_13 RxDelay = 13 - RxDelay_RX_DELAY_14 RxDelay = 14 - RxDelay_RX_DELAY_15 RxDelay = 15 + RxDelay_RX_DELAY_0 RxDelay = 0 // 1 second. + RxDelay_RX_DELAY_1 RxDelay = 1 // 1 second. + RxDelay_RX_DELAY_2 RxDelay = 2 // 2 seconds. + RxDelay_RX_DELAY_3 RxDelay = 3 // 3 seconds. + RxDelay_RX_DELAY_4 RxDelay = 4 // 4 seconds. + RxDelay_RX_DELAY_5 RxDelay = 5 // 5 seconds. + RxDelay_RX_DELAY_6 RxDelay = 6 // 6 seconds. + RxDelay_RX_DELAY_7 RxDelay = 7 // 7 seconds. + RxDelay_RX_DELAY_8 RxDelay = 8 // 8 seconds. + RxDelay_RX_DELAY_9 RxDelay = 9 // 9 seconds. + RxDelay_RX_DELAY_10 RxDelay = 10 // 10 seconds. + RxDelay_RX_DELAY_11 RxDelay = 11 // 11 seconds. + RxDelay_RX_DELAY_12 RxDelay = 12 // 12 seconds. + RxDelay_RX_DELAY_13 RxDelay = 13 // 13 seconds. + RxDelay_RX_DELAY_14 RxDelay = 14 // 14 seconds. + RxDelay_RX_DELAY_15 RxDelay = 15 // 15 seconds. ) -var RxDelay_name = map[int32]string{ - 0: "RX_DELAY_0", - 1: "RX_DELAY_1", - 2: "RX_DELAY_2", - 3: "RX_DELAY_3", - 4: "RX_DELAY_4", - 5: "RX_DELAY_5", - 6: "RX_DELAY_6", - 7: "RX_DELAY_7", - 8: "RX_DELAY_8", - 9: "RX_DELAY_9", - 10: "RX_DELAY_10", - 11: "RX_DELAY_11", - 12: "RX_DELAY_12", - 13: "RX_DELAY_13", - 14: "RX_DELAY_14", - 15: "RX_DELAY_15", -} - -var RxDelay_value = map[string]int32{ - "RX_DELAY_0": 0, - "RX_DELAY_1": 1, - "RX_DELAY_2": 2, - "RX_DELAY_3": 3, - "RX_DELAY_4": 4, - "RX_DELAY_5": 5, - "RX_DELAY_6": 6, - "RX_DELAY_7": 7, - "RX_DELAY_8": 8, - "RX_DELAY_9": 9, - "RX_DELAY_10": 10, - "RX_DELAY_11": 11, - "RX_DELAY_12": 12, - "RX_DELAY_13": 13, - "RX_DELAY_14": 14, - "RX_DELAY_15": 15, +// Enum value maps for RxDelay. +var ( + RxDelay_name = map[int32]string{ + 0: "RX_DELAY_0", + 1: "RX_DELAY_1", + 2: "RX_DELAY_2", + 3: "RX_DELAY_3", + 4: "RX_DELAY_4", + 5: "RX_DELAY_5", + 6: "RX_DELAY_6", + 7: "RX_DELAY_7", + 8: "RX_DELAY_8", + 9: "RX_DELAY_9", + 10: "RX_DELAY_10", + 11: "RX_DELAY_11", + 12: "RX_DELAY_12", + 13: "RX_DELAY_13", + 14: "RX_DELAY_14", + 15: "RX_DELAY_15", + } + RxDelay_value = map[string]int32{ + "RX_DELAY_0": 0, + "RX_DELAY_1": 1, + "RX_DELAY_2": 2, + "RX_DELAY_3": 3, + "RX_DELAY_4": 4, + "RX_DELAY_5": 5, + "RX_DELAY_6": 6, + "RX_DELAY_7": 7, + "RX_DELAY_8": 8, + "RX_DELAY_9": 9, + "RX_DELAY_10": 10, + "RX_DELAY_11": 11, + "RX_DELAY_12": 12, + "RX_DELAY_13": 13, + "RX_DELAY_14": 14, + "RX_DELAY_15": 15, + } +) + +func (x RxDelay) Enum() *RxDelay { + p := new(RxDelay) + *p = x + return p } func (x RxDelay) String() string { - return proto.EnumName(RxDelay_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RxDelay) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[20].Descriptor() +} + +func (RxDelay) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[20] +} + +func (x RxDelay) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use RxDelay.Descriptor instead. func (RxDelay) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20} } type Minor int32 @@ -1129,54 +1583,79 @@ const ( Minor_MINOR_RFU_15 Minor = 15 ) -var Minor_name = map[int32]string{ - 0: "MINOR_RFU_0", - 1: "MINOR_1", - 2: "MINOR_RFU_2", - 3: "MINOR_RFU_3", - 4: "MINOR_RFU_4", - 5: "MINOR_RFU_5", - 6: "MINOR_RFU_6", - 7: "MINOR_RFU_7", - 8: "MINOR_RFU_8", - 9: "MINOR_RFU_9", - 10: "MINOR_RFU_10", - 11: "MINOR_RFU_11", - 12: "MINOR_RFU_12", - 13: "MINOR_RFU_13", - 14: "MINOR_RFU_14", - 15: "MINOR_RFU_15", -} - -var Minor_value = map[string]int32{ - "MINOR_RFU_0": 0, - "MINOR_1": 1, - "MINOR_RFU_2": 2, - "MINOR_RFU_3": 3, - "MINOR_RFU_4": 4, - "MINOR_RFU_5": 5, - "MINOR_RFU_6": 6, - "MINOR_RFU_7": 7, - "MINOR_RFU_8": 8, - "MINOR_RFU_9": 9, - "MINOR_RFU_10": 10, - "MINOR_RFU_11": 11, - "MINOR_RFU_12": 12, - "MINOR_RFU_13": 13, - "MINOR_RFU_14": 14, - "MINOR_RFU_15": 15, +// Enum value maps for Minor. +var ( + Minor_name = map[int32]string{ + 0: "MINOR_RFU_0", + 1: "MINOR_1", + 2: "MINOR_RFU_2", + 3: "MINOR_RFU_3", + 4: "MINOR_RFU_4", + 5: "MINOR_RFU_5", + 6: "MINOR_RFU_6", + 7: "MINOR_RFU_7", + 8: "MINOR_RFU_8", + 9: "MINOR_RFU_9", + 10: "MINOR_RFU_10", + 11: "MINOR_RFU_11", + 12: "MINOR_RFU_12", + 13: "MINOR_RFU_13", + 14: "MINOR_RFU_14", + 15: "MINOR_RFU_15", + } + Minor_value = map[string]int32{ + "MINOR_RFU_0": 0, + "MINOR_1": 1, + "MINOR_RFU_2": 2, + "MINOR_RFU_3": 3, + "MINOR_RFU_4": 4, + "MINOR_RFU_5": 5, + "MINOR_RFU_6": 6, + "MINOR_RFU_7": 7, + "MINOR_RFU_8": 8, + "MINOR_RFU_9": 9, + "MINOR_RFU_10": 10, + "MINOR_RFU_11": 11, + "MINOR_RFU_12": 12, + "MINOR_RFU_13": 13, + "MINOR_RFU_14": 14, + "MINOR_RFU_15": 15, + } +) + +func (x Minor) Enum() *Minor { + p := new(Minor) + *p = x + return p } func (x Minor) String() string { - return proto.EnumName(Minor_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (Minor) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_lorawan_proto_enumTypes[21].Descriptor() +} + +func (Minor) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_lorawan_proto_enumTypes[21] +} + +func (x Minor) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Minor.Descriptor instead. func (Minor) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{21} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{21} } // Message represents a LoRaWAN message type Message struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + MHdr *MHDR `protobuf:"bytes,1,opt,name=m_hdr,json=mHdr,proto3" json:"m_hdr,omitempty"` Mic []byte `protobuf:"bytes,2,opt,name=mic,proto3" json:"mic,omitempty"` // Payload represents either MACPayload, RejoinRequestPayload, JoinRequestPayload or JoinAcceptPayload @@ -1185,637 +1664,714 @@ type Message struct { // - JoinAcceptPayload length is either 12 or 28 bytes. // - RejoinRequestPayload length is 14 for Type 0 and 2, 19 for Type 1. // - // Types that are valid to be assigned to Payload: + // Types that are assignable to Payload: // *Message_MacPayload // *Message_JoinRequestPayload // *Message_JoinAcceptPayload // *Message_RejoinRequestPayload - Payload isMessage_Payload `protobuf_oneof:"Payload"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Payload isMessage_Payload `protobuf_oneof:"Payload"` } -func (m *Message) Reset() { *m = Message{} } -func (m *Message) String() string { return proto.CompactTextString(m) } -func (*Message) ProtoMessage() {} -func (*Message) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{0} -} -func (m *Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Message.Unmarshal(m, b) -} -func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Message.Marshal(b, m, deterministic) -} -func (m *Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_Message.Merge(m, src) -} -func (m *Message) XXX_Size() int { - return xxx_messageInfo_Message.Size(m) +func (x *Message) Reset() { + *x = Message{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Message) XXX_DiscardUnknown() { - xxx_messageInfo_Message.DiscardUnknown(m) + +func (x *Message) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_Message proto.InternalMessageInfo +func (*Message) ProtoMessage() {} -type isMessage_Payload interface { - isMessage_Payload() +func (x *Message) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type Message_MacPayload struct { - MacPayload *MACPayload `protobuf:"bytes,3,opt,name=mac_payload,json=macPayload,proto3,oneof" json:"mac_payload,omitempty"` -} -type Message_JoinRequestPayload struct { - JoinRequestPayload *JoinRequestPayload `protobuf:"bytes,4,opt,name=join_request_payload,json=joinRequestPayload,proto3,oneof" json:"join_request_payload,omitempty"` -} -type Message_JoinAcceptPayload struct { - JoinAcceptPayload *JoinAcceptPayload `protobuf:"bytes,5,opt,name=join_accept_payload,json=joinAcceptPayload,proto3,oneof" json:"join_accept_payload,omitempty"` -} -type Message_RejoinRequestPayload struct { - RejoinRequestPayload *RejoinRequestPayload `protobuf:"bytes,6,opt,name=rejoin_request_payload,json=rejoinRequestPayload,proto3,oneof" json:"rejoin_request_payload,omitempty"` +// Deprecated: Use Message.ProtoReflect.Descriptor instead. +func (*Message) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{0} } -func (*Message_MacPayload) isMessage_Payload() {} -func (*Message_JoinRequestPayload) isMessage_Payload() {} -func (*Message_JoinAcceptPayload) isMessage_Payload() {} -func (*Message_RejoinRequestPayload) isMessage_Payload() {} - -func (m *Message) GetPayload() isMessage_Payload { - if m != nil { - return m.Payload +func (x *Message) GetMHdr() *MHDR { + if x != nil { + return x.MHdr } return nil } -func (m *Message) GetMHdr() *MHDR { - if m != nil { - return m.MHdr +func (x *Message) GetMic() []byte { + if x != nil { + return x.Mic } return nil } -func (m *Message) GetMic() []byte { +func (m *Message) GetPayload() isMessage_Payload { if m != nil { - return m.Mic + return m.Payload } return nil } -func (m *Message) GetMacPayload() *MACPayload { - if x, ok := m.GetPayload().(*Message_MacPayload); ok { +func (x *Message) GetMacPayload() *MACPayload { + if x, ok := x.GetPayload().(*Message_MacPayload); ok { return x.MacPayload } return nil } -func (m *Message) GetJoinRequestPayload() *JoinRequestPayload { - if x, ok := m.GetPayload().(*Message_JoinRequestPayload); ok { +func (x *Message) GetJoinRequestPayload() *JoinRequestPayload { + if x, ok := x.GetPayload().(*Message_JoinRequestPayload); ok { return x.JoinRequestPayload } return nil } -func (m *Message) GetJoinAcceptPayload() *JoinAcceptPayload { - if x, ok := m.GetPayload().(*Message_JoinAcceptPayload); ok { +func (x *Message) GetJoinAcceptPayload() *JoinAcceptPayload { + if x, ok := x.GetPayload().(*Message_JoinAcceptPayload); ok { return x.JoinAcceptPayload } return nil } -func (m *Message) GetRejoinRequestPayload() *RejoinRequestPayload { - if x, ok := m.GetPayload().(*Message_RejoinRequestPayload); ok { +func (x *Message) GetRejoinRequestPayload() *RejoinRequestPayload { + if x, ok := x.GetPayload().(*Message_RejoinRequestPayload); ok { return x.RejoinRequestPayload } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*Message) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*Message_MacPayload)(nil), - (*Message_JoinRequestPayload)(nil), - (*Message_JoinAcceptPayload)(nil), - (*Message_RejoinRequestPayload)(nil), - } +type isMessage_Payload interface { + isMessage_Payload() } -type MHDR struct { - MType MType `protobuf:"varint,1,opt,name=m_type,json=mType,proto3,enum=ttn.lorawan.v3.MType" json:"m_type,omitempty"` - Major Major `protobuf:"varint,2,opt,name=major,proto3,enum=ttn.lorawan.v3.Major" json:"major,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type Message_MacPayload struct { + MacPayload *MACPayload `protobuf:"bytes,3,opt,name=mac_payload,json=macPayload,proto3,oneof"` } -func (m *MHDR) Reset() { *m = MHDR{} } -func (m *MHDR) String() string { return proto.CompactTextString(m) } -func (*MHDR) ProtoMessage() {} -func (*MHDR) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{1} -} -func (m *MHDR) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MHDR.Unmarshal(m, b) -} -func (m *MHDR) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MHDR.Marshal(b, m, deterministic) -} -func (m *MHDR) XXX_Merge(src proto.Message) { - xxx_messageInfo_MHDR.Merge(m, src) +type Message_JoinRequestPayload struct { + JoinRequestPayload *JoinRequestPayload `protobuf:"bytes,4,opt,name=join_request_payload,json=joinRequestPayload,proto3,oneof"` } -func (m *MHDR) XXX_Size() int { - return xxx_messageInfo_MHDR.Size(m) + +type Message_JoinAcceptPayload struct { + JoinAcceptPayload *JoinAcceptPayload `protobuf:"bytes,5,opt,name=join_accept_payload,json=joinAcceptPayload,proto3,oneof"` } -func (m *MHDR) XXX_DiscardUnknown() { - xxx_messageInfo_MHDR.DiscardUnknown(m) + +type Message_RejoinRequestPayload struct { + RejoinRequestPayload *RejoinRequestPayload `protobuf:"bytes,6,opt,name=rejoin_request_payload,json=rejoinRequestPayload,proto3,oneof"` } -var xxx_messageInfo_MHDR proto.InternalMessageInfo +func (*Message_MacPayload) isMessage_Payload() {} -func (m *MHDR) GetMType() MType { - if m != nil { - return m.MType - } - return MType_JOIN_REQUEST -} +func (*Message_JoinRequestPayload) isMessage_Payload() {} -func (m *MHDR) GetMajor() Major { - if m != nil { - return m.Major +func (*Message_JoinAcceptPayload) isMessage_Payload() {} + +func (*Message_RejoinRequestPayload) isMessage_Payload() {} + +type MHDR struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MType MType `protobuf:"varint,1,opt,name=m_type,json=mType,proto3,enum=ttn.lorawan.v3.MType" json:"m_type,omitempty"` + Major Major `protobuf:"varint,2,opt,name=major,proto3,enum=ttn.lorawan.v3.Major" json:"major,omitempty"` +} + +func (x *MHDR) Reset() { + *x = MHDR{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return Major_LORAWAN_R1 } -type MACPayload struct { - FHdr *FHDR `protobuf:"bytes,1,opt,name=f_hdr,json=fHdr,proto3" json:"f_hdr,omitempty"` - FPort uint32 `protobuf:"varint,2,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` - FrmPayload []byte `protobuf:"bytes,3,opt,name=frm_payload,json=frmPayload,proto3" json:"frm_payload,omitempty"` - DecodedPayload *types.Struct `protobuf:"bytes,4,opt,name=decoded_payload,json=decodedPayload,proto3" json:"decoded_payload,omitempty"` - // Full 32-bit FCnt value. Used internally by Network Server. - FullFCnt uint32 `protobuf:"varint,5,opt,name=full_f_cnt,json=fullFCnt,proto3" json:"full_f_cnt,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *MHDR) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MACPayload) Reset() { *m = MACPayload{} } -func (m *MACPayload) String() string { return proto.CompactTextString(m) } -func (*MACPayload) ProtoMessage() {} -func (*MACPayload) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{2} +func (*MHDR) ProtoMessage() {} + +func (x *MHDR) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MHDR.ProtoReflect.Descriptor instead. +func (*MHDR) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{1} } -func (m *MACPayload) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACPayload.Unmarshal(m, b) + +func (x *MHDR) GetMType() MType { + if x != nil { + return x.MType + } + return MType_JOIN_REQUEST } -func (m *MACPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACPayload.Marshal(b, m, deterministic) + +func (x *MHDR) GetMajor() Major { + if x != nil { + return x.Major + } + return Major_LORAWAN_R1 } -func (m *MACPayload) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACPayload.Merge(m, src) + +type MACPayload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FHdr *FHDR `protobuf:"bytes,1,opt,name=f_hdr,json=fHdr,proto3" json:"f_hdr,omitempty"` + FPort uint32 `protobuf:"varint,2,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` + FrmPayload []byte `protobuf:"bytes,3,opt,name=frm_payload,json=frmPayload,proto3" json:"frm_payload,omitempty"` + DecodedPayload *structpb.Struct `protobuf:"bytes,4,opt,name=decoded_payload,json=decodedPayload,proto3" json:"decoded_payload,omitempty"` + // Full 32-bit FCnt value. Used internally by Network Server. + FullFCnt uint32 `protobuf:"varint,5,opt,name=full_f_cnt,json=fullFCnt,proto3" json:"full_f_cnt,omitempty"` } -func (m *MACPayload) XXX_Size() int { - return xxx_messageInfo_MACPayload.Size(m) + +func (x *MACPayload) Reset() { + *x = MACPayload{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACPayload) XXX_DiscardUnknown() { - xxx_messageInfo_MACPayload.DiscardUnknown(m) + +func (x *MACPayload) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACPayload proto.InternalMessageInfo +func (*MACPayload) ProtoMessage() {} -func (m *MACPayload) GetFHdr() *FHDR { - if m != nil { - return m.FHdr +func (x *MACPayload) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MACPayload.ProtoReflect.Descriptor instead. +func (*MACPayload) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{2} +} + +func (x *MACPayload) GetFHdr() *FHDR { + if x != nil { + return x.FHdr } return nil } -func (m *MACPayload) GetFPort() uint32 { - if m != nil { - return m.FPort +func (x *MACPayload) GetFPort() uint32 { + if x != nil { + return x.FPort } return 0 } -func (m *MACPayload) GetFrmPayload() []byte { - if m != nil { - return m.FrmPayload +func (x *MACPayload) GetFrmPayload() []byte { + if x != nil { + return x.FrmPayload } return nil } -func (m *MACPayload) GetDecodedPayload() *types.Struct { - if m != nil { - return m.DecodedPayload +func (x *MACPayload) GetDecodedPayload() *structpb.Struct { + if x != nil { + return x.DecodedPayload } return nil } -func (m *MACPayload) GetFullFCnt() uint32 { - if m != nil { - return m.FullFCnt +func (x *MACPayload) GetFullFCnt() uint32 { + if x != nil { + return x.FullFCnt } return 0 } type FHDR struct { - DevAddr []byte `protobuf:"bytes,1,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` - FCtrl *FCtrl `protobuf:"bytes,2,opt,name=f_ctrl,json=fCtrl,proto3" json:"f_ctrl,omitempty"` - FCnt uint32 `protobuf:"varint,3,opt,name=f_cnt,json=fCnt,proto3" json:"f_cnt,omitempty"` - FOpts []byte `protobuf:"bytes,4,opt,name=f_opts,json=fOpts,proto3" json:"f_opts,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *FHDR) Reset() { *m = FHDR{} } -func (m *FHDR) String() string { return proto.CompactTextString(m) } -func (*FHDR) ProtoMessage() {} -func (*FHDR) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{3} -} -func (m *FHDR) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FHDR.Unmarshal(m, b) -} -func (m *FHDR) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FHDR.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DevAddr []byte `protobuf:"bytes,1,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` + FCtrl *FCtrl `protobuf:"bytes,2,opt,name=f_ctrl,json=fCtrl,proto3" json:"f_ctrl,omitempty"` + FCnt uint32 `protobuf:"varint,3,opt,name=f_cnt,json=fCnt,proto3" json:"f_cnt,omitempty"` + FOpts []byte `protobuf:"bytes,4,opt,name=f_opts,json=fOpts,proto3" json:"f_opts,omitempty"` } -func (m *FHDR) XXX_Merge(src proto.Message) { - xxx_messageInfo_FHDR.Merge(m, src) + +func (x *FHDR) Reset() { + *x = FHDR{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *FHDR) XXX_Size() int { - return xxx_messageInfo_FHDR.Size(m) + +func (x *FHDR) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *FHDR) XXX_DiscardUnknown() { - xxx_messageInfo_FHDR.DiscardUnknown(m) + +func (*FHDR) ProtoMessage() {} + +func (x *FHDR) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_FHDR proto.InternalMessageInfo +// Deprecated: Use FHDR.ProtoReflect.Descriptor instead. +func (*FHDR) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{3} +} -func (m *FHDR) GetDevAddr() []byte { - if m != nil { - return m.DevAddr +func (x *FHDR) GetDevAddr() []byte { + if x != nil { + return x.DevAddr } return nil } -func (m *FHDR) GetFCtrl() *FCtrl { - if m != nil { - return m.FCtrl +func (x *FHDR) GetFCtrl() *FCtrl { + if x != nil { + return x.FCtrl } return nil } -func (m *FHDR) GetFCnt() uint32 { - if m != nil { - return m.FCnt +func (x *FHDR) GetFCnt() uint32 { + if x != nil { + return x.FCnt } return 0 } -func (m *FHDR) GetFOpts() []byte { - if m != nil { - return m.FOpts +func (x *FHDR) GetFOpts() []byte { + if x != nil { + return x.FOpts } return nil } type FCtrl struct { - Adr bool `protobuf:"varint,1,opt,name=adr,proto3" json:"adr,omitempty"` - AdrAckReq bool `protobuf:"varint,2,opt,name=adr_ack_req,json=adrAckReq,proto3" json:"adr_ack_req,omitempty"` - Ack bool `protobuf:"varint,3,opt,name=ack,proto3" json:"ack,omitempty"` - FPending bool `protobuf:"varint,4,opt,name=f_pending,json=fPending,proto3" json:"f_pending,omitempty"` - ClassB bool `protobuf:"varint,5,opt,name=class_b,json=classB,proto3" json:"class_b,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *FCtrl) Reset() { *m = FCtrl{} } -func (m *FCtrl) String() string { return proto.CompactTextString(m) } -func (*FCtrl) ProtoMessage() {} -func (*FCtrl) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{4} -} -func (m *FCtrl) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FCtrl.Unmarshal(m, b) -} -func (m *FCtrl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FCtrl.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Adr bool `protobuf:"varint,1,opt,name=adr,proto3" json:"adr,omitempty"` + AdrAckReq bool `protobuf:"varint,2,opt,name=adr_ack_req,json=adrAckReq,proto3" json:"adr_ack_req,omitempty"` // Only on uplink. + Ack bool `protobuf:"varint,3,opt,name=ack,proto3" json:"ack,omitempty"` + FPending bool `protobuf:"varint,4,opt,name=f_pending,json=fPending,proto3" json:"f_pending,omitempty"` // Only on downlink. + ClassB bool `protobuf:"varint,5,opt,name=class_b,json=classB,proto3" json:"class_b,omitempty"` // Only on uplink. } -func (m *FCtrl) XXX_Merge(src proto.Message) { - xxx_messageInfo_FCtrl.Merge(m, src) + +func (x *FCtrl) Reset() { + *x = FCtrl{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *FCtrl) XXX_Size() int { - return xxx_messageInfo_FCtrl.Size(m) + +func (x *FCtrl) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *FCtrl) XXX_DiscardUnknown() { - xxx_messageInfo_FCtrl.DiscardUnknown(m) + +func (*FCtrl) ProtoMessage() {} + +func (x *FCtrl) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_FCtrl proto.InternalMessageInfo +// Deprecated: Use FCtrl.ProtoReflect.Descriptor instead. +func (*FCtrl) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{4} +} -func (m *FCtrl) GetAdr() bool { - if m != nil { - return m.Adr +func (x *FCtrl) GetAdr() bool { + if x != nil { + return x.Adr } return false } -func (m *FCtrl) GetAdrAckReq() bool { - if m != nil { - return m.AdrAckReq +func (x *FCtrl) GetAdrAckReq() bool { + if x != nil { + return x.AdrAckReq } return false } -func (m *FCtrl) GetAck() bool { - if m != nil { - return m.Ack +func (x *FCtrl) GetAck() bool { + if x != nil { + return x.Ack } return false } -func (m *FCtrl) GetFPending() bool { - if m != nil { - return m.FPending +func (x *FCtrl) GetFPending() bool { + if x != nil { + return x.FPending } return false } -func (m *FCtrl) GetClassB() bool { - if m != nil { - return m.ClassB +func (x *FCtrl) GetClassB() bool { + if x != nil { + return x.ClassB } return false } type JoinRequestPayload struct { - JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` - DevEui []byte `protobuf:"bytes,2,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"` - DevNonce []byte `protobuf:"bytes,3,opt,name=dev_nonce,json=devNonce,proto3" json:"dev_nonce,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *JoinRequestPayload) Reset() { *m = JoinRequestPayload{} } -func (m *JoinRequestPayload) String() string { return proto.CompactTextString(m) } -func (*JoinRequestPayload) ProtoMessage() {} -func (*JoinRequestPayload) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{5} -} -func (m *JoinRequestPayload) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_JoinRequestPayload.Unmarshal(m, b) -} -func (m *JoinRequestPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_JoinRequestPayload.Marshal(b, m, deterministic) + JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` + DevEui []byte `protobuf:"bytes,2,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"` + DevNonce []byte `protobuf:"bytes,3,opt,name=dev_nonce,json=devNonce,proto3" json:"dev_nonce,omitempty"` } -func (m *JoinRequestPayload) XXX_Merge(src proto.Message) { - xxx_messageInfo_JoinRequestPayload.Merge(m, src) + +func (x *JoinRequestPayload) Reset() { + *x = JoinRequestPayload{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *JoinRequestPayload) XXX_Size() int { - return xxx_messageInfo_JoinRequestPayload.Size(m) + +func (x *JoinRequestPayload) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *JoinRequestPayload) XXX_DiscardUnknown() { - xxx_messageInfo_JoinRequestPayload.DiscardUnknown(m) + +func (*JoinRequestPayload) ProtoMessage() {} + +func (x *JoinRequestPayload) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_JoinRequestPayload proto.InternalMessageInfo +// Deprecated: Use JoinRequestPayload.ProtoReflect.Descriptor instead. +func (*JoinRequestPayload) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{5} +} -func (m *JoinRequestPayload) GetJoinEui() []byte { - if m != nil { - return m.JoinEui +func (x *JoinRequestPayload) GetJoinEui() []byte { + if x != nil { + return x.JoinEui } return nil } -func (m *JoinRequestPayload) GetDevEui() []byte { - if m != nil { - return m.DevEui +func (x *JoinRequestPayload) GetDevEui() []byte { + if x != nil { + return x.DevEui } return nil } -func (m *JoinRequestPayload) GetDevNonce() []byte { - if m != nil { - return m.DevNonce +func (x *JoinRequestPayload) GetDevNonce() []byte { + if x != nil { + return x.DevNonce } return nil } type RejoinRequestPayload struct { - RejoinType RejoinRequestType `protobuf:"varint,1,opt,name=rejoin_type,json=rejoinType,proto3,enum=ttn.lorawan.v3.RejoinRequestType" json:"rejoin_type,omitempty"` - NetId []byte `protobuf:"bytes,2,opt,name=net_id,json=netId,proto3" json:"net_id,omitempty"` - JoinEui []byte `protobuf:"bytes,3,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` - DevEui []byte `protobuf:"bytes,4,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"` - RejoinCnt uint32 `protobuf:"varint,5,opt,name=rejoin_cnt,json=rejoinCnt,proto3" json:"rejoin_cnt,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *RejoinRequestPayload) Reset() { *m = RejoinRequestPayload{} } -func (m *RejoinRequestPayload) String() string { return proto.CompactTextString(m) } -func (*RejoinRequestPayload) ProtoMessage() {} -func (*RejoinRequestPayload) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{6} -} -func (m *RejoinRequestPayload) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RejoinRequestPayload.Unmarshal(m, b) -} -func (m *RejoinRequestPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RejoinRequestPayload.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RejoinType RejoinRequestType `protobuf:"varint,1,opt,name=rejoin_type,json=rejoinType,proto3,enum=ttn.lorawan.v3.RejoinRequestType" json:"rejoin_type,omitempty"` + NetId []byte `protobuf:"bytes,2,opt,name=net_id,json=netId,proto3" json:"net_id,omitempty"` + JoinEui []byte `protobuf:"bytes,3,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` + DevEui []byte `protobuf:"bytes,4,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"` + RejoinCnt uint32 `protobuf:"varint,5,opt,name=rejoin_cnt,json=rejoinCnt,proto3" json:"rejoin_cnt,omitempty"` // Contains RJCount0 or RJCount1 depending on rejoin_type. } -func (m *RejoinRequestPayload) XXX_Merge(src proto.Message) { - xxx_messageInfo_RejoinRequestPayload.Merge(m, src) + +func (x *RejoinRequestPayload) Reset() { + *x = RejoinRequestPayload{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *RejoinRequestPayload) XXX_Size() int { - return xxx_messageInfo_RejoinRequestPayload.Size(m) + +func (x *RejoinRequestPayload) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *RejoinRequestPayload) XXX_DiscardUnknown() { - xxx_messageInfo_RejoinRequestPayload.DiscardUnknown(m) + +func (*RejoinRequestPayload) ProtoMessage() {} + +func (x *RejoinRequestPayload) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_RejoinRequestPayload proto.InternalMessageInfo +// Deprecated: Use RejoinRequestPayload.ProtoReflect.Descriptor instead. +func (*RejoinRequestPayload) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{6} +} -func (m *RejoinRequestPayload) GetRejoinType() RejoinRequestType { - if m != nil { - return m.RejoinType +func (x *RejoinRequestPayload) GetRejoinType() RejoinRequestType { + if x != nil { + return x.RejoinType } return RejoinRequestType_CONTEXT } -func (m *RejoinRequestPayload) GetNetId() []byte { - if m != nil { - return m.NetId +func (x *RejoinRequestPayload) GetNetId() []byte { + if x != nil { + return x.NetId } return nil } -func (m *RejoinRequestPayload) GetJoinEui() []byte { - if m != nil { - return m.JoinEui +func (x *RejoinRequestPayload) GetJoinEui() []byte { + if x != nil { + return x.JoinEui } return nil } -func (m *RejoinRequestPayload) GetDevEui() []byte { - if m != nil { - return m.DevEui +func (x *RejoinRequestPayload) GetDevEui() []byte { + if x != nil { + return x.DevEui } return nil } -func (m *RejoinRequestPayload) GetRejoinCnt() uint32 { - if m != nil { - return m.RejoinCnt +func (x *RejoinRequestPayload) GetRejoinCnt() uint32 { + if x != nil { + return x.RejoinCnt } return 0 } type JoinAcceptPayload struct { - Encrypted []byte `protobuf:"bytes,1,opt,name=encrypted,proto3" json:"encrypted,omitempty"` - JoinNonce []byte `protobuf:"bytes,2,opt,name=join_nonce,json=joinNonce,proto3" json:"join_nonce,omitempty"` - NetId []byte `protobuf:"bytes,3,opt,name=net_id,json=netId,proto3" json:"net_id,omitempty"` - DevAddr []byte `protobuf:"bytes,4,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` - DlSettings *DLSettings `protobuf:"bytes,5,opt,name=dl_settings,json=dlSettings,proto3" json:"dl_settings,omitempty"` - RxDelay RxDelay `protobuf:"varint,6,opt,name=rx_delay,json=rxDelay,proto3,enum=ttn.lorawan.v3.RxDelay" json:"rx_delay,omitempty"` - CfList *CFList `protobuf:"bytes,7,opt,name=cf_list,json=cfList,proto3" json:"cf_list,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *JoinAcceptPayload) Reset() { *m = JoinAcceptPayload{} } -func (m *JoinAcceptPayload) String() string { return proto.CompactTextString(m) } -func (*JoinAcceptPayload) ProtoMessage() {} -func (*JoinAcceptPayload) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{7} -} -func (m *JoinAcceptPayload) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_JoinAcceptPayload.Unmarshal(m, b) -} -func (m *JoinAcceptPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_JoinAcceptPayload.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Encrypted []byte `protobuf:"bytes,1,opt,name=encrypted,proto3" json:"encrypted,omitempty"` + JoinNonce []byte `protobuf:"bytes,2,opt,name=join_nonce,json=joinNonce,proto3" json:"join_nonce,omitempty"` + NetId []byte `protobuf:"bytes,3,opt,name=net_id,json=netId,proto3" json:"net_id,omitempty"` + DevAddr []byte `protobuf:"bytes,4,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` + DlSettings *DLSettings `protobuf:"bytes,5,opt,name=dl_settings,json=dlSettings,proto3" json:"dl_settings,omitempty"` + RxDelay RxDelay `protobuf:"varint,6,opt,name=rx_delay,json=rxDelay,proto3,enum=ttn.lorawan.v3.RxDelay" json:"rx_delay,omitempty"` + CfList *CFList `protobuf:"bytes,7,opt,name=cf_list,json=cfList,proto3" json:"cf_list,omitempty"` } -func (m *JoinAcceptPayload) XXX_Merge(src proto.Message) { - xxx_messageInfo_JoinAcceptPayload.Merge(m, src) + +func (x *JoinAcceptPayload) Reset() { + *x = JoinAcceptPayload{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *JoinAcceptPayload) XXX_Size() int { - return xxx_messageInfo_JoinAcceptPayload.Size(m) + +func (x *JoinAcceptPayload) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *JoinAcceptPayload) XXX_DiscardUnknown() { - xxx_messageInfo_JoinAcceptPayload.DiscardUnknown(m) + +func (*JoinAcceptPayload) ProtoMessage() {} + +func (x *JoinAcceptPayload) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_JoinAcceptPayload proto.InternalMessageInfo +// Deprecated: Use JoinAcceptPayload.ProtoReflect.Descriptor instead. +func (*JoinAcceptPayload) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{7} +} -func (m *JoinAcceptPayload) GetEncrypted() []byte { - if m != nil { - return m.Encrypted +func (x *JoinAcceptPayload) GetEncrypted() []byte { + if x != nil { + return x.Encrypted } return nil } -func (m *JoinAcceptPayload) GetJoinNonce() []byte { - if m != nil { - return m.JoinNonce +func (x *JoinAcceptPayload) GetJoinNonce() []byte { + if x != nil { + return x.JoinNonce } return nil } -func (m *JoinAcceptPayload) GetNetId() []byte { - if m != nil { - return m.NetId +func (x *JoinAcceptPayload) GetNetId() []byte { + if x != nil { + return x.NetId } return nil } -func (m *JoinAcceptPayload) GetDevAddr() []byte { - if m != nil { - return m.DevAddr +func (x *JoinAcceptPayload) GetDevAddr() []byte { + if x != nil { + return x.DevAddr } return nil } -func (m *JoinAcceptPayload) GetDlSettings() *DLSettings { - if m != nil { - return m.DlSettings +func (x *JoinAcceptPayload) GetDlSettings() *DLSettings { + if x != nil { + return x.DlSettings } return nil } -func (m *JoinAcceptPayload) GetRxDelay() RxDelay { - if m != nil { - return m.RxDelay +func (x *JoinAcceptPayload) GetRxDelay() RxDelay { + if x != nil { + return x.RxDelay } return RxDelay_RX_DELAY_0 } -func (m *JoinAcceptPayload) GetCfList() *CFList { - if m != nil { - return m.CfList +func (x *JoinAcceptPayload) GetCfList() *CFList { + if x != nil { + return x.CfList } return nil } type DLSettings struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Rx1DrOffset DataRateOffset `protobuf:"varint,1,opt,name=rx1_dr_offset,json=rx1DrOffset,proto3,enum=ttn.lorawan.v3.DataRateOffset" json:"rx1_dr_offset,omitempty"` Rx2Dr DataRateIndex `protobuf:"varint,2,opt,name=rx2_dr,json=rx2Dr,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"rx2_dr,omitempty"` // OptNeg is set if Network Server implements LoRaWAN 1.1 or greater. - OptNeg bool `protobuf:"varint,3,opt,name=opt_neg,json=optNeg,proto3" json:"opt_neg,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + OptNeg bool `protobuf:"varint,3,opt,name=opt_neg,json=optNeg,proto3" json:"opt_neg,omitempty"` } -func (m *DLSettings) Reset() { *m = DLSettings{} } -func (m *DLSettings) String() string { return proto.CompactTextString(m) } -func (*DLSettings) ProtoMessage() {} -func (*DLSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{8} -} -func (m *DLSettings) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DLSettings.Unmarshal(m, b) -} -func (m *DLSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DLSettings.Marshal(b, m, deterministic) -} -func (m *DLSettings) XXX_Merge(src proto.Message) { - xxx_messageInfo_DLSettings.Merge(m, src) +func (x *DLSettings) Reset() { + *x = DLSettings{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DLSettings) XXX_Size() int { - return xxx_messageInfo_DLSettings.Size(m) + +func (x *DLSettings) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DLSettings) XXX_DiscardUnknown() { - xxx_messageInfo_DLSettings.DiscardUnknown(m) + +func (*DLSettings) ProtoMessage() {} + +func (x *DLSettings) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DLSettings proto.InternalMessageInfo +// Deprecated: Use DLSettings.ProtoReflect.Descriptor instead. +func (*DLSettings) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{8} +} -func (m *DLSettings) GetRx1DrOffset() DataRateOffset { - if m != nil { - return m.Rx1DrOffset +func (x *DLSettings) GetRx1DrOffset() DataRateOffset { + if x != nil { + return x.Rx1DrOffset } return DataRateOffset_DATA_RATE_OFFSET_0 } -func (m *DLSettings) GetRx2Dr() DataRateIndex { - if m != nil { - return m.Rx2Dr +func (x *DLSettings) GetRx2Dr() DataRateIndex { + if x != nil { + return x.Rx2Dr } return DataRateIndex_DATA_RATE_0 } -func (m *DLSettings) GetOptNeg() bool { - if m != nil { - return m.OptNeg +func (x *DLSettings) GetOptNeg() bool { + if x != nil { + return x.OptNeg } return false } type CFList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Type CFListType `protobuf:"varint,1,opt,name=type,proto3,enum=ttn.lorawan.v3.CFListType" json:"type,omitempty"` // Frequencies to be broadcasted, in hecto-Hz. // These values are broadcasted as 24 bits unsigned integers. @@ -1824,259 +2380,282 @@ type CFList struct { // ChMasks controlling the channels to be used. // Length of this field must be equal to the amount of uplink channels // defined by the selected frequency plan. - ChMasks []bool `protobuf:"varint,3,rep,packed,name=ch_masks,json=chMasks,proto3" json:"ch_masks,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ChMasks []bool `protobuf:"varint,3,rep,packed,name=ch_masks,json=chMasks,proto3" json:"ch_masks,omitempty"` } -func (m *CFList) Reset() { *m = CFList{} } -func (m *CFList) String() string { return proto.CompactTextString(m) } -func (*CFList) ProtoMessage() {} -func (*CFList) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{9} -} -func (m *CFList) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CFList.Unmarshal(m, b) -} -func (m *CFList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CFList.Marshal(b, m, deterministic) -} -func (m *CFList) XXX_Merge(src proto.Message) { - xxx_messageInfo_CFList.Merge(m, src) +func (x *CFList) Reset() { + *x = CFList{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CFList) XXX_Size() int { - return xxx_messageInfo_CFList.Size(m) + +func (x *CFList) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CFList) XXX_DiscardUnknown() { - xxx_messageInfo_CFList.DiscardUnknown(m) + +func (*CFList) ProtoMessage() {} + +func (x *CFList) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CFList proto.InternalMessageInfo +// Deprecated: Use CFList.ProtoReflect.Descriptor instead. +func (*CFList) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{9} +} -func (m *CFList) GetType() CFListType { - if m != nil { - return m.Type +func (x *CFList) GetType() CFListType { + if x != nil { + return x.Type } return CFListType_FREQUENCIES } -func (m *CFList) GetFreq() []uint32 { - if m != nil { - return m.Freq +func (x *CFList) GetFreq() []uint32 { + if x != nil { + return x.Freq } return nil } -func (m *CFList) GetChMasks() []bool { - if m != nil { - return m.ChMasks +func (x *CFList) GetChMasks() []bool { + if x != nil { + return x.ChMasks } return nil } type LoRaDataRate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Bandwidth (Hz). - Bandwidth uint32 `protobuf:"varint,1,opt,name=bandwidth,proto3" json:"bandwidth,omitempty"` - SpreadingFactor uint32 `protobuf:"varint,2,opt,name=spreading_factor,json=spreadingFactor,proto3" json:"spreading_factor,omitempty"` - CodingRate string `protobuf:"bytes,3,opt,name=coding_rate,json=codingRate,proto3" json:"coding_rate,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Bandwidth uint32 `protobuf:"varint,1,opt,name=bandwidth,proto3" json:"bandwidth,omitempty"` + SpreadingFactor uint32 `protobuf:"varint,2,opt,name=spreading_factor,json=spreadingFactor,proto3" json:"spreading_factor,omitempty"` + CodingRate string `protobuf:"bytes,3,opt,name=coding_rate,json=codingRate,proto3" json:"coding_rate,omitempty"` } -func (m *LoRaDataRate) Reset() { *m = LoRaDataRate{} } -func (m *LoRaDataRate) String() string { return proto.CompactTextString(m) } -func (*LoRaDataRate) ProtoMessage() {} -func (*LoRaDataRate) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{10} -} -func (m *LoRaDataRate) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LoRaDataRate.Unmarshal(m, b) -} -func (m *LoRaDataRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LoRaDataRate.Marshal(b, m, deterministic) -} -func (m *LoRaDataRate) XXX_Merge(src proto.Message) { - xxx_messageInfo_LoRaDataRate.Merge(m, src) +func (x *LoRaDataRate) Reset() { + *x = LoRaDataRate{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *LoRaDataRate) XXX_Size() int { - return xxx_messageInfo_LoRaDataRate.Size(m) + +func (x *LoRaDataRate) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LoRaDataRate) XXX_DiscardUnknown() { - xxx_messageInfo_LoRaDataRate.DiscardUnknown(m) + +func (*LoRaDataRate) ProtoMessage() {} + +func (x *LoRaDataRate) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LoRaDataRate proto.InternalMessageInfo +// Deprecated: Use LoRaDataRate.ProtoReflect.Descriptor instead. +func (*LoRaDataRate) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{10} +} -func (m *LoRaDataRate) GetBandwidth() uint32 { - if m != nil { - return m.Bandwidth +func (x *LoRaDataRate) GetBandwidth() uint32 { + if x != nil { + return x.Bandwidth } return 0 } -func (m *LoRaDataRate) GetSpreadingFactor() uint32 { - if m != nil { - return m.SpreadingFactor +func (x *LoRaDataRate) GetSpreadingFactor() uint32 { + if x != nil { + return x.SpreadingFactor } return 0 } -func (m *LoRaDataRate) GetCodingRate() string { - if m != nil { - return m.CodingRate +func (x *LoRaDataRate) GetCodingRate() string { + if x != nil { + return x.CodingRate } return "" } type FSKDataRate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Bit rate (bps). - BitRate uint32 `protobuf:"varint,1,opt,name=bit_rate,json=bitRate,proto3" json:"bit_rate,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + BitRate uint32 `protobuf:"varint,1,opt,name=bit_rate,json=bitRate,proto3" json:"bit_rate,omitempty"` } -func (m *FSKDataRate) Reset() { *m = FSKDataRate{} } -func (m *FSKDataRate) String() string { return proto.CompactTextString(m) } -func (*FSKDataRate) ProtoMessage() {} -func (*FSKDataRate) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{11} -} -func (m *FSKDataRate) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FSKDataRate.Unmarshal(m, b) -} -func (m *FSKDataRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FSKDataRate.Marshal(b, m, deterministic) -} -func (m *FSKDataRate) XXX_Merge(src proto.Message) { - xxx_messageInfo_FSKDataRate.Merge(m, src) +func (x *FSKDataRate) Reset() { + *x = FSKDataRate{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *FSKDataRate) XXX_Size() int { - return xxx_messageInfo_FSKDataRate.Size(m) + +func (x *FSKDataRate) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *FSKDataRate) XXX_DiscardUnknown() { - xxx_messageInfo_FSKDataRate.DiscardUnknown(m) + +func (*FSKDataRate) ProtoMessage() {} + +func (x *FSKDataRate) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_FSKDataRate proto.InternalMessageInfo +// Deprecated: Use FSKDataRate.ProtoReflect.Descriptor instead. +func (*FSKDataRate) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{11} +} -func (m *FSKDataRate) GetBitRate() uint32 { - if m != nil { - return m.BitRate +func (x *FSKDataRate) GetBitRate() uint32 { + if x != nil { + return x.BitRate } return 0 } type LRFHSSDataRate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + ModulationType uint32 `protobuf:"varint,1,opt,name=modulation_type,json=modulationType,proto3" json:"modulation_type,omitempty"` // Operating Channel Width (Hz). - OperatingChannelWidth uint32 `protobuf:"varint,2,opt,name=operating_channel_width,json=operatingChannelWidth,proto3" json:"operating_channel_width,omitempty"` - CodingRate string `protobuf:"bytes,3,opt,name=coding_rate,json=codingRate,proto3" json:"coding_rate,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + OperatingChannelWidth uint32 `protobuf:"varint,2,opt,name=operating_channel_width,json=operatingChannelWidth,proto3" json:"operating_channel_width,omitempty"` + CodingRate string `protobuf:"bytes,3,opt,name=coding_rate,json=codingRate,proto3" json:"coding_rate,omitempty"` } -func (m *LRFHSSDataRate) Reset() { *m = LRFHSSDataRate{} } -func (m *LRFHSSDataRate) String() string { return proto.CompactTextString(m) } -func (*LRFHSSDataRate) ProtoMessage() {} -func (*LRFHSSDataRate) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{12} -} -func (m *LRFHSSDataRate) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LRFHSSDataRate.Unmarshal(m, b) -} -func (m *LRFHSSDataRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LRFHSSDataRate.Marshal(b, m, deterministic) -} -func (m *LRFHSSDataRate) XXX_Merge(src proto.Message) { - xxx_messageInfo_LRFHSSDataRate.Merge(m, src) +func (x *LRFHSSDataRate) Reset() { + *x = LRFHSSDataRate{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *LRFHSSDataRate) XXX_Size() int { - return xxx_messageInfo_LRFHSSDataRate.Size(m) + +func (x *LRFHSSDataRate) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LRFHSSDataRate) XXX_DiscardUnknown() { - xxx_messageInfo_LRFHSSDataRate.DiscardUnknown(m) + +func (*LRFHSSDataRate) ProtoMessage() {} + +func (x *LRFHSSDataRate) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LRFHSSDataRate proto.InternalMessageInfo +// Deprecated: Use LRFHSSDataRate.ProtoReflect.Descriptor instead. +func (*LRFHSSDataRate) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{12} +} -func (m *LRFHSSDataRate) GetModulationType() uint32 { - if m != nil { - return m.ModulationType +func (x *LRFHSSDataRate) GetModulationType() uint32 { + if x != nil { + return x.ModulationType } return 0 } -func (m *LRFHSSDataRate) GetOperatingChannelWidth() uint32 { - if m != nil { - return m.OperatingChannelWidth +func (x *LRFHSSDataRate) GetOperatingChannelWidth() uint32 { + if x != nil { + return x.OperatingChannelWidth } return 0 } -func (m *LRFHSSDataRate) GetCodingRate() string { - if m != nil { - return m.CodingRate +func (x *LRFHSSDataRate) GetCodingRate() string { + if x != nil { + return x.CodingRate } return "" } type DataRate struct { - // Types that are valid to be assigned to Modulation: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Modulation: // *DataRate_Lora // *DataRate_Fsk // *DataRate_Lrfhss - Modulation isDataRate_Modulation `protobuf_oneof:"modulation"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Modulation isDataRate_Modulation `protobuf_oneof:"modulation"` } -func (m *DataRate) Reset() { *m = DataRate{} } -func (m *DataRate) String() string { return proto.CompactTextString(m) } -func (*DataRate) ProtoMessage() {} -func (*DataRate) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{13} -} -func (m *DataRate) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DataRate.Unmarshal(m, b) -} -func (m *DataRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DataRate.Marshal(b, m, deterministic) -} -func (m *DataRate) XXX_Merge(src proto.Message) { - xxx_messageInfo_DataRate.Merge(m, src) -} -func (m *DataRate) XXX_Size() int { - return xxx_messageInfo_DataRate.Size(m) +func (x *DataRate) Reset() { + *x = DataRate{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DataRate) XXX_DiscardUnknown() { - xxx_messageInfo_DataRate.DiscardUnknown(m) + +func (x *DataRate) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_DataRate proto.InternalMessageInfo +func (*DataRate) ProtoMessage() {} -type isDataRate_Modulation interface { - isDataRate_Modulation() +func (x *DataRate) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type DataRate_Lora struct { - Lora *LoRaDataRate `protobuf:"bytes,1,opt,name=lora,proto3,oneof" json:"lora,omitempty"` -} -type DataRate_Fsk struct { - Fsk *FSKDataRate `protobuf:"bytes,2,opt,name=fsk,proto3,oneof" json:"fsk,omitempty"` -} -type DataRate_Lrfhss struct { - Lrfhss *LRFHSSDataRate `protobuf:"bytes,3,opt,name=lrfhss,proto3,oneof" json:"lrfhss,omitempty"` +// Deprecated: Use DataRate.ProtoReflect.Descriptor instead. +func (*DataRate) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{13} } -func (*DataRate_Lora) isDataRate_Modulation() {} -func (*DataRate_Fsk) isDataRate_Modulation() {} -func (*DataRate_Lrfhss) isDataRate_Modulation() {} - func (m *DataRate) GetModulation() isDataRate_Modulation { if m != nil { return m.Modulation @@ -2084,40 +2663,57 @@ func (m *DataRate) GetModulation() isDataRate_Modulation { return nil } -func (m *DataRate) GetLora() *LoRaDataRate { - if x, ok := m.GetModulation().(*DataRate_Lora); ok { +func (x *DataRate) GetLora() *LoRaDataRate { + if x, ok := x.GetModulation().(*DataRate_Lora); ok { return x.Lora } return nil } -func (m *DataRate) GetFsk() *FSKDataRate { - if x, ok := m.GetModulation().(*DataRate_Fsk); ok { +func (x *DataRate) GetFsk() *FSKDataRate { + if x, ok := x.GetModulation().(*DataRate_Fsk); ok { return x.Fsk } return nil } -func (m *DataRate) GetLrfhss() *LRFHSSDataRate { - if x, ok := m.GetModulation().(*DataRate_Lrfhss); ok { +func (x *DataRate) GetLrfhss() *LRFHSSDataRate { + if x, ok := x.GetModulation().(*DataRate_Lrfhss); ok { return x.Lrfhss } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*DataRate) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*DataRate_Lora)(nil), - (*DataRate_Fsk)(nil), - (*DataRate_Lrfhss)(nil), - } +type isDataRate_Modulation interface { + isDataRate_Modulation() +} + +type DataRate_Lora struct { + Lora *LoRaDataRate `protobuf:"bytes,1,opt,name=lora,proto3,oneof"` } +type DataRate_Fsk struct { + Fsk *FSKDataRate `protobuf:"bytes,2,opt,name=fsk,proto3,oneof"` +} + +type DataRate_Lrfhss struct { + Lrfhss *LRFHSSDataRate `protobuf:"bytes,3,opt,name=lrfhss,proto3,oneof"` +} + +func (*DataRate_Lora) isDataRate_Modulation() {} + +func (*DataRate_Fsk) isDataRate_Modulation() {} + +func (*DataRate_Lrfhss) isDataRate_Modulation() {} + // TxSettings contains the settings for a transmission. // This message is used on both uplink and downlink. // On downlink, this is a scheduled transmission. type TxSettings struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Data rate. DataRate *DataRate `protobuf:"bytes,1,opt,name=data_rate,json=dataRate,proto3" json:"data_rate,omitempty"` // Frequency (Hz). @@ -2129,373 +2725,342 @@ type TxSettings struct { Timestamp uint32 `protobuf:"varint,6,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Time of the gateway when the uplink message was received, or when the downlink message should be transmitted. // For downlink, this requires the gateway to have GPS time synchronization. - Time *types.Timestamp `protobuf:"bytes,7,opt,name=time,proto3" json:"time,omitempty"` + Time *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=time,proto3" json:"time,omitempty"` // Transmission settings for downlink. Downlink *TxSettings_Downlink `protobuf:"bytes,8,opt,name=downlink,proto3" json:"downlink,omitempty"` // Concentrator timestamp for the downlink as calculated by the Gateway Server scheduler. // This value takes into account necessary offsets such as the RTT (Round Trip Time) and TOA (Time Of Arrival). // This field is set and used only by the Gateway Server. - ConcentratorTimestamp int64 `protobuf:"varint,9,opt,name=concentrator_timestamp,json=concentratorTimestamp,proto3" json:"concentrator_timestamp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ConcentratorTimestamp int64 `protobuf:"varint,9,opt,name=concentrator_timestamp,json=concentratorTimestamp,proto3" json:"concentrator_timestamp,omitempty"` } -func (m *TxSettings) Reset() { *m = TxSettings{} } -func (m *TxSettings) String() string { return proto.CompactTextString(m) } -func (*TxSettings) ProtoMessage() {} -func (*TxSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{14} -} -func (m *TxSettings) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TxSettings.Unmarshal(m, b) -} -func (m *TxSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TxSettings.Marshal(b, m, deterministic) -} -func (m *TxSettings) XXX_Merge(src proto.Message) { - xxx_messageInfo_TxSettings.Merge(m, src) +func (x *TxSettings) Reset() { + *x = TxSettings{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *TxSettings) XXX_Size() int { - return xxx_messageInfo_TxSettings.Size(m) + +func (x *TxSettings) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *TxSettings) XXX_DiscardUnknown() { - xxx_messageInfo_TxSettings.DiscardUnknown(m) + +func (*TxSettings) ProtoMessage() {} + +func (x *TxSettings) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_TxSettings proto.InternalMessageInfo +// Deprecated: Use TxSettings.ProtoReflect.Descriptor instead. +func (*TxSettings) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{14} +} -func (m *TxSettings) GetDataRate() *DataRate { - if m != nil { - return m.DataRate +func (x *TxSettings) GetDataRate() *DataRate { + if x != nil { + return x.DataRate } return nil } -func (m *TxSettings) GetFrequency() uint64 { - if m != nil { - return m.Frequency +func (x *TxSettings) GetFrequency() uint64 { + if x != nil { + return x.Frequency } return 0 } -func (m *TxSettings) GetEnableCrc() bool { - if m != nil { - return m.EnableCrc +func (x *TxSettings) GetEnableCrc() bool { + if x != nil { + return x.EnableCrc } return false } -func (m *TxSettings) GetTimestamp() uint32 { - if m != nil { - return m.Timestamp +func (x *TxSettings) GetTimestamp() uint32 { + if x != nil { + return x.Timestamp } return 0 } -func (m *TxSettings) GetTime() *types.Timestamp { - if m != nil { - return m.Time +func (x *TxSettings) GetTime() *timestamppb.Timestamp { + if x != nil { + return x.Time } return nil } -func (m *TxSettings) GetDownlink() *TxSettings_Downlink { - if m != nil { - return m.Downlink +func (x *TxSettings) GetDownlink() *TxSettings_Downlink { + if x != nil { + return x.Downlink } return nil } -func (m *TxSettings) GetConcentratorTimestamp() int64 { - if m != nil { - return m.ConcentratorTimestamp +func (x *TxSettings) GetConcentratorTimestamp() int64 { + if x != nil { + return x.ConcentratorTimestamp } return 0 } -// Transmission settings for downlink. -type TxSettings_Downlink struct { - // Index of the antenna on which the uplink was received and/or downlink must be sent. - AntennaIndex uint32 `protobuf:"varint,1,opt,name=antenna_index,json=antennaIndex,proto3" json:"antenna_index,omitempty"` - // Transmission power (dBm). Only on downlink. - TxPower float32 `protobuf:"fixed32,2,opt,name=tx_power,json=txPower,proto3" json:"tx_power,omitempty"` - // Invert LoRa polarization; false for LoRaWAN uplink, true for downlink. - InvertPolarization bool `protobuf:"varint,3,opt,name=invert_polarization,json=invertPolarization,proto3" json:"invert_polarization,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type GatewayAntennaIdentifiers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *TxSettings_Downlink) Reset() { *m = TxSettings_Downlink{} } -func (m *TxSettings_Downlink) String() string { return proto.CompactTextString(m) } -func (*TxSettings_Downlink) ProtoMessage() {} -func (*TxSettings_Downlink) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{14, 0} -} -func (m *TxSettings_Downlink) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TxSettings_Downlink.Unmarshal(m, b) -} -func (m *TxSettings_Downlink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TxSettings_Downlink.Marshal(b, m, deterministic) -} -func (m *TxSettings_Downlink) XXX_Merge(src proto.Message) { - xxx_messageInfo_TxSettings_Downlink.Merge(m, src) -} -func (m *TxSettings_Downlink) XXX_Size() int { - return xxx_messageInfo_TxSettings_Downlink.Size(m) -} -func (m *TxSettings_Downlink) XXX_DiscardUnknown() { - xxx_messageInfo_TxSettings_Downlink.DiscardUnknown(m) + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` + AntennaIndex uint32 `protobuf:"varint,2,opt,name=antenna_index,json=antennaIndex,proto3" json:"antenna_index,omitempty"` } -var xxx_messageInfo_TxSettings_Downlink proto.InternalMessageInfo - -func (m *TxSettings_Downlink) GetAntennaIndex() uint32 { - if m != nil { - return m.AntennaIndex +func (x *GatewayAntennaIdentifiers) Reset() { + *x = GatewayAntennaIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (m *TxSettings_Downlink) GetTxPower() float32 { - if m != nil { - return m.TxPower - } - return 0 +func (x *GatewayAntennaIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *TxSettings_Downlink) GetInvertPolarization() bool { - if m != nil { - return m.InvertPolarization - } - return false -} +func (*GatewayAntennaIdentifiers) ProtoMessage() {} -type GatewayAntennaIdentifiers struct { - GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` - AntennaIndex uint32 `protobuf:"varint,2,opt,name=antenna_index,json=antennaIndex,proto3" json:"antenna_index,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *GatewayAntennaIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *GatewayAntennaIdentifiers) Reset() { *m = GatewayAntennaIdentifiers{} } -func (m *GatewayAntennaIdentifiers) String() string { return proto.CompactTextString(m) } -func (*GatewayAntennaIdentifiers) ProtoMessage() {} +// Deprecated: Use GatewayAntennaIdentifiers.ProtoReflect.Descriptor instead. func (*GatewayAntennaIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{15} + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{15} } -func (m *GatewayAntennaIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayAntennaIdentifiers.Unmarshal(m, b) -} -func (m *GatewayAntennaIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayAntennaIdentifiers.Marshal(b, m, deterministic) -} -func (m *GatewayAntennaIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayAntennaIdentifiers.Merge(m, src) -} -func (m *GatewayAntennaIdentifiers) XXX_Size() int { - return xxx_messageInfo_GatewayAntennaIdentifiers.Size(m) -} -func (m *GatewayAntennaIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayAntennaIdentifiers.DiscardUnknown(m) -} - -var xxx_messageInfo_GatewayAntennaIdentifiers proto.InternalMessageInfo -func (m *GatewayAntennaIdentifiers) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds +func (x *GatewayAntennaIdentifiers) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds } return nil } -func (m *GatewayAntennaIdentifiers) GetAntennaIndex() uint32 { - if m != nil { - return m.AntennaIndex +func (x *GatewayAntennaIdentifiers) GetAntennaIndex() uint32 { + if x != nil { + return x.AntennaIndex } return 0 } type ClassBCGatewayIdentifiers struct { - GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` - AntennaIndex uint32 `protobuf:"varint,2,opt,name=antenna_index,json=antennaIndex,proto3" json:"antenna_index,omitempty"` - GroupIndex uint32 `protobuf:"varint,3,opt,name=group_index,json=groupIndex,proto3" json:"group_index,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ClassBCGatewayIdentifiers) Reset() { *m = ClassBCGatewayIdentifiers{} } -func (m *ClassBCGatewayIdentifiers) String() string { return proto.CompactTextString(m) } -func (*ClassBCGatewayIdentifiers) ProtoMessage() {} -func (*ClassBCGatewayIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{16} -} -func (m *ClassBCGatewayIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ClassBCGatewayIdentifiers.Unmarshal(m, b) -} -func (m *ClassBCGatewayIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ClassBCGatewayIdentifiers.Marshal(b, m, deterministic) + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` + AntennaIndex uint32 `protobuf:"varint,2,opt,name=antenna_index,json=antennaIndex,proto3" json:"antenna_index,omitempty"` + GroupIndex uint32 `protobuf:"varint,3,opt,name=group_index,json=groupIndex,proto3" json:"group_index,omitempty"` } -func (m *ClassBCGatewayIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_ClassBCGatewayIdentifiers.Merge(m, src) + +func (x *ClassBCGatewayIdentifiers) Reset() { + *x = ClassBCGatewayIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ClassBCGatewayIdentifiers) XXX_Size() int { - return xxx_messageInfo_ClassBCGatewayIdentifiers.Size(m) + +func (x *ClassBCGatewayIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ClassBCGatewayIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_ClassBCGatewayIdentifiers.DiscardUnknown(m) + +func (*ClassBCGatewayIdentifiers) ProtoMessage() {} + +func (x *ClassBCGatewayIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ClassBCGatewayIdentifiers proto.InternalMessageInfo +// Deprecated: Use ClassBCGatewayIdentifiers.ProtoReflect.Descriptor instead. +func (*ClassBCGatewayIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{16} +} -func (m *ClassBCGatewayIdentifiers) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds +func (x *ClassBCGatewayIdentifiers) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds } return nil } -func (m *ClassBCGatewayIdentifiers) GetAntennaIndex() uint32 { - if m != nil { - return m.AntennaIndex +func (x *ClassBCGatewayIdentifiers) GetAntennaIndex() uint32 { + if x != nil { + return x.AntennaIndex } return 0 } -func (m *ClassBCGatewayIdentifiers) GetGroupIndex() uint32 { - if m != nil { - return m.GroupIndex +func (x *ClassBCGatewayIdentifiers) GetGroupIndex() uint32 { + if x != nil { + return x.GroupIndex } return 0 } type UplinkToken struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Ids *GatewayAntennaIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` Timestamp uint32 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Absolute time observed by the server when the uplink message has been received. - ServerTime *types.Timestamp `protobuf:"bytes,3,opt,name=server_time,json=serverTime,proto3" json:"server_time,omitempty"` + ServerTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=server_time,json=serverTime,proto3" json:"server_time,omitempty"` // Absolute concentrator time as observed by the Gateway Server, accounting for rollovers. ConcentratorTime int64 `protobuf:"varint,4,opt,name=concentrator_time,json=concentratorTime,proto3" json:"concentrator_time,omitempty"` // Absolute time observed by the gateway when the uplink has been received. - GatewayTime *types.Timestamp `protobuf:"bytes,5,opt,name=gateway_time,json=gatewayTime,proto3" json:"gateway_time,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + GatewayTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=gateway_time,json=gatewayTime,proto3" json:"gateway_time,omitempty"` } -func (m *UplinkToken) Reset() { *m = UplinkToken{} } -func (m *UplinkToken) String() string { return proto.CompactTextString(m) } -func (*UplinkToken) ProtoMessage() {} -func (*UplinkToken) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{17} -} -func (m *UplinkToken) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UplinkToken.Unmarshal(m, b) -} -func (m *UplinkToken) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UplinkToken.Marshal(b, m, deterministic) -} -func (m *UplinkToken) XXX_Merge(src proto.Message) { - xxx_messageInfo_UplinkToken.Merge(m, src) +func (x *UplinkToken) Reset() { + *x = UplinkToken{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UplinkToken) XXX_Size() int { - return xxx_messageInfo_UplinkToken.Size(m) + +func (x *UplinkToken) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UplinkToken) XXX_DiscardUnknown() { - xxx_messageInfo_UplinkToken.DiscardUnknown(m) + +func (*UplinkToken) ProtoMessage() {} + +func (x *UplinkToken) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UplinkToken proto.InternalMessageInfo +// Deprecated: Use UplinkToken.ProtoReflect.Descriptor instead. +func (*UplinkToken) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{17} +} -func (m *UplinkToken) GetIds() *GatewayAntennaIdentifiers { - if m != nil { - return m.Ids +func (x *UplinkToken) GetIds() *GatewayAntennaIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *UplinkToken) GetTimestamp() uint32 { - if m != nil { - return m.Timestamp +func (x *UplinkToken) GetTimestamp() uint32 { + if x != nil { + return x.Timestamp } return 0 } -func (m *UplinkToken) GetServerTime() *types.Timestamp { - if m != nil { - return m.ServerTime +func (x *UplinkToken) GetServerTime() *timestamppb.Timestamp { + if x != nil { + return x.ServerTime } return nil } -func (m *UplinkToken) GetConcentratorTime() int64 { - if m != nil { - return m.ConcentratorTime +func (x *UplinkToken) GetConcentratorTime() int64 { + if x != nil { + return x.ConcentratorTime } return 0 } -func (m *UplinkToken) GetGatewayTime() *types.Timestamp { - if m != nil { - return m.GatewayTime +func (x *UplinkToken) GetGatewayTime() *timestamppb.Timestamp { + if x != nil { + return x.GatewayTime } return nil } type DownlinkPath struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Set uplink token for class A, B or C downlink to the uplink token received from the corresponding RxMetadata. Uplink tokens are opaque to the Network Server. // Set fixed to force using the specified gateway antenna identifiers for downlink. This can only be used for class B or C downlinks. // - // Types that are valid to be assigned to Path: + // Types that are assignable to Path: // *DownlinkPath_UplinkToken // *DownlinkPath_Fixed - Path isDownlinkPath_Path `protobuf_oneof:"path"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Path isDownlinkPath_Path `protobuf_oneof:"path"` } -func (m *DownlinkPath) Reset() { *m = DownlinkPath{} } -func (m *DownlinkPath) String() string { return proto.CompactTextString(m) } -func (*DownlinkPath) ProtoMessage() {} -func (*DownlinkPath) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{18} -} -func (m *DownlinkPath) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DownlinkPath.Unmarshal(m, b) -} -func (m *DownlinkPath) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DownlinkPath.Marshal(b, m, deterministic) -} -func (m *DownlinkPath) XXX_Merge(src proto.Message) { - xxx_messageInfo_DownlinkPath.Merge(m, src) -} -func (m *DownlinkPath) XXX_Size() int { - return xxx_messageInfo_DownlinkPath.Size(m) +func (x *DownlinkPath) Reset() { + *x = DownlinkPath{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DownlinkPath) XXX_DiscardUnknown() { - xxx_messageInfo_DownlinkPath.DiscardUnknown(m) + +func (x *DownlinkPath) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_DownlinkPath proto.InternalMessageInfo +func (*DownlinkPath) ProtoMessage() {} -type isDownlinkPath_Path interface { - isDownlinkPath_Path() +func (x *DownlinkPath) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type DownlinkPath_UplinkToken struct { - UplinkToken []byte `protobuf:"bytes,1,opt,name=uplink_token,json=uplinkToken,proto3,oneof" json:"uplink_token,omitempty"` -} -type DownlinkPath_Fixed struct { - Fixed *GatewayAntennaIdentifiers `protobuf:"bytes,2,opt,name=fixed,proto3,oneof" json:"fixed,omitempty"` +// Deprecated: Use DownlinkPath.ProtoReflect.Descriptor instead. +func (*DownlinkPath) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{18} } -func (*DownlinkPath_UplinkToken) isDownlinkPath_Path() {} -func (*DownlinkPath_Fixed) isDownlinkPath_Path() {} - func (m *DownlinkPath) GetPath() isDownlinkPath_Path { if m != nil { return m.Path @@ -2503,33 +3068,45 @@ func (m *DownlinkPath) GetPath() isDownlinkPath_Path { return nil } -func (m *DownlinkPath) GetUplinkToken() []byte { - if x, ok := m.GetPath().(*DownlinkPath_UplinkToken); ok { +func (x *DownlinkPath) GetUplinkToken() []byte { + if x, ok := x.GetPath().(*DownlinkPath_UplinkToken); ok { return x.UplinkToken } return nil } -func (m *DownlinkPath) GetFixed() *GatewayAntennaIdentifiers { - if x, ok := m.GetPath().(*DownlinkPath_Fixed); ok { +func (x *DownlinkPath) GetFixed() *GatewayAntennaIdentifiers { + if x, ok := x.GetPath().(*DownlinkPath_Fixed); ok { return x.Fixed } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*DownlinkPath) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*DownlinkPath_UplinkToken)(nil), - (*DownlinkPath_Fixed)(nil), - } +type isDownlinkPath_Path interface { + isDownlinkPath_Path() +} + +type DownlinkPath_UplinkToken struct { + UplinkToken []byte `protobuf:"bytes,1,opt,name=uplink_token,json=uplinkToken,proto3,oneof"` +} + +type DownlinkPath_Fixed struct { + Fixed *GatewayAntennaIdentifiers `protobuf:"bytes,2,opt,name=fixed,proto3,oneof"` } +func (*DownlinkPath_UplinkToken) isDownlinkPath_Path() {} + +func (*DownlinkPath_Fixed) isDownlinkPath_Path() {} + // TxRequest is a request for transmission. // If sent to a roaming partner, this request is used to generate the DLMetadata Object (see Backend Interfaces 1.0, Table 22). // If the gateway has a scheduler, this request is sent to the gateway, in the order of gateway_ids. // Otherwise, the Gateway Server attempts to schedule the request and creates the TxSettings. type TxRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Class Class `protobuf:"varint,1,opt,name=class,proto3,enum=ttn.lorawan.v3.Class" json:"class,omitempty"` // Downlink paths used to select a gateway for downlink. // In class A, the downlink paths are required to only contain uplink tokens. @@ -2553,122 +3130,131 @@ type TxRequest struct { // This value is only valid for class C downlink; class A downlink uses uplink tokens and class B downlink is scheduled on ping slots. // This requires the gateway to have GPS time sychronization. // If the absolute time is not set, the first available time will be used that does not conflict or violate regional limitations. - AbsoluteTime *types.Timestamp `protobuf:"bytes,9,opt,name=absolute_time,json=absoluteTime,proto3" json:"absolute_time,omitempty"` + AbsoluteTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=absolute_time,json=absoluteTime,proto3" json:"absolute_time,omitempty"` // Frequency plan ID from which the frequencies in this message are retrieved. FrequencyPlanId string `protobuf:"bytes,10,opt,name=frequency_plan_id,json=frequencyPlanId,proto3" json:"frequency_plan_id,omitempty"` // Advanced metadata fields // - can be used for advanced information or experimental features that are not yet formally defined in the API // - field names are written in snake_case - Advanced *types.Struct `protobuf:"bytes,99,opt,name=advanced,proto3" json:"advanced,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Advanced *structpb.Struct `protobuf:"bytes,99,opt,name=advanced,proto3" json:"advanced,omitempty"` } -func (m *TxRequest) Reset() { *m = TxRequest{} } -func (m *TxRequest) String() string { return proto.CompactTextString(m) } -func (*TxRequest) ProtoMessage() {} -func (*TxRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{19} -} -func (m *TxRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TxRequest.Unmarshal(m, b) -} -func (m *TxRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TxRequest.Marshal(b, m, deterministic) -} -func (m *TxRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_TxRequest.Merge(m, src) +func (x *TxRequest) Reset() { + *x = TxRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *TxRequest) XXX_Size() int { - return xxx_messageInfo_TxRequest.Size(m) + +func (x *TxRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *TxRequest) XXX_DiscardUnknown() { - xxx_messageInfo_TxRequest.DiscardUnknown(m) + +func (*TxRequest) ProtoMessage() {} + +func (x *TxRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_TxRequest proto.InternalMessageInfo +// Deprecated: Use TxRequest.ProtoReflect.Descriptor instead. +func (*TxRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{19} +} -func (m *TxRequest) GetClass() Class { - if m != nil { - return m.Class +func (x *TxRequest) GetClass() Class { + if x != nil { + return x.Class } return Class_CLASS_A } -func (m *TxRequest) GetDownlinkPaths() []*DownlinkPath { - if m != nil { - return m.DownlinkPaths +func (x *TxRequest) GetDownlinkPaths() []*DownlinkPath { + if x != nil { + return x.DownlinkPaths } return nil } -func (m *TxRequest) GetRx1Delay() RxDelay { - if m != nil { - return m.Rx1Delay +func (x *TxRequest) GetRx1Delay() RxDelay { + if x != nil { + return x.Rx1Delay } return RxDelay_RX_DELAY_0 } -func (m *TxRequest) GetRx1DataRate() *DataRate { - if m != nil { - return m.Rx1DataRate +func (x *TxRequest) GetRx1DataRate() *DataRate { + if x != nil { + return x.Rx1DataRate } return nil } -func (m *TxRequest) GetRx1Frequency() uint64 { - if m != nil { - return m.Rx1Frequency +func (x *TxRequest) GetRx1Frequency() uint64 { + if x != nil { + return x.Rx1Frequency } return 0 } -func (m *TxRequest) GetRx2DataRate() *DataRate { - if m != nil { - return m.Rx2DataRate +func (x *TxRequest) GetRx2DataRate() *DataRate { + if x != nil { + return x.Rx2DataRate } return nil } -func (m *TxRequest) GetRx2Frequency() uint64 { - if m != nil { - return m.Rx2Frequency +func (x *TxRequest) GetRx2Frequency() uint64 { + if x != nil { + return x.Rx2Frequency } return 0 } -func (m *TxRequest) GetPriority() TxSchedulePriority { - if m != nil { - return m.Priority +func (x *TxRequest) GetPriority() TxSchedulePriority { + if x != nil { + return x.Priority } return TxSchedulePriority_LOWEST } -func (m *TxRequest) GetAbsoluteTime() *types.Timestamp { - if m != nil { - return m.AbsoluteTime +func (x *TxRequest) GetAbsoluteTime() *timestamppb.Timestamp { + if x != nil { + return x.AbsoluteTime } return nil } -func (m *TxRequest) GetFrequencyPlanId() string { - if m != nil { - return m.FrequencyPlanId +func (x *TxRequest) GetFrequencyPlanId() string { + if x != nil { + return x.FrequencyPlanId } return "" } -func (m *TxRequest) GetAdvanced() *types.Struct { - if m != nil { - return m.Advanced +func (x *TxRequest) GetAdvanced() *structpb.Struct { + if x != nil { + return x.Advanced } return nil } type MACCommand struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Cid MACCommandIdentifier `protobuf:"varint,1,opt,name=cid,proto3,enum=ttn.lorawan.v3.MACCommandIdentifier" json:"cid,omitempty"` - // Types that are valid to be assigned to Payload: + // Types that are assignable to Payload: // *MACCommand_RawPayload // *MACCommand_ResetInd_ // *MACCommand_ResetConf_ @@ -2700,165 +3286,47 @@ type MACCommand struct { // *MACCommand_BeaconFreqAns_ // *MACCommand_DeviceModeInd_ // *MACCommand_DeviceModeConf_ - Payload isMACCommand_Payload `protobuf_oneof:"payload"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Payload isMACCommand_Payload `protobuf_oneof:"payload"` } -func (m *MACCommand) Reset() { *m = MACCommand{} } -func (m *MACCommand) String() string { return proto.CompactTextString(m) } -func (*MACCommand) ProtoMessage() {} -func (*MACCommand) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20} -} -func (m *MACCommand) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand.Unmarshal(m, b) -} -func (m *MACCommand) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand.Marshal(b, m, deterministic) -} -func (m *MACCommand) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand.Merge(m, src) -} -func (m *MACCommand) XXX_Size() int { - return xxx_messageInfo_MACCommand.Size(m) +func (x *MACCommand) Reset() { + *x = MACCommand{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand.DiscardUnknown(m) + +func (x *MACCommand) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand proto.InternalMessageInfo +func (*MACCommand) ProtoMessage() {} -type isMACCommand_Payload interface { - isMACCommand_Payload() +func (x *MACCommand) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type MACCommand_RawPayload struct { - RawPayload []byte `protobuf:"bytes,2,opt,name=raw_payload,json=rawPayload,proto3,oneof" json:"raw_payload,omitempty"` -} -type MACCommand_ResetInd_ struct { - ResetInd *MACCommand_ResetInd `protobuf:"bytes,3,opt,name=reset_ind,json=resetInd,proto3,oneof" json:"reset_ind,omitempty"` -} -type MACCommand_ResetConf_ struct { - ResetConf *MACCommand_ResetConf `protobuf:"bytes,4,opt,name=reset_conf,json=resetConf,proto3,oneof" json:"reset_conf,omitempty"` -} -type MACCommand_LinkCheckAns_ struct { - LinkCheckAns *MACCommand_LinkCheckAns `protobuf:"bytes,5,opt,name=link_check_ans,json=linkCheckAns,proto3,oneof" json:"link_check_ans,omitempty"` -} -type MACCommand_LinkAdrReq struct { - LinkAdrReq *MACCommand_LinkADRReq `protobuf:"bytes,6,opt,name=link_adr_req,json=linkAdrReq,proto3,oneof" json:"link_adr_req,omitempty"` -} -type MACCommand_LinkAdrAns struct { - LinkAdrAns *MACCommand_LinkADRAns `protobuf:"bytes,7,opt,name=link_adr_ans,json=linkAdrAns,proto3,oneof" json:"link_adr_ans,omitempty"` -} -type MACCommand_DutyCycleReq_ struct { - DutyCycleReq *MACCommand_DutyCycleReq `protobuf:"bytes,8,opt,name=duty_cycle_req,json=dutyCycleReq,proto3,oneof" json:"duty_cycle_req,omitempty"` -} -type MACCommand_RxParamSetupReq_ struct { - RxParamSetupReq *MACCommand_RxParamSetupReq `protobuf:"bytes,9,opt,name=rx_param_setup_req,json=rxParamSetupReq,proto3,oneof" json:"rx_param_setup_req,omitempty"` -} -type MACCommand_RxParamSetupAns_ struct { - RxParamSetupAns *MACCommand_RxParamSetupAns `protobuf:"bytes,10,opt,name=rx_param_setup_ans,json=rxParamSetupAns,proto3,oneof" json:"rx_param_setup_ans,omitempty"` -} -type MACCommand_DevStatusAns_ struct { - DevStatusAns *MACCommand_DevStatusAns `protobuf:"bytes,11,opt,name=dev_status_ans,json=devStatusAns,proto3,oneof" json:"dev_status_ans,omitempty"` -} -type MACCommand_NewChannelReq_ struct { - NewChannelReq *MACCommand_NewChannelReq `protobuf:"bytes,12,opt,name=new_channel_req,json=newChannelReq,proto3,oneof" json:"new_channel_req,omitempty"` -} -type MACCommand_NewChannelAns_ struct { - NewChannelAns *MACCommand_NewChannelAns `protobuf:"bytes,13,opt,name=new_channel_ans,json=newChannelAns,proto3,oneof" json:"new_channel_ans,omitempty"` -} -type MACCommand_DlChannelReq struct { - DlChannelReq *MACCommand_DLChannelReq `protobuf:"bytes,14,opt,name=dl_channel_req,json=dlChannelReq,proto3,oneof" json:"dl_channel_req,omitempty"` -} -type MACCommand_DlChannelAns struct { - DlChannelAns *MACCommand_DLChannelAns `protobuf:"bytes,15,opt,name=dl_channel_ans,json=dlChannelAns,proto3,oneof" json:"dl_channel_ans,omitempty"` -} -type MACCommand_RxTimingSetupReq_ struct { - RxTimingSetupReq *MACCommand_RxTimingSetupReq `protobuf:"bytes,16,opt,name=rx_timing_setup_req,json=rxTimingSetupReq,proto3,oneof" json:"rx_timing_setup_req,omitempty"` -} -type MACCommand_TxParamSetupReq_ struct { - TxParamSetupReq *MACCommand_TxParamSetupReq `protobuf:"bytes,17,opt,name=tx_param_setup_req,json=txParamSetupReq,proto3,oneof" json:"tx_param_setup_req,omitempty"` -} -type MACCommand_RekeyInd_ struct { - RekeyInd *MACCommand_RekeyInd `protobuf:"bytes,18,opt,name=rekey_ind,json=rekeyInd,proto3,oneof" json:"rekey_ind,omitempty"` -} -type MACCommand_RekeyConf_ struct { - RekeyConf *MACCommand_RekeyConf `protobuf:"bytes,19,opt,name=rekey_conf,json=rekeyConf,proto3,oneof" json:"rekey_conf,omitempty"` -} -type MACCommand_AdrParamSetupReq struct { - AdrParamSetupReq *MACCommand_ADRParamSetupReq `protobuf:"bytes,20,opt,name=adr_param_setup_req,json=adrParamSetupReq,proto3,oneof" json:"adr_param_setup_req,omitempty"` -} -type MACCommand_DeviceTimeAns_ struct { - DeviceTimeAns *MACCommand_DeviceTimeAns `protobuf:"bytes,21,opt,name=device_time_ans,json=deviceTimeAns,proto3,oneof" json:"device_time_ans,omitempty"` -} -type MACCommand_ForceRejoinReq_ struct { - ForceRejoinReq *MACCommand_ForceRejoinReq `protobuf:"bytes,22,opt,name=force_rejoin_req,json=forceRejoinReq,proto3,oneof" json:"force_rejoin_req,omitempty"` -} -type MACCommand_RejoinParamSetupReq_ struct { - RejoinParamSetupReq *MACCommand_RejoinParamSetupReq `protobuf:"bytes,23,opt,name=rejoin_param_setup_req,json=rejoinParamSetupReq,proto3,oneof" json:"rejoin_param_setup_req,omitempty"` -} -type MACCommand_RejoinParamSetupAns_ struct { - RejoinParamSetupAns *MACCommand_RejoinParamSetupAns `protobuf:"bytes,24,opt,name=rejoin_param_setup_ans,json=rejoinParamSetupAns,proto3,oneof" json:"rejoin_param_setup_ans,omitempty"` -} -type MACCommand_PingSlotInfoReq_ struct { - PingSlotInfoReq *MACCommand_PingSlotInfoReq `protobuf:"bytes,25,opt,name=ping_slot_info_req,json=pingSlotInfoReq,proto3,oneof" json:"ping_slot_info_req,omitempty"` -} -type MACCommand_PingSlotChannelReq_ struct { - PingSlotChannelReq *MACCommand_PingSlotChannelReq `protobuf:"bytes,26,opt,name=ping_slot_channel_req,json=pingSlotChannelReq,proto3,oneof" json:"ping_slot_channel_req,omitempty"` -} -type MACCommand_PingSlotChannelAns_ struct { - PingSlotChannelAns *MACCommand_PingSlotChannelAns `protobuf:"bytes,27,opt,name=ping_slot_channel_ans,json=pingSlotChannelAns,proto3,oneof" json:"ping_slot_channel_ans,omitempty"` -} -type MACCommand_BeaconTimingAns_ struct { - BeaconTimingAns *MACCommand_BeaconTimingAns `protobuf:"bytes,28,opt,name=beacon_timing_ans,json=beaconTimingAns,proto3,oneof" json:"beacon_timing_ans,omitempty"` -} -type MACCommand_BeaconFreqReq_ struct { - BeaconFreqReq *MACCommand_BeaconFreqReq `protobuf:"bytes,29,opt,name=beacon_freq_req,json=beaconFreqReq,proto3,oneof" json:"beacon_freq_req,omitempty"` -} -type MACCommand_BeaconFreqAns_ struct { - BeaconFreqAns *MACCommand_BeaconFreqAns `protobuf:"bytes,30,opt,name=beacon_freq_ans,json=beaconFreqAns,proto3,oneof" json:"beacon_freq_ans,omitempty"` +// Deprecated: Use MACCommand.ProtoReflect.Descriptor instead. +func (*MACCommand) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20} } -type MACCommand_DeviceModeInd_ struct { - DeviceModeInd *MACCommand_DeviceModeInd `protobuf:"bytes,31,opt,name=device_mode_ind,json=deviceModeInd,proto3,oneof" json:"device_mode_ind,omitempty"` + +func (x *MACCommand) GetCid() MACCommandIdentifier { + if x != nil { + return x.Cid + } + return MACCommandIdentifier_CID_RFU_0 } -type MACCommand_DeviceModeConf_ struct { - DeviceModeConf *MACCommand_DeviceModeConf `protobuf:"bytes,32,opt,name=device_mode_conf,json=deviceModeConf,proto3,oneof" json:"device_mode_conf,omitempty"` -} - -func (*MACCommand_RawPayload) isMACCommand_Payload() {} -func (*MACCommand_ResetInd_) isMACCommand_Payload() {} -func (*MACCommand_ResetConf_) isMACCommand_Payload() {} -func (*MACCommand_LinkCheckAns_) isMACCommand_Payload() {} -func (*MACCommand_LinkAdrReq) isMACCommand_Payload() {} -func (*MACCommand_LinkAdrAns) isMACCommand_Payload() {} -func (*MACCommand_DutyCycleReq_) isMACCommand_Payload() {} -func (*MACCommand_RxParamSetupReq_) isMACCommand_Payload() {} -func (*MACCommand_RxParamSetupAns_) isMACCommand_Payload() {} -func (*MACCommand_DevStatusAns_) isMACCommand_Payload() {} -func (*MACCommand_NewChannelReq_) isMACCommand_Payload() {} -func (*MACCommand_NewChannelAns_) isMACCommand_Payload() {} -func (*MACCommand_DlChannelReq) isMACCommand_Payload() {} -func (*MACCommand_DlChannelAns) isMACCommand_Payload() {} -func (*MACCommand_RxTimingSetupReq_) isMACCommand_Payload() {} -func (*MACCommand_TxParamSetupReq_) isMACCommand_Payload() {} -func (*MACCommand_RekeyInd_) isMACCommand_Payload() {} -func (*MACCommand_RekeyConf_) isMACCommand_Payload() {} -func (*MACCommand_AdrParamSetupReq) isMACCommand_Payload() {} -func (*MACCommand_DeviceTimeAns_) isMACCommand_Payload() {} -func (*MACCommand_ForceRejoinReq_) isMACCommand_Payload() {} -func (*MACCommand_RejoinParamSetupReq_) isMACCommand_Payload() {} -func (*MACCommand_RejoinParamSetupAns_) isMACCommand_Payload() {} -func (*MACCommand_PingSlotInfoReq_) isMACCommand_Payload() {} -func (*MACCommand_PingSlotChannelReq_) isMACCommand_Payload() {} -func (*MACCommand_PingSlotChannelAns_) isMACCommand_Payload() {} -func (*MACCommand_BeaconTimingAns_) isMACCommand_Payload() {} -func (*MACCommand_BeaconFreqReq_) isMACCommand_Payload() {} -func (*MACCommand_BeaconFreqAns_) isMACCommand_Payload() {} -func (*MACCommand_DeviceModeInd_) isMACCommand_Payload() {} -func (*MACCommand_DeviceModeConf_) isMACCommand_Payload() {} func (m *MACCommand) GetPayload() isMACCommand_Payload { if m != nil { @@ -2867,2632 +3335,5084 @@ func (m *MACCommand) GetPayload() isMACCommand_Payload { return nil } -func (m *MACCommand) GetCid() MACCommandIdentifier { - if m != nil { - return m.Cid - } - return MACCommandIdentifier_CID_RFU_0 -} - -func (m *MACCommand) GetRawPayload() []byte { - if x, ok := m.GetPayload().(*MACCommand_RawPayload); ok { +func (x *MACCommand) GetRawPayload() []byte { + if x, ok := x.GetPayload().(*MACCommand_RawPayload); ok { return x.RawPayload } return nil } -func (m *MACCommand) GetResetInd() *MACCommand_ResetInd { - if x, ok := m.GetPayload().(*MACCommand_ResetInd_); ok { +func (x *MACCommand) GetResetInd() *MACCommand_ResetInd { + if x, ok := x.GetPayload().(*MACCommand_ResetInd_); ok { return x.ResetInd } return nil } -func (m *MACCommand) GetResetConf() *MACCommand_ResetConf { - if x, ok := m.GetPayload().(*MACCommand_ResetConf_); ok { +func (x *MACCommand) GetResetConf() *MACCommand_ResetConf { + if x, ok := x.GetPayload().(*MACCommand_ResetConf_); ok { return x.ResetConf } return nil } -func (m *MACCommand) GetLinkCheckAns() *MACCommand_LinkCheckAns { - if x, ok := m.GetPayload().(*MACCommand_LinkCheckAns_); ok { +func (x *MACCommand) GetLinkCheckAns() *MACCommand_LinkCheckAns { + if x, ok := x.GetPayload().(*MACCommand_LinkCheckAns_); ok { return x.LinkCheckAns } return nil } -func (m *MACCommand) GetLinkAdrReq() *MACCommand_LinkADRReq { - if x, ok := m.GetPayload().(*MACCommand_LinkAdrReq); ok { +func (x *MACCommand) GetLinkAdrReq() *MACCommand_LinkADRReq { + if x, ok := x.GetPayload().(*MACCommand_LinkAdrReq); ok { return x.LinkAdrReq } return nil } -func (m *MACCommand) GetLinkAdrAns() *MACCommand_LinkADRAns { - if x, ok := m.GetPayload().(*MACCommand_LinkAdrAns); ok { +func (x *MACCommand) GetLinkAdrAns() *MACCommand_LinkADRAns { + if x, ok := x.GetPayload().(*MACCommand_LinkAdrAns); ok { return x.LinkAdrAns } return nil } -func (m *MACCommand) GetDutyCycleReq() *MACCommand_DutyCycleReq { - if x, ok := m.GetPayload().(*MACCommand_DutyCycleReq_); ok { +func (x *MACCommand) GetDutyCycleReq() *MACCommand_DutyCycleReq { + if x, ok := x.GetPayload().(*MACCommand_DutyCycleReq_); ok { return x.DutyCycleReq } return nil } -func (m *MACCommand) GetRxParamSetupReq() *MACCommand_RxParamSetupReq { - if x, ok := m.GetPayload().(*MACCommand_RxParamSetupReq_); ok { +func (x *MACCommand) GetRxParamSetupReq() *MACCommand_RxParamSetupReq { + if x, ok := x.GetPayload().(*MACCommand_RxParamSetupReq_); ok { return x.RxParamSetupReq } return nil } -func (m *MACCommand) GetRxParamSetupAns() *MACCommand_RxParamSetupAns { - if x, ok := m.GetPayload().(*MACCommand_RxParamSetupAns_); ok { +func (x *MACCommand) GetRxParamSetupAns() *MACCommand_RxParamSetupAns { + if x, ok := x.GetPayload().(*MACCommand_RxParamSetupAns_); ok { return x.RxParamSetupAns } return nil } -func (m *MACCommand) GetDevStatusAns() *MACCommand_DevStatusAns { - if x, ok := m.GetPayload().(*MACCommand_DevStatusAns_); ok { +func (x *MACCommand) GetDevStatusAns() *MACCommand_DevStatusAns { + if x, ok := x.GetPayload().(*MACCommand_DevStatusAns_); ok { return x.DevStatusAns } return nil } -func (m *MACCommand) GetNewChannelReq() *MACCommand_NewChannelReq { - if x, ok := m.GetPayload().(*MACCommand_NewChannelReq_); ok { +func (x *MACCommand) GetNewChannelReq() *MACCommand_NewChannelReq { + if x, ok := x.GetPayload().(*MACCommand_NewChannelReq_); ok { return x.NewChannelReq } return nil } -func (m *MACCommand) GetNewChannelAns() *MACCommand_NewChannelAns { - if x, ok := m.GetPayload().(*MACCommand_NewChannelAns_); ok { +func (x *MACCommand) GetNewChannelAns() *MACCommand_NewChannelAns { + if x, ok := x.GetPayload().(*MACCommand_NewChannelAns_); ok { return x.NewChannelAns } return nil } -func (m *MACCommand) GetDlChannelReq() *MACCommand_DLChannelReq { - if x, ok := m.GetPayload().(*MACCommand_DlChannelReq); ok { +func (x *MACCommand) GetDlChannelReq() *MACCommand_DLChannelReq { + if x, ok := x.GetPayload().(*MACCommand_DlChannelReq); ok { return x.DlChannelReq } return nil } -func (m *MACCommand) GetDlChannelAns() *MACCommand_DLChannelAns { - if x, ok := m.GetPayload().(*MACCommand_DlChannelAns); ok { +func (x *MACCommand) GetDlChannelAns() *MACCommand_DLChannelAns { + if x, ok := x.GetPayload().(*MACCommand_DlChannelAns); ok { return x.DlChannelAns } return nil } -func (m *MACCommand) GetRxTimingSetupReq() *MACCommand_RxTimingSetupReq { - if x, ok := m.GetPayload().(*MACCommand_RxTimingSetupReq_); ok { +func (x *MACCommand) GetRxTimingSetupReq() *MACCommand_RxTimingSetupReq { + if x, ok := x.GetPayload().(*MACCommand_RxTimingSetupReq_); ok { return x.RxTimingSetupReq } return nil } -func (m *MACCommand) GetTxParamSetupReq() *MACCommand_TxParamSetupReq { - if x, ok := m.GetPayload().(*MACCommand_TxParamSetupReq_); ok { +func (x *MACCommand) GetTxParamSetupReq() *MACCommand_TxParamSetupReq { + if x, ok := x.GetPayload().(*MACCommand_TxParamSetupReq_); ok { return x.TxParamSetupReq } return nil } -func (m *MACCommand) GetRekeyInd() *MACCommand_RekeyInd { - if x, ok := m.GetPayload().(*MACCommand_RekeyInd_); ok { +func (x *MACCommand) GetRekeyInd() *MACCommand_RekeyInd { + if x, ok := x.GetPayload().(*MACCommand_RekeyInd_); ok { return x.RekeyInd } return nil } -func (m *MACCommand) GetRekeyConf() *MACCommand_RekeyConf { - if x, ok := m.GetPayload().(*MACCommand_RekeyConf_); ok { +func (x *MACCommand) GetRekeyConf() *MACCommand_RekeyConf { + if x, ok := x.GetPayload().(*MACCommand_RekeyConf_); ok { return x.RekeyConf } return nil } -func (m *MACCommand) GetAdrParamSetupReq() *MACCommand_ADRParamSetupReq { - if x, ok := m.GetPayload().(*MACCommand_AdrParamSetupReq); ok { +func (x *MACCommand) GetAdrParamSetupReq() *MACCommand_ADRParamSetupReq { + if x, ok := x.GetPayload().(*MACCommand_AdrParamSetupReq); ok { return x.AdrParamSetupReq } return nil } -func (m *MACCommand) GetDeviceTimeAns() *MACCommand_DeviceTimeAns { - if x, ok := m.GetPayload().(*MACCommand_DeviceTimeAns_); ok { +func (x *MACCommand) GetDeviceTimeAns() *MACCommand_DeviceTimeAns { + if x, ok := x.GetPayload().(*MACCommand_DeviceTimeAns_); ok { return x.DeviceTimeAns } return nil } -func (m *MACCommand) GetForceRejoinReq() *MACCommand_ForceRejoinReq { - if x, ok := m.GetPayload().(*MACCommand_ForceRejoinReq_); ok { +func (x *MACCommand) GetForceRejoinReq() *MACCommand_ForceRejoinReq { + if x, ok := x.GetPayload().(*MACCommand_ForceRejoinReq_); ok { return x.ForceRejoinReq } return nil } -func (m *MACCommand) GetRejoinParamSetupReq() *MACCommand_RejoinParamSetupReq { - if x, ok := m.GetPayload().(*MACCommand_RejoinParamSetupReq_); ok { +func (x *MACCommand) GetRejoinParamSetupReq() *MACCommand_RejoinParamSetupReq { + if x, ok := x.GetPayload().(*MACCommand_RejoinParamSetupReq_); ok { return x.RejoinParamSetupReq } return nil } -func (m *MACCommand) GetRejoinParamSetupAns() *MACCommand_RejoinParamSetupAns { - if x, ok := m.GetPayload().(*MACCommand_RejoinParamSetupAns_); ok { +func (x *MACCommand) GetRejoinParamSetupAns() *MACCommand_RejoinParamSetupAns { + if x, ok := x.GetPayload().(*MACCommand_RejoinParamSetupAns_); ok { return x.RejoinParamSetupAns } return nil } -func (m *MACCommand) GetPingSlotInfoReq() *MACCommand_PingSlotInfoReq { - if x, ok := m.GetPayload().(*MACCommand_PingSlotInfoReq_); ok { +func (x *MACCommand) GetPingSlotInfoReq() *MACCommand_PingSlotInfoReq { + if x, ok := x.GetPayload().(*MACCommand_PingSlotInfoReq_); ok { return x.PingSlotInfoReq } return nil } -func (m *MACCommand) GetPingSlotChannelReq() *MACCommand_PingSlotChannelReq { - if x, ok := m.GetPayload().(*MACCommand_PingSlotChannelReq_); ok { +func (x *MACCommand) GetPingSlotChannelReq() *MACCommand_PingSlotChannelReq { + if x, ok := x.GetPayload().(*MACCommand_PingSlotChannelReq_); ok { return x.PingSlotChannelReq } return nil } -func (m *MACCommand) GetPingSlotChannelAns() *MACCommand_PingSlotChannelAns { - if x, ok := m.GetPayload().(*MACCommand_PingSlotChannelAns_); ok { +func (x *MACCommand) GetPingSlotChannelAns() *MACCommand_PingSlotChannelAns { + if x, ok := x.GetPayload().(*MACCommand_PingSlotChannelAns_); ok { return x.PingSlotChannelAns } return nil } -func (m *MACCommand) GetBeaconTimingAns() *MACCommand_BeaconTimingAns { - if x, ok := m.GetPayload().(*MACCommand_BeaconTimingAns_); ok { +func (x *MACCommand) GetBeaconTimingAns() *MACCommand_BeaconTimingAns { + if x, ok := x.GetPayload().(*MACCommand_BeaconTimingAns_); ok { return x.BeaconTimingAns } return nil } -func (m *MACCommand) GetBeaconFreqReq() *MACCommand_BeaconFreqReq { - if x, ok := m.GetPayload().(*MACCommand_BeaconFreqReq_); ok { +func (x *MACCommand) GetBeaconFreqReq() *MACCommand_BeaconFreqReq { + if x, ok := x.GetPayload().(*MACCommand_BeaconFreqReq_); ok { return x.BeaconFreqReq } return nil } -func (m *MACCommand) GetBeaconFreqAns() *MACCommand_BeaconFreqAns { - if x, ok := m.GetPayload().(*MACCommand_BeaconFreqAns_); ok { +func (x *MACCommand) GetBeaconFreqAns() *MACCommand_BeaconFreqAns { + if x, ok := x.GetPayload().(*MACCommand_BeaconFreqAns_); ok { return x.BeaconFreqAns } return nil } -func (m *MACCommand) GetDeviceModeInd() *MACCommand_DeviceModeInd { - if x, ok := m.GetPayload().(*MACCommand_DeviceModeInd_); ok { +func (x *MACCommand) GetDeviceModeInd() *MACCommand_DeviceModeInd { + if x, ok := x.GetPayload().(*MACCommand_DeviceModeInd_); ok { return x.DeviceModeInd } return nil } -func (m *MACCommand) GetDeviceModeConf() *MACCommand_DeviceModeConf { - if x, ok := m.GetPayload().(*MACCommand_DeviceModeConf_); ok { +func (x *MACCommand) GetDeviceModeConf() *MACCommand_DeviceModeConf { + if x, ok := x.GetPayload().(*MACCommand_DeviceModeConf_); ok { return x.DeviceModeConf } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*MACCommand) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*MACCommand_RawPayload)(nil), - (*MACCommand_ResetInd_)(nil), - (*MACCommand_ResetConf_)(nil), - (*MACCommand_LinkCheckAns_)(nil), - (*MACCommand_LinkAdrReq)(nil), - (*MACCommand_LinkAdrAns)(nil), - (*MACCommand_DutyCycleReq_)(nil), - (*MACCommand_RxParamSetupReq_)(nil), - (*MACCommand_RxParamSetupAns_)(nil), - (*MACCommand_DevStatusAns_)(nil), - (*MACCommand_NewChannelReq_)(nil), - (*MACCommand_NewChannelAns_)(nil), - (*MACCommand_DlChannelReq)(nil), - (*MACCommand_DlChannelAns)(nil), - (*MACCommand_RxTimingSetupReq_)(nil), - (*MACCommand_TxParamSetupReq_)(nil), - (*MACCommand_RekeyInd_)(nil), - (*MACCommand_RekeyConf_)(nil), - (*MACCommand_AdrParamSetupReq)(nil), - (*MACCommand_DeviceTimeAns_)(nil), - (*MACCommand_ForceRejoinReq_)(nil), - (*MACCommand_RejoinParamSetupReq_)(nil), - (*MACCommand_RejoinParamSetupAns_)(nil), - (*MACCommand_PingSlotInfoReq_)(nil), - (*MACCommand_PingSlotChannelReq_)(nil), - (*MACCommand_PingSlotChannelAns_)(nil), - (*MACCommand_BeaconTimingAns_)(nil), - (*MACCommand_BeaconFreqReq_)(nil), - (*MACCommand_BeaconFreqAns_)(nil), - (*MACCommand_DeviceModeInd_)(nil), - (*MACCommand_DeviceModeConf_)(nil), - } +type isMACCommand_Payload interface { + isMACCommand_Payload() } -type MACCommand_ResetInd struct { - MinorVersion Minor `protobuf:"varint,1,opt,name=minor_version,json=minorVersion,proto3,enum=ttn.lorawan.v3.Minor" json:"minor_version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type MACCommand_RawPayload struct { + RawPayload []byte `protobuf:"bytes,2,opt,name=raw_payload,json=rawPayload,proto3,oneof"` } -func (m *MACCommand_ResetInd) Reset() { *m = MACCommand_ResetInd{} } -func (m *MACCommand_ResetInd) String() string { return proto.CompactTextString(m) } -func (*MACCommand_ResetInd) ProtoMessage() {} -func (*MACCommand_ResetInd) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 0} -} -func (m *MACCommand_ResetInd) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_ResetInd.Unmarshal(m, b) +type MACCommand_ResetInd_ struct { + ResetInd *MACCommand_ResetInd `protobuf:"bytes,3,opt,name=reset_ind,json=resetInd,proto3,oneof"` } -func (m *MACCommand_ResetInd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_ResetInd.Marshal(b, m, deterministic) + +type MACCommand_ResetConf_ struct { + ResetConf *MACCommand_ResetConf `protobuf:"bytes,4,opt,name=reset_conf,json=resetConf,proto3,oneof"` } -func (m *MACCommand_ResetInd) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_ResetInd.Merge(m, src) + +type MACCommand_LinkCheckAns_ struct { + LinkCheckAns *MACCommand_LinkCheckAns `protobuf:"bytes,5,opt,name=link_check_ans,json=linkCheckAns,proto3,oneof"` } -func (m *MACCommand_ResetInd) XXX_Size() int { - return xxx_messageInfo_MACCommand_ResetInd.Size(m) + +type MACCommand_LinkAdrReq struct { + LinkAdrReq *MACCommand_LinkADRReq `protobuf:"bytes,6,opt,name=link_adr_req,json=linkAdrReq,proto3,oneof"` } -func (m *MACCommand_ResetInd) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_ResetInd.DiscardUnknown(m) + +type MACCommand_LinkAdrAns struct { + LinkAdrAns *MACCommand_LinkADRAns `protobuf:"bytes,7,opt,name=link_adr_ans,json=linkAdrAns,proto3,oneof"` } -var xxx_messageInfo_MACCommand_ResetInd proto.InternalMessageInfo +type MACCommand_DutyCycleReq_ struct { + DutyCycleReq *MACCommand_DutyCycleReq `protobuf:"bytes,8,opt,name=duty_cycle_req,json=dutyCycleReq,proto3,oneof"` +} -func (m *MACCommand_ResetInd) GetMinorVersion() Minor { - if m != nil { - return m.MinorVersion - } - return Minor_MINOR_RFU_0 +type MACCommand_RxParamSetupReq_ struct { + RxParamSetupReq *MACCommand_RxParamSetupReq `protobuf:"bytes,9,opt,name=rx_param_setup_req,json=rxParamSetupReq,proto3,oneof"` } -type MACCommand_ResetConf struct { - MinorVersion Minor `protobuf:"varint,1,opt,name=minor_version,json=minorVersion,proto3,enum=ttn.lorawan.v3.Minor" json:"minor_version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type MACCommand_RxParamSetupAns_ struct { + RxParamSetupAns *MACCommand_RxParamSetupAns `protobuf:"bytes,10,opt,name=rx_param_setup_ans,json=rxParamSetupAns,proto3,oneof"` } -func (m *MACCommand_ResetConf) Reset() { *m = MACCommand_ResetConf{} } -func (m *MACCommand_ResetConf) String() string { return proto.CompactTextString(m) } -func (*MACCommand_ResetConf) ProtoMessage() {} -func (*MACCommand_ResetConf) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 1} +type MACCommand_DevStatusAns_ struct { + DevStatusAns *MACCommand_DevStatusAns `protobuf:"bytes,11,opt,name=dev_status_ans,json=devStatusAns,proto3,oneof"` } -func (m *MACCommand_ResetConf) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_ResetConf.Unmarshal(m, b) + +type MACCommand_NewChannelReq_ struct { + NewChannelReq *MACCommand_NewChannelReq `protobuf:"bytes,12,opt,name=new_channel_req,json=newChannelReq,proto3,oneof"` } -func (m *MACCommand_ResetConf) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_ResetConf.Marshal(b, m, deterministic) + +type MACCommand_NewChannelAns_ struct { + NewChannelAns *MACCommand_NewChannelAns `protobuf:"bytes,13,opt,name=new_channel_ans,json=newChannelAns,proto3,oneof"` } -func (m *MACCommand_ResetConf) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_ResetConf.Merge(m, src) + +type MACCommand_DlChannelReq struct { + DlChannelReq *MACCommand_DLChannelReq `protobuf:"bytes,14,opt,name=dl_channel_req,json=dlChannelReq,proto3,oneof"` } -func (m *MACCommand_ResetConf) XXX_Size() int { - return xxx_messageInfo_MACCommand_ResetConf.Size(m) + +type MACCommand_DlChannelAns struct { + DlChannelAns *MACCommand_DLChannelAns `protobuf:"bytes,15,opt,name=dl_channel_ans,json=dlChannelAns,proto3,oneof"` } -func (m *MACCommand_ResetConf) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_ResetConf.DiscardUnknown(m) + +type MACCommand_RxTimingSetupReq_ struct { + RxTimingSetupReq *MACCommand_RxTimingSetupReq `protobuf:"bytes,16,opt,name=rx_timing_setup_req,json=rxTimingSetupReq,proto3,oneof"` } -var xxx_messageInfo_MACCommand_ResetConf proto.InternalMessageInfo +type MACCommand_TxParamSetupReq_ struct { + TxParamSetupReq *MACCommand_TxParamSetupReq `protobuf:"bytes,17,opt,name=tx_param_setup_req,json=txParamSetupReq,proto3,oneof"` +} -func (m *MACCommand_ResetConf) GetMinorVersion() Minor { - if m != nil { - return m.MinorVersion - } - return Minor_MINOR_RFU_0 +type MACCommand_RekeyInd_ struct { + RekeyInd *MACCommand_RekeyInd `protobuf:"bytes,18,opt,name=rekey_ind,json=rekeyInd,proto3,oneof"` } -type MACCommand_LinkCheckAns struct { - // Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor. - Margin uint32 `protobuf:"varint,1,opt,name=margin,proto3" json:"margin,omitempty"` - GatewayCount uint32 `protobuf:"varint,2,opt,name=gateway_count,json=gatewayCount,proto3" json:"gateway_count,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type MACCommand_RekeyConf_ struct { + RekeyConf *MACCommand_RekeyConf `protobuf:"bytes,19,opt,name=rekey_conf,json=rekeyConf,proto3,oneof"` } -func (m *MACCommand_LinkCheckAns) Reset() { *m = MACCommand_LinkCheckAns{} } -func (m *MACCommand_LinkCheckAns) String() string { return proto.CompactTextString(m) } -func (*MACCommand_LinkCheckAns) ProtoMessage() {} -func (*MACCommand_LinkCheckAns) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 2} +type MACCommand_AdrParamSetupReq struct { + AdrParamSetupReq *MACCommand_ADRParamSetupReq `protobuf:"bytes,20,opt,name=adr_param_setup_req,json=adrParamSetupReq,proto3,oneof"` +} + +type MACCommand_DeviceTimeAns_ struct { + DeviceTimeAns *MACCommand_DeviceTimeAns `protobuf:"bytes,21,opt,name=device_time_ans,json=deviceTimeAns,proto3,oneof"` } -func (m *MACCommand_LinkCheckAns) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_LinkCheckAns.Unmarshal(m, b) + +type MACCommand_ForceRejoinReq_ struct { + ForceRejoinReq *MACCommand_ForceRejoinReq `protobuf:"bytes,22,opt,name=force_rejoin_req,json=forceRejoinReq,proto3,oneof"` } -func (m *MACCommand_LinkCheckAns) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_LinkCheckAns.Marshal(b, m, deterministic) + +type MACCommand_RejoinParamSetupReq_ struct { + RejoinParamSetupReq *MACCommand_RejoinParamSetupReq `protobuf:"bytes,23,opt,name=rejoin_param_setup_req,json=rejoinParamSetupReq,proto3,oneof"` } -func (m *MACCommand_LinkCheckAns) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_LinkCheckAns.Merge(m, src) + +type MACCommand_RejoinParamSetupAns_ struct { + RejoinParamSetupAns *MACCommand_RejoinParamSetupAns `protobuf:"bytes,24,opt,name=rejoin_param_setup_ans,json=rejoinParamSetupAns,proto3,oneof"` } -func (m *MACCommand_LinkCheckAns) XXX_Size() int { - return xxx_messageInfo_MACCommand_LinkCheckAns.Size(m) + +type MACCommand_PingSlotInfoReq_ struct { + PingSlotInfoReq *MACCommand_PingSlotInfoReq `protobuf:"bytes,25,opt,name=ping_slot_info_req,json=pingSlotInfoReq,proto3,oneof"` } -func (m *MACCommand_LinkCheckAns) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_LinkCheckAns.DiscardUnknown(m) + +type MACCommand_PingSlotChannelReq_ struct { + PingSlotChannelReq *MACCommand_PingSlotChannelReq `protobuf:"bytes,26,opt,name=ping_slot_channel_req,json=pingSlotChannelReq,proto3,oneof"` } -var xxx_messageInfo_MACCommand_LinkCheckAns proto.InternalMessageInfo +type MACCommand_PingSlotChannelAns_ struct { + PingSlotChannelAns *MACCommand_PingSlotChannelAns `protobuf:"bytes,27,opt,name=ping_slot_channel_ans,json=pingSlotChannelAns,proto3,oneof"` +} -func (m *MACCommand_LinkCheckAns) GetMargin() uint32 { - if m != nil { - return m.Margin - } - return 0 +type MACCommand_BeaconTimingAns_ struct { + BeaconTimingAns *MACCommand_BeaconTimingAns `protobuf:"bytes,28,opt,name=beacon_timing_ans,json=beaconTimingAns,proto3,oneof"` } -func (m *MACCommand_LinkCheckAns) GetGatewayCount() uint32 { - if m != nil { - return m.GatewayCount - } - return 0 +type MACCommand_BeaconFreqReq_ struct { + BeaconFreqReq *MACCommand_BeaconFreqReq `protobuf:"bytes,29,opt,name=beacon_freq_req,json=beaconFreqReq,proto3,oneof"` } -type MACCommand_LinkADRReq struct { - DataRateIndex DataRateIndex `protobuf:"varint,1,opt,name=data_rate_index,json=dataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"data_rate_index,omitempty"` - TxPowerIndex uint32 `protobuf:"varint,2,opt,name=tx_power_index,json=txPowerIndex,proto3" json:"tx_power_index,omitempty"` - ChannelMask []bool `protobuf:"varint,3,rep,packed,name=channel_mask,json=channelMask,proto3" json:"channel_mask,omitempty"` - ChannelMaskControl uint32 `protobuf:"varint,5,opt,name=channel_mask_control,json=channelMaskControl,proto3" json:"channel_mask_control,omitempty"` - NbTrans uint32 `protobuf:"varint,6,opt,name=nb_trans,json=nbTrans,proto3" json:"nb_trans,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MACCommand_LinkADRReq) Reset() { *m = MACCommand_LinkADRReq{} } -func (m *MACCommand_LinkADRReq) String() string { return proto.CompactTextString(m) } -func (*MACCommand_LinkADRReq) ProtoMessage() {} -func (*MACCommand_LinkADRReq) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 3} +type MACCommand_BeaconFreqAns_ struct { + BeaconFreqAns *MACCommand_BeaconFreqAns `protobuf:"bytes,30,opt,name=beacon_freq_ans,json=beaconFreqAns,proto3,oneof"` } -func (m *MACCommand_LinkADRReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_LinkADRReq.Unmarshal(m, b) + +type MACCommand_DeviceModeInd_ struct { + DeviceModeInd *MACCommand_DeviceModeInd `protobuf:"bytes,31,opt,name=device_mode_ind,json=deviceModeInd,proto3,oneof"` } -func (m *MACCommand_LinkADRReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_LinkADRReq.Marshal(b, m, deterministic) + +type MACCommand_DeviceModeConf_ struct { + DeviceModeConf *MACCommand_DeviceModeConf `protobuf:"bytes,32,opt,name=device_mode_conf,json=deviceModeConf,proto3,oneof"` } -func (m *MACCommand_LinkADRReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_LinkADRReq.Merge(m, src) + +func (*MACCommand_RawPayload) isMACCommand_Payload() {} + +func (*MACCommand_ResetInd_) isMACCommand_Payload() {} + +func (*MACCommand_ResetConf_) isMACCommand_Payload() {} + +func (*MACCommand_LinkCheckAns_) isMACCommand_Payload() {} + +func (*MACCommand_LinkAdrReq) isMACCommand_Payload() {} + +func (*MACCommand_LinkAdrAns) isMACCommand_Payload() {} + +func (*MACCommand_DutyCycleReq_) isMACCommand_Payload() {} + +func (*MACCommand_RxParamSetupReq_) isMACCommand_Payload() {} + +func (*MACCommand_RxParamSetupAns_) isMACCommand_Payload() {} + +func (*MACCommand_DevStatusAns_) isMACCommand_Payload() {} + +func (*MACCommand_NewChannelReq_) isMACCommand_Payload() {} + +func (*MACCommand_NewChannelAns_) isMACCommand_Payload() {} + +func (*MACCommand_DlChannelReq) isMACCommand_Payload() {} + +func (*MACCommand_DlChannelAns) isMACCommand_Payload() {} + +func (*MACCommand_RxTimingSetupReq_) isMACCommand_Payload() {} + +func (*MACCommand_TxParamSetupReq_) isMACCommand_Payload() {} + +func (*MACCommand_RekeyInd_) isMACCommand_Payload() {} + +func (*MACCommand_RekeyConf_) isMACCommand_Payload() {} + +func (*MACCommand_AdrParamSetupReq) isMACCommand_Payload() {} + +func (*MACCommand_DeviceTimeAns_) isMACCommand_Payload() {} + +func (*MACCommand_ForceRejoinReq_) isMACCommand_Payload() {} + +func (*MACCommand_RejoinParamSetupReq_) isMACCommand_Payload() {} + +func (*MACCommand_RejoinParamSetupAns_) isMACCommand_Payload() {} + +func (*MACCommand_PingSlotInfoReq_) isMACCommand_Payload() {} + +func (*MACCommand_PingSlotChannelReq_) isMACCommand_Payload() {} + +func (*MACCommand_PingSlotChannelAns_) isMACCommand_Payload() {} + +func (*MACCommand_BeaconTimingAns_) isMACCommand_Payload() {} + +func (*MACCommand_BeaconFreqReq_) isMACCommand_Payload() {} + +func (*MACCommand_BeaconFreqAns_) isMACCommand_Payload() {} + +func (*MACCommand_DeviceModeInd_) isMACCommand_Payload() {} + +func (*MACCommand_DeviceModeConf_) isMACCommand_Payload() {} + +type MACCommands struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Commands []*MACCommand `protobuf:"bytes,1,rep,name=commands,proto3" json:"commands,omitempty"` } -func (m *MACCommand_LinkADRReq) XXX_Size() int { - return xxx_messageInfo_MACCommand_LinkADRReq.Size(m) + +func (x *MACCommands) Reset() { + *x = MACCommands{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_LinkADRReq) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_LinkADRReq.DiscardUnknown(m) + +func (x *MACCommands) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_LinkADRReq proto.InternalMessageInfo +func (*MACCommands) ProtoMessage() {} -func (m *MACCommand_LinkADRReq) GetDataRateIndex() DataRateIndex { - if m != nil { - return m.DataRateIndex +func (x *MACCommands) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return DataRateIndex_DATA_RATE_0 + return mi.MessageOf(x) } -func (m *MACCommand_LinkADRReq) GetTxPowerIndex() uint32 { - if m != nil { - return m.TxPowerIndex - } - return 0 +// Deprecated: Use MACCommands.ProtoReflect.Descriptor instead. +func (*MACCommands) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{21} } -func (m *MACCommand_LinkADRReq) GetChannelMask() []bool { - if m != nil { - return m.ChannelMask +func (x *MACCommands) GetCommands() []*MACCommand { + if x != nil { + return x.Commands } return nil } -func (m *MACCommand_LinkADRReq) GetChannelMaskControl() uint32 { - if m != nil { - return m.ChannelMaskControl - } - return 0 +type FrequencyValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` } -func (m *MACCommand_LinkADRReq) GetNbTrans() uint32 { - if m != nil { - return m.NbTrans +func (x *FrequencyValue) Reset() { + *x = FrequencyValue{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -type MACCommand_LinkADRAns struct { - ChannelMaskAck bool `protobuf:"varint,1,opt,name=channel_mask_ack,json=channelMaskAck,proto3" json:"channel_mask_ack,omitempty"` - DataRateIndexAck bool `protobuf:"varint,2,opt,name=data_rate_index_ack,json=dataRateIndexAck,proto3" json:"data_rate_index_ack,omitempty"` - TxPowerIndexAck bool `protobuf:"varint,3,opt,name=tx_power_index_ack,json=txPowerIndexAck,proto3" json:"tx_power_index_ack,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *FrequencyValue) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MACCommand_LinkADRAns) Reset() { *m = MACCommand_LinkADRAns{} } -func (m *MACCommand_LinkADRAns) String() string { return proto.CompactTextString(m) } -func (*MACCommand_LinkADRAns) ProtoMessage() {} -func (*MACCommand_LinkADRAns) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 4} +func (*FrequencyValue) ProtoMessage() {} + +func (x *FrequencyValue) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *MACCommand_LinkADRAns) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_LinkADRAns.Unmarshal(m, b) + +// Deprecated: Use FrequencyValue.ProtoReflect.Descriptor instead. +func (*FrequencyValue) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{22} } -func (m *MACCommand_LinkADRAns) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_LinkADRAns.Marshal(b, m, deterministic) + +func (x *FrequencyValue) GetValue() uint64 { + if x != nil { + return x.Value + } + return 0 } -func (m *MACCommand_LinkADRAns) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_LinkADRAns.Merge(m, src) + +type ZeroableFrequencyValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` } -func (m *MACCommand_LinkADRAns) XXX_Size() int { - return xxx_messageInfo_MACCommand_LinkADRAns.Size(m) + +func (x *ZeroableFrequencyValue) Reset() { + *x = ZeroableFrequencyValue{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_LinkADRAns) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_LinkADRAns.DiscardUnknown(m) + +func (x *ZeroableFrequencyValue) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_LinkADRAns proto.InternalMessageInfo +func (*ZeroableFrequencyValue) ProtoMessage() {} -func (m *MACCommand_LinkADRAns) GetChannelMaskAck() bool { - if m != nil { - return m.ChannelMaskAck +func (x *ZeroableFrequencyValue) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false + return mi.MessageOf(x) } -func (m *MACCommand_LinkADRAns) GetDataRateIndexAck() bool { - if m != nil { - return m.DataRateIndexAck - } - return false +// Deprecated: Use ZeroableFrequencyValue.ProtoReflect.Descriptor instead. +func (*ZeroableFrequencyValue) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{23} } -func (m *MACCommand_LinkADRAns) GetTxPowerIndexAck() bool { - if m != nil { - return m.TxPowerIndexAck +func (x *ZeroableFrequencyValue) GetValue() uint64 { + if x != nil { + return x.Value } - return false + return 0 } -type MACCommand_DutyCycleReq struct { - MaxDutyCycle AggregatedDutyCycle `protobuf:"varint,1,opt,name=max_duty_cycle,json=maxDutyCycle,proto3,enum=ttn.lorawan.v3.AggregatedDutyCycle" json:"max_duty_cycle,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type DataRateOffsetValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MACCommand_DutyCycleReq) Reset() { *m = MACCommand_DutyCycleReq{} } -func (m *MACCommand_DutyCycleReq) String() string { return proto.CompactTextString(m) } -func (*MACCommand_DutyCycleReq) ProtoMessage() {} -func (*MACCommand_DutyCycleReq) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 5} + Value DataRateOffset `protobuf:"varint,1,opt,name=value,proto3,enum=ttn.lorawan.v3.DataRateOffset" json:"value,omitempty"` } -func (m *MACCommand_DutyCycleReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_DutyCycleReq.Unmarshal(m, b) -} -func (m *MACCommand_DutyCycleReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_DutyCycleReq.Marshal(b, m, deterministic) -} -func (m *MACCommand_DutyCycleReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_DutyCycleReq.Merge(m, src) -} -func (m *MACCommand_DutyCycleReq) XXX_Size() int { - return xxx_messageInfo_MACCommand_DutyCycleReq.Size(m) + +func (x *DataRateOffsetValue) Reset() { + *x = DataRateOffsetValue{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_DutyCycleReq) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_DutyCycleReq.DiscardUnknown(m) + +func (x *DataRateOffsetValue) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_DutyCycleReq proto.InternalMessageInfo +func (*DataRateOffsetValue) ProtoMessage() {} -func (m *MACCommand_DutyCycleReq) GetMaxDutyCycle() AggregatedDutyCycle { - if m != nil { - return m.MaxDutyCycle +func (x *DataRateOffsetValue) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return AggregatedDutyCycle_DUTY_CYCLE_1 + return mi.MessageOf(x) } -type MACCommand_RxParamSetupReq struct { - Rx2DataRateIndex DataRateIndex `protobuf:"varint,1,opt,name=rx2_data_rate_index,json=rx2DataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"rx2_data_rate_index,omitempty"` - Rx1DataRateOffset DataRateOffset `protobuf:"varint,2,opt,name=rx1_data_rate_offset,json=rx1DataRateOffset,proto3,enum=ttn.lorawan.v3.DataRateOffset" json:"rx1_data_rate_offset,omitempty"` - Rx2Frequency uint64 `protobuf:"varint,3,opt,name=rx2_frequency,json=rx2Frequency,proto3" json:"rx2_frequency,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use DataRateOffsetValue.ProtoReflect.Descriptor instead. +func (*DataRateOffsetValue) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{24} } -func (m *MACCommand_RxParamSetupReq) Reset() { *m = MACCommand_RxParamSetupReq{} } -func (m *MACCommand_RxParamSetupReq) String() string { return proto.CompactTextString(m) } -func (*MACCommand_RxParamSetupReq) ProtoMessage() {} -func (*MACCommand_RxParamSetupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 6} -} -func (m *MACCommand_RxParamSetupReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_RxParamSetupReq.Unmarshal(m, b) +func (x *DataRateOffsetValue) GetValue() DataRateOffset { + if x != nil { + return x.Value + } + return DataRateOffset_DATA_RATE_OFFSET_0 } -func (m *MACCommand_RxParamSetupReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_RxParamSetupReq.Marshal(b, m, deterministic) + +type DataRateIndexValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value DataRateIndex `protobuf:"varint,1,opt,name=value,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"value,omitempty"` } -func (m *MACCommand_RxParamSetupReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_RxParamSetupReq.Merge(m, src) + +func (x *DataRateIndexValue) Reset() { + *x = DataRateIndexValue{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_RxParamSetupReq) XXX_Size() int { - return xxx_messageInfo_MACCommand_RxParamSetupReq.Size(m) + +func (x *DataRateIndexValue) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MACCommand_RxParamSetupReq) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_RxParamSetupReq.DiscardUnknown(m) + +func (*DataRateIndexValue) ProtoMessage() {} + +func (x *DataRateIndexValue) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MACCommand_RxParamSetupReq proto.InternalMessageInfo +// Deprecated: Use DataRateIndexValue.ProtoReflect.Descriptor instead. +func (*DataRateIndexValue) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{25} +} -func (m *MACCommand_RxParamSetupReq) GetRx2DataRateIndex() DataRateIndex { - if m != nil { - return m.Rx2DataRateIndex +func (x *DataRateIndexValue) GetValue() DataRateIndex { + if x != nil { + return x.Value } return DataRateIndex_DATA_RATE_0 } -func (m *MACCommand_RxParamSetupReq) GetRx1DataRateOffset() DataRateOffset { - if m != nil { - return m.Rx1DataRateOffset - } - return DataRateOffset_DATA_RATE_OFFSET_0 +type PingSlotPeriodValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value PingSlotPeriod `protobuf:"varint,1,opt,name=value,proto3,enum=ttn.lorawan.v3.PingSlotPeriod" json:"value,omitempty"` } -func (m *MACCommand_RxParamSetupReq) GetRx2Frequency() uint64 { - if m != nil { - return m.Rx2Frequency +func (x *PingSlotPeriodValue) Reset() { + *x = PingSlotPeriodValue{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -type MACCommand_RxParamSetupAns struct { - Rx2DataRateIndexAck bool `protobuf:"varint,1,opt,name=rx2_data_rate_index_ack,json=rx2DataRateIndexAck,proto3" json:"rx2_data_rate_index_ack,omitempty"` - Rx1DataRateOffsetAck bool `protobuf:"varint,2,opt,name=rx1_data_rate_offset_ack,json=rx1DataRateOffsetAck,proto3" json:"rx1_data_rate_offset_ack,omitempty"` - Rx2FrequencyAck bool `protobuf:"varint,3,opt,name=rx2_frequency_ack,json=rx2FrequencyAck,proto3" json:"rx2_frequency_ack,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *PingSlotPeriodValue) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MACCommand_RxParamSetupAns) Reset() { *m = MACCommand_RxParamSetupAns{} } -func (m *MACCommand_RxParamSetupAns) String() string { return proto.CompactTextString(m) } -func (*MACCommand_RxParamSetupAns) ProtoMessage() {} -func (*MACCommand_RxParamSetupAns) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 7} +func (*PingSlotPeriodValue) ProtoMessage() {} + +func (x *PingSlotPeriodValue) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *MACCommand_RxParamSetupAns) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_RxParamSetupAns.Unmarshal(m, b) + +// Deprecated: Use PingSlotPeriodValue.ProtoReflect.Descriptor instead. +func (*PingSlotPeriodValue) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{26} } -func (m *MACCommand_RxParamSetupAns) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_RxParamSetupAns.Marshal(b, m, deterministic) + +func (x *PingSlotPeriodValue) GetValue() PingSlotPeriod { + if x != nil { + return x.Value + } + return PingSlotPeriod_PING_EVERY_1S } -func (m *MACCommand_RxParamSetupAns) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_RxParamSetupAns.Merge(m, src) + +type AggregatedDutyCycleValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value AggregatedDutyCycle `protobuf:"varint,1,opt,name=value,proto3,enum=ttn.lorawan.v3.AggregatedDutyCycle" json:"value,omitempty"` } -func (m *MACCommand_RxParamSetupAns) XXX_Size() int { - return xxx_messageInfo_MACCommand_RxParamSetupAns.Size(m) + +func (x *AggregatedDutyCycleValue) Reset() { + *x = AggregatedDutyCycleValue{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_RxParamSetupAns) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_RxParamSetupAns.DiscardUnknown(m) + +func (x *AggregatedDutyCycleValue) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_RxParamSetupAns proto.InternalMessageInfo +func (*AggregatedDutyCycleValue) ProtoMessage() {} -func (m *MACCommand_RxParamSetupAns) GetRx2DataRateIndexAck() bool { - if m != nil { - return m.Rx2DataRateIndexAck +func (x *AggregatedDutyCycleValue) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false + return mi.MessageOf(x) } -func (m *MACCommand_RxParamSetupAns) GetRx1DataRateOffsetAck() bool { - if m != nil { - return m.Rx1DataRateOffsetAck - } - return false +// Deprecated: Use AggregatedDutyCycleValue.ProtoReflect.Descriptor instead. +func (*AggregatedDutyCycleValue) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{27} } -func (m *MACCommand_RxParamSetupAns) GetRx2FrequencyAck() bool { - if m != nil { - return m.Rx2FrequencyAck +func (x *AggregatedDutyCycleValue) GetValue() AggregatedDutyCycle { + if x != nil { + return x.Value } - return false + return AggregatedDutyCycle_DUTY_CYCLE_1 } -type MACCommand_DevStatusAns struct { - // Device battery status. - // 0 indicates that the device is connected to an external power source. - // 1..254 indicates a battery level. - // 255 indicates that the device was not able to measure the battery level. - Battery uint32 `protobuf:"varint,1,opt,name=battery,proto3" json:"battery,omitempty"` - // SNR of the last downlink (dB; [-32, +31]). - Margin int32 `protobuf:"varint,2,opt,name=margin,proto3" json:"margin,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type RxDelayValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MACCommand_DevStatusAns) Reset() { *m = MACCommand_DevStatusAns{} } -func (m *MACCommand_DevStatusAns) String() string { return proto.CompactTextString(m) } -func (*MACCommand_DevStatusAns) ProtoMessage() {} -func (*MACCommand_DevStatusAns) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 8} -} -func (m *MACCommand_DevStatusAns) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_DevStatusAns.Unmarshal(m, b) + Value RxDelay `protobuf:"varint,1,opt,name=value,proto3,enum=ttn.lorawan.v3.RxDelay" json:"value,omitempty"` } -func (m *MACCommand_DevStatusAns) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_DevStatusAns.Marshal(b, m, deterministic) -} -func (m *MACCommand_DevStatusAns) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_DevStatusAns.Merge(m, src) -} -func (m *MACCommand_DevStatusAns) XXX_Size() int { - return xxx_messageInfo_MACCommand_DevStatusAns.Size(m) + +func (x *RxDelayValue) Reset() { + *x = RxDelayValue{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_DevStatusAns) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_DevStatusAns.DiscardUnknown(m) + +func (x *RxDelayValue) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_DevStatusAns proto.InternalMessageInfo +func (*RxDelayValue) ProtoMessage() {} -func (m *MACCommand_DevStatusAns) GetBattery() uint32 { - if m != nil { - return m.Battery +func (x *RxDelayValue) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (m *MACCommand_DevStatusAns) GetMargin() int32 { - if m != nil { - return m.Margin - } - return 0 +// Deprecated: Use RxDelayValue.ProtoReflect.Descriptor instead. +func (*RxDelayValue) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{28} } -type MACCommand_NewChannelReq struct { - ChannelIndex uint32 `protobuf:"varint,1,opt,name=channel_index,json=channelIndex,proto3" json:"channel_index,omitempty"` - Frequency uint64 `protobuf:"varint,2,opt,name=frequency,proto3" json:"frequency,omitempty"` - MinDataRateIndex DataRateIndex `protobuf:"varint,3,opt,name=min_data_rate_index,json=minDataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"min_data_rate_index,omitempty"` - MaxDataRateIndex DataRateIndex `protobuf:"varint,4,opt,name=max_data_rate_index,json=maxDataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"max_data_rate_index,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MACCommand_NewChannelReq) Reset() { *m = MACCommand_NewChannelReq{} } -func (m *MACCommand_NewChannelReq) String() string { return proto.CompactTextString(m) } -func (*MACCommand_NewChannelReq) ProtoMessage() {} -func (*MACCommand_NewChannelReq) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 9} -} -func (m *MACCommand_NewChannelReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_NewChannelReq.Unmarshal(m, b) -} -func (m *MACCommand_NewChannelReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_NewChannelReq.Marshal(b, m, deterministic) +func (x *RxDelayValue) GetValue() RxDelay { + if x != nil { + return x.Value + } + return RxDelay_RX_DELAY_0 } -func (m *MACCommand_NewChannelReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_NewChannelReq.Merge(m, src) + +type ADRAckLimitExponentValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value ADRAckLimitExponent `protobuf:"varint,1,opt,name=value,proto3,enum=ttn.lorawan.v3.ADRAckLimitExponent" json:"value,omitempty"` } -func (m *MACCommand_NewChannelReq) XXX_Size() int { - return xxx_messageInfo_MACCommand_NewChannelReq.Size(m) + +func (x *ADRAckLimitExponentValue) Reset() { + *x = ADRAckLimitExponentValue{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_NewChannelReq) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_NewChannelReq.DiscardUnknown(m) + +func (x *ADRAckLimitExponentValue) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_NewChannelReq proto.InternalMessageInfo +func (*ADRAckLimitExponentValue) ProtoMessage() {} -func (m *MACCommand_NewChannelReq) GetChannelIndex() uint32 { - if m != nil { - return m.ChannelIndex +func (x *ADRAckLimitExponentValue) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (m *MACCommand_NewChannelReq) GetFrequency() uint64 { - if m != nil { - return m.Frequency - } - return 0 +// Deprecated: Use ADRAckLimitExponentValue.ProtoReflect.Descriptor instead. +func (*ADRAckLimitExponentValue) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{29} } -func (m *MACCommand_NewChannelReq) GetMinDataRateIndex() DataRateIndex { - if m != nil { - return m.MinDataRateIndex +func (x *ADRAckLimitExponentValue) GetValue() ADRAckLimitExponent { + if x != nil { + return x.Value } - return DataRateIndex_DATA_RATE_0 + return ADRAckLimitExponent_ADR_ACK_LIMIT_1 } -func (m *MACCommand_NewChannelReq) GetMaxDataRateIndex() DataRateIndex { - if m != nil { - return m.MaxDataRateIndex +type ADRAckDelayExponentValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value ADRAckDelayExponent `protobuf:"varint,1,opt,name=value,proto3,enum=ttn.lorawan.v3.ADRAckDelayExponent" json:"value,omitempty"` +} + +func (x *ADRAckDelayExponentValue) Reset() { + *x = ADRAckDelayExponentValue{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return DataRateIndex_DATA_RATE_0 } -type MACCommand_NewChannelAns struct { - FrequencyAck bool `protobuf:"varint,1,opt,name=frequency_ack,json=frequencyAck,proto3" json:"frequency_ack,omitempty"` - DataRateAck bool `protobuf:"varint,2,opt,name=data_rate_ack,json=dataRateAck,proto3" json:"data_rate_ack,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *ADRAckDelayExponentValue) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MACCommand_NewChannelAns) Reset() { *m = MACCommand_NewChannelAns{} } -func (m *MACCommand_NewChannelAns) String() string { return proto.CompactTextString(m) } -func (*MACCommand_NewChannelAns) ProtoMessage() {} -func (*MACCommand_NewChannelAns) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 10} +func (*ADRAckDelayExponentValue) ProtoMessage() {} + +func (x *ADRAckDelayExponentValue) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *MACCommand_NewChannelAns) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_NewChannelAns.Unmarshal(m, b) + +// Deprecated: Use ADRAckDelayExponentValue.ProtoReflect.Descriptor instead. +func (*ADRAckDelayExponentValue) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{30} } -func (m *MACCommand_NewChannelAns) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_NewChannelAns.Marshal(b, m, deterministic) + +func (x *ADRAckDelayExponentValue) GetValue() ADRAckDelayExponent { + if x != nil { + return x.Value + } + return ADRAckDelayExponent_ADR_ACK_DELAY_1 } -func (m *MACCommand_NewChannelAns) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_NewChannelAns.Merge(m, src) + +type DeviceEIRPValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value DeviceEIRP `protobuf:"varint,1,opt,name=value,proto3,enum=ttn.lorawan.v3.DeviceEIRP" json:"value,omitempty"` } -func (m *MACCommand_NewChannelAns) XXX_Size() int { - return xxx_messageInfo_MACCommand_NewChannelAns.Size(m) + +func (x *DeviceEIRPValue) Reset() { + *x = DeviceEIRPValue{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_NewChannelAns) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_NewChannelAns.DiscardUnknown(m) + +func (x *DeviceEIRPValue) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_NewChannelAns proto.InternalMessageInfo +func (*DeviceEIRPValue) ProtoMessage() {} -func (m *MACCommand_NewChannelAns) GetFrequencyAck() bool { - if m != nil { - return m.FrequencyAck +func (x *DeviceEIRPValue) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false + return mi.MessageOf(x) } -func (m *MACCommand_NewChannelAns) GetDataRateAck() bool { - if m != nil { - return m.DataRateAck - } - return false +// Deprecated: Use DeviceEIRPValue.ProtoReflect.Descriptor instead. +func (*DeviceEIRPValue) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{31} } -type MACCommand_DLChannelReq struct { - ChannelIndex uint32 `protobuf:"varint,1,opt,name=channel_index,json=channelIndex,proto3" json:"channel_index,omitempty"` - Frequency uint64 `protobuf:"varint,2,opt,name=frequency,proto3" json:"frequency,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *DeviceEIRPValue) GetValue() DeviceEIRP { + if x != nil { + return x.Value + } + return DeviceEIRP_DEVICE_EIRP_8 } -func (m *MACCommand_DLChannelReq) Reset() { *m = MACCommand_DLChannelReq{} } -func (m *MACCommand_DLChannelReq) String() string { return proto.CompactTextString(m) } -func (*MACCommand_DLChannelReq) ProtoMessage() {} -func (*MACCommand_DLChannelReq) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 11} -} -func (m *MACCommand_DLChannelReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_DLChannelReq.Unmarshal(m, b) -} -func (m *MACCommand_DLChannelReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_DLChannelReq.Marshal(b, m, deterministic) +// Transmission settings for downlink. +type TxSettings_Downlink struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Index of the antenna on which the uplink was received and/or downlink must be sent. + AntennaIndex uint32 `protobuf:"varint,1,opt,name=antenna_index,json=antennaIndex,proto3" json:"antenna_index,omitempty"` + // Transmission power (dBm). Only on downlink. + TxPower float32 `protobuf:"fixed32,2,opt,name=tx_power,json=txPower,proto3" json:"tx_power,omitempty"` + // Invert LoRa polarization; false for LoRaWAN uplink, true for downlink. + InvertPolarization bool `protobuf:"varint,3,opt,name=invert_polarization,json=invertPolarization,proto3" json:"invert_polarization,omitempty"` } -func (m *MACCommand_DLChannelReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_DLChannelReq.Merge(m, src) + +func (x *TxSettings_Downlink) Reset() { + *x = TxSettings_Downlink{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_DLChannelReq) XXX_Size() int { - return xxx_messageInfo_MACCommand_DLChannelReq.Size(m) + +func (x *TxSettings_Downlink) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MACCommand_DLChannelReq) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_DLChannelReq.DiscardUnknown(m) + +func (*TxSettings_Downlink) ProtoMessage() {} + +func (x *TxSettings_Downlink) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MACCommand_DLChannelReq proto.InternalMessageInfo +// Deprecated: Use TxSettings_Downlink.ProtoReflect.Descriptor instead. +func (*TxSettings_Downlink) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{14, 0} +} -func (m *MACCommand_DLChannelReq) GetChannelIndex() uint32 { - if m != nil { - return m.ChannelIndex +func (x *TxSettings_Downlink) GetAntennaIndex() uint32 { + if x != nil { + return x.AntennaIndex } return 0 } -func (m *MACCommand_DLChannelReq) GetFrequency() uint64 { - if m != nil { - return m.Frequency +func (x *TxSettings_Downlink) GetTxPower() float32 { + if x != nil { + return x.TxPower } return 0 } -type MACCommand_DLChannelAns struct { - ChannelIndexAck bool `protobuf:"varint,1,opt,name=channel_index_ack,json=channelIndexAck,proto3" json:"channel_index_ack,omitempty"` - FrequencyAck bool `protobuf:"varint,2,opt,name=frequency_ack,json=frequencyAck,proto3" json:"frequency_ack,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *TxSettings_Downlink) GetInvertPolarization() bool { + if x != nil { + return x.InvertPolarization + } + return false } -func (m *MACCommand_DLChannelAns) Reset() { *m = MACCommand_DLChannelAns{} } -func (m *MACCommand_DLChannelAns) String() string { return proto.CompactTextString(m) } -func (*MACCommand_DLChannelAns) ProtoMessage() {} -func (*MACCommand_DLChannelAns) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 12} +type MACCommand_ResetInd struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MinorVersion Minor `protobuf:"varint,1,opt,name=minor_version,json=minorVersion,proto3,enum=ttn.lorawan.v3.Minor" json:"minor_version,omitempty"` } -func (m *MACCommand_DLChannelAns) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_DLChannelAns.Unmarshal(m, b) + +func (x *MACCommand_ResetInd) Reset() { + *x = MACCommand_ResetInd{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_DLChannelAns) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_DLChannelAns.Marshal(b, m, deterministic) + +func (x *MACCommand_ResetInd) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MACCommand_DLChannelAns) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_DLChannelAns.Merge(m, src) + +func (*MACCommand_ResetInd) ProtoMessage() {} + +func (x *MACCommand_ResetInd) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *MACCommand_DLChannelAns) XXX_Size() int { - return xxx_messageInfo_MACCommand_DLChannelAns.Size(m) + +// Deprecated: Use MACCommand_ResetInd.ProtoReflect.Descriptor instead. +func (*MACCommand_ResetInd) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 0} } -func (m *MACCommand_DLChannelAns) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_DLChannelAns.DiscardUnknown(m) + +func (x *MACCommand_ResetInd) GetMinorVersion() Minor { + if x != nil { + return x.MinorVersion + } + return Minor_MINOR_RFU_0 } -var xxx_messageInfo_MACCommand_DLChannelAns proto.InternalMessageInfo +type MACCommand_ResetConf struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MACCommand_DLChannelAns) GetChannelIndexAck() bool { - if m != nil { - return m.ChannelIndexAck - } - return false + MinorVersion Minor `protobuf:"varint,1,opt,name=minor_version,json=minorVersion,proto3,enum=ttn.lorawan.v3.Minor" json:"minor_version,omitempty"` } -func (m *MACCommand_DLChannelAns) GetFrequencyAck() bool { - if m != nil { - return m.FrequencyAck +func (x *MACCommand_ResetConf) Reset() { + *x = MACCommand_ResetConf{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return false } -type MACCommand_RxTimingSetupReq struct { - Delay RxDelay `protobuf:"varint,1,opt,name=delay,proto3,enum=ttn.lorawan.v3.RxDelay" json:"delay,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *MACCommand_ResetConf) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MACCommand_RxTimingSetupReq) Reset() { *m = MACCommand_RxTimingSetupReq{} } -func (m *MACCommand_RxTimingSetupReq) String() string { return proto.CompactTextString(m) } -func (*MACCommand_RxTimingSetupReq) ProtoMessage() {} -func (*MACCommand_RxTimingSetupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 13} +func (*MACCommand_ResetConf) ProtoMessage() {} + +func (x *MACCommand_ResetConf) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *MACCommand_RxTimingSetupReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_RxTimingSetupReq.Unmarshal(m, b) + +// Deprecated: Use MACCommand_ResetConf.ProtoReflect.Descriptor instead. +func (*MACCommand_ResetConf) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 1} } -func (m *MACCommand_RxTimingSetupReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_RxTimingSetupReq.Marshal(b, m, deterministic) + +func (x *MACCommand_ResetConf) GetMinorVersion() Minor { + if x != nil { + return x.MinorVersion + } + return Minor_MINOR_RFU_0 } -func (m *MACCommand_RxTimingSetupReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_RxTimingSetupReq.Merge(m, src) + +type MACCommand_LinkCheckAns struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor. + Margin uint32 `protobuf:"varint,1,opt,name=margin,proto3" json:"margin,omitempty"` + GatewayCount uint32 `protobuf:"varint,2,opt,name=gateway_count,json=gatewayCount,proto3" json:"gateway_count,omitempty"` } -func (m *MACCommand_RxTimingSetupReq) XXX_Size() int { - return xxx_messageInfo_MACCommand_RxTimingSetupReq.Size(m) + +func (x *MACCommand_LinkCheckAns) Reset() { + *x = MACCommand_LinkCheckAns{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_RxTimingSetupReq) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_RxTimingSetupReq.DiscardUnknown(m) + +func (x *MACCommand_LinkCheckAns) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_RxTimingSetupReq proto.InternalMessageInfo +func (*MACCommand_LinkCheckAns) ProtoMessage() {} -func (m *MACCommand_RxTimingSetupReq) GetDelay() RxDelay { - if m != nil { - return m.Delay +func (x *MACCommand_LinkCheckAns) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return RxDelay_RX_DELAY_0 + return mi.MessageOf(x) } -type MACCommand_TxParamSetupReq struct { - // Indicates the maximum EIRP value in dBm, indexed by the following vector: - // [ 8 10 12 13 14 16 18 20 21 24 26 27 29 30 33 36 ] - MaxEirpIndex DeviceEIRP `protobuf:"varint,1,opt,name=max_eirp_index,json=maxEirpIndex,proto3,enum=ttn.lorawan.v3.DeviceEIRP" json:"max_eirp_index,omitempty"` - UplinkDwellTime bool `protobuf:"varint,2,opt,name=uplink_dwell_time,json=uplinkDwellTime,proto3" json:"uplink_dwell_time,omitempty"` - DownlinkDwellTime bool `protobuf:"varint,3,opt,name=downlink_dwell_time,json=downlinkDwellTime,proto3" json:"downlink_dwell_time,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use MACCommand_LinkCheckAns.ProtoReflect.Descriptor instead. +func (*MACCommand_LinkCheckAns) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 2} } -func (m *MACCommand_TxParamSetupReq) Reset() { *m = MACCommand_TxParamSetupReq{} } -func (m *MACCommand_TxParamSetupReq) String() string { return proto.CompactTextString(m) } -func (*MACCommand_TxParamSetupReq) ProtoMessage() {} -func (*MACCommand_TxParamSetupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 14} -} -func (m *MACCommand_TxParamSetupReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_TxParamSetupReq.Unmarshal(m, b) +func (x *MACCommand_LinkCheckAns) GetMargin() uint32 { + if x != nil { + return x.Margin + } + return 0 } -func (m *MACCommand_TxParamSetupReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_TxParamSetupReq.Marshal(b, m, deterministic) + +func (x *MACCommand_LinkCheckAns) GetGatewayCount() uint32 { + if x != nil { + return x.GatewayCount + } + return 0 } -func (m *MACCommand_TxParamSetupReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_TxParamSetupReq.Merge(m, src) + +type MACCommand_LinkADRReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DataRateIndex DataRateIndex `protobuf:"varint,1,opt,name=data_rate_index,json=dataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"data_rate_index,omitempty"` + TxPowerIndex uint32 `protobuf:"varint,2,opt,name=tx_power_index,json=txPowerIndex,proto3" json:"tx_power_index,omitempty"` + ChannelMask []bool `protobuf:"varint,3,rep,packed,name=channel_mask,json=channelMask,proto3" json:"channel_mask,omitempty"` + ChannelMaskControl uint32 `protobuf:"varint,5,opt,name=channel_mask_control,json=channelMaskControl,proto3" json:"channel_mask_control,omitempty"` + NbTrans uint32 `protobuf:"varint,6,opt,name=nb_trans,json=nbTrans,proto3" json:"nb_trans,omitempty"` } -func (m *MACCommand_TxParamSetupReq) XXX_Size() int { - return xxx_messageInfo_MACCommand_TxParamSetupReq.Size(m) + +func (x *MACCommand_LinkADRReq) Reset() { + *x = MACCommand_LinkADRReq{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_TxParamSetupReq) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_TxParamSetupReq.DiscardUnknown(m) + +func (x *MACCommand_LinkADRReq) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_TxParamSetupReq proto.InternalMessageInfo +func (*MACCommand_LinkADRReq) ProtoMessage() {} -func (m *MACCommand_TxParamSetupReq) GetMaxEirpIndex() DeviceEIRP { - if m != nil { - return m.MaxEirpIndex +func (x *MACCommand_LinkADRReq) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return DeviceEIRP_DEVICE_EIRP_8 + return mi.MessageOf(x) } -func (m *MACCommand_TxParamSetupReq) GetUplinkDwellTime() bool { - if m != nil { - return m.UplinkDwellTime - } - return false +// Deprecated: Use MACCommand_LinkADRReq.ProtoReflect.Descriptor instead. +func (*MACCommand_LinkADRReq) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 3} } -func (m *MACCommand_TxParamSetupReq) GetDownlinkDwellTime() bool { - if m != nil { - return m.DownlinkDwellTime +func (x *MACCommand_LinkADRReq) GetDataRateIndex() DataRateIndex { + if x != nil { + return x.DataRateIndex } - return false + return DataRateIndex_DATA_RATE_0 } -type MACCommand_RekeyInd struct { - MinorVersion Minor `protobuf:"varint,1,opt,name=minor_version,json=minorVersion,proto3,enum=ttn.lorawan.v3.Minor" json:"minor_version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *MACCommand_LinkADRReq) GetTxPowerIndex() uint32 { + if x != nil { + return x.TxPowerIndex + } + return 0 } -func (m *MACCommand_RekeyInd) Reset() { *m = MACCommand_RekeyInd{} } -func (m *MACCommand_RekeyInd) String() string { return proto.CompactTextString(m) } -func (*MACCommand_RekeyInd) ProtoMessage() {} -func (*MACCommand_RekeyInd) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 15} +func (x *MACCommand_LinkADRReq) GetChannelMask() []bool { + if x != nil { + return x.ChannelMask + } + return nil } -func (m *MACCommand_RekeyInd) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_RekeyInd.Unmarshal(m, b) + +func (x *MACCommand_LinkADRReq) GetChannelMaskControl() uint32 { + if x != nil { + return x.ChannelMaskControl + } + return 0 } -func (m *MACCommand_RekeyInd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_RekeyInd.Marshal(b, m, deterministic) + +func (x *MACCommand_LinkADRReq) GetNbTrans() uint32 { + if x != nil { + return x.NbTrans + } + return 0 } -func (m *MACCommand_RekeyInd) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_RekeyInd.Merge(m, src) + +type MACCommand_LinkADRAns struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChannelMaskAck bool `protobuf:"varint,1,opt,name=channel_mask_ack,json=channelMaskAck,proto3" json:"channel_mask_ack,omitempty"` + DataRateIndexAck bool `protobuf:"varint,2,opt,name=data_rate_index_ack,json=dataRateIndexAck,proto3" json:"data_rate_index_ack,omitempty"` + TxPowerIndexAck bool `protobuf:"varint,3,opt,name=tx_power_index_ack,json=txPowerIndexAck,proto3" json:"tx_power_index_ack,omitempty"` } -func (m *MACCommand_RekeyInd) XXX_Size() int { - return xxx_messageInfo_MACCommand_RekeyInd.Size(m) + +func (x *MACCommand_LinkADRAns) Reset() { + *x = MACCommand_LinkADRAns{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_RekeyInd) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_RekeyInd.DiscardUnknown(m) + +func (x *MACCommand_LinkADRAns) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_RekeyInd proto.InternalMessageInfo +func (*MACCommand_LinkADRAns) ProtoMessage() {} -func (m *MACCommand_RekeyInd) GetMinorVersion() Minor { - if m != nil { - return m.MinorVersion +func (x *MACCommand_LinkADRAns) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return Minor_MINOR_RFU_0 + return mi.MessageOf(x) } -type MACCommand_RekeyConf struct { - MinorVersion Minor `protobuf:"varint,1,opt,name=minor_version,json=minorVersion,proto3,enum=ttn.lorawan.v3.Minor" json:"minor_version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use MACCommand_LinkADRAns.ProtoReflect.Descriptor instead. +func (*MACCommand_LinkADRAns) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 4} } -func (m *MACCommand_RekeyConf) Reset() { *m = MACCommand_RekeyConf{} } -func (m *MACCommand_RekeyConf) String() string { return proto.CompactTextString(m) } -func (*MACCommand_RekeyConf) ProtoMessage() {} -func (*MACCommand_RekeyConf) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 16} +func (x *MACCommand_LinkADRAns) GetChannelMaskAck() bool { + if x != nil { + return x.ChannelMaskAck + } + return false } -func (m *MACCommand_RekeyConf) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_RekeyConf.Unmarshal(m, b) + +func (x *MACCommand_LinkADRAns) GetDataRateIndexAck() bool { + if x != nil { + return x.DataRateIndexAck + } + return false } -func (m *MACCommand_RekeyConf) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_RekeyConf.Marshal(b, m, deterministic) + +func (x *MACCommand_LinkADRAns) GetTxPowerIndexAck() bool { + if x != nil { + return x.TxPowerIndexAck + } + return false } -func (m *MACCommand_RekeyConf) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_RekeyConf.Merge(m, src) + +type MACCommand_DutyCycleReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MaxDutyCycle AggregatedDutyCycle `protobuf:"varint,1,opt,name=max_duty_cycle,json=maxDutyCycle,proto3,enum=ttn.lorawan.v3.AggregatedDutyCycle" json:"max_duty_cycle,omitempty"` } -func (m *MACCommand_RekeyConf) XXX_Size() int { - return xxx_messageInfo_MACCommand_RekeyConf.Size(m) + +func (x *MACCommand_DutyCycleReq) Reset() { + *x = MACCommand_DutyCycleReq{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_RekeyConf) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_RekeyConf.DiscardUnknown(m) + +func (x *MACCommand_DutyCycleReq) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_RekeyConf proto.InternalMessageInfo +func (*MACCommand_DutyCycleReq) ProtoMessage() {} -func (m *MACCommand_RekeyConf) GetMinorVersion() Minor { - if m != nil { - return m.MinorVersion +func (x *MACCommand_DutyCycleReq) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return Minor_MINOR_RFU_0 + return mi.MessageOf(x) } -type MACCommand_ADRParamSetupReq struct { - // Exponent e that configures the ADR_ACK_LIMIT = 2^e messages. - AdrAckLimitExponent ADRAckLimitExponent `protobuf:"varint,1,opt,name=adr_ack_limit_exponent,json=adrAckLimitExponent,proto3,enum=ttn.lorawan.v3.ADRAckLimitExponent" json:"adr_ack_limit_exponent,omitempty"` - // Exponent e that configures the ADR_ACK_DELAY = 2^e messages. - AdrAckDelayExponent ADRAckDelayExponent `protobuf:"varint,2,opt,name=adr_ack_delay_exponent,json=adrAckDelayExponent,proto3,enum=ttn.lorawan.v3.ADRAckDelayExponent" json:"adr_ack_delay_exponent,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use MACCommand_DutyCycleReq.ProtoReflect.Descriptor instead. +func (*MACCommand_DutyCycleReq) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 5} } -func (m *MACCommand_ADRParamSetupReq) Reset() { *m = MACCommand_ADRParamSetupReq{} } -func (m *MACCommand_ADRParamSetupReq) String() string { return proto.CompactTextString(m) } -func (*MACCommand_ADRParamSetupReq) ProtoMessage() {} -func (*MACCommand_ADRParamSetupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 17} -} -func (m *MACCommand_ADRParamSetupReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_ADRParamSetupReq.Unmarshal(m, b) -} -func (m *MACCommand_ADRParamSetupReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_ADRParamSetupReq.Marshal(b, m, deterministic) +func (x *MACCommand_DutyCycleReq) GetMaxDutyCycle() AggregatedDutyCycle { + if x != nil { + return x.MaxDutyCycle + } + return AggregatedDutyCycle_DUTY_CYCLE_1 } -func (m *MACCommand_ADRParamSetupReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_ADRParamSetupReq.Merge(m, src) + +type MACCommand_RxParamSetupReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Rx2DataRateIndex DataRateIndex `protobuf:"varint,1,opt,name=rx2_data_rate_index,json=rx2DataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"rx2_data_rate_index,omitempty"` + Rx1DataRateOffset DataRateOffset `protobuf:"varint,2,opt,name=rx1_data_rate_offset,json=rx1DataRateOffset,proto3,enum=ttn.lorawan.v3.DataRateOffset" json:"rx1_data_rate_offset,omitempty"` + Rx2Frequency uint64 `protobuf:"varint,3,opt,name=rx2_frequency,json=rx2Frequency,proto3" json:"rx2_frequency,omitempty"` // Rx2 frequency (Hz). } -func (m *MACCommand_ADRParamSetupReq) XXX_Size() int { - return xxx_messageInfo_MACCommand_ADRParamSetupReq.Size(m) + +func (x *MACCommand_RxParamSetupReq) Reset() { + *x = MACCommand_RxParamSetupReq{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_ADRParamSetupReq) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_ADRParamSetupReq.DiscardUnknown(m) + +func (x *MACCommand_RxParamSetupReq) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_ADRParamSetupReq proto.InternalMessageInfo +func (*MACCommand_RxParamSetupReq) ProtoMessage() {} -func (m *MACCommand_ADRParamSetupReq) GetAdrAckLimitExponent() ADRAckLimitExponent { - if m != nil { - return m.AdrAckLimitExponent +func (x *MACCommand_RxParamSetupReq) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return ADRAckLimitExponent_ADR_ACK_LIMIT_1 + return mi.MessageOf(x) } -func (m *MACCommand_ADRParamSetupReq) GetAdrAckDelayExponent() ADRAckDelayExponent { - if m != nil { - return m.AdrAckDelayExponent - } - return ADRAckDelayExponent_ADR_ACK_DELAY_1 +// Deprecated: Use MACCommand_RxParamSetupReq.ProtoReflect.Descriptor instead. +func (*MACCommand_RxParamSetupReq) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 6} } -type MACCommand_DeviceTimeAns struct { - Time *types.Timestamp `protobuf:"bytes,7,opt,name=time,proto3" json:"time,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *MACCommand_RxParamSetupReq) GetRx2DataRateIndex() DataRateIndex { + if x != nil { + return x.Rx2DataRateIndex + } + return DataRateIndex_DATA_RATE_0 } -func (m *MACCommand_DeviceTimeAns) Reset() { *m = MACCommand_DeviceTimeAns{} } -func (m *MACCommand_DeviceTimeAns) String() string { return proto.CompactTextString(m) } -func (*MACCommand_DeviceTimeAns) ProtoMessage() {} -func (*MACCommand_DeviceTimeAns) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 18} -} -func (m *MACCommand_DeviceTimeAns) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_DeviceTimeAns.Unmarshal(m, b) +func (x *MACCommand_RxParamSetupReq) GetRx1DataRateOffset() DataRateOffset { + if x != nil { + return x.Rx1DataRateOffset + } + return DataRateOffset_DATA_RATE_OFFSET_0 } -func (m *MACCommand_DeviceTimeAns) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_DeviceTimeAns.Marshal(b, m, deterministic) + +func (x *MACCommand_RxParamSetupReq) GetRx2Frequency() uint64 { + if x != nil { + return x.Rx2Frequency + } + return 0 } -func (m *MACCommand_DeviceTimeAns) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_DeviceTimeAns.Merge(m, src) + +type MACCommand_RxParamSetupAns struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Rx2DataRateIndexAck bool `protobuf:"varint,1,opt,name=rx2_data_rate_index_ack,json=rx2DataRateIndexAck,proto3" json:"rx2_data_rate_index_ack,omitempty"` + Rx1DataRateOffsetAck bool `protobuf:"varint,2,opt,name=rx1_data_rate_offset_ack,json=rx1DataRateOffsetAck,proto3" json:"rx1_data_rate_offset_ack,omitempty"` + Rx2FrequencyAck bool `protobuf:"varint,3,opt,name=rx2_frequency_ack,json=rx2FrequencyAck,proto3" json:"rx2_frequency_ack,omitempty"` } -func (m *MACCommand_DeviceTimeAns) XXX_Size() int { - return xxx_messageInfo_MACCommand_DeviceTimeAns.Size(m) + +func (x *MACCommand_RxParamSetupAns) Reset() { + *x = MACCommand_RxParamSetupAns{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_DeviceTimeAns) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_DeviceTimeAns.DiscardUnknown(m) + +func (x *MACCommand_RxParamSetupAns) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_DeviceTimeAns proto.InternalMessageInfo +func (*MACCommand_RxParamSetupAns) ProtoMessage() {} -func (m *MACCommand_DeviceTimeAns) GetTime() *types.Timestamp { - if m != nil { - return m.Time +func (x *MACCommand_RxParamSetupAns) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type MACCommand_ForceRejoinReq struct { - RejoinType RejoinRequestType `protobuf:"varint,1,opt,name=rejoin_type,json=rejoinType,proto3,enum=ttn.lorawan.v3.RejoinRequestType" json:"rejoin_type,omitempty"` - DataRateIndex DataRateIndex `protobuf:"varint,2,opt,name=data_rate_index,json=dataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"data_rate_index,omitempty"` - MaxRetries uint32 `protobuf:"varint,3,opt,name=max_retries,json=maxRetries,proto3" json:"max_retries,omitempty"` - // Exponent e that configures the rejoin period = 32 * 2^e + rand(0,32) seconds. - PeriodExponent RejoinPeriodExponent `protobuf:"varint,4,opt,name=period_exponent,json=periodExponent,proto3,enum=ttn.lorawan.v3.RejoinPeriodExponent" json:"period_exponent,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use MACCommand_RxParamSetupAns.ProtoReflect.Descriptor instead. +func (*MACCommand_RxParamSetupAns) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 7} } -func (m *MACCommand_ForceRejoinReq) Reset() { *m = MACCommand_ForceRejoinReq{} } -func (m *MACCommand_ForceRejoinReq) String() string { return proto.CompactTextString(m) } -func (*MACCommand_ForceRejoinReq) ProtoMessage() {} -func (*MACCommand_ForceRejoinReq) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 19} +func (x *MACCommand_RxParamSetupAns) GetRx2DataRateIndexAck() bool { + if x != nil { + return x.Rx2DataRateIndexAck + } + return false } -func (m *MACCommand_ForceRejoinReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_ForceRejoinReq.Unmarshal(m, b) + +func (x *MACCommand_RxParamSetupAns) GetRx1DataRateOffsetAck() bool { + if x != nil { + return x.Rx1DataRateOffsetAck + } + return false } -func (m *MACCommand_ForceRejoinReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_ForceRejoinReq.Marshal(b, m, deterministic) + +func (x *MACCommand_RxParamSetupAns) GetRx2FrequencyAck() bool { + if x != nil { + return x.Rx2FrequencyAck + } + return false } -func (m *MACCommand_ForceRejoinReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_ForceRejoinReq.Merge(m, src) + +type MACCommand_DevStatusAns struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Device battery status. + // 0 indicates that the device is connected to an external power source. + // 1..254 indicates a battery level. + // 255 indicates that the device was not able to measure the battery level. + Battery uint32 `protobuf:"varint,1,opt,name=battery,proto3" json:"battery,omitempty"` + // SNR of the last downlink (dB; [-32, +31]). + Margin int32 `protobuf:"varint,2,opt,name=margin,proto3" json:"margin,omitempty"` } -func (m *MACCommand_ForceRejoinReq) XXX_Size() int { - return xxx_messageInfo_MACCommand_ForceRejoinReq.Size(m) + +func (x *MACCommand_DevStatusAns) Reset() { + *x = MACCommand_DevStatusAns{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_ForceRejoinReq) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_ForceRejoinReq.DiscardUnknown(m) + +func (x *MACCommand_DevStatusAns) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_ForceRejoinReq proto.InternalMessageInfo +func (*MACCommand_DevStatusAns) ProtoMessage() {} -func (m *MACCommand_ForceRejoinReq) GetRejoinType() RejoinRequestType { - if m != nil { - return m.RejoinType +func (x *MACCommand_DevStatusAns) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return RejoinRequestType_CONTEXT + return mi.MessageOf(x) } -func (m *MACCommand_ForceRejoinReq) GetDataRateIndex() DataRateIndex { - if m != nil { - return m.DataRateIndex - } - return DataRateIndex_DATA_RATE_0 +// Deprecated: Use MACCommand_DevStatusAns.ProtoReflect.Descriptor instead. +func (*MACCommand_DevStatusAns) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 8} } -func (m *MACCommand_ForceRejoinReq) GetMaxRetries() uint32 { - if m != nil { - return m.MaxRetries +func (x *MACCommand_DevStatusAns) GetBattery() uint32 { + if x != nil { + return x.Battery } return 0 } -func (m *MACCommand_ForceRejoinReq) GetPeriodExponent() RejoinPeriodExponent { - if m != nil { - return m.PeriodExponent +func (x *MACCommand_DevStatusAns) GetMargin() int32 { + if x != nil { + return x.Margin } - return RejoinPeriodExponent_REJOIN_PERIOD_0 + return 0 } -type MACCommand_RejoinParamSetupReq struct { - // Exponent e that configures the rejoin counter = 2^(e+4) messages. - MaxCountExponent RejoinCountExponent `protobuf:"varint,1,opt,name=max_count_exponent,json=maxCountExponent,proto3,enum=ttn.lorawan.v3.RejoinCountExponent" json:"max_count_exponent,omitempty"` - // Exponent e that configures the rejoin timer = 2^(e+10) seconds. - MaxTimeExponent RejoinTimeExponent `protobuf:"varint,2,opt,name=max_time_exponent,json=maxTimeExponent,proto3,enum=ttn.lorawan.v3.RejoinTimeExponent" json:"max_time_exponent,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type MACCommand_NewChannelReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MACCommand_RejoinParamSetupReq) Reset() { *m = MACCommand_RejoinParamSetupReq{} } -func (m *MACCommand_RejoinParamSetupReq) String() string { return proto.CompactTextString(m) } -func (*MACCommand_RejoinParamSetupReq) ProtoMessage() {} -func (*MACCommand_RejoinParamSetupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 20} -} -func (m *MACCommand_RejoinParamSetupReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_RejoinParamSetupReq.Unmarshal(m, b) -} -func (m *MACCommand_RejoinParamSetupReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_RejoinParamSetupReq.Marshal(b, m, deterministic) -} -func (m *MACCommand_RejoinParamSetupReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_RejoinParamSetupReq.Merge(m, src) + ChannelIndex uint32 `protobuf:"varint,1,opt,name=channel_index,json=channelIndex,proto3" json:"channel_index,omitempty"` + Frequency uint64 `protobuf:"varint,2,opt,name=frequency,proto3" json:"frequency,omitempty"` // Channel frequency (Hz). + MinDataRateIndex DataRateIndex `protobuf:"varint,3,opt,name=min_data_rate_index,json=minDataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"min_data_rate_index,omitempty"` + MaxDataRateIndex DataRateIndex `protobuf:"varint,4,opt,name=max_data_rate_index,json=maxDataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"max_data_rate_index,omitempty"` } -func (m *MACCommand_RejoinParamSetupReq) XXX_Size() int { - return xxx_messageInfo_MACCommand_RejoinParamSetupReq.Size(m) + +func (x *MACCommand_NewChannelReq) Reset() { + *x = MACCommand_NewChannelReq{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_RejoinParamSetupReq) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_RejoinParamSetupReq.DiscardUnknown(m) + +func (x *MACCommand_NewChannelReq) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_RejoinParamSetupReq proto.InternalMessageInfo +func (*MACCommand_NewChannelReq) ProtoMessage() {} -func (m *MACCommand_RejoinParamSetupReq) GetMaxCountExponent() RejoinCountExponent { - if m != nil { - return m.MaxCountExponent +func (x *MACCommand_NewChannelReq) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return RejoinCountExponent_REJOIN_COUNT_16 + return mi.MessageOf(x) } -func (m *MACCommand_RejoinParamSetupReq) GetMaxTimeExponent() RejoinTimeExponent { - if m != nil { - return m.MaxTimeExponent +// Deprecated: Use MACCommand_NewChannelReq.ProtoReflect.Descriptor instead. +func (*MACCommand_NewChannelReq) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 9} +} + +func (x *MACCommand_NewChannelReq) GetChannelIndex() uint32 { + if x != nil { + return x.ChannelIndex } - return RejoinTimeExponent_REJOIN_TIME_0 + return 0 } -type MACCommand_RejoinParamSetupAns struct { - MaxTimeExponentAck bool `protobuf:"varint,1,opt,name=max_time_exponent_ack,json=maxTimeExponentAck,proto3" json:"max_time_exponent_ack,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *MACCommand_NewChannelReq) GetFrequency() uint64 { + if x != nil { + return x.Frequency + } + return 0 } -func (m *MACCommand_RejoinParamSetupAns) Reset() { *m = MACCommand_RejoinParamSetupAns{} } -func (m *MACCommand_RejoinParamSetupAns) String() string { return proto.CompactTextString(m) } -func (*MACCommand_RejoinParamSetupAns) ProtoMessage() {} -func (*MACCommand_RejoinParamSetupAns) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 21} +func (x *MACCommand_NewChannelReq) GetMinDataRateIndex() DataRateIndex { + if x != nil { + return x.MinDataRateIndex + } + return DataRateIndex_DATA_RATE_0 } -func (m *MACCommand_RejoinParamSetupAns) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_RejoinParamSetupAns.Unmarshal(m, b) + +func (x *MACCommand_NewChannelReq) GetMaxDataRateIndex() DataRateIndex { + if x != nil { + return x.MaxDataRateIndex + } + return DataRateIndex_DATA_RATE_0 } -func (m *MACCommand_RejoinParamSetupAns) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_RejoinParamSetupAns.Marshal(b, m, deterministic) + +type MACCommand_NewChannelAns struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FrequencyAck bool `protobuf:"varint,1,opt,name=frequency_ack,json=frequencyAck,proto3" json:"frequency_ack,omitempty"` + DataRateAck bool `protobuf:"varint,2,opt,name=data_rate_ack,json=dataRateAck,proto3" json:"data_rate_ack,omitempty"` } -func (m *MACCommand_RejoinParamSetupAns) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_RejoinParamSetupAns.Merge(m, src) + +func (x *MACCommand_NewChannelAns) Reset() { + *x = MACCommand_NewChannelAns{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_RejoinParamSetupAns) XXX_Size() int { - return xxx_messageInfo_MACCommand_RejoinParamSetupAns.Size(m) + +func (x *MACCommand_NewChannelAns) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MACCommand_RejoinParamSetupAns) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_RejoinParamSetupAns.DiscardUnknown(m) + +func (*MACCommand_NewChannelAns) ProtoMessage() {} + +func (x *MACCommand_NewChannelAns) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MACCommand_RejoinParamSetupAns proto.InternalMessageInfo +// Deprecated: Use MACCommand_NewChannelAns.ProtoReflect.Descriptor instead. +func (*MACCommand_NewChannelAns) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 10} +} -func (m *MACCommand_RejoinParamSetupAns) GetMaxTimeExponentAck() bool { - if m != nil { - return m.MaxTimeExponentAck +func (x *MACCommand_NewChannelAns) GetFrequencyAck() bool { + if x != nil { + return x.FrequencyAck } return false } -type MACCommand_PingSlotInfoReq struct { - Period PingSlotPeriod `protobuf:"varint,1,opt,name=period,proto3,enum=ttn.lorawan.v3.PingSlotPeriod" json:"period,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *MACCommand_NewChannelAns) GetDataRateAck() bool { + if x != nil { + return x.DataRateAck + } + return false } -func (m *MACCommand_PingSlotInfoReq) Reset() { *m = MACCommand_PingSlotInfoReq{} } -func (m *MACCommand_PingSlotInfoReq) String() string { return proto.CompactTextString(m) } -func (*MACCommand_PingSlotInfoReq) ProtoMessage() {} -func (*MACCommand_PingSlotInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 22} -} -func (m *MACCommand_PingSlotInfoReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_PingSlotInfoReq.Unmarshal(m, b) -} -func (m *MACCommand_PingSlotInfoReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_PingSlotInfoReq.Marshal(b, m, deterministic) -} -func (m *MACCommand_PingSlotInfoReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_PingSlotInfoReq.Merge(m, src) -} -func (m *MACCommand_PingSlotInfoReq) XXX_Size() int { - return xxx_messageInfo_MACCommand_PingSlotInfoReq.Size(m) -} -func (m *MACCommand_PingSlotInfoReq) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_PingSlotInfoReq.DiscardUnknown(m) -} +type MACCommand_DLChannelReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -var xxx_messageInfo_MACCommand_PingSlotInfoReq proto.InternalMessageInfo + ChannelIndex uint32 `protobuf:"varint,1,opt,name=channel_index,json=channelIndex,proto3" json:"channel_index,omitempty"` + Frequency uint64 `protobuf:"varint,2,opt,name=frequency,proto3" json:"frequency,omitempty"` // Downlink channel frequency (Hz). +} -func (m *MACCommand_PingSlotInfoReq) GetPeriod() PingSlotPeriod { - if m != nil { - return m.Period +func (x *MACCommand_DLChannelReq) Reset() { + *x = MACCommand_DLChannelReq{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return PingSlotPeriod_PING_EVERY_1S } -type MACCommand_PingSlotChannelReq struct { - Frequency uint64 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"` - DataRateIndex DataRateIndex `protobuf:"varint,2,opt,name=data_rate_index,json=dataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"data_rate_index,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *MACCommand_DLChannelReq) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MACCommand_PingSlotChannelReq) Reset() { *m = MACCommand_PingSlotChannelReq{} } -func (m *MACCommand_PingSlotChannelReq) String() string { return proto.CompactTextString(m) } -func (*MACCommand_PingSlotChannelReq) ProtoMessage() {} -func (*MACCommand_PingSlotChannelReq) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 23} -} -func (m *MACCommand_PingSlotChannelReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_PingSlotChannelReq.Unmarshal(m, b) -} -func (m *MACCommand_PingSlotChannelReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_PingSlotChannelReq.Marshal(b, m, deterministic) -} -func (m *MACCommand_PingSlotChannelReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_PingSlotChannelReq.Merge(m, src) -} -func (m *MACCommand_PingSlotChannelReq) XXX_Size() int { - return xxx_messageInfo_MACCommand_PingSlotChannelReq.Size(m) -} -func (m *MACCommand_PingSlotChannelReq) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_PingSlotChannelReq.DiscardUnknown(m) +func (*MACCommand_DLChannelReq) ProtoMessage() {} + +func (x *MACCommand_DLChannelReq) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[44] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MACCommand_PingSlotChannelReq proto.InternalMessageInfo +// Deprecated: Use MACCommand_DLChannelReq.ProtoReflect.Descriptor instead. +func (*MACCommand_DLChannelReq) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 11} +} -func (m *MACCommand_PingSlotChannelReq) GetFrequency() uint64 { - if m != nil { - return m.Frequency +func (x *MACCommand_DLChannelReq) GetChannelIndex() uint32 { + if x != nil { + return x.ChannelIndex } return 0 } -func (m *MACCommand_PingSlotChannelReq) GetDataRateIndex() DataRateIndex { - if m != nil { - return m.DataRateIndex +func (x *MACCommand_DLChannelReq) GetFrequency() uint64 { + if x != nil { + return x.Frequency } - return DataRateIndex_DATA_RATE_0 + return 0 } -type MACCommand_PingSlotChannelAns struct { - FrequencyAck bool `protobuf:"varint,1,opt,name=frequency_ack,json=frequencyAck,proto3" json:"frequency_ack,omitempty"` - DataRateIndexAck bool `protobuf:"varint,2,opt,name=data_rate_index_ack,json=dataRateIndexAck,proto3" json:"data_rate_index_ack,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type MACCommand_DLChannelAns struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MACCommand_PingSlotChannelAns) Reset() { *m = MACCommand_PingSlotChannelAns{} } -func (m *MACCommand_PingSlotChannelAns) String() string { return proto.CompactTextString(m) } -func (*MACCommand_PingSlotChannelAns) ProtoMessage() {} -func (*MACCommand_PingSlotChannelAns) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 24} -} -func (m *MACCommand_PingSlotChannelAns) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_PingSlotChannelAns.Unmarshal(m, b) + ChannelIndexAck bool `protobuf:"varint,1,opt,name=channel_index_ack,json=channelIndexAck,proto3" json:"channel_index_ack,omitempty"` + FrequencyAck bool `protobuf:"varint,2,opt,name=frequency_ack,json=frequencyAck,proto3" json:"frequency_ack,omitempty"` } -func (m *MACCommand_PingSlotChannelAns) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_PingSlotChannelAns.Marshal(b, m, deterministic) -} -func (m *MACCommand_PingSlotChannelAns) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_PingSlotChannelAns.Merge(m, src) + +func (x *MACCommand_DLChannelAns) Reset() { + *x = MACCommand_DLChannelAns{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_PingSlotChannelAns) XXX_Size() int { - return xxx_messageInfo_MACCommand_PingSlotChannelAns.Size(m) + +func (x *MACCommand_DLChannelAns) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MACCommand_PingSlotChannelAns) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_PingSlotChannelAns.DiscardUnknown(m) + +func (*MACCommand_DLChannelAns) ProtoMessage() {} + +func (x *MACCommand_DLChannelAns) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MACCommand_PingSlotChannelAns proto.InternalMessageInfo +// Deprecated: Use MACCommand_DLChannelAns.ProtoReflect.Descriptor instead. +func (*MACCommand_DLChannelAns) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 12} +} -func (m *MACCommand_PingSlotChannelAns) GetFrequencyAck() bool { - if m != nil { - return m.FrequencyAck +func (x *MACCommand_DLChannelAns) GetChannelIndexAck() bool { + if x != nil { + return x.ChannelIndexAck } return false } -func (m *MACCommand_PingSlotChannelAns) GetDataRateIndexAck() bool { - if m != nil { - return m.DataRateIndexAck +func (x *MACCommand_DLChannelAns) GetFrequencyAck() bool { + if x != nil { + return x.FrequencyAck } return false } -type MACCommand_BeaconTimingAns struct { - Delay uint32 `protobuf:"varint,1,opt,name=delay,proto3" json:"delay,omitempty"` - ChannelIndex uint32 `protobuf:"varint,2,opt,name=channel_index,json=channelIndex,proto3" json:"channel_index,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type MACCommand_RxTimingSetupReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MACCommand_BeaconTimingAns) Reset() { *m = MACCommand_BeaconTimingAns{} } -func (m *MACCommand_BeaconTimingAns) String() string { return proto.CompactTextString(m) } -func (*MACCommand_BeaconTimingAns) ProtoMessage() {} -func (*MACCommand_BeaconTimingAns) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 25} -} -func (m *MACCommand_BeaconTimingAns) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_BeaconTimingAns.Unmarshal(m, b) -} -func (m *MACCommand_BeaconTimingAns) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_BeaconTimingAns.Marshal(b, m, deterministic) -} -func (m *MACCommand_BeaconTimingAns) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_BeaconTimingAns.Merge(m, src) + Delay RxDelay `protobuf:"varint,1,opt,name=delay,proto3,enum=ttn.lorawan.v3.RxDelay" json:"delay,omitempty"` } -func (m *MACCommand_BeaconTimingAns) XXX_Size() int { - return xxx_messageInfo_MACCommand_BeaconTimingAns.Size(m) + +func (x *MACCommand_RxTimingSetupReq) Reset() { + *x = MACCommand_RxTimingSetupReq{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_BeaconTimingAns) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_BeaconTimingAns.DiscardUnknown(m) + +func (x *MACCommand_RxTimingSetupReq) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_BeaconTimingAns proto.InternalMessageInfo +func (*MACCommand_RxTimingSetupReq) ProtoMessage() {} -func (m *MACCommand_BeaconTimingAns) GetDelay() uint32 { - if m != nil { - return m.Delay +func (x *MACCommand_RxTimingSetupReq) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[46] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (m *MACCommand_BeaconTimingAns) GetChannelIndex() uint32 { - if m != nil { - return m.ChannelIndex - } - return 0 +// Deprecated: Use MACCommand_RxTimingSetupReq.ProtoReflect.Descriptor instead. +func (*MACCommand_RxTimingSetupReq) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 13} } -type MACCommand_BeaconFreqReq struct { - Frequency uint64 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *MACCommand_RxTimingSetupReq) GetDelay() RxDelay { + if x != nil { + return x.Delay + } + return RxDelay_RX_DELAY_0 } -func (m *MACCommand_BeaconFreqReq) Reset() { *m = MACCommand_BeaconFreqReq{} } -func (m *MACCommand_BeaconFreqReq) String() string { return proto.CompactTextString(m) } -func (*MACCommand_BeaconFreqReq) ProtoMessage() {} -func (*MACCommand_BeaconFreqReq) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 26} -} -func (m *MACCommand_BeaconFreqReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_BeaconFreqReq.Unmarshal(m, b) -} -func (m *MACCommand_BeaconFreqReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_BeaconFreqReq.Marshal(b, m, deterministic) -} -func (m *MACCommand_BeaconFreqReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_BeaconFreqReq.Merge(m, src) +type MACCommand_TxParamSetupReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Indicates the maximum EIRP value in dBm, indexed by the following vector: + // [ 8 10 12 13 14 16 18 20 21 24 26 27 29 30 33 36 ] + MaxEirpIndex DeviceEIRP `protobuf:"varint,1,opt,name=max_eirp_index,json=maxEirpIndex,proto3,enum=ttn.lorawan.v3.DeviceEIRP" json:"max_eirp_index,omitempty"` + UplinkDwellTime bool `protobuf:"varint,2,opt,name=uplink_dwell_time,json=uplinkDwellTime,proto3" json:"uplink_dwell_time,omitempty"` + DownlinkDwellTime bool `protobuf:"varint,3,opt,name=downlink_dwell_time,json=downlinkDwellTime,proto3" json:"downlink_dwell_time,omitempty"` } -func (m *MACCommand_BeaconFreqReq) XXX_Size() int { - return xxx_messageInfo_MACCommand_BeaconFreqReq.Size(m) + +func (x *MACCommand_TxParamSetupReq) Reset() { + *x = MACCommand_TxParamSetupReq{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_BeaconFreqReq) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_BeaconFreqReq.DiscardUnknown(m) + +func (x *MACCommand_TxParamSetupReq) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_BeaconFreqReq proto.InternalMessageInfo +func (*MACCommand_TxParamSetupReq) ProtoMessage() {} -func (m *MACCommand_BeaconFreqReq) GetFrequency() uint64 { - if m != nil { - return m.Frequency +func (x *MACCommand_TxParamSetupReq) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[47] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -type MACCommand_BeaconFreqAns struct { - FrequencyAck bool `protobuf:"varint,1,opt,name=frequency_ack,json=frequencyAck,proto3" json:"frequency_ack,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use MACCommand_TxParamSetupReq.ProtoReflect.Descriptor instead. +func (*MACCommand_TxParamSetupReq) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 14} } -func (m *MACCommand_BeaconFreqAns) Reset() { *m = MACCommand_BeaconFreqAns{} } -func (m *MACCommand_BeaconFreqAns) String() string { return proto.CompactTextString(m) } -func (*MACCommand_BeaconFreqAns) ProtoMessage() {} -func (*MACCommand_BeaconFreqAns) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 27} +func (x *MACCommand_TxParamSetupReq) GetMaxEirpIndex() DeviceEIRP { + if x != nil { + return x.MaxEirpIndex + } + return DeviceEIRP_DEVICE_EIRP_8 } -func (m *MACCommand_BeaconFreqAns) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_BeaconFreqAns.Unmarshal(m, b) + +func (x *MACCommand_TxParamSetupReq) GetUplinkDwellTime() bool { + if x != nil { + return x.UplinkDwellTime + } + return false } -func (m *MACCommand_BeaconFreqAns) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_BeaconFreqAns.Marshal(b, m, deterministic) + +func (x *MACCommand_TxParamSetupReq) GetDownlinkDwellTime() bool { + if x != nil { + return x.DownlinkDwellTime + } + return false } -func (m *MACCommand_BeaconFreqAns) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_BeaconFreqAns.Merge(m, src) + +type MACCommand_RekeyInd struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MinorVersion Minor `protobuf:"varint,1,opt,name=minor_version,json=minorVersion,proto3,enum=ttn.lorawan.v3.Minor" json:"minor_version,omitempty"` } -func (m *MACCommand_BeaconFreqAns) XXX_Size() int { - return xxx_messageInfo_MACCommand_BeaconFreqAns.Size(m) + +func (x *MACCommand_RekeyInd) Reset() { + *x = MACCommand_RekeyInd{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_BeaconFreqAns) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_BeaconFreqAns.DiscardUnknown(m) + +func (x *MACCommand_RekeyInd) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_BeaconFreqAns proto.InternalMessageInfo +func (*MACCommand_RekeyInd) ProtoMessage() {} -func (m *MACCommand_BeaconFreqAns) GetFrequencyAck() bool { - if m != nil { - return m.FrequencyAck +func (x *MACCommand_RekeyInd) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false + return mi.MessageOf(x) } -type MACCommand_DeviceModeInd struct { - Class Class `protobuf:"varint,1,opt,name=class,proto3,enum=ttn.lorawan.v3.Class" json:"class,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use MACCommand_RekeyInd.ProtoReflect.Descriptor instead. +func (*MACCommand_RekeyInd) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 15} } -func (m *MACCommand_DeviceModeInd) Reset() { *m = MACCommand_DeviceModeInd{} } -func (m *MACCommand_DeviceModeInd) String() string { return proto.CompactTextString(m) } -func (*MACCommand_DeviceModeInd) ProtoMessage() {} -func (*MACCommand_DeviceModeInd) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 28} -} -func (m *MACCommand_DeviceModeInd) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_DeviceModeInd.Unmarshal(m, b) -} -func (m *MACCommand_DeviceModeInd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_DeviceModeInd.Marshal(b, m, deterministic) +func (x *MACCommand_RekeyInd) GetMinorVersion() Minor { + if x != nil { + return x.MinorVersion + } + return Minor_MINOR_RFU_0 } -func (m *MACCommand_DeviceModeInd) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_DeviceModeInd.Merge(m, src) + +type MACCommand_RekeyConf struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MinorVersion Minor `protobuf:"varint,1,opt,name=minor_version,json=minorVersion,proto3,enum=ttn.lorawan.v3.Minor" json:"minor_version,omitempty"` } -func (m *MACCommand_DeviceModeInd) XXX_Size() int { - return xxx_messageInfo_MACCommand_DeviceModeInd.Size(m) + +func (x *MACCommand_RekeyConf) Reset() { + *x = MACCommand_RekeyConf{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_DeviceModeInd) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_DeviceModeInd.DiscardUnknown(m) + +func (x *MACCommand_RekeyConf) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_DeviceModeInd proto.InternalMessageInfo +func (*MACCommand_RekeyConf) ProtoMessage() {} -func (m *MACCommand_DeviceModeInd) GetClass() Class { - if m != nil { - return m.Class +func (x *MACCommand_RekeyConf) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[49] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return Class_CLASS_A + return mi.MessageOf(x) } -type MACCommand_DeviceModeConf struct { - Class Class `protobuf:"varint,1,opt,name=class,proto3,enum=ttn.lorawan.v3.Class" json:"class,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use MACCommand_RekeyConf.ProtoReflect.Descriptor instead. +func (*MACCommand_RekeyConf) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 16} } -func (m *MACCommand_DeviceModeConf) Reset() { *m = MACCommand_DeviceModeConf{} } -func (m *MACCommand_DeviceModeConf) String() string { return proto.CompactTextString(m) } -func (*MACCommand_DeviceModeConf) ProtoMessage() {} -func (*MACCommand_DeviceModeConf) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{20, 29} -} -func (m *MACCommand_DeviceModeConf) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommand_DeviceModeConf.Unmarshal(m, b) -} -func (m *MACCommand_DeviceModeConf) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommand_DeviceModeConf.Marshal(b, m, deterministic) +func (x *MACCommand_RekeyConf) GetMinorVersion() Minor { + if x != nil { + return x.MinorVersion + } + return Minor_MINOR_RFU_0 } -func (m *MACCommand_DeviceModeConf) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommand_DeviceModeConf.Merge(m, src) + +type MACCommand_ADRParamSetupReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Exponent e that configures the ADR_ACK_LIMIT = 2^e messages. + AdrAckLimitExponent ADRAckLimitExponent `protobuf:"varint,1,opt,name=adr_ack_limit_exponent,json=adrAckLimitExponent,proto3,enum=ttn.lorawan.v3.ADRAckLimitExponent" json:"adr_ack_limit_exponent,omitempty"` + // Exponent e that configures the ADR_ACK_DELAY = 2^e messages. + AdrAckDelayExponent ADRAckDelayExponent `protobuf:"varint,2,opt,name=adr_ack_delay_exponent,json=adrAckDelayExponent,proto3,enum=ttn.lorawan.v3.ADRAckDelayExponent" json:"adr_ack_delay_exponent,omitempty"` } -func (m *MACCommand_DeviceModeConf) XXX_Size() int { - return xxx_messageInfo_MACCommand_DeviceModeConf.Size(m) + +func (x *MACCommand_ADRParamSetupReq) Reset() { + *x = MACCommand_ADRParamSetupReq{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommand_DeviceModeConf) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommand_DeviceModeConf.DiscardUnknown(m) + +func (x *MACCommand_ADRParamSetupReq) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_MACCommand_DeviceModeConf proto.InternalMessageInfo +func (*MACCommand_ADRParamSetupReq) ProtoMessage() {} -func (m *MACCommand_DeviceModeConf) GetClass() Class { - if m != nil { - return m.Class +func (x *MACCommand_ADRParamSetupReq) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[50] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return Class_CLASS_A + return mi.MessageOf(x) } -type MACCommands struct { - Commands []*MACCommand `protobuf:"bytes,1,rep,name=commands,proto3" json:"commands,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use MACCommand_ADRParamSetupReq.ProtoReflect.Descriptor instead. +func (*MACCommand_ADRParamSetupReq) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 17} } -func (m *MACCommands) Reset() { *m = MACCommands{} } -func (m *MACCommands) String() string { return proto.CompactTextString(m) } -func (*MACCommands) ProtoMessage() {} -func (*MACCommands) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{21} +func (x *MACCommand_ADRParamSetupReq) GetAdrAckLimitExponent() ADRAckLimitExponent { + if x != nil { + return x.AdrAckLimitExponent + } + return ADRAckLimitExponent_ADR_ACK_LIMIT_1 } -func (m *MACCommands) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MACCommands.Unmarshal(m, b) + +func (x *MACCommand_ADRParamSetupReq) GetAdrAckDelayExponent() ADRAckDelayExponent { + if x != nil { + return x.AdrAckDelayExponent + } + return ADRAckDelayExponent_ADR_ACK_DELAY_1 } -func (m *MACCommands) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MACCommands.Marshal(b, m, deterministic) + +type MACCommand_DeviceTimeAns struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Time *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=time,proto3" json:"time,omitempty"` } -func (m *MACCommands) XXX_Merge(src proto.Message) { - xxx_messageInfo_MACCommands.Merge(m, src) + +func (x *MACCommand_DeviceTimeAns) Reset() { + *x = MACCommand_DeviceTimeAns{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MACCommands) XXX_Size() int { - return xxx_messageInfo_MACCommands.Size(m) + +func (x *MACCommand_DeviceTimeAns) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MACCommands) XXX_DiscardUnknown() { - xxx_messageInfo_MACCommands.DiscardUnknown(m) + +func (*MACCommand_DeviceTimeAns) ProtoMessage() {} + +func (x *MACCommand_DeviceTimeAns) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[51] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MACCommands proto.InternalMessageInfo +// Deprecated: Use MACCommand_DeviceTimeAns.ProtoReflect.Descriptor instead. +func (*MACCommand_DeviceTimeAns) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 18} +} -func (m *MACCommands) GetCommands() []*MACCommand { - if m != nil { - return m.Commands +func (x *MACCommand_DeviceTimeAns) GetTime() *timestamppb.Timestamp { + if x != nil { + return x.Time } return nil } -type FrequencyValue struct { - Value uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type MACCommand_ForceRejoinReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *FrequencyValue) Reset() { *m = FrequencyValue{} } -func (m *FrequencyValue) String() string { return proto.CompactTextString(m) } -func (*FrequencyValue) ProtoMessage() {} -func (*FrequencyValue) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{22} + RejoinType RejoinRequestType `protobuf:"varint,1,opt,name=rejoin_type,json=rejoinType,proto3,enum=ttn.lorawan.v3.RejoinRequestType" json:"rejoin_type,omitempty"` + DataRateIndex DataRateIndex `protobuf:"varint,2,opt,name=data_rate_index,json=dataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"data_rate_index,omitempty"` + MaxRetries uint32 `protobuf:"varint,3,opt,name=max_retries,json=maxRetries,proto3" json:"max_retries,omitempty"` + // Exponent e that configures the rejoin period = 32 * 2^e + rand(0,32) seconds. + PeriodExponent RejoinPeriodExponent `protobuf:"varint,4,opt,name=period_exponent,json=periodExponent,proto3,enum=ttn.lorawan.v3.RejoinPeriodExponent" json:"period_exponent,omitempty"` } -func (m *FrequencyValue) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FrequencyValue.Unmarshal(m, b) + +func (x *MACCommand_ForceRejoinReq) Reset() { + *x = MACCommand_ForceRejoinReq{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *FrequencyValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FrequencyValue.Marshal(b, m, deterministic) + +func (x *MACCommand_ForceRejoinReq) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *FrequencyValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_FrequencyValue.Merge(m, src) + +func (*MACCommand_ForceRejoinReq) ProtoMessage() {} + +func (x *MACCommand_ForceRejoinReq) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[52] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *FrequencyValue) XXX_Size() int { - return xxx_messageInfo_FrequencyValue.Size(m) + +// Deprecated: Use MACCommand_ForceRejoinReq.ProtoReflect.Descriptor instead. +func (*MACCommand_ForceRejoinReq) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 19} } -func (m *FrequencyValue) XXX_DiscardUnknown() { - xxx_messageInfo_FrequencyValue.DiscardUnknown(m) + +func (x *MACCommand_ForceRejoinReq) GetRejoinType() RejoinRequestType { + if x != nil { + return x.RejoinType + } + return RejoinRequestType_CONTEXT } -var xxx_messageInfo_FrequencyValue proto.InternalMessageInfo +func (x *MACCommand_ForceRejoinReq) GetDataRateIndex() DataRateIndex { + if x != nil { + return x.DataRateIndex + } + return DataRateIndex_DATA_RATE_0 +} -func (m *FrequencyValue) GetValue() uint64 { - if m != nil { - return m.Value +func (x *MACCommand_ForceRejoinReq) GetMaxRetries() uint32 { + if x != nil { + return x.MaxRetries } return 0 } -type ZeroableFrequencyValue struct { - Value uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *MACCommand_ForceRejoinReq) GetPeriodExponent() RejoinPeriodExponent { + if x != nil { + return x.PeriodExponent + } + return RejoinPeriodExponent_REJOIN_PERIOD_0 } -func (m *ZeroableFrequencyValue) Reset() { *m = ZeroableFrequencyValue{} } -func (m *ZeroableFrequencyValue) String() string { return proto.CompactTextString(m) } -func (*ZeroableFrequencyValue) ProtoMessage() {} -func (*ZeroableFrequencyValue) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{23} -} -func (m *ZeroableFrequencyValue) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ZeroableFrequencyValue.Unmarshal(m, b) -} -func (m *ZeroableFrequencyValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ZeroableFrequencyValue.Marshal(b, m, deterministic) -} -func (m *ZeroableFrequencyValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_ZeroableFrequencyValue.Merge(m, src) +type MACCommand_RejoinParamSetupReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Exponent e that configures the rejoin counter = 2^(e+4) messages. + MaxCountExponent RejoinCountExponent `protobuf:"varint,1,opt,name=max_count_exponent,json=maxCountExponent,proto3,enum=ttn.lorawan.v3.RejoinCountExponent" json:"max_count_exponent,omitempty"` + // Exponent e that configures the rejoin timer = 2^(e+10) seconds. + MaxTimeExponent RejoinTimeExponent `protobuf:"varint,2,opt,name=max_time_exponent,json=maxTimeExponent,proto3,enum=ttn.lorawan.v3.RejoinTimeExponent" json:"max_time_exponent,omitempty"` } -func (m *ZeroableFrequencyValue) XXX_Size() int { - return xxx_messageInfo_ZeroableFrequencyValue.Size(m) + +func (x *MACCommand_RejoinParamSetupReq) Reset() { + *x = MACCommand_RejoinParamSetupReq{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ZeroableFrequencyValue) XXX_DiscardUnknown() { - xxx_messageInfo_ZeroableFrequencyValue.DiscardUnknown(m) + +func (x *MACCommand_RejoinParamSetupReq) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ZeroableFrequencyValue proto.InternalMessageInfo +func (*MACCommand_RejoinParamSetupReq) ProtoMessage() {} -func (m *ZeroableFrequencyValue) GetValue() uint64 { - if m != nil { - return m.Value +func (x *MACCommand_RejoinParamSetupReq) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[53] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -type DataRateOffsetValue struct { - Value DataRateOffset `protobuf:"varint,1,opt,name=value,proto3,enum=ttn.lorawan.v3.DataRateOffset" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use MACCommand_RejoinParamSetupReq.ProtoReflect.Descriptor instead. +func (*MACCommand_RejoinParamSetupReq) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 20} } -func (m *DataRateOffsetValue) Reset() { *m = DataRateOffsetValue{} } -func (m *DataRateOffsetValue) String() string { return proto.CompactTextString(m) } -func (*DataRateOffsetValue) ProtoMessage() {} -func (*DataRateOffsetValue) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{24} -} -func (m *DataRateOffsetValue) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DataRateOffsetValue.Unmarshal(m, b) +func (x *MACCommand_RejoinParamSetupReq) GetMaxCountExponent() RejoinCountExponent { + if x != nil { + return x.MaxCountExponent + } + return RejoinCountExponent_REJOIN_COUNT_16 } -func (m *DataRateOffsetValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DataRateOffsetValue.Marshal(b, m, deterministic) + +func (x *MACCommand_RejoinParamSetupReq) GetMaxTimeExponent() RejoinTimeExponent { + if x != nil { + return x.MaxTimeExponent + } + return RejoinTimeExponent_REJOIN_TIME_0 } -func (m *DataRateOffsetValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_DataRateOffsetValue.Merge(m, src) + +type MACCommand_RejoinParamSetupAns struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MaxTimeExponentAck bool `protobuf:"varint,1,opt,name=max_time_exponent_ack,json=maxTimeExponentAck,proto3" json:"max_time_exponent_ack,omitempty"` } -func (m *DataRateOffsetValue) XXX_Size() int { - return xxx_messageInfo_DataRateOffsetValue.Size(m) + +func (x *MACCommand_RejoinParamSetupAns) Reset() { + *x = MACCommand_RejoinParamSetupAns{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DataRateOffsetValue) XXX_DiscardUnknown() { - xxx_messageInfo_DataRateOffsetValue.DiscardUnknown(m) + +func (x *MACCommand_RejoinParamSetupAns) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_DataRateOffsetValue proto.InternalMessageInfo +func (*MACCommand_RejoinParamSetupAns) ProtoMessage() {} -func (m *DataRateOffsetValue) GetValue() DataRateOffset { - if m != nil { - return m.Value +func (x *MACCommand_RejoinParamSetupAns) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[54] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return DataRateOffset_DATA_RATE_OFFSET_0 + return mi.MessageOf(x) } -type DataRateIndexValue struct { - Value DataRateIndex `protobuf:"varint,1,opt,name=value,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use MACCommand_RejoinParamSetupAns.ProtoReflect.Descriptor instead. +func (*MACCommand_RejoinParamSetupAns) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 21} } -func (m *DataRateIndexValue) Reset() { *m = DataRateIndexValue{} } -func (m *DataRateIndexValue) String() string { return proto.CompactTextString(m) } -func (*DataRateIndexValue) ProtoMessage() {} -func (*DataRateIndexValue) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{25} -} -func (m *DataRateIndexValue) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DataRateIndexValue.Unmarshal(m, b) -} -func (m *DataRateIndexValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DataRateIndexValue.Marshal(b, m, deterministic) +func (x *MACCommand_RejoinParamSetupAns) GetMaxTimeExponentAck() bool { + if x != nil { + return x.MaxTimeExponentAck + } + return false } -func (m *DataRateIndexValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_DataRateIndexValue.Merge(m, src) + +type MACCommand_PingSlotInfoReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Period PingSlotPeriod `protobuf:"varint,1,opt,name=period,proto3,enum=ttn.lorawan.v3.PingSlotPeriod" json:"period,omitempty"` } -func (m *DataRateIndexValue) XXX_Size() int { - return xxx_messageInfo_DataRateIndexValue.Size(m) + +func (x *MACCommand_PingSlotInfoReq) Reset() { + *x = MACCommand_PingSlotInfoReq{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DataRateIndexValue) XXX_DiscardUnknown() { - xxx_messageInfo_DataRateIndexValue.DiscardUnknown(m) + +func (x *MACCommand_PingSlotInfoReq) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_DataRateIndexValue proto.InternalMessageInfo +func (*MACCommand_PingSlotInfoReq) ProtoMessage() {} -func (m *DataRateIndexValue) GetValue() DataRateIndex { - if m != nil { - return m.Value +func (x *MACCommand_PingSlotInfoReq) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[55] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return DataRateIndex_DATA_RATE_0 + return mi.MessageOf(x) } -type PingSlotPeriodValue struct { - Value PingSlotPeriod `protobuf:"varint,1,opt,name=value,proto3,enum=ttn.lorawan.v3.PingSlotPeriod" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use MACCommand_PingSlotInfoReq.ProtoReflect.Descriptor instead. +func (*MACCommand_PingSlotInfoReq) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 22} } -func (m *PingSlotPeriodValue) Reset() { *m = PingSlotPeriodValue{} } -func (m *PingSlotPeriodValue) String() string { return proto.CompactTextString(m) } -func (*PingSlotPeriodValue) ProtoMessage() {} -func (*PingSlotPeriodValue) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{26} -} -func (m *PingSlotPeriodValue) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PingSlotPeriodValue.Unmarshal(m, b) -} -func (m *PingSlotPeriodValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PingSlotPeriodValue.Marshal(b, m, deterministic) +func (x *MACCommand_PingSlotInfoReq) GetPeriod() PingSlotPeriod { + if x != nil { + return x.Period + } + return PingSlotPeriod_PING_EVERY_1S } -func (m *PingSlotPeriodValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_PingSlotPeriodValue.Merge(m, src) + +type MACCommand_PingSlotChannelReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Frequency uint64 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"` // Ping slot channel frequency (Hz). + DataRateIndex DataRateIndex `protobuf:"varint,2,opt,name=data_rate_index,json=dataRateIndex,proto3,enum=ttn.lorawan.v3.DataRateIndex" json:"data_rate_index,omitempty"` } -func (m *PingSlotPeriodValue) XXX_Size() int { - return xxx_messageInfo_PingSlotPeriodValue.Size(m) + +func (x *MACCommand_PingSlotChannelReq) Reset() { + *x = MACCommand_PingSlotChannelReq{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PingSlotPeriodValue) XXX_DiscardUnknown() { - xxx_messageInfo_PingSlotPeriodValue.DiscardUnknown(m) + +func (x *MACCommand_PingSlotChannelReq) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_PingSlotPeriodValue proto.InternalMessageInfo +func (*MACCommand_PingSlotChannelReq) ProtoMessage() {} -func (m *PingSlotPeriodValue) GetValue() PingSlotPeriod { - if m != nil { - return m.Value +func (x *MACCommand_PingSlotChannelReq) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[56] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return PingSlotPeriod_PING_EVERY_1S + return mi.MessageOf(x) } -type AggregatedDutyCycleValue struct { - Value AggregatedDutyCycle `protobuf:"varint,1,opt,name=value,proto3,enum=ttn.lorawan.v3.AggregatedDutyCycle" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use MACCommand_PingSlotChannelReq.ProtoReflect.Descriptor instead. +func (*MACCommand_PingSlotChannelReq) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 23} } -func (m *AggregatedDutyCycleValue) Reset() { *m = AggregatedDutyCycleValue{} } -func (m *AggregatedDutyCycleValue) String() string { return proto.CompactTextString(m) } -func (*AggregatedDutyCycleValue) ProtoMessage() {} -func (*AggregatedDutyCycleValue) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{27} -} -func (m *AggregatedDutyCycleValue) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AggregatedDutyCycleValue.Unmarshal(m, b) +func (x *MACCommand_PingSlotChannelReq) GetFrequency() uint64 { + if x != nil { + return x.Frequency + } + return 0 } -func (m *AggregatedDutyCycleValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AggregatedDutyCycleValue.Marshal(b, m, deterministic) + +func (x *MACCommand_PingSlotChannelReq) GetDataRateIndex() DataRateIndex { + if x != nil { + return x.DataRateIndex + } + return DataRateIndex_DATA_RATE_0 } -func (m *AggregatedDutyCycleValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_AggregatedDutyCycleValue.Merge(m, src) + +type MACCommand_PingSlotChannelAns struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FrequencyAck bool `protobuf:"varint,1,opt,name=frequency_ack,json=frequencyAck,proto3" json:"frequency_ack,omitempty"` + DataRateIndexAck bool `protobuf:"varint,2,opt,name=data_rate_index_ack,json=dataRateIndexAck,proto3" json:"data_rate_index_ack,omitempty"` } -func (m *AggregatedDutyCycleValue) XXX_Size() int { - return xxx_messageInfo_AggregatedDutyCycleValue.Size(m) + +func (x *MACCommand_PingSlotChannelAns) Reset() { + *x = MACCommand_PingSlotChannelAns{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *AggregatedDutyCycleValue) XXX_DiscardUnknown() { - xxx_messageInfo_AggregatedDutyCycleValue.DiscardUnknown(m) + +func (x *MACCommand_PingSlotChannelAns) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_AggregatedDutyCycleValue proto.InternalMessageInfo +func (*MACCommand_PingSlotChannelAns) ProtoMessage() {} -func (m *AggregatedDutyCycleValue) GetValue() AggregatedDutyCycle { - if m != nil { - return m.Value +func (x *MACCommand_PingSlotChannelAns) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[57] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return AggregatedDutyCycle_DUTY_CYCLE_1 + return mi.MessageOf(x) } -type RxDelayValue struct { - Value RxDelay `protobuf:"varint,1,opt,name=value,proto3,enum=ttn.lorawan.v3.RxDelay" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use MACCommand_PingSlotChannelAns.ProtoReflect.Descriptor instead. +func (*MACCommand_PingSlotChannelAns) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 24} } -func (m *RxDelayValue) Reset() { *m = RxDelayValue{} } -func (m *RxDelayValue) String() string { return proto.CompactTextString(m) } -func (*RxDelayValue) ProtoMessage() {} -func (*RxDelayValue) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{28} +func (x *MACCommand_PingSlotChannelAns) GetFrequencyAck() bool { + if x != nil { + return x.FrequencyAck + } + return false } -func (m *RxDelayValue) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RxDelayValue.Unmarshal(m, b) + +func (x *MACCommand_PingSlotChannelAns) GetDataRateIndexAck() bool { + if x != nil { + return x.DataRateIndexAck + } + return false } -func (m *RxDelayValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RxDelayValue.Marshal(b, m, deterministic) + +type MACCommand_BeaconTimingAns struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Delay uint32 `protobuf:"varint,1,opt,name=delay,proto3" json:"delay,omitempty"` // (uint16) See LoRaWAN specification. + ChannelIndex uint32 `protobuf:"varint,2,opt,name=channel_index,json=channelIndex,proto3" json:"channel_index,omitempty"` } -func (m *RxDelayValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_RxDelayValue.Merge(m, src) + +func (x *MACCommand_BeaconTimingAns) Reset() { + *x = MACCommand_BeaconTimingAns{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *RxDelayValue) XXX_Size() int { - return xxx_messageInfo_RxDelayValue.Size(m) + +func (x *MACCommand_BeaconTimingAns) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *RxDelayValue) XXX_DiscardUnknown() { - xxx_messageInfo_RxDelayValue.DiscardUnknown(m) + +func (*MACCommand_BeaconTimingAns) ProtoMessage() {} + +func (x *MACCommand_BeaconTimingAns) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[58] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_RxDelayValue proto.InternalMessageInfo +// Deprecated: Use MACCommand_BeaconTimingAns.ProtoReflect.Descriptor instead. +func (*MACCommand_BeaconTimingAns) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 25} +} -func (m *RxDelayValue) GetValue() RxDelay { - if m != nil { - return m.Value +func (x *MACCommand_BeaconTimingAns) GetDelay() uint32 { + if x != nil { + return x.Delay } - return RxDelay_RX_DELAY_0 + return 0 } -type ADRAckLimitExponentValue struct { - Value ADRAckLimitExponent `protobuf:"varint,1,opt,name=value,proto3,enum=ttn.lorawan.v3.ADRAckLimitExponent" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *MACCommand_BeaconTimingAns) GetChannelIndex() uint32 { + if x != nil { + return x.ChannelIndex + } + return 0 } -func (m *ADRAckLimitExponentValue) Reset() { *m = ADRAckLimitExponentValue{} } -func (m *ADRAckLimitExponentValue) String() string { return proto.CompactTextString(m) } -func (*ADRAckLimitExponentValue) ProtoMessage() {} -func (*ADRAckLimitExponentValue) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{29} +type MACCommand_BeaconFreqReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Frequency uint64 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"` // Frequency of the Class B beacons (Hz). } -func (m *ADRAckLimitExponentValue) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ADRAckLimitExponentValue.Unmarshal(m, b) + +func (x *MACCommand_BeaconFreqReq) Reset() { + *x = MACCommand_BeaconFreqReq{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ADRAckLimitExponentValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ADRAckLimitExponentValue.Marshal(b, m, deterministic) + +func (x *MACCommand_BeaconFreqReq) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ADRAckLimitExponentValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_ADRAckLimitExponentValue.Merge(m, src) + +func (*MACCommand_BeaconFreqReq) ProtoMessage() {} + +func (x *MACCommand_BeaconFreqReq) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[59] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *ADRAckLimitExponentValue) XXX_Size() int { - return xxx_messageInfo_ADRAckLimitExponentValue.Size(m) + +// Deprecated: Use MACCommand_BeaconFreqReq.ProtoReflect.Descriptor instead. +func (*MACCommand_BeaconFreqReq) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 26} } -func (m *ADRAckLimitExponentValue) XXX_DiscardUnknown() { - xxx_messageInfo_ADRAckLimitExponentValue.DiscardUnknown(m) + +func (x *MACCommand_BeaconFreqReq) GetFrequency() uint64 { + if x != nil { + return x.Frequency + } + return 0 } -var xxx_messageInfo_ADRAckLimitExponentValue proto.InternalMessageInfo +type MACCommand_BeaconFreqAns struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ADRAckLimitExponentValue) GetValue() ADRAckLimitExponent { - if m != nil { - return m.Value + FrequencyAck bool `protobuf:"varint,1,opt,name=frequency_ack,json=frequencyAck,proto3" json:"frequency_ack,omitempty"` +} + +func (x *MACCommand_BeaconFreqAns) Reset() { + *x = MACCommand_BeaconFreqAns{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return ADRAckLimitExponent_ADR_ACK_LIMIT_1 } -type ADRAckDelayExponentValue struct { - Value ADRAckDelayExponent `protobuf:"varint,1,opt,name=value,proto3,enum=ttn.lorawan.v3.ADRAckDelayExponent" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *MACCommand_BeaconFreqAns) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ADRAckDelayExponentValue) Reset() { *m = ADRAckDelayExponentValue{} } -func (m *ADRAckDelayExponentValue) String() string { return proto.CompactTextString(m) } -func (*ADRAckDelayExponentValue) ProtoMessage() {} -func (*ADRAckDelayExponentValue) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{30} +func (*MACCommand_BeaconFreqAns) ProtoMessage() {} + +func (x *MACCommand_BeaconFreqAns) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[60] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *ADRAckDelayExponentValue) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ADRAckDelayExponentValue.Unmarshal(m, b) + +// Deprecated: Use MACCommand_BeaconFreqAns.ProtoReflect.Descriptor instead. +func (*MACCommand_BeaconFreqAns) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 27} } -func (m *ADRAckDelayExponentValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ADRAckDelayExponentValue.Marshal(b, m, deterministic) + +func (x *MACCommand_BeaconFreqAns) GetFrequencyAck() bool { + if x != nil { + return x.FrequencyAck + } + return false } -func (m *ADRAckDelayExponentValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_ADRAckDelayExponentValue.Merge(m, src) + +type MACCommand_DeviceModeInd struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Class Class `protobuf:"varint,1,opt,name=class,proto3,enum=ttn.lorawan.v3.Class" json:"class,omitempty"` } -func (m *ADRAckDelayExponentValue) XXX_Size() int { - return xxx_messageInfo_ADRAckDelayExponentValue.Size(m) + +func (x *MACCommand_DeviceModeInd) Reset() { + *x = MACCommand_DeviceModeInd{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ADRAckDelayExponentValue) XXX_DiscardUnknown() { - xxx_messageInfo_ADRAckDelayExponentValue.DiscardUnknown(m) + +func (x *MACCommand_DeviceModeInd) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ADRAckDelayExponentValue proto.InternalMessageInfo +func (*MACCommand_DeviceModeInd) ProtoMessage() {} -func (m *ADRAckDelayExponentValue) GetValue() ADRAckDelayExponent { - if m != nil { - return m.Value +func (x *MACCommand_DeviceModeInd) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[61] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return ADRAckDelayExponent_ADR_ACK_DELAY_1 + return mi.MessageOf(x) } -type DeviceEIRPValue struct { - Value DeviceEIRP `protobuf:"varint,1,opt,name=value,proto3,enum=ttn.lorawan.v3.DeviceEIRP" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// Deprecated: Use MACCommand_DeviceModeInd.ProtoReflect.Descriptor instead. +func (*MACCommand_DeviceModeInd) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 28} } -func (m *DeviceEIRPValue) Reset() { *m = DeviceEIRPValue{} } -func (m *DeviceEIRPValue) String() string { return proto.CompactTextString(m) } -func (*DeviceEIRPValue) ProtoMessage() {} -func (*DeviceEIRPValue) Descriptor() ([]byte, []int) { - return fileDescriptor_2084d1d5a227b67e, []int{31} -} -func (m *DeviceEIRPValue) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeviceEIRPValue.Unmarshal(m, b) +func (x *MACCommand_DeviceModeInd) GetClass() Class { + if x != nil { + return x.Class + } + return Class_CLASS_A } -func (m *DeviceEIRPValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeviceEIRPValue.Marshal(b, m, deterministic) + +type MACCommand_DeviceModeConf struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Class Class `protobuf:"varint,1,opt,name=class,proto3,enum=ttn.lorawan.v3.Class" json:"class,omitempty"` } -func (m *DeviceEIRPValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeviceEIRPValue.Merge(m, src) + +func (x *MACCommand_DeviceModeConf) Reset() { + *x = MACCommand_DeviceModeConf{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DeviceEIRPValue) XXX_Size() int { - return xxx_messageInfo_DeviceEIRPValue.Size(m) + +func (x *MACCommand_DeviceModeConf) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DeviceEIRPValue) XXX_DiscardUnknown() { - xxx_messageInfo_DeviceEIRPValue.DiscardUnknown(m) + +func (*MACCommand_DeviceModeConf) ProtoMessage() {} + +func (x *MACCommand_DeviceModeConf) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_lorawan_proto_msgTypes[62] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DeviceEIRPValue proto.InternalMessageInfo +// Deprecated: Use MACCommand_DeviceModeConf.ProtoReflect.Descriptor instead. +func (*MACCommand_DeviceModeConf) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_lorawan_proto_rawDescGZIP(), []int{20, 29} +} -func (m *DeviceEIRPValue) GetValue() DeviceEIRP { - if m != nil { - return m.Value +func (x *MACCommand_DeviceModeConf) GetClass() Class { + if x != nil { + return x.Class } - return DeviceEIRP_DEVICE_EIRP_8 + return Class_CLASS_A } -func init() { - proto.RegisterEnum("ttn.lorawan.v3.MType", MType_name, MType_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.MType", MType_name, MType_value) - proto.RegisterEnum("ttn.lorawan.v3.Major", Major_name, Major_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.Major", Major_name, Major_value) - proto.RegisterEnum("ttn.lorawan.v3.MACVersion", MACVersion_name, MACVersion_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.MACVersion", MACVersion_name, MACVersion_value) - proto.RegisterEnum("ttn.lorawan.v3.PHYVersion", PHYVersion_name, PHYVersion_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.PHYVersion", PHYVersion_name, PHYVersion_value) - proto.RegisterEnum("ttn.lorawan.v3.DataRateIndex", DataRateIndex_name, DataRateIndex_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.DataRateIndex", DataRateIndex_name, DataRateIndex_value) - proto.RegisterEnum("ttn.lorawan.v3.DataRateOffset", DataRateOffset_name, DataRateOffset_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.DataRateOffset", DataRateOffset_name, DataRateOffset_value) - proto.RegisterEnum("ttn.lorawan.v3.JoinRequestType", JoinRequestType_name, JoinRequestType_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.JoinRequestType", JoinRequestType_name, JoinRequestType_value) - proto.RegisterEnum("ttn.lorawan.v3.RejoinRequestType", RejoinRequestType_name, RejoinRequestType_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.RejoinRequestType", RejoinRequestType_name, RejoinRequestType_value) - proto.RegisterEnum("ttn.lorawan.v3.CFListType", CFListType_name, CFListType_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.CFListType", CFListType_name, CFListType_value) - proto.RegisterEnum("ttn.lorawan.v3.Class", Class_name, Class_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.Class", Class_name, Class_value) - proto.RegisterEnum("ttn.lorawan.v3.TxSchedulePriority", TxSchedulePriority_name, TxSchedulePriority_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.TxSchedulePriority", TxSchedulePriority_name, TxSchedulePriority_value) - proto.RegisterEnum("ttn.lorawan.v3.MACCommandIdentifier", MACCommandIdentifier_name, MACCommandIdentifier_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.MACCommandIdentifier", MACCommandIdentifier_name, MACCommandIdentifier_value) - proto.RegisterEnum("ttn.lorawan.v3.AggregatedDutyCycle", AggregatedDutyCycle_name, AggregatedDutyCycle_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.AggregatedDutyCycle", AggregatedDutyCycle_name, AggregatedDutyCycle_value) - proto.RegisterEnum("ttn.lorawan.v3.PingSlotPeriod", PingSlotPeriod_name, PingSlotPeriod_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.PingSlotPeriod", PingSlotPeriod_name, PingSlotPeriod_value) - proto.RegisterEnum("ttn.lorawan.v3.RejoinCountExponent", RejoinCountExponent_name, RejoinCountExponent_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.RejoinCountExponent", RejoinCountExponent_name, RejoinCountExponent_value) - proto.RegisterEnum("ttn.lorawan.v3.RejoinTimeExponent", RejoinTimeExponent_name, RejoinTimeExponent_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.RejoinTimeExponent", RejoinTimeExponent_name, RejoinTimeExponent_value) - proto.RegisterEnum("ttn.lorawan.v3.RejoinPeriodExponent", RejoinPeriodExponent_name, RejoinPeriodExponent_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.RejoinPeriodExponent", RejoinPeriodExponent_name, RejoinPeriodExponent_value) - proto.RegisterEnum("ttn.lorawan.v3.DeviceEIRP", DeviceEIRP_name, DeviceEIRP_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.DeviceEIRP", DeviceEIRP_name, DeviceEIRP_value) - proto.RegisterEnum("ttn.lorawan.v3.ADRAckLimitExponent", ADRAckLimitExponent_name, ADRAckLimitExponent_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.ADRAckLimitExponent", ADRAckLimitExponent_name, ADRAckLimitExponent_value) - proto.RegisterEnum("ttn.lorawan.v3.ADRAckDelayExponent", ADRAckDelayExponent_name, ADRAckDelayExponent_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.ADRAckDelayExponent", ADRAckDelayExponent_name, ADRAckDelayExponent_value) - proto.RegisterEnum("ttn.lorawan.v3.RxDelay", RxDelay_name, RxDelay_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.RxDelay", RxDelay_name, RxDelay_value) - proto.RegisterEnum("ttn.lorawan.v3.Minor", Minor_name, Minor_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.Minor", Minor_name, Minor_value) - proto.RegisterType((*Message)(nil), "ttn.lorawan.v3.Message") - golang_proto.RegisterType((*Message)(nil), "ttn.lorawan.v3.Message") - proto.RegisterType((*MHDR)(nil), "ttn.lorawan.v3.MHDR") - golang_proto.RegisterType((*MHDR)(nil), "ttn.lorawan.v3.MHDR") - proto.RegisterType((*MACPayload)(nil), "ttn.lorawan.v3.MACPayload") - golang_proto.RegisterType((*MACPayload)(nil), "ttn.lorawan.v3.MACPayload") - proto.RegisterType((*FHDR)(nil), "ttn.lorawan.v3.FHDR") - golang_proto.RegisterType((*FHDR)(nil), "ttn.lorawan.v3.FHDR") - proto.RegisterType((*FCtrl)(nil), "ttn.lorawan.v3.FCtrl") - golang_proto.RegisterType((*FCtrl)(nil), "ttn.lorawan.v3.FCtrl") - proto.RegisterType((*JoinRequestPayload)(nil), "ttn.lorawan.v3.JoinRequestPayload") - golang_proto.RegisterType((*JoinRequestPayload)(nil), "ttn.lorawan.v3.JoinRequestPayload") - proto.RegisterType((*RejoinRequestPayload)(nil), "ttn.lorawan.v3.RejoinRequestPayload") - golang_proto.RegisterType((*RejoinRequestPayload)(nil), "ttn.lorawan.v3.RejoinRequestPayload") - proto.RegisterType((*JoinAcceptPayload)(nil), "ttn.lorawan.v3.JoinAcceptPayload") - golang_proto.RegisterType((*JoinAcceptPayload)(nil), "ttn.lorawan.v3.JoinAcceptPayload") - proto.RegisterType((*DLSettings)(nil), "ttn.lorawan.v3.DLSettings") - golang_proto.RegisterType((*DLSettings)(nil), "ttn.lorawan.v3.DLSettings") - proto.RegisterType((*CFList)(nil), "ttn.lorawan.v3.CFList") - golang_proto.RegisterType((*CFList)(nil), "ttn.lorawan.v3.CFList") - proto.RegisterType((*LoRaDataRate)(nil), "ttn.lorawan.v3.LoRaDataRate") - golang_proto.RegisterType((*LoRaDataRate)(nil), "ttn.lorawan.v3.LoRaDataRate") - proto.RegisterType((*FSKDataRate)(nil), "ttn.lorawan.v3.FSKDataRate") - golang_proto.RegisterType((*FSKDataRate)(nil), "ttn.lorawan.v3.FSKDataRate") - proto.RegisterType((*LRFHSSDataRate)(nil), "ttn.lorawan.v3.LRFHSSDataRate") - golang_proto.RegisterType((*LRFHSSDataRate)(nil), "ttn.lorawan.v3.LRFHSSDataRate") - proto.RegisterType((*DataRate)(nil), "ttn.lorawan.v3.DataRate") - golang_proto.RegisterType((*DataRate)(nil), "ttn.lorawan.v3.DataRate") - proto.RegisterType((*TxSettings)(nil), "ttn.lorawan.v3.TxSettings") - golang_proto.RegisterType((*TxSettings)(nil), "ttn.lorawan.v3.TxSettings") - proto.RegisterType((*TxSettings_Downlink)(nil), "ttn.lorawan.v3.TxSettings.Downlink") - golang_proto.RegisterType((*TxSettings_Downlink)(nil), "ttn.lorawan.v3.TxSettings.Downlink") - proto.RegisterType((*GatewayAntennaIdentifiers)(nil), "ttn.lorawan.v3.GatewayAntennaIdentifiers") - golang_proto.RegisterType((*GatewayAntennaIdentifiers)(nil), "ttn.lorawan.v3.GatewayAntennaIdentifiers") - proto.RegisterType((*ClassBCGatewayIdentifiers)(nil), "ttn.lorawan.v3.ClassBCGatewayIdentifiers") - golang_proto.RegisterType((*ClassBCGatewayIdentifiers)(nil), "ttn.lorawan.v3.ClassBCGatewayIdentifiers") - proto.RegisterType((*UplinkToken)(nil), "ttn.lorawan.v3.UplinkToken") - golang_proto.RegisterType((*UplinkToken)(nil), "ttn.lorawan.v3.UplinkToken") - proto.RegisterType((*DownlinkPath)(nil), "ttn.lorawan.v3.DownlinkPath") - golang_proto.RegisterType((*DownlinkPath)(nil), "ttn.lorawan.v3.DownlinkPath") - proto.RegisterType((*TxRequest)(nil), "ttn.lorawan.v3.TxRequest") - golang_proto.RegisterType((*TxRequest)(nil), "ttn.lorawan.v3.TxRequest") - proto.RegisterType((*MACCommand)(nil), "ttn.lorawan.v3.MACCommand") - golang_proto.RegisterType((*MACCommand)(nil), "ttn.lorawan.v3.MACCommand") - proto.RegisterType((*MACCommand_ResetInd)(nil), "ttn.lorawan.v3.MACCommand.ResetInd") - golang_proto.RegisterType((*MACCommand_ResetInd)(nil), "ttn.lorawan.v3.MACCommand.ResetInd") - proto.RegisterType((*MACCommand_ResetConf)(nil), "ttn.lorawan.v3.MACCommand.ResetConf") - golang_proto.RegisterType((*MACCommand_ResetConf)(nil), "ttn.lorawan.v3.MACCommand.ResetConf") - proto.RegisterType((*MACCommand_LinkCheckAns)(nil), "ttn.lorawan.v3.MACCommand.LinkCheckAns") - golang_proto.RegisterType((*MACCommand_LinkCheckAns)(nil), "ttn.lorawan.v3.MACCommand.LinkCheckAns") - proto.RegisterType((*MACCommand_LinkADRReq)(nil), "ttn.lorawan.v3.MACCommand.LinkADRReq") - golang_proto.RegisterType((*MACCommand_LinkADRReq)(nil), "ttn.lorawan.v3.MACCommand.LinkADRReq") - proto.RegisterType((*MACCommand_LinkADRAns)(nil), "ttn.lorawan.v3.MACCommand.LinkADRAns") - golang_proto.RegisterType((*MACCommand_LinkADRAns)(nil), "ttn.lorawan.v3.MACCommand.LinkADRAns") - proto.RegisterType((*MACCommand_DutyCycleReq)(nil), "ttn.lorawan.v3.MACCommand.DutyCycleReq") - golang_proto.RegisterType((*MACCommand_DutyCycleReq)(nil), "ttn.lorawan.v3.MACCommand.DutyCycleReq") - proto.RegisterType((*MACCommand_RxParamSetupReq)(nil), "ttn.lorawan.v3.MACCommand.RxParamSetupReq") - golang_proto.RegisterType((*MACCommand_RxParamSetupReq)(nil), "ttn.lorawan.v3.MACCommand.RxParamSetupReq") - proto.RegisterType((*MACCommand_RxParamSetupAns)(nil), "ttn.lorawan.v3.MACCommand.RxParamSetupAns") - golang_proto.RegisterType((*MACCommand_RxParamSetupAns)(nil), "ttn.lorawan.v3.MACCommand.RxParamSetupAns") - proto.RegisterType((*MACCommand_DevStatusAns)(nil), "ttn.lorawan.v3.MACCommand.DevStatusAns") - golang_proto.RegisterType((*MACCommand_DevStatusAns)(nil), "ttn.lorawan.v3.MACCommand.DevStatusAns") - proto.RegisterType((*MACCommand_NewChannelReq)(nil), "ttn.lorawan.v3.MACCommand.NewChannelReq") - golang_proto.RegisterType((*MACCommand_NewChannelReq)(nil), "ttn.lorawan.v3.MACCommand.NewChannelReq") - proto.RegisterType((*MACCommand_NewChannelAns)(nil), "ttn.lorawan.v3.MACCommand.NewChannelAns") - golang_proto.RegisterType((*MACCommand_NewChannelAns)(nil), "ttn.lorawan.v3.MACCommand.NewChannelAns") - proto.RegisterType((*MACCommand_DLChannelReq)(nil), "ttn.lorawan.v3.MACCommand.DLChannelReq") - golang_proto.RegisterType((*MACCommand_DLChannelReq)(nil), "ttn.lorawan.v3.MACCommand.DLChannelReq") - proto.RegisterType((*MACCommand_DLChannelAns)(nil), "ttn.lorawan.v3.MACCommand.DLChannelAns") - golang_proto.RegisterType((*MACCommand_DLChannelAns)(nil), "ttn.lorawan.v3.MACCommand.DLChannelAns") - proto.RegisterType((*MACCommand_RxTimingSetupReq)(nil), "ttn.lorawan.v3.MACCommand.RxTimingSetupReq") - golang_proto.RegisterType((*MACCommand_RxTimingSetupReq)(nil), "ttn.lorawan.v3.MACCommand.RxTimingSetupReq") - proto.RegisterType((*MACCommand_TxParamSetupReq)(nil), "ttn.lorawan.v3.MACCommand.TxParamSetupReq") - golang_proto.RegisterType((*MACCommand_TxParamSetupReq)(nil), "ttn.lorawan.v3.MACCommand.TxParamSetupReq") - proto.RegisterType((*MACCommand_RekeyInd)(nil), "ttn.lorawan.v3.MACCommand.RekeyInd") - golang_proto.RegisterType((*MACCommand_RekeyInd)(nil), "ttn.lorawan.v3.MACCommand.RekeyInd") - proto.RegisterType((*MACCommand_RekeyConf)(nil), "ttn.lorawan.v3.MACCommand.RekeyConf") - golang_proto.RegisterType((*MACCommand_RekeyConf)(nil), "ttn.lorawan.v3.MACCommand.RekeyConf") - proto.RegisterType((*MACCommand_ADRParamSetupReq)(nil), "ttn.lorawan.v3.MACCommand.ADRParamSetupReq") - golang_proto.RegisterType((*MACCommand_ADRParamSetupReq)(nil), "ttn.lorawan.v3.MACCommand.ADRParamSetupReq") - proto.RegisterType((*MACCommand_DeviceTimeAns)(nil), "ttn.lorawan.v3.MACCommand.DeviceTimeAns") - golang_proto.RegisterType((*MACCommand_DeviceTimeAns)(nil), "ttn.lorawan.v3.MACCommand.DeviceTimeAns") - proto.RegisterType((*MACCommand_ForceRejoinReq)(nil), "ttn.lorawan.v3.MACCommand.ForceRejoinReq") - golang_proto.RegisterType((*MACCommand_ForceRejoinReq)(nil), "ttn.lorawan.v3.MACCommand.ForceRejoinReq") - proto.RegisterType((*MACCommand_RejoinParamSetupReq)(nil), "ttn.lorawan.v3.MACCommand.RejoinParamSetupReq") - golang_proto.RegisterType((*MACCommand_RejoinParamSetupReq)(nil), "ttn.lorawan.v3.MACCommand.RejoinParamSetupReq") - proto.RegisterType((*MACCommand_RejoinParamSetupAns)(nil), "ttn.lorawan.v3.MACCommand.RejoinParamSetupAns") - golang_proto.RegisterType((*MACCommand_RejoinParamSetupAns)(nil), "ttn.lorawan.v3.MACCommand.RejoinParamSetupAns") - proto.RegisterType((*MACCommand_PingSlotInfoReq)(nil), "ttn.lorawan.v3.MACCommand.PingSlotInfoReq") - golang_proto.RegisterType((*MACCommand_PingSlotInfoReq)(nil), "ttn.lorawan.v3.MACCommand.PingSlotInfoReq") - proto.RegisterType((*MACCommand_PingSlotChannelReq)(nil), "ttn.lorawan.v3.MACCommand.PingSlotChannelReq") - golang_proto.RegisterType((*MACCommand_PingSlotChannelReq)(nil), "ttn.lorawan.v3.MACCommand.PingSlotChannelReq") - proto.RegisterType((*MACCommand_PingSlotChannelAns)(nil), "ttn.lorawan.v3.MACCommand.PingSlotChannelAns") - golang_proto.RegisterType((*MACCommand_PingSlotChannelAns)(nil), "ttn.lorawan.v3.MACCommand.PingSlotChannelAns") - proto.RegisterType((*MACCommand_BeaconTimingAns)(nil), "ttn.lorawan.v3.MACCommand.BeaconTimingAns") - golang_proto.RegisterType((*MACCommand_BeaconTimingAns)(nil), "ttn.lorawan.v3.MACCommand.BeaconTimingAns") - proto.RegisterType((*MACCommand_BeaconFreqReq)(nil), "ttn.lorawan.v3.MACCommand.BeaconFreqReq") - golang_proto.RegisterType((*MACCommand_BeaconFreqReq)(nil), "ttn.lorawan.v3.MACCommand.BeaconFreqReq") - proto.RegisterType((*MACCommand_BeaconFreqAns)(nil), "ttn.lorawan.v3.MACCommand.BeaconFreqAns") - golang_proto.RegisterType((*MACCommand_BeaconFreqAns)(nil), "ttn.lorawan.v3.MACCommand.BeaconFreqAns") - proto.RegisterType((*MACCommand_DeviceModeInd)(nil), "ttn.lorawan.v3.MACCommand.DeviceModeInd") - golang_proto.RegisterType((*MACCommand_DeviceModeInd)(nil), "ttn.lorawan.v3.MACCommand.DeviceModeInd") - proto.RegisterType((*MACCommand_DeviceModeConf)(nil), "ttn.lorawan.v3.MACCommand.DeviceModeConf") - golang_proto.RegisterType((*MACCommand_DeviceModeConf)(nil), "ttn.lorawan.v3.MACCommand.DeviceModeConf") - proto.RegisterType((*MACCommands)(nil), "ttn.lorawan.v3.MACCommands") - golang_proto.RegisterType((*MACCommands)(nil), "ttn.lorawan.v3.MACCommands") - proto.RegisterType((*FrequencyValue)(nil), "ttn.lorawan.v3.FrequencyValue") - golang_proto.RegisterType((*FrequencyValue)(nil), "ttn.lorawan.v3.FrequencyValue") - proto.RegisterType((*ZeroableFrequencyValue)(nil), "ttn.lorawan.v3.ZeroableFrequencyValue") - golang_proto.RegisterType((*ZeroableFrequencyValue)(nil), "ttn.lorawan.v3.ZeroableFrequencyValue") - proto.RegisterType((*DataRateOffsetValue)(nil), "ttn.lorawan.v3.DataRateOffsetValue") - golang_proto.RegisterType((*DataRateOffsetValue)(nil), "ttn.lorawan.v3.DataRateOffsetValue") - proto.RegisterType((*DataRateIndexValue)(nil), "ttn.lorawan.v3.DataRateIndexValue") - golang_proto.RegisterType((*DataRateIndexValue)(nil), "ttn.lorawan.v3.DataRateIndexValue") - proto.RegisterType((*PingSlotPeriodValue)(nil), "ttn.lorawan.v3.PingSlotPeriodValue") - golang_proto.RegisterType((*PingSlotPeriodValue)(nil), "ttn.lorawan.v3.PingSlotPeriodValue") - proto.RegisterType((*AggregatedDutyCycleValue)(nil), "ttn.lorawan.v3.AggregatedDutyCycleValue") - golang_proto.RegisterType((*AggregatedDutyCycleValue)(nil), "ttn.lorawan.v3.AggregatedDutyCycleValue") - proto.RegisterType((*RxDelayValue)(nil), "ttn.lorawan.v3.RxDelayValue") - golang_proto.RegisterType((*RxDelayValue)(nil), "ttn.lorawan.v3.RxDelayValue") - proto.RegisterType((*ADRAckLimitExponentValue)(nil), "ttn.lorawan.v3.ADRAckLimitExponentValue") - golang_proto.RegisterType((*ADRAckLimitExponentValue)(nil), "ttn.lorawan.v3.ADRAckLimitExponentValue") - proto.RegisterType((*ADRAckDelayExponentValue)(nil), "ttn.lorawan.v3.ADRAckDelayExponentValue") - golang_proto.RegisterType((*ADRAckDelayExponentValue)(nil), "ttn.lorawan.v3.ADRAckDelayExponentValue") - proto.RegisterType((*DeviceEIRPValue)(nil), "ttn.lorawan.v3.DeviceEIRPValue") - golang_proto.RegisterType((*DeviceEIRPValue)(nil), "ttn.lorawan.v3.DeviceEIRPValue") -} - -func init() { proto.RegisterFile("lorawan-stack/api/lorawan.proto", fileDescriptor_2084d1d5a227b67e) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/lorawan.proto", fileDescriptor_2084d1d5a227b67e) -} - -var fileDescriptor_2084d1d5a227b67e = []byte{ - // 6266 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5c, 0x5d, 0x6c, 0x24, 0x57, - 0x56, 0x76, 0xf5, 0xbf, 0x4f, 0x77, 0xbb, 0x6b, 0xae, 0xe7, 0xa7, 0xbb, 0x93, 0xcd, 0x4c, 0x3c, - 0x81, 0x9d, 0xed, 0x68, 0x6c, 0x77, 0xdb, 0xe3, 0x71, 0xc2, 0x66, 0x93, 0xee, 0x76, 0x3b, 0xf6, - 0x8c, 0xff, 0xb6, 0xda, 0x33, 0x93, 0x59, 0x16, 0x8a, 0x72, 0x57, 0xb5, 0xdd, 0x71, 0x77, 0x55, - 0xa7, 0xba, 0xec, 0xb1, 0x97, 0x27, 0x82, 0x10, 0xd2, 0x4a, 0x08, 0x94, 0xb7, 0x65, 0x11, 0x5a, - 0xf1, 0x02, 0x32, 0x2f, 0x68, 0x79, 0x5a, 0x10, 0x12, 0xf0, 0xc0, 0x13, 0x08, 0xf1, 0xc0, 0x03, - 0xf0, 0xc0, 0x4a, 0x8b, 0x40, 0x32, 0x62, 0x41, 0x01, 0x24, 0x94, 0x07, 0x82, 0xce, 0xbd, 0xb7, - 0xba, 0x6e, 0x55, 0xb5, 0xc7, 0x76, 0x36, 0x61, 0xf7, 0x21, 0x79, 0x99, 0xae, 0xef, 0xde, 0xfb, - 0x9d, 0x73, 0xcf, 0x39, 0xf7, 0xdc, 0x73, 0x6f, 0x95, 0x03, 0x37, 0xbb, 0x96, 0xad, 0x3d, 0xd3, - 0xcc, 0xbb, 0x03, 0x47, 0x6b, 0xed, 0xcf, 0x68, 0xfd, 0xce, 0x0c, 0x47, 0xa6, 0xfb, 0xb6, 0xe5, - 0x58, 0x64, 0xc2, 0x71, 0xcc, 0x69, 0x17, 0x3a, 0x9c, 0x2b, 0x2e, 0xed, 0x76, 0x9c, 0xbd, 0x83, - 0x9d, 0xe9, 0x96, 0xd5, 0x9b, 0xd9, 0xde, 0x33, 0xb6, 0xf7, 0x3a, 0xe6, 0xee, 0x60, 0xd5, 0xd4, - 0x0f, 0x06, 0x8e, 0xdd, 0x31, 0x06, 0x33, 0x74, 0x54, 0xeb, 0xee, 0xae, 0x61, 0xde, 0xdd, 0xb5, - 0xee, 0xb6, 0xbb, 0xda, 0xee, 0x60, 0x46, 0x33, 0x4d, 0xcb, 0xd1, 0x9c, 0x8e, 0x65, 0x0e, 0x18, - 0x6b, 0xb1, 0x2a, 0xb0, 0x18, 0xe6, 0xa1, 0x75, 0xdc, 0xb7, 0xad, 0xa3, 0x63, 0x71, 0xf0, 0xa1, - 0xd6, 0xed, 0xe8, 0x9a, 0x63, 0xcc, 0x84, 0x7e, 0x70, 0x8a, 0xbb, 0x02, 0xc5, 0xae, 0xb5, 0x6b, - 0xb1, 0xc1, 0x3b, 0x07, 0x6d, 0xfa, 0x44, 0x1f, 0xe8, 0x2f, 0xde, 0xbd, 0x7e, 0x29, 0xbd, 0xdf, - 0x1d, 0x58, 0xe6, 0x08, 0xb5, 0x5f, 0xdc, 0xb5, 0xac, 0xdd, 0xae, 0xe1, 0x89, 0x1a, 0x38, 0xf6, - 0x41, 0xcb, 0xe1, 0xad, 0x37, 0x83, 0xad, 0x4e, 0xa7, 0x67, 0x0c, 0x1c, 0xad, 0xd7, 0xe7, 0x1d, - 0x6e, 0x87, 0x8d, 0xdd, 0xd1, 0x0d, 0xd3, 0xe9, 0xb4, 0x3b, 0x86, 0xed, 0xca, 0x98, 0x16, 0x34, - 0xb1, 0xfa, 0x86, 0xa9, 0xf5, 0x3b, 0x87, 0x95, 0x19, 0xab, 0x4f, 0xf5, 0x08, 0xeb, 0x34, 0xf5, - 0xc7, 0x51, 0x48, 0xae, 0x1b, 0x83, 0x81, 0xb6, 0x6b, 0x90, 0x39, 0x88, 0xf7, 0xd4, 0x3d, 0xdd, - 0xce, 0x4b, 0xb7, 0xa4, 0x3b, 0xe9, 0xca, 0xd5, 0x69, 0xbf, 0xf3, 0xa6, 0xd7, 0x57, 0x96, 0x94, - 0x5a, 0xea, 0xa3, 0x5a, 0xfc, 0x9b, 0x52, 0x44, 0x96, 0x94, 0x58, 0x6f, 0x45, 0xb7, 0xc9, 0x0b, - 0x10, 0xed, 0x75, 0x5a, 0xf9, 0xc8, 0x2d, 0xe9, 0x4e, 0xa6, 0x36, 0xfe, 0x51, 0x2d, 0xf1, 0x8d, - 0x98, 0x3c, 0x96, 0x8f, 0x29, 0x88, 0x92, 0x37, 0x20, 0xdd, 0xd3, 0x5a, 0x6a, 0x5f, 0x3b, 0xee, - 0x5a, 0x9a, 0x9e, 0x8f, 0x52, 0xde, 0x62, 0x88, 0xb7, 0x5a, 0xdf, 0x62, 0x3d, 0x56, 0xc6, 0x14, - 0xe8, 0x69, 0x2d, 0xfe, 0x44, 0x1e, 0xc3, 0xd5, 0x77, 0xad, 0x8e, 0xa9, 0xda, 0xc6, 0x7b, 0x07, - 0xc6, 0xc0, 0x19, 0xf2, 0xc4, 0x28, 0xcf, 0x54, 0x90, 0xe7, 0x81, 0xd5, 0x31, 0x15, 0xd6, 0xd5, - 0xe3, 0x23, 0xef, 0x86, 0x50, 0xd2, 0x84, 0x49, 0xca, 0xab, 0xb5, 0x5a, 0x46, 0xdf, 0xa3, 0x8d, - 0x53, 0xda, 0x97, 0x47, 0xd1, 0x56, 0x69, 0x4f, 0x8f, 0xf5, 0xca, 0xbb, 0x41, 0x90, 0x7c, 0x1d, - 0xae, 0xdb, 0xc6, 0x48, 0x75, 0x13, 0x94, 0xf7, 0x95, 0x20, 0xaf, 0x62, 0xbc, 0x3b, 0x4a, 0xe1, - 0xab, 0xf6, 0x08, 0xbc, 0x36, 0x01, 0x49, 0x57, 0x50, 0xf4, 0x7f, 0x6a, 0xd2, 0x83, 0x58, 0x2a, - 0x29, 0xa7, 0xa6, 0x0e, 0x20, 0x86, 0x4e, 0x21, 0x0b, 0x90, 0xe8, 0xa9, 0xce, 0x71, 0xdf, 0xa0, - 0xae, 0x9b, 0xa8, 0x5c, 0x0b, 0x99, 0x78, 0xfb, 0xb8, 0x6f, 0x50, 0xdf, 0xbd, 0x4f, 0x7d, 0x17, - 0xef, 0x21, 0x40, 0xee, 0x41, 0xbc, 0xa7, 0xbd, 0x6b, 0xd9, 0xd4, 0x7d, 0xa3, 0x86, 0x61, 0xa3, - 0x6f, 0x18, 0x02, 0x53, 0x3f, 0x90, 0x00, 0x3c, 0xa7, 0x61, 0xdc, 0xb4, 0x9f, 0x17, 0x37, 0xcb, - 0x81, 0xb8, 0x69, 0x63, 0xdc, 0xdc, 0x84, 0x44, 0x5b, 0xed, 0x5b, 0xb6, 0x43, 0x65, 0x67, 0x69, - 0x7b, 0x29, 0x9a, 0xff, 0x58, 0x52, 0xe2, 0xed, 0x2d, 0xcb, 0x76, 0xc8, 0x4d, 0x48, 0xb7, 0xed, - 0x9e, 0x2f, 0x76, 0x32, 0x0a, 0xb4, 0xed, 0x9e, 0x2b, 0xf6, 0x2d, 0xc8, 0xe9, 0x46, 0xcb, 0xd2, - 0x0d, 0x3d, 0x10, 0x18, 0x37, 0xa6, 0xd9, 0x52, 0x9a, 0x76, 0x97, 0xd2, 0x74, 0x93, 0x2e, 0x34, - 0x65, 0x82, 0xf7, 0x77, 0x19, 0x5e, 0x04, 0x68, 0x1f, 0x74, 0xbb, 0x6a, 0x5b, 0x6d, 0x99, 0x0e, - 0x75, 0x7f, 0x56, 0x49, 0x21, 0xb2, 0x5c, 0x37, 0x9d, 0xa9, 0x1f, 0x46, 0x21, 0x86, 0xaa, 0x93, - 0x7f, 0x8b, 0x40, 0x4a, 0x37, 0x0e, 0x55, 0x4d, 0xe7, 0x73, 0xcc, 0xd4, 0xfe, 0x26, 0xf2, 0x41, - 0xb5, 0xf0, 0x00, 0xa6, 0x2a, 0x0b, 0xb3, 0xb3, 0xd5, 0x5a, 0x7d, 0x69, 0xea, 0x37, 0x23, 0x52, - 0xf2, 0x77, 0x22, 0x09, 0x4c, 0x07, 0xe6, 0x2e, 0x5d, 0x05, 0x7b, 0xb1, 0xbe, 0x74, 0x7a, 0x52, - 0x78, 0x5f, 0x82, 0x37, 0x77, 0xad, 0x69, 0x67, 0xcf, 0x70, 0x68, 0xd2, 0x98, 0x36, 0x0d, 0xe7, - 0x99, 0x65, 0xef, 0xcf, 0xf8, 0x57, 0xf3, 0xe1, 0xdc, 0x4c, 0x7f, 0x7f, 0x77, 0x06, 0x7d, 0x38, - 0x98, 0x5e, 0xd7, 0xec, 0xc1, 0x9e, 0xd6, 0x5d, 0x69, 0xbc, 0x53, 0x3b, 0x76, 0x8c, 0x01, 0xb9, - 0x34, 0xc1, 0x23, 0xb3, 0xc7, 0x28, 0xe6, 0x29, 0xc1, 0x87, 0x27, 0x85, 0xef, 0x48, 0xc5, 0x8d, - 0x8b, 0xb1, 0xb4, 0x7a, 0xfa, 0x8c, 0xe3, 0x98, 0x77, 0xbb, 0xcf, 0xee, 0xb6, 0xba, 0x9d, 0x99, - 0xd6, 0xc1, 0xc0, 0xb1, 0x7a, 0x34, 0x13, 0x4f, 0x6f, 0x18, 0xcf, 0x18, 0xe1, 0x72, 0x57, 0xdb, - 0x9d, 0xfa, 0xd1, 0xf9, 0xde, 0x36, 0x9c, 0xc6, 0x91, 0xd6, 0x72, 0x28, 0xa7, 0x92, 0xd4, 0x8d, - 0xc3, 0xaa, 0xae, 0xdb, 0x18, 0xcd, 0x6d, 0xb5, 0xe5, 0xd8, 0x5d, 0x1a, 0x1a, 0xe9, 0x70, 0x58, - 0x2e, 0xd7, 0x1d, 0xbb, 0x2b, 0x44, 0x54, 0xbc, 0x8d, 0x00, 0x79, 0x09, 0xe3, 0x10, 0x3d, 0x19, - 0xa5, 0x11, 0x85, 0xc9, 0xa8, 0x14, 0xcb, 0x7f, 0xfc, 0x71, 0x54, 0x89, 0xb5, 0xeb, 0xa6, 0x43, - 0x5e, 0x42, 0x5e, 0xab, 0xef, 0x0c, 0x68, 0x9c, 0x64, 0x6a, 0xc9, 0x8f, 0x6a, 0xb1, 0x6f, 0x44, - 0xf2, 0x39, 0x25, 0xde, 0xde, 0xec, 0x3b, 0x83, 0xa9, 0x5f, 0x92, 0x20, 0x4e, 0xa9, 0x89, 0x0c, - 0x51, 0x8d, 0xfb, 0x3a, 0xa5, 0xe0, 0x4f, 0xf2, 0x12, 0xa4, 0x35, 0xdd, 0x56, 0xb5, 0xd6, 0x3e, - 0x2e, 0x6f, 0xaa, 0x58, 0x4a, 0x19, 0xd7, 0x74, 0xbb, 0xda, 0xda, 0x57, 0x8c, 0xf7, 0xe8, 0x88, - 0xd6, 0x3e, 0x95, 0x8c, 0x23, 0x5a, 0xfb, 0xe4, 0x05, 0x18, 0x6f, 0xab, 0x7d, 0xc3, 0xd4, 0x3b, - 0xe6, 0x2e, 0x15, 0x98, 0x52, 0x52, 0xed, 0x2d, 0xf6, 0x4c, 0x6e, 0x40, 0xb2, 0xd5, 0xd5, 0x06, - 0x03, 0x75, 0x87, 0x86, 0x5d, 0x4a, 0x49, 0xd0, 0xc7, 0xda, 0xd4, 0x7f, 0xa4, 0x80, 0x84, 0xf3, - 0x18, 0xf9, 0xef, 0x08, 0xa4, 0x68, 0x6e, 0x31, 0x0e, 0x3a, 0x3c, 0x04, 0xff, 0x2e, 0xf2, 0x41, - 0xf5, 0xe5, 0x07, 0x64, 0xea, 0xfe, 0x6c, 0x6d, 0x6e, 0xe9, 0xde, 0xfd, 0xc6, 0xd2, 0xec, 0xd9, - 0xa1, 0x98, 0xfa, 0x09, 0x08, 0xc5, 0xc5, 0x4f, 0x3b, 0x14, 0x17, 0x3f, 0xc3, 0x50, 0x44, 0x5b, - 0x37, 0x0e, 0x3a, 0xe4, 0x3f, 0x23, 0x80, 0x61, 0x49, 0xcd, 0x1e, 0xf9, 0xdc, 0xec, 0x9f, 0xb1, - 0xd9, 0x13, 0xba, 0x71, 0x88, 0x56, 0xff, 0xd7, 0x08, 0x8c, 0xa3, 0xd5, 0x4d, 0xcb, 0x6c, 0x19, - 0x2c, 0xf3, 0xd7, 0xfe, 0x2a, 0xf2, 0x41, 0xf5, 0xda, 0x83, 0xc4, 0xd4, 0x59, 0xb6, 0x8e, 0xfc, - 0x04, 0xd8, 0xba, 0xf2, 0x69, 0xdb, 0xba, 0xf2, 0xd9, 0xd9, 0x1a, 0x77, 0xb4, 0x0d, 0xb4, 0xef, - 0xd4, 0x3f, 0x8c, 0xc3, 0xd5, 0x51, 0xb5, 0x08, 0x59, 0x83, 0x34, 0xaf, 0x68, 0x84, 0xd2, 0xe2, - 0xe5, 0xe7, 0x96, 0x31, 0x81, 0x32, 0x03, 0xd8, 0x78, 0x5a, 0x6b, 0xfc, 0x4b, 0x04, 0x12, 0xa6, - 0xe1, 0xa8, 0x1d, 0x9d, 0xaf, 0xa4, 0xbf, 0x8e, 0x7c, 0x50, 0xbd, 0xf1, 0x20, 0x35, 0x35, 0x3b, - 0x3b, 0x3b, 0x5b, 0x9e, 0x1b, 0xe5, 0xd3, 0xe8, 0x4f, 0x80, 0x4f, 0xe7, 0x3e, 0x6d, 0x9f, 0xce, - 0x7d, 0x76, 0x3e, 0x8d, 0x9b, 0x86, 0xb3, 0x1a, 0xd8, 0x2c, 0xa2, 0x9f, 0x67, 0xad, 0x1f, 0xc7, - 0x66, 0x11, 0xfb, 0xdc, 0xec, 0xff, 0x4f, 0x9b, 0xc5, 0x17, 0x80, 0x67, 0x19, 0xa1, 0x88, 0x1f, - 0x67, 0x08, 0x56, 0xf1, 0x7f, 0x08, 0x70, 0x25, 0x74, 0x82, 0x23, 0x2f, 0xc2, 0xb8, 0x61, 0xb6, - 0xec, 0xe3, 0xbe, 0x63, 0xe8, 0xac, 0x9e, 0x52, 0x3c, 0x80, 0xfc, 0x7b, 0x04, 0x80, 0x32, 0xb2, - 0x0d, 0xc8, 0x9f, 0xae, 0xd0, 0x7f, 0x8d, 0xe5, 0xcf, 0xd3, 0xd5, 0x8f, 0xee, 0xc1, 0x71, 0xb4, - 0x31, 0xdd, 0x83, 0xc4, 0xcd, 0x21, 0xfa, 0xf9, 0xe6, 0xf0, 0x59, 0x6e, 0x0e, 0xbe, 0xc3, 0x6c, - 0xec, 0xf3, 0xc3, 0xec, 0x67, 0x7d, 0x98, 0x6d, 0x40, 0x5a, 0xef, 0xaa, 0x03, 0xc3, 0x71, 0x90, - 0x99, 0xdf, 0x31, 0x85, 0xae, 0xc0, 0x96, 0xd6, 0x9a, 0xbc, 0x87, 0x70, 0xac, 0x05, 0xbd, 0xeb, - 0xa2, 0xe4, 0xcb, 0x90, 0xb2, 0x8f, 0x54, 0xdd, 0xe8, 0x6a, 0xc7, 0xf4, 0x3e, 0x69, 0xa2, 0x72, - 0x23, 0x54, 0x88, 0x1d, 0x2d, 0x61, 0xb3, 0x50, 0x7e, 0x25, 0x6d, 0x06, 0x91, 0x19, 0x48, 0xb6, - 0xda, 0x6a, 0xb7, 0x33, 0x70, 0xf2, 0x49, 0xaa, 0xc0, 0xf5, 0xe0, 0xe0, 0xfa, 0xf2, 0x5a, 0x67, - 0xe0, 0x28, 0x89, 0x56, 0x1b, 0xff, 0x9d, 0xfa, 0x13, 0x09, 0xc0, 0xd3, 0x89, 0xac, 0x41, 0xd6, - 0x3e, 0x2a, 0xab, 0xba, 0xad, 0x5a, 0xed, 0xf6, 0xc0, 0x70, 0x78, 0x2d, 0xf8, 0x52, 0x68, 0x1a, - 0x9a, 0xa3, 0x29, 0x9a, 0x63, 0x6c, 0xd2, 0x5e, 0x82, 0x26, 0x69, 0xfb, 0xa8, 0xbc, 0x64, 0x33, - 0x98, 0x7c, 0x05, 0x12, 0xf6, 0x51, 0x45, 0xd5, 0xdd, 0x6b, 0xa7, 0x2f, 0x9c, 0x45, 0xb3, 0x6a, - 0xea, 0xc6, 0x91, 0x78, 0xfd, 0x64, 0x1f, 0x55, 0x96, 0x6c, 0x3c, 0x3c, 0x5b, 0x7d, 0x47, 0x35, - 0x8d, 0x5d, 0x7e, 0xde, 0x4e, 0x58, 0x7d, 0x67, 0xc3, 0xd8, 0x7d, 0x3d, 0xf5, 0xe1, 0x49, 0x21, - 0x96, 0x92, 0x64, 0x69, 0xea, 0x17, 0x21, 0xc1, 0x66, 0x44, 0x16, 0x21, 0x26, 0x54, 0xaf, 0xc5, - 0xd1, 0xf3, 0x0e, 0x94, 0xad, 0x74, 0x04, 0x21, 0x10, 0x6b, 0xb3, 0xb3, 0x7e, 0xf4, 0x4e, 0x56, - 0xa1, 0xbf, 0x49, 0x01, 0x52, 0xad, 0x3d, 0xb5, 0xa7, 0x0d, 0xf6, 0x07, 0xf9, 0xe8, 0xad, 0xe8, - 0x9d, 0x94, 0x92, 0x6c, 0xed, 0xad, 0xe3, 0xa3, 0x20, 0xfc, 0x7d, 0x09, 0x32, 0x6b, 0x96, 0xa2, - 0xb9, 0xd3, 0xc0, 0xdd, 0x66, 0x47, 0x33, 0xf5, 0x67, 0x1d, 0xdd, 0xd9, 0xa3, 0x8a, 0x64, 0x15, - 0x0f, 0x20, 0x5f, 0x02, 0x79, 0xd0, 0xb7, 0x0d, 0x4d, 0xef, 0x98, 0xbb, 0x6a, 0x5b, 0x6b, 0x39, - 0xfc, 0x3e, 0x2e, 0xab, 0xe4, 0x86, 0xf8, 0x32, 0x85, 0xc9, 0x4d, 0x48, 0xb7, 0x2c, 0xda, 0xcf, - 0xd6, 0x1c, 0x76, 0x32, 0x1a, 0x57, 0x80, 0x41, 0x28, 0x69, 0xa8, 0xc4, 0xd8, 0x54, 0x05, 0xd2, - 0xcb, 0xcd, 0x87, 0x43, 0x15, 0x0a, 0x90, 0xda, 0xe9, 0x38, 0x6c, 0x18, 0xd3, 0x20, 0xb9, 0xd3, - 0x71, 0x02, 0x63, 0x7e, 0x4b, 0x82, 0x89, 0x35, 0x65, 0x79, 0xa5, 0xd9, 0x1c, 0x8e, 0xfb, 0x22, - 0xe4, 0x7a, 0x96, 0x7e, 0xd0, 0xa5, 0x97, 0xc6, 0xde, 0x39, 0x20, 0xab, 0x4c, 0x78, 0x30, 0x2d, - 0xef, 0x17, 0xe0, 0x86, 0xd5, 0x37, 0x6c, 0x0d, 0x03, 0x46, 0x6d, 0xed, 0x69, 0xa6, 0x69, 0x74, - 0x55, 0x36, 0x63, 0x36, 0x99, 0x6b, 0xc3, 0xe6, 0x3a, 0x6b, 0x7d, 0x42, 0x67, 0x7f, 0x89, 0x29, - 0xfd, 0x85, 0x04, 0xa9, 0xa1, 0x62, 0x15, 0x88, 0xa1, 0x1b, 0xf9, 0x9d, 0xe3, 0x8b, 0x41, 0xbf, - 0x8a, 0xf6, 0x5f, 0x19, 0x53, 0x68, 0x5f, 0x32, 0x03, 0xd1, 0xf6, 0x60, 0x9f, 0xdf, 0x2a, 0xbd, - 0x10, 0xba, 0x55, 0xf2, 0xcc, 0xb5, 0x32, 0xa6, 0x60, 0x4f, 0xb2, 0x08, 0x89, 0xae, 0xdd, 0xde, - 0x1b, 0x0c, 0xf8, 0xd5, 0x75, 0x28, 0xe0, 0xfd, 0xd6, 0x5a, 0x19, 0x53, 0x78, 0x7f, 0x4f, 0xeb, - 0xda, 0x15, 0x00, 0xcf, 0x54, 0xf4, 0xf2, 0x76, 0xea, 0x87, 0x51, 0x80, 0xed, 0xa3, 0xe1, 0xea, - 0x7a, 0x13, 0xc6, 0x75, 0xcd, 0xd1, 0x3c, 0xe7, 0xa4, 0x2b, 0xf9, 0xb3, 0x96, 0x84, 0x90, 0x1e, - 0x52, 0xba, 0x10, 0x5f, 0x6d, 0x7a, 0xe9, 0x6c, 0xb6, 0x8e, 0x69, 0x4e, 0x8f, 0x29, 0x1e, 0x80, - 0x05, 0x92, 0x61, 0x6a, 0x3b, 0x5d, 0x43, 0x6d, 0xd9, 0x2d, 0x7e, 0xdd, 0x34, 0xce, 0x90, 0xba, - 0xdd, 0xc2, 0xc1, 0xc3, 0x37, 0x0d, 0x34, 0xb5, 0x64, 0x15, 0x0f, 0x20, 0xd3, 0x10, 0xc3, 0x07, - 0x9e, 0x36, 0x8a, 0xa1, 0x9b, 0xd5, 0x6d, 0xb7, 0xa7, 0x42, 0xfb, 0x91, 0x37, 0x21, 0xa5, 0x5b, - 0xcf, 0xcc, 0x6e, 0xc7, 0xdc, 0xcf, 0xa7, 0xe8, 0x98, 0xdb, 0xc1, 0xa9, 0x78, 0x33, 0x9f, 0x5e, - 0xe2, 0x5d, 0x95, 0xe1, 0x20, 0x72, 0x0f, 0xae, 0xb7, 0xb0, 0x24, 0x30, 0x1d, 0x5b, 0x73, 0x2c, - 0x5b, 0xf5, 0x74, 0x1b, 0xbf, 0x25, 0xdd, 0x89, 0x2a, 0xd7, 0xc4, 0xd6, 0xa1, 0xf4, 0xe2, 0xaf, - 0x60, 0x6c, 0xb8, 0x1c, 0xb7, 0x21, 0xab, 0x99, 0x8e, 0x61, 0x9a, 0x9a, 0xda, 0xc1, 0x14, 0xc2, - 0x43, 0x36, 0xc3, 0x41, 0x9a, 0x56, 0x70, 0x45, 0x38, 0x47, 0x6a, 0xdf, 0x7a, 0x66, 0xb0, 0xe5, - 0x16, 0x51, 0x92, 0xce, 0xd1, 0x16, 0x3e, 0x92, 0x19, 0x98, 0xec, 0x98, 0x87, 0x86, 0xed, 0xa8, - 0x7d, 0xab, 0xab, 0xd9, 0x9d, 0x6f, 0x50, 0xdf, 0xf1, 0x64, 0x43, 0x58, 0xd3, 0x96, 0xd0, 0xe2, - 0x79, 0xdb, 0xfb, 0xf5, 0x20, 0x96, 0x8a, 0xc8, 0xd1, 0x07, 0xb1, 0x54, 0x54, 0x8e, 0x4d, 0xfd, - 0xba, 0x04, 0x85, 0xb7, 0x35, 0xc7, 0x78, 0xa6, 0x1d, 0x57, 0xb9, 0x0e, 0xde, 0x9b, 0x1b, 0xb2, - 0x0e, 0xe9, 0x5d, 0xd6, 0xa8, 0x76, 0xf4, 0x01, 0x8f, 0x80, 0xd0, 0xdb, 0x0d, 0x3e, 0x5e, 0x18, - 0x28, 0x6e, 0x15, 0xbb, 0x6e, 0xeb, 0x20, 0x3c, 0xfb, 0x48, 0x78, 0xf6, 0x53, 0x7f, 0x20, 0x41, - 0xa1, 0x4e, 0xaf, 0x1c, 0xeb, 0x61, 0xe2, 0x1f, 0x87, 0x46, 0x98, 0x08, 0x76, 0x6d, 0xeb, 0xa0, - 0xcf, 0xbb, 0xd0, 0x3b, 0x5c, 0x05, 0x28, 0xc4, 0x54, 0xfe, 0x76, 0x04, 0xd2, 0x8f, 0xfa, 0xe8, - 0xe0, 0x6d, 0x6b, 0xdf, 0x30, 0x49, 0x03, 0xa2, 0x9e, 0x72, 0x5f, 0x3a, 0x43, 0xb9, 0xb0, 0xb9, - 0x05, 0x1d, 0x71, 0xbc, 0x3f, 0xfe, 0x23, 0xc1, 0xf8, 0xff, 0x19, 0x48, 0x0f, 0x0c, 0xfb, 0xd0, - 0x60, 0x81, 0x38, 0x7c, 0x83, 0x75, 0xf6, 0x32, 0x00, 0xd6, 0x1d, 0x01, 0xf2, 0x2a, 0x5c, 0x09, - 0xc5, 0x32, 0x5d, 0x9f, 0x51, 0x45, 0x0e, 0x86, 0x31, 0x79, 0x03, 0x32, 0xae, 0xcd, 0x69, 0xbf, - 0xf8, 0xb9, 0xa2, 0x5c, 0x1f, 0x21, 0x32, 0xf5, 0xcb, 0x12, 0x64, 0xdc, 0x05, 0xb0, 0xa5, 0x39, - 0x7b, 0xe4, 0x36, 0x64, 0x0e, 0xa8, 0xb5, 0x54, 0x07, 0xcd, 0xc5, 0x4e, 0x39, 0x2b, 0x63, 0x4a, - 0xfa, 0x40, 0xb0, 0x61, 0x15, 0xe2, 0xed, 0xce, 0x91, 0xa1, 0xf3, 0x9c, 0x78, 0x71, 0x2b, 0xae, - 0x8c, 0x29, 0x6c, 0x64, 0x2d, 0x0d, 0xb1, 0x3e, 0xca, 0xa3, 0x99, 0xed, 0x9b, 0x71, 0x18, 0xdf, - 0x3e, 0xe2, 0x97, 0x41, 0xe4, 0x55, 0x88, 0xd3, 0x6b, 0xed, 0xb3, 0xde, 0x4a, 0xd1, 0x00, 0x54, - 0x58, 0x1f, 0x52, 0x87, 0x09, 0x37, 0x09, 0xa8, 0x48, 0x38, 0xa0, 0x1b, 0xef, 0x88, 0xd4, 0x2e, - 0xce, 0x52, 0xc9, 0xea, 0xc2, 0xd3, 0x80, 0x7c, 0x05, 0xc6, 0x69, 0xa1, 0x42, 0xeb, 0xa4, 0xe8, - 0x45, 0xeb, 0xa4, 0x14, 0x56, 0x27, 0xb4, 0x50, 0xfa, 0x32, 0x2f, 0x74, 0x86, 0xe9, 0x38, 0xf3, - 0xfc, 0x74, 0xcc, 0x0a, 0x1b, 0x37, 0x0f, 0xdf, 0x66, 0xa3, 0xbd, 0x5c, 0x1c, 0xa7, 0xb9, 0x38, - 0x63, 0x1f, 0x95, 0x97, 0x87, 0xe9, 0x98, 0x8a, 0xa8, 0x08, 0x22, 0xb2, 0xe7, 0x8b, 0xa8, 0xf8, - 0x45, 0x54, 0x04, 0x11, 0x49, 0x57, 0x44, 0xc5, 0x13, 0xb1, 0x02, 0xa9, 0xbe, 0xdd, 0xb1, 0xec, - 0x8e, 0x73, 0x4c, 0x93, 0xf0, 0x44, 0x78, 0xed, 0x6e, 0x1f, 0x35, 0x5b, 0x7b, 0x86, 0x7e, 0xd0, - 0x35, 0xb6, 0x78, 0x4f, 0xd1, 0x1e, 0xee, 0x68, 0xf2, 0x26, 0x64, 0xb5, 0x9d, 0x81, 0xd5, 0x3d, - 0x70, 0x0c, 0x16, 0x95, 0xe3, 0xe7, 0x46, 0x65, 0xc6, 0x1d, 0x40, 0xa3, 0x7a, 0x0e, 0xae, 0x0c, - 0x75, 0x55, 0xfb, 0x5d, 0xcd, 0xc4, 0x23, 0x1e, 0xe0, 0x26, 0x4f, 0x5f, 0xbf, 0xd8, 0x91, 0xfc, - 0x5b, 0x4a, 0x6e, 0xd8, 0x63, 0xab, 0xab, 0x99, 0xab, 0x3a, 0x99, 0x83, 0x94, 0xa6, 0x1f, 0x6a, - 0x66, 0xcb, 0xd0, 0xf3, 0xad, 0xe7, 0xbf, 0xd2, 0x1b, 0x76, 0x7c, 0x10, 0x4b, 0xc5, 0xe4, 0xf8, - 0x83, 0x58, 0x2a, 0x21, 0x27, 0x1f, 0xc4, 0x52, 0x69, 0x39, 0x33, 0xf5, 0xe7, 0x73, 0xf4, 0x35, - 0x65, 0xdd, 0xea, 0xf5, 0x34, 0x53, 0x27, 0x35, 0x88, 0xb6, 0x3a, 0x3a, 0x8f, 0xc5, 0x57, 0x46, - 0xbc, 0x84, 0xe6, 0x1d, 0xbd, 0x28, 0xaf, 0xc1, 0x47, 0xb5, 0xe4, 0xfb, 0x52, 0x4c, 0x96, 0x6e, - 0x8d, 0x29, 0x38, 0x98, 0xbc, 0x0c, 0x69, 0x5b, 0x7b, 0x36, 0x7c, 0xdf, 0x18, 0xe1, 0x6b, 0x0a, - 0x6c, 0xed, 0x99, 0x7b, 0xb5, 0x50, 0x83, 0x71, 0xdb, 0x18, 0xe0, 0x59, 0xd6, 0x74, 0xdf, 0x78, - 0xdf, 0x3e, 0x5b, 0xd8, 0xb4, 0x82, 0x7d, 0x57, 0x4d, 0x7d, 0x65, 0x4c, 0x49, 0xd9, 0xfc, 0x37, - 0x69, 0x00, 0x30, 0x8e, 0x96, 0x65, 0xb6, 0xf9, 0x5b, 0xcd, 0x57, 0xce, 0x23, 0xa9, 0x5b, 0x66, - 0x7b, 0x65, 0x4c, 0x61, 0xd2, 0xf1, 0x81, 0x6c, 0xc2, 0x04, 0x5d, 0x4e, 0xad, 0x3d, 0xa3, 0xb5, - 0xaf, 0x6a, 0xa6, 0x7b, 0xfc, 0xf8, 0xe2, 0x73, 0xa8, 0xd6, 0x3a, 0xe6, 0x7e, 0x1d, 0xfb, 0x57, - 0x4d, 0x5c, 0xe4, 0x99, 0xae, 0xf0, 0x4c, 0x56, 0x81, 0x3e, 0xab, 0x9a, 0x6e, 0xd3, 0xd7, 0x60, - 0xec, 0xcd, 0xf6, 0x4f, 0x9d, 0x43, 0x57, 0x5d, 0x52, 0x14, 0xe3, 0x3d, 0x34, 0x13, 0x0e, 0xae, - 0xea, 0xb6, 0x62, 0xbc, 0xe7, 0xa3, 0x42, 0xcd, 0x92, 0x17, 0xa5, 0x62, 0x7a, 0xb9, 0x54, 0xa8, - 0xd5, 0x26, 0x4c, 0xe8, 0x07, 0xce, 0xb1, 0xda, 0x3a, 0x6e, 0x75, 0x0d, 0xaa, 0x57, 0xea, 0xdc, - 0x69, 0x2e, 0x1d, 0x38, 0xc7, 0x75, 0xec, 0xcf, 0x34, 0xcb, 0xe8, 0xc2, 0x33, 0x79, 0x0a, 0xc4, - 0x3e, 0x52, 0xfb, 0x9a, 0xad, 0xf5, 0xf0, 0xe4, 0x76, 0xd0, 0xa7, 0xa4, 0x2c, 0xf4, 0x4b, 0xcf, - 0x73, 0xc3, 0xd1, 0x16, 0x8e, 0x69, 0xe2, 0x10, 0xc6, 0x9b, 0xb3, 0xfd, 0xd0, 0x08, 0x6a, 0x9c, - 0x3c, 0x5c, 0x8a, 0x9a, 0x59, 0xc0, 0x47, 0xed, 0x9a, 0xc1, 0x38, 0x54, 0x07, 0x8e, 0xe6, 0x1c, - 0x0c, 0x28, 0x6d, 0xfa, 0x7c, 0x33, 0x18, 0x87, 0x4d, 0xda, 0x9f, 0x7b, 0x5b, 0x17, 0x9e, 0x89, - 0x02, 0x39, 0xd3, 0x78, 0x36, 0x2c, 0xe6, 0xd1, 0x06, 0x2c, 0x1d, 0xde, 0x79, 0x0e, 0xe3, 0x86, - 0xf1, 0x8c, 0xd7, 0xf7, 0xcc, 0x02, 0x59, 0x53, 0x04, 0x82, 0x9c, 0xa8, 0x65, 0xf6, 0x12, 0x9c, - 0x4c, 0x4d, 0x81, 0xd3, 0x9d, 0x78, 0xd7, 0xa7, 0xe6, 0xc4, 0xf9, 0x13, 0x5f, 0xf3, 0x69, 0x99, - 0xd1, 0xbb, 0x82, 0x92, 0x7e, 0x42, 0xd4, 0x31, 0x77, 0x71, 0x42, 0xd7, 0x92, 0x5d, 0x41, 0xc3, - 0xaf, 0xc3, 0xa4, 0x7d, 0x84, 0x09, 0x14, 0xcf, 0x39, 0x5e, 0x44, 0xc9, 0x94, 0xf5, 0xd5, 0xe7, - 0xba, 0x7d, 0x9b, 0x0e, 0x12, 0x42, 0x4a, 0xb6, 0x03, 0x18, 0xc6, 0x94, 0x13, 0x0e, 0xd7, 0x2b, - 0xe7, 0xc6, 0xd4, 0x76, 0x38, 0x5c, 0x9d, 0x40, 0xb8, 0xd2, 0x64, 0xb6, 0x6f, 0x1c, 0xd3, 0x64, - 0x46, 0x2e, 0x90, 0xcc, 0xf6, 0x8d, 0xe3, 0x61, 0x32, 0x63, 0xbf, 0x59, 0x32, 0x43, 0x0e, 0x9a, - 0xcc, 0x26, 0x2f, 0x90, 0xcc, 0xf6, 0x8d, 0x63, 0x2f, 0x99, 0xf1, 0x07, 0xb4, 0x21, 0xe6, 0x8a, - 0xe0, 0x34, 0xaf, 0x9e, 0x6b, 0xc3, 0xea, 0x92, 0x12, 0x9c, 0xa7, 0xac, 0xe9, 0xb6, 0x7f, 0xa2, - 0x0a, 0xe4, 0x74, 0xe3, 0xb0, 0xd3, 0x62, 0xdb, 0x1c, 0xf5, 0xf9, 0xb5, 0x73, 0xe3, 0x72, 0x89, - 0x8e, 0xc0, 0x7d, 0x8e, 0xc7, 0xa5, 0x2e, 0x02, 0xe4, 0x11, 0xc8, 0x6d, 0xcb, 0x6e, 0x61, 0x4a, - 0x72, 0xbf, 0x0b, 0xca, 0x5f, 0x1f, 0x5d, 0x67, 0x09, 0xa4, 0xcb, 0x38, 0x64, 0xf8, 0x52, 0x6d, - 0x65, 0x4c, 0x99, 0x68, 0xfb, 0x10, 0x62, 0x0c, 0x3f, 0x34, 0x0a, 0xda, 0xe2, 0x06, 0x25, 0x9f, - 0x7e, 0xae, 0x6d, 0x71, 0x60, 0xd0, 0x1c, 0x93, 0x76, 0x18, 0x3e, 0x43, 0x0c, 0x1a, 0x26, 0x7f, - 0x69, 0x31, 0xcc, 0x3c, 0x21, 0x31, 0x68, 0xa4, 0xa7, 0x40, 0xfa, 0x74, 0x55, 0x74, 0x2d, 0xdc, - 0x32, 0xdb, 0x16, 0x9d, 0x49, 0xe1, 0xdc, 0xe0, 0xdd, 0xc2, 0x15, 0xd0, 0xb5, 0x9c, 0x55, 0xb3, - 0x6d, 0xf1, 0xe0, 0xed, 0xfb, 0x21, 0xb2, 0x03, 0xd7, 0x3c, 0x6a, 0x31, 0x3d, 0x14, 0x29, 0xfb, - 0xdd, 0x0b, 0xb0, 0xfb, 0x92, 0x04, 0xe9, 0x87, 0xd0, 0xd1, 0x32, 0xd0, 0x48, 0x2f, 0x5c, 0x56, - 0x06, 0xb3, 0x51, 0x50, 0x06, 0x9a, 0xe8, 0x1d, 0xb8, 0xb2, 0x63, 0x68, 0x2d, 0xcb, 0x74, 0x33, - 0x08, 0xf2, 0xbf, 0x78, 0xae, 0x85, 0x6a, 0x74, 0x0c, 0xcb, 0x15, 0x7c, 0xcb, 0xd8, 0xf1, 0x43, - 0x18, 0xf5, 0x9c, 0x19, 0x4b, 0x30, 0x6a, 0x9b, 0x2f, 0x9c, 0x1b, 0xf5, 0x8c, 0x17, 0xab, 0x4d, - 0x9e, 0xe1, 0x77, 0x44, 0x20, 0xc8, 0x89, 0xba, 0xbe, 0x74, 0x09, 0x4e, 0xbe, 0x92, 0x76, 0x44, - 0x40, 0x58, 0x9d, 0x3d, 0x4b, 0x37, 0x68, 0x32, 0xba, 0x79, 0xc1, 0xd5, 0xb9, 0x6e, 0xe9, 0x06, - 0xcb, 0x48, 0x7c, 0x75, 0x72, 0x00, 0x57, 0xa7, 0xc8, 0x49, 0x93, 0xd3, 0xad, 0x73, 0x57, 0xa7, - 0x47, 0xca, 0x33, 0xd4, 0x84, 0xee, 0x43, 0x8a, 0x0a, 0xa4, 0xdc, 0x92, 0x8e, 0x2c, 0x43, 0xb6, - 0xd7, 0x31, 0x2d, 0x5b, 0x3d, 0x34, 0xec, 0x41, 0xc7, 0x32, 0xcf, 0xfc, 0x3a, 0x0f, 0x3b, 0x79, - 0xc5, 0x66, 0x5e, 0x52, 0x32, 0x74, 0xdc, 0x63, 0x36, 0xac, 0xd8, 0x84, 0xf1, 0x61, 0x85, 0xf7, - 0xa9, 0x91, 0xaa, 0x90, 0x11, 0x6b, 0x3d, 0x72, 0x0b, 0x12, 0x3d, 0xcd, 0xde, 0xed, 0x30, 0xc2, - 0xe1, 0x07, 0x79, 0xff, 0x2b, 0x29, 0x1c, 0x27, 0x77, 0x21, 0xeb, 0x9e, 0x50, 0x5b, 0xd6, 0x81, - 0x19, 0xfe, 0x72, 0xcf, 0x3d, 0xc0, 0xd6, 0xb1, 0xb5, 0xf8, 0xdb, 0x11, 0x00, 0xaf, 0xfc, 0x23, - 0x9b, 0x90, 0x1b, 0x9e, 0x79, 0x84, 0x6b, 0x99, 0x4b, 0x5c, 0xff, 0x66, 0x75, 0xb1, 0x81, 0xdc, - 0x85, 0x09, 0xf7, 0x02, 0x47, 0xbc, 0x56, 0xa0, 0xe7, 0x8a, 0x52, 0x24, 0x9f, 0x53, 0x32, 0xfc, - 0x3e, 0x87, 0x75, 0x7f, 0x15, 0x32, 0xee, 0xfa, 0xec, 0x69, 0x83, 0x7d, 0x76, 0x7d, 0x4b, 0xd9, - 0x3f, 0x90, 0x22, 0xb2, 0xac, 0xa4, 0x79, 0xeb, 0xba, 0x36, 0xd8, 0x27, 0xaf, 0xc1, 0x55, 0xb1, - 0x33, 0x46, 0x87, 0x63, 0x5b, 0x5d, 0xf6, 0x7a, 0xd1, 0x95, 0x90, 0x54, 0x88, 0x30, 0xa6, 0xce, - 0xba, 0x90, 0x29, 0x48, 0x99, 0x3b, 0xaa, 0x63, 0x63, 0xe0, 0x27, 0xfc, 0x0a, 0x25, 0xcd, 0x9d, - 0x6d, 0xc4, 0xd9, 0x59, 0xa5, 0xf8, 0x81, 0x34, 0x34, 0x10, 0x3a, 0xe0, 0x0e, 0xc8, 0x3e, 0x99, - 0x5a, 0x6b, 0x9f, 0x7f, 0x81, 0x36, 0x21, 0x88, 0xa9, 0xb6, 0xf6, 0xc9, 0x5d, 0x98, 0x0c, 0x98, - 0x92, 0x76, 0x66, 0x1f, 0xa5, 0xc9, 0x3e, 0x2b, 0x61, 0xf7, 0x57, 0x59, 0x7d, 0xe0, 0x19, 0x4a, - 0xf5, 0x3e, 0x55, 0xcb, 0x89, 0x36, 0xaa, 0xb6, 0xf6, 0x8b, 0x2d, 0xc8, 0x88, 0xb5, 0x31, 0x69, - 0xc2, 0x44, 0x4f, 0x3b, 0x52, 0xbd, 0x02, 0x9b, 0x7b, 0x2d, 0x54, 0x06, 0x54, 0x77, 0x77, 0x6d, - 0x03, 0x03, 0x40, 0x1f, 0x8e, 0x17, 0x7c, 0x97, 0xe9, 0x69, 0x47, 0x43, 0xbc, 0xf8, 0x5f, 0x12, - 0xe4, 0x02, 0xc5, 0x32, 0x79, 0x8c, 0x35, 0x92, 0x70, 0x2e, 0xfe, 0x64, 0x31, 0x22, 0x0b, 0x87, - 0x65, 0xe6, 0xf7, 0xa7, 0x70, 0xd5, 0x77, 0xa4, 0x77, 0x5f, 0x61, 0x44, 0x2e, 0xf9, 0x0a, 0xe3, - 0x8a, 0x70, 0xd2, 0xe7, 0x2f, 0x32, 0xa6, 0x83, 0x87, 0x71, 0xb4, 0x69, 0x8c, 0x7e, 0x78, 0x58, - 0x89, 0xdd, 0xf9, 0xce, 0xaf, 0x25, 0xfc, 0xe7, 0xf2, 0xe2, 0xef, 0x07, 0xa6, 0x8d, 0x5e, 0x9f, - 0x87, 0x1b, 0x23, 0xa6, 0x2d, 0x38, 0x7f, 0x32, 0x38, 0x23, 0x74, 0xe9, 0x02, 0xe4, 0x47, 0x4d, - 0x4a, 0x08, 0x83, 0xab, 0x21, 0x75, 0x71, 0x5c, 0x09, 0xae, 0xf8, 0x34, 0x16, 0x23, 0x41, 0x54, - 0x15, 0x23, 0xe1, 0xe7, 0x21, 0x23, 0x1e, 0x0f, 0xc8, 0x14, 0x24, 0x77, 0x34, 0xc7, 0x31, 0xec, - 0x63, 0x7f, 0x86, 0xf8, 0x58, 0x52, 0xdc, 0x06, 0x52, 0x1a, 0x26, 0x11, 0xd4, 0x22, 0x5e, 0x23, - 0x1f, 0xd5, 0x72, 0xc5, 0x6c, 0xfe, 0xe6, 0x9d, 0xef, 0x7f, 0xcc, 0xff, 0x1b, 0xa6, 0x93, 0xe2, - 0xb7, 0x22, 0x90, 0xf5, 0x9d, 0x16, 0x30, 0xc1, 0xb8, 0x2b, 0x40, 0xb8, 0xb7, 0x15, 0x13, 0x0c, - 0x6f, 0x66, 0x9e, 0xfd, 0x92, 0x78, 0xed, 0x1d, 0xa1, 0xa6, 0x4f, 0x7f, 0x54, 0x4b, 0x55, 0x12, - 0xf9, 0x31, 0x6a, 0x7c, 0xe1, 0x0e, 0xfc, 0x31, 0x4c, 0xf6, 0x3a, 0x66, 0x28, 0xb8, 0xa2, 0x97, - 0x0c, 0xae, 0x5e, 0xc7, 0xf4, 0x07, 0x17, 0xf2, 0xe2, 0xea, 0x08, 0xf0, 0xc6, 0x2e, 0xcb, 0xab, - 0x1d, 0xf9, 0xda, 0x8a, 0xef, 0x88, 0xa6, 0x41, 0xe3, 0xdf, 0x86, 0xac, 0xdf, 0x69, 0x2c, 0x38, - 0x32, 0x6d, 0xc1, 0x63, 0x64, 0x0a, 0xb2, 0x9e, 0x26, 0x5e, 0x28, 0xa4, 0xdd, 0x8c, 0x80, 0x5e, - 0x6d, 0x43, 0x46, 0x3c, 0xfb, 0x5c, 0xd6, 0xe6, 0x5f, 0x0c, 0xdb, 0x5c, 0x08, 0x77, 0xaf, 0x0d, - 0xb7, 0x17, 0xf1, 0x48, 0x84, 0x91, 0xe7, 0x93, 0x23, 0x4c, 0x22, 0x27, 0x4a, 0xc0, 0x79, 0x84, - 0x26, 0x1b, 0x09, 0x4f, 0xb6, 0xf8, 0x10, 0xe4, 0xe0, 0xe9, 0x88, 0xdc, 0x87, 0x38, 0xbb, 0xfa, - 0x93, 0x2e, 0x7a, 0xf5, 0xc7, 0xfa, 0x17, 0xbf, 0x27, 0x41, 0x2e, 0x70, 0x1c, 0x22, 0x0f, 0x58, - 0xe6, 0x33, 0x3a, 0x76, 0xdf, 0x97, 0x8b, 0xc2, 0x2f, 0x6f, 0x69, 0x05, 0xd0, 0x58, 0x55, 0xb6, - 0x02, 0x09, 0xaf, 0xd1, 0xb1, 0xd9, 0xdd, 0x35, 0xce, 0x9e, 0x5f, 0xc6, 0xea, 0xcf, 0x8c, 0x6e, - 0x97, 0xdd, 0xa5, 0xb1, 0x59, 0xe5, 0x58, 0xc3, 0x12, 0xe2, 0xf4, 0xca, 0x6c, 0x1a, 0x26, 0x87, - 0x17, 0xa1, 0x42, 0x6f, 0xb6, 0x4a, 0xaf, 0xb8, 0x4d, 0xc3, 0xfe, 0xc5, 0x2d, 0xac, 0x38, 0xf8, - 0x59, 0x6b, 0xe9, 0x52, 0xc5, 0x81, 0xa8, 0xad, 0x58, 0x1a, 0x7c, 0x15, 0xeb, 0x0d, 0xf7, 0xdc, - 0xf5, 0xe9, 0x50, 0xfe, 0xbd, 0x04, 0x72, 0xf0, 0x20, 0x46, 0x76, 0xe0, 0xba, 0xfb, 0x51, 0x75, - 0xb7, 0xd3, 0xeb, 0x38, 0xaa, 0x71, 0xd4, 0xb7, 0x4c, 0xc3, 0x74, 0xce, 0xdc, 0x63, 0x96, 0x94, - 0x6a, 0x6b, 0x7f, 0x0d, 0xfb, 0x36, 0x78, 0x57, 0x41, 0xe2, 0x24, 0xfb, 0x1c, 0xdb, 0xd7, 0x2c, - 0xca, 0xa0, 0xae, 0xf6, 0x64, 0x44, 0x9e, 0x27, 0x83, 0xc6, 0xc9, 0xd9, 0x32, 0x7c, 0xcd, 0xc5, - 0x55, 0xc8, 0xfa, 0x8e, 0x82, 0xf4, 0xa5, 0xf3, 0x85, 0xde, 0x9a, 0x51, 0xe6, 0xef, 0x4a, 0x91, - 0x94, 0xc4, 0xde, 0x9f, 0x15, 0xbf, 0x1b, 0x81, 0x09, 0xff, 0x09, 0xf0, 0x53, 0xfe, 0x0c, 0x73, - 0x44, 0x19, 0x16, 0xf9, 0x91, 0xca, 0xb0, 0x3b, 0x90, 0xc6, 0x65, 0x62, 0x1b, 0xf4, 0x2f, 0xa1, - 0xf8, 0xb7, 0xf7, 0xc3, 0x0a, 0x09, 0x7a, 0xda, 0x91, 0xc2, 0x9a, 0xc8, 0x13, 0xc8, 0xf5, 0x0d, - 0xbb, 0x63, 0xe9, 0x9e, 0x0f, 0x62, 0xa3, 0x2f, 0x63, 0xf9, 0xf9, 0x91, 0x76, 0x1e, 0xe1, 0x84, - 0x89, 0xbe, 0xaf, 0xa5, 0xf8, 0x97, 0x12, 0x4c, 0x8e, 0x38, 0xd9, 0x92, 0x9f, 0x05, 0x82, 0xaa, - 0xd1, 0x62, 0xf5, 0xdc, 0xd8, 0x62, 0x04, 0xb4, 0x74, 0x1d, 0x21, 0x12, 0x53, 0xb4, 0xaf, 0x0d, - 0x4f, 0x65, 0x48, 0x4e, 0xaf, 0x0b, 0x02, 0x31, 0x35, 0x35, 0x9a, 0x1b, 0xbd, 0x3e, 0x82, 0x3a, - 0xd7, 0xd3, 0x8e, 0xc4, 0xa6, 0xe2, 0x4a, 0x78, 0x36, 0x18, 0x54, 0x65, 0xb8, 0x16, 0x12, 0x28, - 0x64, 0x51, 0x12, 0xa0, 0xc1, 0x1c, 0xd9, 0x84, 0x5c, 0xe0, 0x9c, 0x4c, 0xde, 0x82, 0x04, 0xb3, - 0xde, 0x59, 0xdf, 0x70, 0xb8, 0x03, 0x98, 0xf5, 0x05, 0x3d, 0xf9, 0xb8, 0xe2, 0x6f, 0x48, 0x40, - 0xc2, 0xe7, 0x63, 0xff, 0x6e, 0x2c, 0x3d, 0x77, 0x37, 0xfe, 0xb4, 0x63, 0xb0, 0xb8, 0x17, 0xd2, - 0xe8, 0xc2, 0x7b, 0xe6, 0xe5, 0x6a, 0xe9, 0xa2, 0x06, 0xb9, 0xc0, 0xb9, 0x9a, 0xdc, 0x14, 0x37, - 0x1d, 0xdf, 0x9f, 0x9d, 0x30, 0x3c, 0xbc, 0xc5, 0x46, 0x9e, 0xb7, 0xc5, 0x16, 0x5f, 0x87, 0xac, - 0xef, 0x88, 0x7d, 0x09, 0xcb, 0x16, 0xe7, 0xc5, 0xb1, 0x17, 0xb5, 0x41, 0x71, 0xd9, 0xcd, 0x5f, - 0xee, 0xd9, 0xf8, 0xde, 0x45, 0x5e, 0xdc, 0x89, 0xbb, 0x28, 0xed, 0x5d, 0x7c, 0x1b, 0x26, 0xfc, - 0xe7, 0xe3, 0x4f, 0x48, 0x54, 0x1b, 0x87, 0x24, 0x7f, 0xc5, 0x32, 0xd5, 0x80, 0xb4, 0x77, 0xfc, - 0x1e, 0x90, 0x05, 0x48, 0xb5, 0xf8, 0xef, 0xbc, 0x44, 0xdf, 0x0f, 0x16, 0xcf, 0x3e, 0xad, 0x2b, - 0xc3, 0xbe, 0x53, 0x75, 0x98, 0x18, 0x16, 0xb7, 0x8f, 0xb5, 0xee, 0x81, 0x81, 0x6e, 0x3b, 0xc4, - 0x1f, 0xdc, 0xa2, 0x42, 0x15, 0xc3, 0xf0, 0xd7, 0xe5, 0xd3, 0x93, 0x42, 0x24, 0x2f, 0x7d, 0x78, - 0x52, 0x48, 0xa4, 0x24, 0x3c, 0x40, 0x4f, 0xad, 0xc3, 0xf5, 0xaf, 0x19, 0xb6, 0xa5, 0xed, 0x74, - 0x8d, 0x00, 0xd9, 0xcb, 0x7e, 0x32, 0x9f, 0x7b, 0xce, 0xa4, 0xdb, 0x85, 0x49, 0x7f, 0x85, 0xce, - 0xb8, 0xbe, 0x22, 0x72, 0x5d, 0xe6, 0x84, 0x72, 0xa6, 0x20, 0x03, 0x88, 0x6f, 0x21, 0x31, 0x39, - 0x6f, 0xf8, 0xe5, 0x5c, 0xfc, 0x2b, 0xac, 0xe7, 0xcc, 0xc7, 0x9f, 0x3c, 0x2e, 0x36, 0x9f, 0x33, - 0x13, 0xce, 0x99, 0x82, 0xde, 0x83, 0xfc, 0x88, 0xd3, 0x26, 0x93, 0x56, 0xf7, 0x4b, 0xbb, 0xe4, - 0x31, 0xf5, 0x4c, 0x91, 0x4f, 0x21, 0xc3, 0x8b, 0x47, 0x26, 0xe6, 0xbe, 0x5f, 0xcc, 0x45, 0x2a, - 0xcd, 0xe7, 0xcd, 0x26, 0x5c, 0xd7, 0x5c, 0x70, 0x36, 0xcf, 0x2d, 0x88, 0xce, 0x17, 0xe9, 0xab, - 0x63, 0x2e, 0x23, 0xf2, 0xac, 0xfa, 0xe8, 0x4c, 0x91, 0x2a, 0xe4, 0xbc, 0x3a, 0x99, 0x49, 0x7a, - 0xdd, 0x2f, 0xe9, 0x62, 0x75, 0xf5, 0x59, 0x02, 0x4a, 0xbf, 0x2b, 0x41, 0x9c, 0xfe, 0x99, 0x2b, - 0x91, 0x21, 0xf3, 0x60, 0x73, 0x75, 0x43, 0x55, 0x1a, 0x5f, 0x7d, 0xd4, 0x68, 0x6e, 0xcb, 0x63, - 0x24, 0x07, 0x69, 0x8a, 0x54, 0xeb, 0xf5, 0xc6, 0xd6, 0xb6, 0x2c, 0x11, 0x02, 0x13, 0x8f, 0x36, - 0xea, 0x9b, 0x1b, 0xcb, 0xab, 0xca, 0x7a, 0x63, 0x49, 0x7d, 0xb4, 0x25, 0x47, 0xc8, 0x55, 0x90, - 0x45, 0x6c, 0x69, 0xf3, 0xc9, 0x86, 0x1c, 0x45, 0x32, 0x5f, 0xbf, 0x18, 0x8e, 0x0d, 0xf4, 0x8a, - 0x23, 0xa6, 0x34, 0x7c, 0x42, 0x13, 0x28, 0x74, 0x4b, 0xd9, 0xdc, 0x52, 0x56, 0x1b, 0xdb, 0x55, - 0xe5, 0xa9, 0x9c, 0x2c, 0x26, 0x98, 0xce, 0xa5, 0x3b, 0x10, 0xa7, 0x7f, 0x58, 0x4b, 0x26, 0x00, - 0xd6, 0x36, 0x95, 0xea, 0x93, 0xea, 0x86, 0xaa, 0x94, 0xe5, 0xb1, 0x62, 0xee, 0xf4, 0xa4, 0x90, - 0xce, 0x4b, 0xa5, 0x24, 0x47, 0x4b, 0xdf, 0x8b, 0xd0, 0x37, 0xd8, 0xbc, 0x88, 0x26, 0x2f, 0xd1, - 0x5c, 0xa8, 0x3e, 0xda, 0x78, 0xb8, 0x81, 0x62, 0xc7, 0x8a, 0xd9, 0xd3, 0x93, 0xc2, 0x38, 0x49, - 0x1e, 0x98, 0xfb, 0xa6, 0xf5, 0x0c, 0xdb, 0x53, 0xd8, 0xfe, 0xb8, 0xac, 0xce, 0xca, 0x52, 0x11, - 0x4d, 0x94, 0x21, 0xd1, 0xf2, 0xf4, 0x2c, 0x89, 0x97, 0xa7, 0x67, 0xa7, 0x67, 0xc9, 0x0b, 0x94, - 0x8d, 0xb6, 0xab, 0x65, 0x39, 0x52, 0x4c, 0x9f, 0x9e, 0x14, 0x92, 0xac, 0xb1, 0xec, 0x6b, 0xac, - 0xc8, 0x51, 0xb1, 0xb1, 0x22, 0x30, 0x97, 0xe5, 0x98, 0xc7, 0x5c, 0xc6, 0xf6, 0x72, 0x80, 0x79, - 0x4e, 0x8e, 0x8b, 0x83, 0xe7, 0x7c, 0x8d, 0xf3, 0x72, 0x42, 0x6c, 0x9c, 0x2f, 0x3e, 0xc1, 0x87, - 0xbc, 0x54, 0x8a, 0xae, 0x57, 0xeb, 0x1f, 0x9e, 0x14, 0x56, 0x60, 0xf9, 0x12, 0xdf, 0x07, 0x3b, - 0x66, 0x7f, 0x67, 0xda, 0x33, 0x90, 0xca, 0xbe, 0xc7, 0xa5, 0x11, 0x52, 0xfa, 0x5e, 0x1c, 0x60, - 0x6b, 0xe5, 0xa9, 0x60, 0xbb, 0xad, 0x95, 0xa7, 0x67, 0xdb, 0xee, 0x15, 0x48, 0x61, 0x3b, 0xb7, - 0xdd, 0xf5, 0xd3, 0x93, 0x02, 0xf1, 0xd9, 0x2e, 0x86, 0x2d, 0xe8, 0xb1, 0xed, 0xe6, 0xec, 0x6c, - 0x99, 0xf7, 0x23, 0xb7, 0xa9, 0x0c, 0xcf, 0xa2, 0x93, 0xa7, 0x27, 0x85, 0x9c, 0x6b, 0xd1, 0x04, - 0x83, 0x31, 0x84, 0xbc, 0x41, 0xd8, 0x8d, 0xbc, 0x05, 0xf2, 0x70, 0x58, 0x45, 0x55, 0x1a, 0x8f, - 0xd5, 0xaa, 0x1c, 0x2d, 0x96, 0x4e, 0x4f, 0x0a, 0x3f, 0xed, 0x5a, 0x3c, 0x49, 0xff, 0xb9, 0xab, - 0x71, 0x96, 0x0a, 0xc9, 0x88, 0xbd, 0x91, 0x53, 0xd9, 0x1a, 0x72, 0x56, 0xe4, 0x28, 0x29, 0x87, - 0x38, 0x6b, 0x72, 0xac, 0xf8, 0xc2, 0xe9, 0x49, 0xe1, 0x86, 0x4b, 0xb6, 0xe3, 0x23, 0xa9, 0x91, - 0xeb, 0x40, 0x44, 0x12, 0x77, 0x10, 0x99, 0x87, 0x09, 0x4e, 0x55, 0xe6, 0xca, 0xc5, 0x8b, 0xb7, - 0x4e, 0x4f, 0x0a, 0x2f, 0x52, 0x77, 0xdf, 0xd5, 0x90, 0xaf, 0x3c, 0x3d, 0x7b, 0x57, 0x23, 0xe0, - 0xf5, 0xc1, 0xf5, 0x33, 0x64, 0x1b, 0x8e, 0x0b, 0x71, 0xd5, 0xe4, 0x84, 0xc8, 0xb5, 0xe3, 0x72, - 0xed, 0x08, 0x5c, 0xb5, 0x11, 0x5c, 0x35, 0x39, 0xe1, 0x9b, 0xe2, 0x1c, 0x97, 0x90, 0x14, 0xa7, - 0x38, 0x77, 0x57, 0xe3, 0x53, 0xe4, 0xcd, 0x81, 0x29, 0x0e, 0x07, 0xb9, 0xf6, 0xab, 0x30, 0x7c, - 0x56, 0x4e, 0x05, 0x90, 0xb2, 0x3c, 0x1e, 0x40, 0x2a, 0x32, 0x04, 0x90, 0x39, 0x39, 0x5d, 0xdc, - 0x1e, 0xe6, 0xa1, 0x4f, 0x10, 0xb9, 0x5e, 0x78, 0x8a, 0x91, 0x2b, 0x4b, 0xa5, 0x5f, 0x8d, 0x42, - 0xd6, 0x7f, 0xd1, 0x94, 0x83, 0xf4, 0x52, 0x75, 0xbb, 0xaa, 0x2a, 0xd5, 0xed, 0x86, 0x3a, 0xcb, - 0x52, 0x9a, 0x07, 0x94, 0x65, 0xc9, 0x0f, 0x54, 0xe4, 0x88, 0x1f, 0x98, 0x93, 0xa3, 0x7e, 0x60, - 0x5e, 0x8e, 0xf9, 0x81, 0x7b, 0x72, 0xdc, 0x0f, 0x2c, 0xb0, 0x1c, 0xe6, 0x01, 0xf7, 0xe5, 0xa4, - 0x1f, 0x58, 0x94, 0x53, 0x7e, 0xe0, 0x35, 0x66, 0x35, 0x41, 0xb1, 0x59, 0x66, 0x35, 0x01, 0x29, - 0xcb, 0xe9, 0x00, 0x52, 0x91, 0x33, 0x01, 0x64, 0x4e, 0xce, 0x06, 0x90, 0x79, 0x79, 0x22, 0x80, - 0xdc, 0x93, 0x73, 0xc5, 0x5f, 0x38, 0x3d, 0x29, 0x64, 0x65, 0xa9, 0x34, 0x3e, 0xc4, 0x3f, 0x3c, - 0x29, 0x3c, 0x84, 0xd5, 0xcb, 0x3a, 0xc2, 0x67, 0x6b, 0x5f, 0x16, 0xf9, 0xa3, 0x08, 0x4c, 0x04, - 0x6e, 0x7d, 0xaf, 0x03, 0xf1, 0xd4, 0xd8, 0x5c, 0x5e, 0x6e, 0x36, 0xb6, 0xa9, 0x47, 0x46, 0xe1, - 0xe8, 0x98, 0x51, 0x38, 0xfa, 0x67, 0x14, 0x8e, 0x6e, 0x1a, 0x85, 0xa3, 0xb7, 0x46, 0xe1, 0xe8, - 0xb4, 0x51, 0x38, 0xfa, 0x6e, 0x14, 0x7e, 0x5f, 0x4e, 0x16, 0xf7, 0x4e, 0x4f, 0x0a, 0x57, 0x65, - 0xa9, 0x24, 0x07, 0x5b, 0x3f, 0x3c, 0x29, 0xac, 0xc1, 0x83, 0x4f, 0x6a, 0x3b, 0x66, 0x1d, 0x9f, - 0xf1, 0x7e, 0x0e, 0x72, 0x0f, 0xfc, 0x97, 0x12, 0xc2, 0x46, 0x59, 0xdf, 0xdc, 0xd8, 0x6e, 0xbc, - 0x83, 0xbb, 0xb3, 0x87, 0x35, 0x1b, 0xcd, 0xe6, 0xea, 0xe6, 0x06, 0x8b, 0x66, 0x8e, 0x3d, 0x6c, - 0x3c, 0x6d, 0xca, 0x11, 0x32, 0x0e, 0x31, 0x7c, 0x94, 0x3f, 0x96, 0x86, 0xfb, 0xe8, 0x9b, 0x70, - 0x25, 0x74, 0xeb, 0x41, 0xd2, 0x90, 0xf4, 0x98, 0xd3, 0x90, 0xf4, 0x28, 0x53, 0x10, 0x63, 0x5c, - 0x43, 0x82, 0x45, 0x00, 0xef, 0xfb, 0x7f, 0x14, 0xb9, 0x4c, 0x77, 0xef, 0x8d, 0xfa, 0x6a, 0xa3, - 0x29, 0x8f, 0x91, 0x2b, 0x90, 0xad, 0xaf, 0x54, 0x37, 0x36, 0x1a, 0x6b, 0xea, 0x7a, 0xb5, 0xf9, - 0xb0, 0x29, 0x7b, 0xa2, 0xdf, 0x80, 0x38, 0x3d, 0xba, 0x50, 0x71, 0x6b, 0xd5, 0x66, 0x53, 0xad, - 0x32, 0x71, 0xec, 0xa1, 0x26, 0x4b, 0xde, 0x43, 0x5d, 0x8e, 0xb0, 0xcd, 0x26, 0x2f, 0x95, 0xe2, - 0x14, 0x2a, 0x1d, 0x01, 0x09, 0x7f, 0x80, 0x47, 0x00, 0x12, 0x6b, 0x9b, 0x4f, 0x58, 0xc5, 0x92, - 0x84, 0xe8, 0xda, 0xe6, 0x13, 0x59, 0xc2, 0xa0, 0xaf, 0x35, 0xd6, 0x36, 0x9f, 0xa8, 0x1b, 0x9b, - 0xca, 0x7a, 0x75, 0x4d, 0x8e, 0x60, 0x37, 0xfe, 0x9b, 0x56, 0x27, 0xd5, 0xda, 0xe6, 0xe3, 0x86, - 0xdb, 0x1a, 0xc3, 0x59, 0xae, 0xac, 0xbe, 0xbd, 0x22, 0xc7, 0x51, 0x01, 0xfc, 0x45, 0x8b, 0x91, - 0xa1, 0xe2, 0xff, 0x14, 0x85, 0xab, 0xa3, 0x3e, 0x75, 0x23, 0x59, 0x18, 0xaf, 0xaf, 0x2e, 0xa9, - 0xca, 0xf2, 0x23, 0x1a, 0xcc, 0xee, 0x63, 0xa3, 0xd9, 0xe0, 0xf5, 0x12, 0x3e, 0xae, 0xad, 0x6e, - 0x3c, 0x54, 0xeb, 0x2b, 0x8d, 0xfa, 0x43, 0x39, 0x42, 0x2b, 0x23, 0x17, 0xab, 0x2e, 0x29, 0x72, - 0xd4, 0xed, 0xb5, 0xf4, 0x68, 0xfb, 0xa9, 0x5a, 0x7f, 0x5a, 0x5f, 0x6b, 0xb0, 0xa8, 0xa5, 0x44, - 0xef, 0xa8, 0x5b, 0x55, 0xa5, 0xba, 0xae, 0x36, 0x1b, 0xdb, 0x8f, 0xb6, 0x58, 0xc5, 0x44, 0xfb, - 0x36, 0x1e, 0xab, 0xcd, 0xed, 0xea, 0xf6, 0xa3, 0xa6, 0x9c, 0x20, 0x93, 0x90, 0x43, 0x6c, 0xa3, - 0xf1, 0x44, 0xe5, 0x86, 0x97, 0x93, 0xe4, 0x06, 0x4c, 0x72, 0x82, 0xed, 0xd5, 0xf5, 0xd5, 0x8d, - 0xb7, 0x39, 0x43, 0xca, 0x65, 0xde, 0xf6, 0x33, 0x8f, 0x0f, 0x99, 0xd7, 0x86, 0x24, 0xe0, 0x4d, - 0xe7, 0x61, 0xe3, 0xa9, 0x9c, 0x76, 0x39, 0xab, 0x4b, 0x8a, 0x6f, 0x6c, 0xc6, 0xd5, 0x60, 0xa9, - 0xf1, 0x78, 0xb5, 0xde, 0x40, 0x81, 0x0d, 0x39, 0x8b, 0x9b, 0x11, 0x82, 0xcb, 0x9b, 0x4a, 0xbd, - 0xa1, 0xb2, 0xa8, 0x94, 0x27, 0x48, 0x11, 0xae, 0x33, 0x4a, 0x1a, 0xa5, 0x22, 0x4d, 0xce, 0x55, - 0x6d, 0x8b, 0xaa, 0xbb, 0xb6, 0xb9, 0xad, 0xae, 0x6e, 0x2c, 0x6f, 0xca, 0x32, 0x29, 0xc0, 0x35, - 0x3f, 0xee, 0x6a, 0x78, 0x85, 0x5c, 0x83, 0x2b, 0xd8, 0x54, 0x6b, 0x54, 0xeb, 0x9b, 0x1b, 0x7c, - 0xaa, 0x32, 0x71, 0x15, 0xe2, 0x30, 0xc6, 0xa7, 0x3c, 0x19, 0xd0, 0x72, 0x7d, 0x73, 0xa9, 0x21, - 0xdf, 0x62, 0x55, 0x15, 0x16, 0x52, 0xf5, 0xd5, 0xa5, 0xd2, 0x3f, 0x47, 0x60, 0x72, 0xc4, 0x49, - 0x87, 0xa6, 0xd0, 0xa1, 0x77, 0xd4, 0xb2, 0x3c, 0x16, 0x40, 0x2a, 0x2c, 0xe2, 0x04, 0x64, 0x9e, - 0x79, 0x5a, 0x40, 0x16, 0xe5, 0x28, 0x2e, 0x0d, 0x91, 0x67, 0x41, 0x8e, 0x05, 0xa0, 0xb9, 0x8a, - 0x1c, 0x0f, 0x40, 0x0b, 0xf3, 0x72, 0x02, 0x9d, 0x23, 0x0e, 0xac, 0x2c, 0xca, 0xc9, 0x00, 0x56, - 0xb9, 0xb7, 0x20, 0xa7, 0x02, 0xd8, 0xbd, 0x72, 0x45, 0x1e, 0xc7, 0x69, 0x8b, 0x63, 0x67, 0x2b, - 0xf3, 0x32, 0x04, 0xc0, 0xca, 0xec, 0xfc, 0xa2, 0x9c, 0x0e, 0x80, 0xf3, 0xb3, 0xaf, 0x2d, 0x30, - 0xdf, 0x8a, 0xb3, 0x28, 0xbf, 0x56, 0x61, 0xbe, 0xf5, 0x4d, 0x64, 0x6e, 0x11, 0x77, 0x1a, 0x3f, - 0x3a, 0x57, 0xb9, 0xbf, 0xb0, 0x28, 0xe7, 0x8a, 0xe4, 0xf4, 0xa4, 0x30, 0x91, 0x97, 0x4a, 0xe0, - 0xb5, 0x95, 0xfe, 0x4c, 0x82, 0x09, 0xff, 0x01, 0x16, 0x67, 0x4d, 0x1d, 0xdc, 0x78, 0xdc, 0x50, - 0x9e, 0xaa, 0x65, 0x9e, 0x49, 0x04, 0xa8, 0xd2, 0x94, 0xa5, 0x00, 0x34, 0x8f, 0x29, 0xce, 0x0f, - 0x2d, 0x36, 0xd9, 0x8a, 0x12, 0xb9, 0x16, 0x9a, 0xec, 0xfc, 0x21, 0x60, 0x73, 0x95, 0x26, 0x5b, - 0x4d, 0x02, 0xb6, 0x30, 0xcf, 0x57, 0x93, 0x38, 0xb6, 0xb2, 0xd8, 0x94, 0x93, 0xde, 0x1c, 0xbc, - 0xa6, 0xd2, 0xb7, 0xa3, 0xee, 0x85, 0xa3, 0xff, 0x86, 0x73, 0x12, 0x72, 0xc3, 0x5c, 0xfd, 0x68, - 0x63, 0x1b, 0xdd, 0x3c, 0x16, 0x02, 0xe7, 0x30, 0x64, 0x82, 0xe0, 0xc2, 0x3c, 0x3b, 0x4f, 0xf9, - 0x87, 0x57, 0x30, 0x72, 0x82, 0x28, 0xba, 0x3b, 0x16, 0x42, 0xd1, 0xe1, 0x71, 0x5c, 0x13, 0x7e, - 0x06, 0x74, 0x79, 0x22, 0x04, 0x53, 0xa7, 0x27, 0x43, 0x30, 0x75, 0x7b, 0x2a, 0x04, 0x53, 0xc7, - 0x8f, 0xd3, 0xc2, 0xd0, 0x3f, 0x39, 0x74, 0x3d, 0x84, 0x70, 0xe6, 0xfc, 0x74, 0x08, 0x5f, 0xb8, - 0x77, 0x6f, 0x0e, 0xa3, 0xea, 0x06, 0x4c, 0xfa, 0x79, 0xe6, 0xca, 0xb3, 0xf7, 0x31, 0xb2, 0x82, - 0x0d, 0x95, 0x85, 0x4a, 0x79, 0x1e, 0x83, 0x2b, 0xd8, 0x70, 0xaf, 0x32, 0x5f, 0x59, 0xc4, 0xf8, - 0xba, 0x7a, 0x7a, 0x52, 0x90, 0xf3, 0x52, 0x29, 0x23, 0x36, 0x97, 0xfe, 0x31, 0x02, 0x24, 0x7c, - 0x7f, 0x8c, 0xc1, 0xc2, 0xbb, 0x61, 0x96, 0xa2, 0x39, 0x3b, 0x00, 0x95, 0x59, 0x94, 0x89, 0x50, - 0x85, 0x45, 0x99, 0x08, 0xcd, 0xb1, 0xd5, 0x2c, 0x42, 0xf3, 0x6c, 0x35, 0x8b, 0xd0, 0x3d, 0xb6, - 0x9a, 0x45, 0x08, 0x4b, 0x8c, 0x00, 0x84, 0x05, 0x62, 0x00, 0xc2, 0x12, 0x31, 0x00, 0xbd, 0xc6, - 0x72, 0xb4, 0x4f, 0x55, 0x2c, 0x13, 0x83, 0x18, 0x16, 0x8a, 0x41, 0x0c, 0x4b, 0xc5, 0x20, 0x86, - 0xc5, 0x62, 0x10, 0x43, 0x3b, 0x07, 0x31, 0x2c, 0x18, 0xe9, 0xf9, 0x2c, 0x2f, 0x95, 0xd2, 0x42, - 0x4b, 0xe9, 0x6f, 0x25, 0xf7, 0x7f, 0x80, 0xe1, 0x7f, 0xe3, 0x20, 0x84, 0xf5, 0x56, 0x43, 0x59, - 0xdd, 0x5c, 0xa2, 0x56, 0x0e, 0x81, 0x65, 0xdf, 0x02, 0xe0, 0x20, 0x5a, 0x3a, 0x04, 0xa2, 0xad, - 0x43, 0x20, 0x5a, 0x3b, 0x04, 0xa2, 0xbd, 0x43, 0xe0, 0x02, 0x5b, 0xd4, 0x7e, 0x10, 0x2b, 0xba, - 0x6b, 0xa7, 0x27, 0x85, 0x2b, 0x79, 0xa9, 0x94, 0xf5, 0x35, 0x95, 0xbe, 0x1f, 0x01, 0xf0, 0xee, - 0x50, 0x68, 0x36, 0x66, 0x3b, 0x06, 0x3e, 0xaa, 0x8b, 0xac, 0xf2, 0x12, 0xa1, 0xf2, 0x2c, 0xdb, - 0xea, 0x7d, 0x18, 0xce, 0x24, 0x88, 0xcd, 0xb1, 0xd4, 0xe4, 0xc3, 0xe6, 0x59, 0x6a, 0xf2, 0x61, - 0x0b, 0x2c, 0x35, 0xf9, 0xb0, 0x45, 0xbe, 0x0b, 0x08, 0x58, 0x65, 0x96, 0xef, 0x02, 0x22, 0x56, - 0xe6, 0xbb, 0x80, 0x88, 0xcd, 0xb3, 0xd0, 0xf1, 0x61, 0x0b, 0x2c, 0x74, 0x7c, 0xd8, 0x7d, 0x16, - 0x3a, 0x3e, 0xec, 0x35, 0x16, 0x3a, 0x22, 0x36, 0x37, 0xcb, 0x42, 0xc7, 0x87, 0xcd, 0xb1, 0xd0, - 0xf1, 0x61, 0x0b, 0x62, 0xe8, 0x08, 0x2d, 0xa5, 0x6f, 0x45, 0x61, 0x72, 0xc4, 0x1d, 0x1c, 0xba, - 0x09, 0x8b, 0x8b, 0x6a, 0xfd, 0xa1, 0xba, 0xb6, 0xba, 0xbe, 0xba, 0x4d, 0xb7, 0xda, 0x10, 0xc8, - 0x53, 0xa7, 0x1f, 0x9c, 0x67, 0x91, 0xe3, 0x07, 0x79, 0xe6, 0x0c, 0x70, 0xf2, 0xcc, 0xe9, 0x47, - 0xe9, 0xce, 0x1b, 0x42, 0x17, 0x78, 0xe2, 0x0c, 0x30, 0x54, 0x78, 0xe2, 0x0c, 0xe8, 0x75, 0x8f, - 0x27, 0x4e, 0x3f, 0xcc, 0x76, 0xe1, 0xeb, 0x40, 0x02, 0x24, 0x6c, 0x23, 0x0e, 0xe1, 0x7c, 0x2f, - 0x0e, 0xe1, 0x7c, 0x3b, 0x0e, 0xe1, 0x7c, 0x47, 0xbe, 0x41, 0x2d, 0xea, 0x9b, 0x26, 0xdb, 0x94, - 0x43, 0x0d, 0xee, 0xbe, 0x3c, 0x0c, 0x7f, 0x5f, 0xb3, 0xe0, 0x1b, 0xdf, 0x65, 0xa5, 0x68, 0xdc, - 0xa5, 0xc6, 0x5a, 0xf5, 0x69, 0xd0, 0x37, 0x0c, 0x0c, 0xf8, 0x86, 0x81, 0x01, 0xdf, 0x30, 0x30, - 0xe0, 0x1b, 0xce, 0x19, 0xf0, 0x0d, 0x43, 0x83, 0xbe, 0x61, 0x68, 0xd0, 0x37, 0x9c, 0x21, 0xe8, - 0x1b, 0xae, 0x57, 0xd0, 0x37, 0x0c, 0x0e, 0xf9, 0x86, 0x93, 0x84, 0x7c, 0xc3, 0x59, 0x42, 0xbe, - 0xe1, 0x13, 0x0c, 0xf9, 0x86, 0xcf, 0x31, 0xe4, 0x1b, 0x77, 0x9a, 0x21, 0xdf, 0xb8, 0x33, 0x3d, - 0xc3, 0x37, 0xb4, 0xb9, 0x74, 0x1a, 0x81, 0x24, 0xbf, 0x22, 0x27, 0x13, 0x00, 0xca, 0x3b, 0x7c, - 0x18, 0x26, 0x58, 0xf1, 0x19, 0x73, 0xab, 0xf8, 0x8c, 0xc9, 0x48, 0x7c, 0xc6, 0x44, 0x24, 0x3e, - 0x63, 0x12, 0x12, 0x9f, 0x31, 0x8f, 0x8a, 0xcf, 0x98, 0x42, 0xc5, 0x67, 0xdc, 0xb1, 0xc4, 0x67, - 0xdc, 0xae, 0xc4, 0x67, 0xdc, 0xab, 0xf0, 0x28, 0x3a, 0xd4, 0x07, 0x37, 0x2a, 0x1f, 0x80, 0xbb, - 0x94, 0x0f, 0xc0, 0x2d, 0xca, 0x07, 0xe0, 0xfe, 0xe4, 0x03, 0xd0, 0x60, 0x3e, 0x00, 0x77, 0xa6, - 0xa7, 0xa7, 0x27, 0x85, 0x8c, 0x2c, 0x95, 0x52, 0x2e, 0xfc, 0xe1, 0x49, 0xa1, 0x01, 0xf5, 0xcb, - 0x9e, 0xc6, 0xb9, 0x51, 0x7d, 0xc7, 0xf0, 0xdf, 0x8b, 0x40, 0x9c, 0x7e, 0x9d, 0x81, 0x52, 0xd7, - 0x57, 0x37, 0x36, 0x95, 0xe1, 0x31, 0x2f, 0x0d, 0x49, 0x06, 0xf0, 0x1b, 0x24, 0xaf, 0x95, 0xdf, - 0x20, 0x79, 0x00, 0xbf, 0x41, 0xf2, 0x00, 0x7e, 0x83, 0xe4, 0x01, 0xfc, 0x06, 0xc9, 0x03, 0xf8, - 0x0d, 0x92, 0x07, 0xf0, 0x1b, 0x24, 0x0f, 0xe0, 0x37, 0x48, 0x1e, 0xc0, 0x6f, 0x90, 0x3c, 0xc0, - 0xbd, 0x41, 0x12, 0x10, 0x7e, 0x83, 0x24, 0x20, 0xfc, 0x06, 0x49, 0x40, 0xf8, 0x0d, 0x92, 0x80, - 0xf0, 0x1b, 0x24, 0x01, 0x41, 0xb3, 0x0f, 0x0f, 0xe6, 0x14, 0xaf, 0xdd, 0xfb, 0xd3, 0x1f, 0xbc, - 0x24, 0x7d, 0x6d, 0xe6, 0x92, 0x56, 0xdf, 0x49, 0xd0, 0x2f, 0x3b, 0xe6, 0xfe, 0x2f, 0x00, 0x00, - 0xff, 0xff, 0xb1, 0x3c, 0x8e, 0x7e, 0x10, 0x57, 0x00, 0x00, +var File_lorawan_stack_api_lorawan_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_lorawan_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, + 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, + 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, + 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xbb, 0x03, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x33, + 0x0a, 0x05, 0x6d, 0x5f, 0x68, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, + 0x48, 0x44, 0x52, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6d, + 0x48, 0x64, 0x72, 0x12, 0x1b, 0x0a, 0x03, 0x6d, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0x09, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x10, 0x00, 0x18, 0x04, 0x52, 0x03, 0x6d, 0x69, 0x63, + 0x12, 0x3d, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x48, 0x00, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x56, 0x0a, 0x14, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, + 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x48, 0x00, 0x52, 0x12, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x53, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, + 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x11, 0x6a, 0x6f, 0x69, 0x6e, 0x41, + 0x63, 0x63, 0x65, 0x70, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x5c, 0x0a, 0x16, + 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, + 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x48, 0x00, 0x52, 0x14, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x0e, 0x0a, 0x07, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, + 0x22, 0x75, 0x0a, 0x04, 0x4d, 0x48, 0x44, 0x52, 0x12, 0x36, 0x0a, 0x06, 0x6d, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6d, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x35, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x22, 0xe3, 0x01, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x33, 0x0a, 0x05, 0x66, 0x5f, 0x68, 0x64, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x48, 0x44, 0x52, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x66, 0x48, 0x64, 0x72, 0x12, 0x1f, 0x0a, 0x06, 0x66, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x66, 0x72, 0x6d, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0a, 0x66, 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x40, 0x0a, + 0x0f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, + 0x0e, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x1c, 0x0a, 0x0a, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x46, 0x43, 0x6e, 0x74, 0x22, 0xee, 0x03, + 0x0a, 0x04, 0x46, 0x48, 0x44, 0x52, 0x12, 0xed, 0x02, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd1, 0x02, 0xfa, 0x42, 0x06, 0x7a, + 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, + 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, + 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, + 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, + 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, + 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, + 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x92, 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, + 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, + 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x36, 0x0a, 0x06, 0x66, 0x5f, 0x63, 0x74, 0x72, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x43, 0x74, 0x72, 0x6c, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x66, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x1e, + 0x0a, 0x05, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xfa, + 0x42, 0x06, 0x2a, 0x04, 0x18, 0xff, 0xff, 0x03, 0x52, 0x04, 0x66, 0x43, 0x6e, 0x74, 0x12, 0x1e, + 0x0a, 0x06, 0x66, 0x5f, 0x6f, 0x70, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x7a, 0x02, 0x18, 0x0f, 0x52, 0x05, 0x66, 0x4f, 0x70, 0x74, 0x73, 0x22, 0x81, + 0x01, 0x0a, 0x05, 0x46, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x64, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x64, 0x72, 0x12, 0x1e, 0x0a, 0x0b, 0x61, 0x64, + 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, + 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09, + 0x66, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x66, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x5f, 0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x42, 0x22, 0xf0, 0x08, 0x0a, 0x12, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0xf5, 0x02, 0x0a, 0x08, 0x6a, 0x6f, + 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd9, 0x02, 0xfa, + 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, + 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, + 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, + 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, + 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, + 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, + 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, + 0x69, 0x12, 0xf3, 0x02, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0xd9, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, + 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, + 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, + 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, + 0x77, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, + 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, + 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, + 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, + 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, + 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x12, 0xeb, 0x02, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x5f, + 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcd, 0x02, 0xfa, 0x42, + 0x06, 0x7a, 0x04, 0x68, 0x02, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, + 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, + 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x32, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, + 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, + 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x32, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, + 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, + 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x92, 0x41, 0x15, 0x4a, 0x06, 0x22, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, + 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x64, 0x65, 0x76, + 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x22, 0xdb, 0x09, 0x0a, 0x14, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x4c, + 0x0a, 0x0b, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x0a, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0xe7, 0x02, 0x0a, + 0x06, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, + 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, + 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, + 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, + 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, + 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, + 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, + 0x05, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0xf5, 0x02, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, + 0x65, 0x75, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd9, 0x02, 0xfa, 0x42, 0x06, 0x7a, + 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, + 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, + 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, + 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, + 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, + 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, + 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, + 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, 0xf3, + 0x02, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0xd9, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, + 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, + 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, + 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, + 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, + 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x64, 0x65, + 0x76, 0x45, 0x75, 0x69, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x43, 0x6e, 0x74, 0x22, 0xb3, 0x0a, 0x0a, 0x11, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x12, 0xef, 0x02, 0x0a, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, + 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, 0xfa, + 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, + 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, + 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, + 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, + 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, + 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, + 0x6a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0xe7, 0x02, 0x0a, 0x06, 0x6e, 0x65, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, 0xfa, 0x42, 0x06, + 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, + 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, + 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, + 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, + 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, + 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, + 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, + 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x6e, 0x65, + 0x74, 0x49, 0x64, 0x12, 0xed, 0x02, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd1, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x04, + 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, + 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, + 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, + 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x2e, 0x4e, 0x65, 0x77, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, + 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, + 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, + 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, + 0x64, 0x64, 0x72, 0x12, 0x45, 0x0a, 0x0b, 0x64, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x4c, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, + 0x64, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x72, 0x78, + 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, + 0x44, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x07, 0x72, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x2f, 0x0a, 0x07, 0x63, 0x66, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x46, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x06, 0x63, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xbd, 0x01, 0x0a, 0x0a, 0x44, 0x4c, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4c, 0x0a, 0x0d, 0x72, 0x78, 0x31, 0x5f, + 0x64, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x72, 0x78, 0x31, 0x44, 0x72, + 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x05, 0x72, 0x78, 0x32, 0x44, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, + 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x67, 0x3a, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x7b, 0x0a, 0x06, 0x43, 0x46, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x46, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x66, 0x72, 0x65, 0x71, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x04, 0x66, 0x72, 0x65, + 0x71, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x08, 0x52, 0x07, 0x63, 0x68, 0x4d, 0x61, 0x73, 0x6b, 0x73, 0x3a, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x82, 0x01, 0x0a, 0x0c, 0x4c, 0x6f, 0x52, 0x61, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x61, 0x6e, 0x64, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0f, 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, + 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, + 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0x32, 0x0a, 0x0b, 0x46, + 0x53, 0x4b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x69, + 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x62, 0x69, + 0x74, 0x52, 0x61, 0x74, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, + 0x9c, 0x01, 0x0a, 0x0e, 0x4c, 0x52, 0x46, 0x48, 0x53, 0x53, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, + 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6d, 0x6f, 0x64, + 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, + 0x64, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, + 0x52, 0x61, 0x74, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0xc6, + 0x01, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x6c, + 0x6f, 0x72, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x52, 0x61, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x6f, 0x72, 0x61, 0x12, + 0x2f, 0x0a, 0x03, 0x66, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x53, + 0x4b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x03, 0x66, 0x73, 0x6b, + 0x12, 0x38, 0x0a, 0x06, 0x6c, 0x72, 0x66, 0x68, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4c, 0x52, 0x46, 0x48, 0x53, 0x53, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, + 0x48, 0x00, 0x52, 0x06, 0x6c, 0x72, 0x66, 0x68, 0x73, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, + 0x08, 0x01, 0x10, 0x00, 0x42, 0x11, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0xee, 0x03, 0x0a, 0x0a, 0x54, 0x78, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x61, 0x74, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x63, 0x72, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x43, 0x72, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, + 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x12, 0x35, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x1a, 0x85, 0x01, 0x0a, 0x08, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x74, 0x65, 0x6e, + 0x6e, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, + 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x19, 0x0a, 0x08, + 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, + 0x74, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x13, 0x69, 0x6e, 0x76, 0x65, 0x72, + 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x50, 0x6f, 0x6c, 0x61, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, + 0x10, 0x00, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x4a, 0x04, 0x08, 0x02, + 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x8f, 0x01, 0x0a, 0x19, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x61, 0x6e, + 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xb0, 0x01, 0x0a, 0x19, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x42, 0x43, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x74, 0x65, 0x6e, + 0x6e, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, + 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x9b, 0x02, + 0x0a, 0x0b, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x45, 0x0a, + 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x03, 0x69, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x3b, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x63, + 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x0c, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x0c, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0c, + 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x41, 0x0a, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x05, 0x66, + 0x69, 0x78, 0x65, 0x64, 0x42, 0x0b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x03, 0xf8, 0x42, + 0x01, 0x22, 0x8a, 0x05, 0x0a, 0x09, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x2b, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x43, 0x0a, 0x0e, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, + 0x74, 0x68, 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, + 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x78, 0x31, 0x44, 0x65, 0x6c, 0x61, + 0x79, 0x12, 0x3c, 0x0a, 0x0d, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, + 0x74, 0x65, 0x52, 0x0b, 0x72, 0x78, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, + 0x23, 0x0a, 0x0d, 0x72, 0x78, 0x31, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x72, 0x78, 0x31, 0x46, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x12, 0x3c, 0x0a, 0x0d, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x72, 0x78, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, + 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x72, 0x78, 0x32, 0x46, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x48, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x53, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x12, 0x3f, 0x0a, 0x0d, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x11, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, + 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x08, 0x61, 0x64, 0x76, 0x61, 0x6e, + 0x63, 0x65, 0x64, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x52, 0x08, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x4a, 0x04, 0x08, 0x04, + 0x10, 0x05, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x22, 0xc2, + 0x33, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x42, 0x0a, + 0x03, 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x03, 0x63, 0x69, + 0x64, 0x12, 0x21, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x42, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x08, + 0x72, 0x65, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x65, + 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, + 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x12, + 0x4f, 0x0a, 0x0e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x61, 0x6e, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6e, 0x73, + 0x48, 0x00, 0x52, 0x0c, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6e, 0x73, + 0x12, 0x49, 0x0a, 0x0c, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x64, 0x72, 0x5f, 0x72, 0x65, 0x71, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x41, 0x44, 0x52, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, + 0x0a, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x64, 0x72, 0x52, 0x65, 0x71, 0x12, 0x49, 0x0a, 0x0c, 0x6c, + 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x4c, 0x69, + 0x6e, 0x6b, 0x41, 0x44, 0x52, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x6b, + 0x41, 0x64, 0x72, 0x41, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x64, 0x75, 0x74, 0x79, 0x5f, 0x63, + 0x79, 0x63, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x44, 0x75, 0x74, 0x79, 0x43, + 0x79, 0x63, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x75, 0x74, 0x79, 0x43, + 0x79, 0x63, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x59, 0x0a, 0x12, 0x72, 0x78, 0x5f, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, + 0x52, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x48, + 0x00, 0x52, 0x0f, 0x72, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, + 0x65, 0x71, 0x12, 0x59, 0x0a, 0x12, 0x72, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, + 0x65, 0x74, 0x75, 0x70, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x78, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x78, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x6e, 0x73, 0x12, 0x4f, 0x0a, + 0x0e, 0x64, 0x65, 0x76, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x61, 0x6e, 0x73, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x2e, 0x44, 0x65, 0x76, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x41, 0x6e, 0x73, 0x48, 0x00, + 0x52, 0x0c, 0x64, 0x65, 0x76, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x41, 0x6e, 0x73, 0x12, 0x52, + 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, + 0x71, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, + 0x71, 0x48, 0x00, 0x52, 0x0d, 0x6e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, + 0x65, 0x71, 0x12, 0x52, 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x6e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x64, 0x6c, 0x5f, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x44, 0x4c, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x6c, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x4f, 0x0a, 0x0e, 0x64, 0x6c, 0x5f, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x44, 0x4c, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x6c, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x5c, 0x0a, 0x13, 0x72, 0x78, 0x5f, 0x74, + 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x2e, 0x52, 0x78, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, + 0x65, 0x71, 0x48, 0x00, 0x52, 0x10, 0x72, 0x78, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, + 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x59, 0x0a, 0x12, 0x74, 0x78, 0x5f, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x54, + 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x48, 0x00, + 0x52, 0x0f, 0x74, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, + 0x71, 0x12, 0x42, 0x0a, 0x09, 0x72, 0x65, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x2e, 0x52, 0x65, 0x6b, 0x65, 0x79, 0x49, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6b, + 0x65, 0x79, 0x49, 0x6e, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x72, 0x65, 0x6b, 0x65, 0x79, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x6b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x48, + 0x00, 0x52, 0x09, 0x72, 0x65, 0x6b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x5c, 0x0a, 0x13, + 0x61, 0x64, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, + 0x72, 0x65, 0x71, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x44, 0x52, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, + 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x10, 0x61, 0x64, 0x72, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x52, 0x0a, 0x0f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, + 0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x41, 0x6e, 0x73, 0x12, 0x55, + 0x0a, 0x10, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, + 0x65, 0x71, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x6a, 0x6f, + 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x65, 0x0a, 0x16, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x18, + 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, + 0x75, 0x70, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x13, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x65, 0x0a, 0x16, + 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, + 0x75, 0x70, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, + 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x13, + 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, + 0x41, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x12, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, + 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x50, 0x69, 0x6e, 0x67, + 0x53, 0x6c, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0f, 0x70, + 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x62, + 0x0a, 0x15, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, + 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, + 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x12, + 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, + 0x65, 0x71, 0x12, 0x62, 0x0a, 0x15, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, + 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x1b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x50, 0x69, + 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, + 0x48, 0x00, 0x52, 0x12, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x11, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x5f, 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x42, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, + 0x0f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x41, 0x6e, 0x73, + 0x12, 0x52, 0x0a, 0x0f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x5f, + 0x72, 0x65, 0x71, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, 0x72, 0x65, 0x71, + 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, 0x72, 0x65, + 0x71, 0x52, 0x65, 0x71, 0x12, 0x52, 0x0a, 0x0f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x66, + 0x72, 0x65, 0x71, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, + 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x46, 0x72, 0x65, 0x71, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x65, 0x61, 0x63, 0x6f, + 0x6e, 0x46, 0x72, 0x65, 0x71, 0x41, 0x6e, 0x73, 0x12, 0x52, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x64, 0x12, 0x55, 0x0a, 0x10, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x48, 0x00, 0x52, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x1a, 0x52, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x12, + 0x46, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x69, 0x6e, 0x6f, 0x72, 0x42, 0x0a, 0xfa, + 0x42, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x18, 0x01, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x6f, 0x72, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x53, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x46, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x69, 0x6e, + 0x6f, 0x72, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x18, 0x01, 0x52, 0x0c, + 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x5f, 0x0a, 0x0c, + 0x4c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x06, + 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x2a, 0x03, 0x18, 0xfe, 0x01, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x2d, + 0x0a, 0x0d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, + 0x0c, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x9e, 0x02, + 0x0a, 0x0a, 0x4c, 0x69, 0x6e, 0x6b, 0x41, 0x44, 0x52, 0x52, 0x65, 0x71, 0x12, 0x4f, 0x0a, 0x0f, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0d, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2d, 0x0a, + 0x0e, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x0c, + 0x74, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2b, 0x0a, 0x0c, + 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x08, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x10, 0x52, 0x0b, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x39, 0x0a, 0x14, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x07, + 0x52, 0x12, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x22, 0x0a, 0x08, 0x6e, 0x62, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0f, 0x52, + 0x07, 0x6e, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x1a, 0x92, + 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x6e, 0x6b, 0x41, 0x44, 0x52, 0x41, 0x6e, 0x73, 0x12, 0x28, 0x0a, + 0x10, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x61, 0x63, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x4d, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x6b, 0x12, 0x2d, 0x0a, 0x13, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x41, 0x63, 0x6b, 0x12, 0x2b, 0x0a, 0x12, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, + 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0f, 0x74, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x41, 0x63, 0x6b, 0x1a, 0x63, 0x0a, 0x0c, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x12, 0x53, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, 0x74, 0x79, 0x5f, + 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x67, 0x67, + 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x44, + 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x1a, 0xf4, 0x01, 0x0a, 0x0f, 0x52, 0x78, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x56, 0x0a, 0x13, + 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x10, 0x72, 0x78, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x59, 0x0a, 0x14, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x72, 0x78, + 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, + 0x2e, 0x0a, 0x0d, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x32, 0x04, 0x28, 0xa0, 0x8d, + 0x06, 0x52, 0x0c, 0x72, 0x78, 0x32, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x1a, + 0xab, 0x01, 0x0a, 0x0f, 0x52, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, + 0x41, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x17, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x72, 0x78, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x41, 0x63, 0x6b, 0x12, 0x36, 0x0a, 0x18, 0x72, 0x78, 0x31, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x72, 0x78, 0x31, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x41, 0x63, + 0x6b, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x72, 0x78, + 0x32, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x41, 0x63, 0x6b, 0x1a, 0x5e, 0x0a, + 0x0c, 0x44, 0x65, 0x76, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x41, 0x6e, 0x73, 0x12, 0x22, 0x0a, + 0x07, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x07, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x79, 0x12, 0x2a, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x42, 0x12, 0xfa, 0x42, 0x0f, 0x1a, 0x0d, 0x18, 0x1f, 0x28, 0xe0, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x1a, 0x99, 0x02, + 0x0a, 0x0d, 0x4e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, + 0x2d, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xff, 0x01, + 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x29, + 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, 0x06, 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x09, + 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x56, 0x0a, 0x13, 0x6d, 0x69, 0x6e, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x10, 0x6d, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x12, 0x56, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0x58, 0x0a, 0x0d, 0x4e, 0x65, 0x77, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x41, 0x63, 0x6b, 0x12, + 0x22, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x6b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, + 0x41, 0x63, 0x6b, 0x1a, 0x66, 0x0a, 0x0c, 0x44, 0x4c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x52, 0x65, 0x71, 0x12, 0x2d, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, + 0x03, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x12, 0x27, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x32, 0x04, 0x28, 0xa0, 0x8d, 0x06, + 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0x5f, 0x0a, 0x0c, 0x44, + 0x4c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x61, 0x63, 0x6b, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x41, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, + 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x41, 0x63, 0x6b, 0x1a, 0x4b, 0x0a, 0x10, + 0x52, 0x78, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x12, 0x37, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x1a, 0xb9, 0x01, 0x0a, 0x0f, 0x54, 0x78, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x4a, 0x0a, + 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x69, 0x72, 0x70, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x49, 0x52, + 0x50, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6d, 0x61, 0x78, + 0x45, 0x69, 0x72, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2a, 0x0a, 0x11, 0x75, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x77, 0x65, 0x6c, + 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, + 0x6b, 0x5f, 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x77, 0x65, 0x6c, + 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x50, 0x0a, 0x08, 0x52, 0x65, 0x6b, 0x65, 0x79, 0x49, 0x6e, + 0x64, 0x12, 0x44, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x69, 0x6e, 0x6f, 0x72, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x6f, 0x72, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x51, 0x0a, 0x09, 0x52, 0x65, 0x6b, 0x65, 0x79, + 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x44, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x69, 0x6e, + 0x6f, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6d, 0x69, + 0x6e, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0xda, 0x01, 0x0a, 0x10, 0x41, + 0x44, 0x52, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, + 0x62, 0x0a, 0x16, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, + 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x13, + 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x12, 0x62, 0x0a, 0x16, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x64, + 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, + 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x13, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x45, + 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x1a, 0x49, 0x0a, 0x0d, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x41, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x04, 0x74, 0x69, + 0x6d, 0x65, 0x1a, 0xb2, 0x02, 0x0a, 0x0e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x6a, 0x6f, + 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x4c, 0x0a, 0x0b, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, 0x6f, + 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x4f, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x28, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, + 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, + 0x18, 0x07, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x57, + 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x50, + 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, + 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x1a, 0xcc, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x6a, 0x6f, + 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, + 0x5b, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x78, 0x70, + 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, + 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x11, + 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x54, + 0x69, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x78, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x1a, 0x48, 0x0a, 0x13, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x6e, 0x73, 0x12, 0x31, 0x0a, + 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x6d, 0x61, + 0x78, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x6b, + 0x1a, 0x53, 0x0a, 0x0f, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x71, 0x12, 0x40, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, + 0x65, 0x72, 0x69, 0x6f, 0x64, 0x1a, 0x90, 0x01, 0x0a, 0x12, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, + 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x29, 0x0a, 0x09, + 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x0b, 0xfa, 0x42, 0x08, 0x32, 0x06, 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x09, 0x66, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x4f, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0x68, 0x0a, 0x12, 0x50, 0x69, 0x6e, 0x67, + 0x53, 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x23, + 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x61, 0x63, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x41, 0x63, 0x6b, 0x12, 0x2d, 0x0a, 0x13, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x10, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x41, + 0x63, 0x6b, 0x1a, 0x61, 0x0a, 0x0f, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x69, + 0x6e, 0x67, 0x41, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x2a, 0x04, 0x18, 0xff, 0xff, 0x03, 0x52, + 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x2d, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0x3a, 0x0a, 0x0d, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, + 0x72, 0x65, 0x71, 0x52, 0x65, 0x71, 0x12, 0x29, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, 0x06, + 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x1a, 0x34, 0x0a, 0x0d, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, 0x72, 0x65, 0x71, 0x41, + 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, + 0x61, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x41, 0x63, 0x6b, 0x1a, 0x46, 0x0a, 0x0d, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x64, 0x12, 0x35, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x1a, + 0x47, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x12, 0x35, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x22, 0x45, 0x0a, 0x0b, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x22, 0x43, 0x0a, 0x0e, 0x46, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x09, 0xfa, 0x42, 0x06, + 0x32, 0x04, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, + 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, + 0x4d, 0x0a, 0x16, 0x5a, 0x65, 0x72, 0x6f, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, 0x06, 0x18, + 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, + 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x67, + 0x0a, 0x13, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, + 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x65, 0x0a, 0x12, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3d, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, + 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x67, + 0x0a, 0x13, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, + 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x71, 0x0a, 0x18, 0x41, 0x67, 0x67, 0x72, 0x65, + 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, + 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, + 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x59, 0x0a, 0x0c, 0x52, 0x78, + 0x44, 0x65, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, + 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, + 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x71, 0x0a, 0x18, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, + 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, + 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x71, 0x0a, 0x18, 0x41, 0x44, 0x52, 0x41, + 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, + 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, 0x08, + 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x5f, 0x0a, 0x0f, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x49, 0x52, 0x50, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3a, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x49, 0x52, 0x50, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, + 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x2a, 0xa7, 0x01, 0x0a, + 0x05, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x52, + 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4a, 0x4f, 0x49, 0x4e, + 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x43, + 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x45, 0x44, 0x5f, 0x55, 0x50, 0x10, 0x02, 0x12, 0x14, 0x0a, + 0x10, 0x55, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x45, 0x44, 0x5f, 0x44, 0x4f, 0x57, + 0x4e, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x45, 0x44, + 0x5f, 0x55, 0x50, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, + 0x45, 0x44, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, + 0x4f, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x06, 0x12, 0x0f, 0x0a, + 0x0b, 0x50, 0x52, 0x4f, 0x50, 0x52, 0x49, 0x45, 0x54, 0x41, 0x52, 0x59, 0x10, 0x07, 0x1a, 0x06, + 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x2a, 0x28, 0x0a, 0x05, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x12, + 0x0e, 0x0a, 0x0a, 0x4c, 0x4f, 0x52, 0x41, 0x57, 0x41, 0x4e, 0x5f, 0x52, 0x31, 0x10, 0x00, 0x1a, + 0x0f, 0xea, 0xaa, 0x19, 0x0b, 0x18, 0x01, 0x2a, 0x07, 0x4c, 0x4f, 0x52, 0x41, 0x57, 0x41, 0x4e, + 0x2a, 0xb9, 0x02, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x1e, 0x0a, 0x0b, 0x4d, 0x41, 0x43, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, + 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x12, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, + 0x1e, 0x0a, 0x08, 0x4d, 0x41, 0x43, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x10, 0x01, 0x1a, 0x10, 0xea, + 0xaa, 0x19, 0x0c, 0x12, 0x03, 0x31, 0x2e, 0x30, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x30, 0x12, + 0x1b, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x31, 0x10, 0x02, 0x1a, + 0x0b, 0xea, 0xaa, 0x19, 0x07, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x31, 0x12, 0x1b, 0x0a, 0x0a, + 0x4d, 0x41, 0x43, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x10, 0x03, 0x1a, 0x0b, 0xea, 0xaa, + 0x19, 0x07, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x32, 0x12, 0x1e, 0x0a, 0x08, 0x4d, 0x41, 0x43, + 0x5f, 0x56, 0x31, 0x5f, 0x31, 0x10, 0x04, 0x1a, 0x10, 0xea, 0xaa, 0x19, 0x0c, 0x12, 0x03, 0x31, + 0x2e, 0x31, 0x12, 0x05, 0x31, 0x2e, 0x31, 0x2e, 0x30, 0x12, 0x1b, 0x0a, 0x0a, 0x4d, 0x41, 0x43, + 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x33, 0x10, 0x05, 0x1a, 0x0b, 0xea, 0xaa, 0x19, 0x07, 0x12, + 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x33, 0x12, 0x1b, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x5f, 0x56, 0x31, + 0x5f, 0x30, 0x5f, 0x34, 0x10, 0x06, 0x1a, 0x0b, 0xea, 0xaa, 0x19, 0x07, 0x12, 0x05, 0x31, 0x2e, + 0x30, 0x2e, 0x34, 0x1a, 0x57, 0xea, 0xaa, 0x19, 0x07, 0x18, 0x01, 0x2a, 0x03, 0x4d, 0x41, 0x43, + 0xf2, 0xaa, 0x19, 0x48, 0x0a, 0x46, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x74, 0x74, 0x6e, 0x70, 0x62, 0x2e, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0xb9, 0x05, 0x0a, + 0x0a, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0b, 0x50, + 0x48, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x1a, 0x0d, 0xea, 0xaa, + 0x19, 0x09, 0x12, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x24, 0x0a, 0x08, 0x50, + 0x48, 0x59, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x10, 0x01, 0x1a, 0x16, 0xea, 0xaa, 0x19, 0x12, 0x12, + 0x03, 0x31, 0x2e, 0x30, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x30, 0x12, 0x04, 0x56, 0x31, 0x5f, + 0x30, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x53, 0x30, 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x10, + 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x50, 0x48, 0x59, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x31, 0x10, + 0x02, 0x1a, 0x13, 0xea, 0xaa, 0x19, 0x0f, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x31, 0x12, 0x06, + 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x31, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x53, 0x30, 0x30, 0x31, 0x5f, + 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x31, 0x10, 0x02, 0x12, 0x40, 0x0a, 0x10, 0x50, 0x48, 0x59, 0x5f, + 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x41, 0x10, 0x03, 0x1a, 0x2a, + 0xea, 0xaa, 0x19, 0x26, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x32, 0x12, 0x07, 0x31, 0x2e, 0x30, + 0x2e, 0x32, 0x2d, 0x61, 0x12, 0x06, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x12, 0x0c, 0x56, 0x31, + 0x5f, 0x30, 0x5f, 0x32, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x41, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x50, + 0x30, 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x10, 0x03, 0x12, 0x31, 0x0a, 0x10, + 0x50, 0x48, 0x59, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x42, + 0x10, 0x04, 0x1a, 0x1b, 0xea, 0xaa, 0x19, 0x17, 0x12, 0x07, 0x31, 0x2e, 0x30, 0x2e, 0x32, 0x2d, + 0x62, 0x12, 0x0c, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x42, 0x12, + 0x16, 0x0a, 0x12, 0x52, 0x50, 0x30, 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x5f, + 0x52, 0x45, 0x56, 0x5f, 0x42, 0x10, 0x04, 0x12, 0x34, 0x0a, 0x0e, 0x50, 0x48, 0x59, 0x5f, 0x56, + 0x31, 0x5f, 0x31, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x41, 0x10, 0x05, 0x1a, 0x20, 0xea, 0xaa, 0x19, + 0x1c, 0x12, 0x05, 0x31, 0x2e, 0x31, 0x2d, 0x61, 0x12, 0x07, 0x31, 0x2e, 0x31, 0x2e, 0x30, 0x2d, + 0x61, 0x12, 0x0a, 0x56, 0x31, 0x5f, 0x31, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x41, 0x12, 0x14, 0x0a, + 0x10, 0x52, 0x50, 0x30, 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x31, 0x5f, 0x52, 0x45, 0x56, 0x5f, + 0x41, 0x10, 0x05, 0x12, 0x34, 0x0a, 0x0e, 0x50, 0x48, 0x59, 0x5f, 0x56, 0x31, 0x5f, 0x31, 0x5f, + 0x52, 0x45, 0x56, 0x5f, 0x42, 0x10, 0x06, 0x1a, 0x20, 0xea, 0xaa, 0x19, 0x1c, 0x12, 0x05, 0x31, + 0x2e, 0x31, 0x2d, 0x62, 0x12, 0x07, 0x31, 0x2e, 0x31, 0x2e, 0x30, 0x2d, 0x62, 0x12, 0x0a, 0x56, + 0x31, 0x5f, 0x31, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x42, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x50, 0x30, + 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x31, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x42, 0x10, 0x06, 0x12, + 0x31, 0x0a, 0x10, 0x50, 0x48, 0x59, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x33, 0x5f, 0x52, 0x45, + 0x56, 0x5f, 0x41, 0x10, 0x07, 0x1a, 0x1b, 0xea, 0xaa, 0x19, 0x17, 0x12, 0x07, 0x31, 0x2e, 0x30, + 0x2e, 0x33, 0x2d, 0x61, 0x12, 0x0c, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x33, 0x5f, 0x52, 0x45, 0x56, + 0x5f, 0x41, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x50, 0x30, 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x30, + 0x5f, 0x33, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x41, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x50, + 0x30, 0x30, 0x32, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x30, 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, + 0x52, 0x50, 0x30, 0x30, 0x32, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x31, 0x10, 0x09, 0x12, 0x10, + 0x0a, 0x0c, 0x52, 0x50, 0x30, 0x30, 0x32, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x10, 0x0a, + 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x50, 0x30, 0x30, 0x32, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x33, + 0x10, 0x0b, 0x1a, 0x54, 0x10, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0xf2, 0xaa, 0x19, 0x48, + 0x0a, 0x46, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, + 0x62, 0x2e, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0x87, 0x03, 0x0a, 0x0d, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x44, + 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x0f, 0x0a, + 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x33, 0x10, 0x03, 0x12, 0x0f, + 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x34, 0x10, 0x04, 0x12, + 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x35, 0x10, 0x05, + 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x36, 0x10, + 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x37, + 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, + 0x38, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, + 0x5f, 0x39, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, + 0x45, 0x5f, 0x31, 0x30, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, + 0x41, 0x54, 0x45, 0x5f, 0x31, 0x31, 0x10, 0x0b, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x31, 0x32, 0x10, 0x0c, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x31, 0x33, 0x10, 0x0d, 0x12, 0x10, 0x0a, 0x0c, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x31, 0x34, 0x10, 0x0e, 0x12, 0x10, + 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x31, 0x35, 0x10, 0x0f, + 0x1a, 0x60, 0xea, 0xaa, 0x19, 0x0d, 0x10, 0x01, 0x2a, 0x09, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, + 0x41, 0x54, 0x45, 0xf2, 0xaa, 0x19, 0x4b, 0x0a, 0x49, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x2a, 0xba, 0x02, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, + 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x16, 0x0a, + 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, + 0x54, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, + 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x16, 0x0a, + 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, + 0x54, 0x5f, 0x33, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, + 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x34, 0x10, 0x04, 0x12, 0x16, 0x0a, + 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, + 0x54, 0x5f, 0x35, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, + 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x36, 0x10, 0x06, 0x12, 0x16, 0x0a, + 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, + 0x54, 0x5f, 0x37, 0x10, 0x07, 0x1a, 0x68, 0xea, 0xaa, 0x19, 0x14, 0x10, 0x01, 0x2a, 0x10, 0x44, + 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0xf2, + 0xaa, 0x19, 0x4c, 0x0a, 0x4a, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, + 0x74, 0x6e, 0x70, 0x62, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, + 0x5d, 0x0a, 0x0f, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, + 0x54, 0x45, 0x58, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, + 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x04, 0x4a, + 0x4f, 0x49, 0x4e, 0x10, 0xff, 0x01, 0x1a, 0x06, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x2a, 0x3f, + 0x0a, 0x11, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x02, 0x1a, 0x06, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x2a, + 0x38, 0x0a, 0x0a, 0x43, 0x46, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, + 0x0b, 0x46, 0x52, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x49, 0x45, 0x53, 0x10, 0x00, 0x12, 0x11, + 0x0a, 0x0d, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x53, 0x4b, 0x53, 0x10, + 0x01, 0x1a, 0x06, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x2a, 0x3d, 0x0a, 0x05, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x41, 0x10, 0x00, 0x12, + 0x0b, 0x0a, 0x07, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x42, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, + 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x43, 0x10, 0x02, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x18, + 0x01, 0x2a, 0x05, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x2a, 0x78, 0x0a, 0x12, 0x54, 0x78, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0a, + 0x0a, 0x06, 0x4c, 0x4f, 0x57, 0x45, 0x53, 0x54, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, + 0x57, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x45, 0x4c, 0x4f, 0x57, 0x5f, 0x4e, 0x4f, 0x52, + 0x4d, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, + 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x42, 0x4f, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, + 0x4c, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, 0x05, 0x12, 0x0b, 0x0a, + 0x07, 0x48, 0x49, 0x47, 0x48, 0x45, 0x53, 0x54, 0x10, 0x06, 0x1a, 0x06, 0xea, 0xaa, 0x19, 0x02, + 0x18, 0x01, 0x2a, 0xe4, 0x03, 0x0a, 0x14, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x0d, 0x0a, 0x09, 0x43, + 0x49, 0x44, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x49, + 0x44, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x49, 0x44, + 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, 0x02, 0x12, 0x10, 0x0a, + 0x0c, 0x43, 0x49, 0x44, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x41, 0x44, 0x52, 0x10, 0x03, 0x12, + 0x12, 0x0a, 0x0e, 0x43, 0x49, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, + 0x45, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x49, 0x44, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, + 0x52, 0x41, 0x4d, 0x5f, 0x53, 0x45, 0x54, 0x55, 0x50, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x43, + 0x49, 0x44, 0x5f, 0x44, 0x45, 0x56, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x06, 0x12, + 0x13, 0x0a, 0x0f, 0x43, 0x49, 0x44, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, + 0x45, 0x4c, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x49, 0x44, 0x5f, 0x52, 0x58, 0x5f, 0x54, + 0x49, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x45, 0x54, 0x55, 0x50, 0x10, 0x08, 0x12, 0x16, 0x0a, + 0x12, 0x43, 0x49, 0x44, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x53, 0x45, + 0x54, 0x55, 0x50, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x49, 0x44, 0x5f, 0x44, 0x4c, 0x5f, + 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x49, 0x44, + 0x5f, 0x52, 0x45, 0x4b, 0x45, 0x59, 0x10, 0x0b, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x49, 0x44, 0x5f, + 0x41, 0x44, 0x52, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x53, 0x45, 0x54, 0x55, 0x50, 0x10, + 0x0c, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x49, 0x44, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, + 0x54, 0x49, 0x4d, 0x45, 0x10, 0x0d, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x49, 0x44, 0x5f, 0x46, 0x4f, + 0x52, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x0e, 0x12, 0x1a, 0x0a, 0x16, + 0x43, 0x49, 0x44, 0x5f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, + 0x5f, 0x53, 0x45, 0x54, 0x55, 0x50, 0x10, 0x0f, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x49, 0x44, 0x5f, + 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x4c, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x10, + 0x12, 0x19, 0x0a, 0x15, 0x43, 0x49, 0x44, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x4c, 0x4f, + 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x11, 0x12, 0x15, 0x0a, 0x11, 0x43, + 0x49, 0x44, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x49, 0x4e, 0x47, + 0x10, 0x12, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x49, 0x44, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, + 0x5f, 0x46, 0x52, 0x45, 0x51, 0x10, 0x13, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x49, 0x44, 0x5f, 0x44, + 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x20, 0x1a, 0x0b, 0xea, 0xaa, + 0x19, 0x07, 0x18, 0x01, 0x2a, 0x03, 0x43, 0x49, 0x44, 0x2a, 0xe6, 0x02, 0x0a, 0x13, 0x41, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, + 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, + 0x31, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, + 0x45, 0x5f, 0x32, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, + 0x43, 0x4c, 0x45, 0x5f, 0x34, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x55, 0x54, 0x59, 0x5f, + 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x38, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x55, 0x54, + 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x31, 0x36, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, + 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x33, 0x32, 0x10, 0x05, 0x12, + 0x11, 0x0a, 0x0d, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x36, 0x34, + 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, + 0x5f, 0x31, 0x32, 0x38, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, + 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x32, 0x35, 0x36, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x55, + 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x35, 0x31, 0x32, 0x10, 0x09, 0x12, 0x13, + 0x0a, 0x0f, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x31, 0x30, 0x32, + 0x34, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, + 0x45, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x55, 0x54, 0x59, + 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x34, 0x30, 0x39, 0x36, 0x10, 0x0c, 0x12, 0x13, 0x0a, + 0x0f, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x38, 0x31, 0x39, 0x32, + 0x10, 0x0d, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, + 0x5f, 0x31, 0x36, 0x33, 0x38, 0x34, 0x10, 0x0e, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x55, 0x54, 0x59, + 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x33, 0x32, 0x37, 0x36, 0x38, 0x10, 0x0f, 0x1a, 0x12, + 0xea, 0xaa, 0x19, 0x0e, 0x18, 0x01, 0x2a, 0x0a, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, + 0x4c, 0x45, 0x2a, 0xc1, 0x01, 0x0a, 0x0e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, + 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x56, + 0x45, 0x52, 0x59, 0x5f, 0x31, 0x53, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x49, 0x4e, 0x47, + 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x32, 0x53, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x50, + 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x34, 0x53, 0x10, 0x02, 0x12, 0x11, + 0x0a, 0x0d, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x38, 0x53, 0x10, + 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, + 0x31, 0x36, 0x53, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x56, + 0x45, 0x52, 0x59, 0x5f, 0x33, 0x32, 0x53, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x49, 0x4e, + 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x36, 0x34, 0x53, 0x10, 0x06, 0x12, 0x13, 0x0a, + 0x0f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x31, 0x32, 0x38, 0x53, + 0x10, 0x07, 0x1a, 0x12, 0xea, 0xaa, 0x19, 0x0e, 0x18, 0x01, 0x2a, 0x0a, 0x50, 0x49, 0x4e, 0x47, + 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x2a, 0x9b, 0x03, 0x0a, 0x13, 0x52, 0x65, 0x6a, 0x6f, 0x69, + 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x13, + 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x31, + 0x36, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x5f, 0x33, 0x32, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, + 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x36, 0x34, 0x10, 0x02, 0x12, 0x14, 0x0a, + 0x10, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x31, 0x32, + 0x38, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x5f, 0x32, 0x35, 0x36, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x4a, + 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x35, 0x31, 0x32, 0x10, 0x05, 0x12, + 0x15, 0x0a, 0x11, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, + 0x31, 0x30, 0x32, 0x34, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, + 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x10, 0x07, 0x12, 0x15, 0x0a, + 0x11, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x34, 0x30, + 0x39, 0x36, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x38, 0x31, 0x39, 0x32, 0x10, 0x09, 0x12, 0x16, 0x0a, 0x12, 0x52, + 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x31, 0x36, 0x33, 0x38, + 0x34, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x5f, 0x33, 0x32, 0x37, 0x36, 0x38, 0x10, 0x0b, 0x12, 0x16, 0x0a, 0x12, 0x52, + 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x36, 0x35, 0x35, 0x33, + 0x36, 0x10, 0x0c, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x5f, 0x31, 0x33, 0x31, 0x30, 0x37, 0x32, 0x10, 0x0d, 0x12, 0x17, 0x0a, 0x13, + 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x32, 0x36, 0x32, + 0x31, 0x34, 0x34, 0x10, 0x0e, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x35, 0x32, 0x34, 0x32, 0x38, 0x38, 0x10, 0x0f, 0x1a, 0x14, + 0xea, 0xaa, 0x19, 0x10, 0x18, 0x01, 0x2a, 0x0c, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x2a, 0xdf, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x54, + 0x69, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x11, 0x0a, 0x0d, 0x52, + 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x11, + 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x10, + 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, + 0x5f, 0x32, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, + 0x49, 0x4d, 0x45, 0x5f, 0x33, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, + 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x34, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x35, 0x10, 0x05, 0x12, 0x11, 0x0a, + 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x36, 0x10, 0x06, + 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, + 0x37, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, + 0x4d, 0x45, 0x5f, 0x38, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, + 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x39, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, + 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x30, 0x10, 0x0a, 0x12, 0x12, 0x0a, + 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x31, 0x10, + 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, + 0x5f, 0x31, 0x32, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, + 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x33, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, + 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x34, 0x10, 0x0e, 0x12, 0x12, 0x0a, + 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x35, 0x10, + 0x0f, 0x1a, 0x13, 0xea, 0xaa, 0x19, 0x0f, 0x18, 0x01, 0x2a, 0x0b, 0x52, 0x45, 0x4a, 0x4f, 0x49, + 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x2a, 0xd5, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x6a, 0x6f, 0x69, + 0x6e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, + 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, + 0x5f, 0x30, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, + 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, + 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x13, + 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, + 0x33, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, + 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x34, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, + 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x35, 0x10, 0x05, 0x12, 0x13, 0x0a, + 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x36, + 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, + 0x49, 0x4f, 0x44, 0x5f, 0x37, 0x10, 0x07, 0x1a, 0x15, 0xea, 0xaa, 0x19, 0x11, 0x18, 0x01, 0x2a, + 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x2a, 0xe0, + 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x49, 0x52, 0x50, 0x12, 0x11, 0x0a, + 0x0d, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x38, 0x10, 0x00, + 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, + 0x31, 0x30, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, + 0x49, 0x52, 0x50, 0x5f, 0x31, 0x32, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, + 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x31, 0x33, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, + 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x31, 0x34, 0x10, 0x04, + 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, + 0x31, 0x36, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, + 0x49, 0x52, 0x50, 0x5f, 0x31, 0x38, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, + 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x32, 0x30, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, + 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x32, 0x31, 0x10, 0x08, + 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, + 0x32, 0x34, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, + 0x49, 0x52, 0x50, 0x5f, 0x32, 0x36, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, + 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x32, 0x37, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, + 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x32, 0x39, 0x10, 0x0c, + 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, + 0x33, 0x30, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, + 0x49, 0x52, 0x50, 0x5f, 0x33, 0x33, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, + 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x33, 0x36, 0x10, 0x0f, 0x1a, 0x13, 0xea, 0xaa, + 0x19, 0x0f, 0x18, 0x01, 0x2a, 0x0b, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, + 0x50, 0x2a, 0x99, 0x03, 0x0a, 0x13, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, + 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x31, 0x10, 0x00, 0x12, 0x13, + 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, + 0x32, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, + 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x34, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, + 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x38, 0x10, 0x03, 0x12, 0x14, 0x0a, + 0x10, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x31, + 0x36, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, + 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x33, 0x32, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, 0x52, + 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x36, 0x34, 0x10, 0x06, 0x12, + 0x15, 0x0a, 0x11, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, + 0x5f, 0x31, 0x32, 0x38, 0x10, 0x07, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, + 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x32, 0x35, 0x36, 0x10, 0x08, 0x12, 0x15, 0x0a, + 0x11, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x35, + 0x31, 0x32, 0x10, 0x09, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, + 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x31, 0x30, 0x32, 0x34, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, + 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x32, 0x30, + 0x34, 0x38, 0x10, 0x0b, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, + 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x34, 0x30, 0x39, 0x36, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, + 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x38, 0x31, + 0x39, 0x32, 0x10, 0x0d, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, + 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x31, 0x36, 0x33, 0x38, 0x34, 0x10, 0x0e, 0x12, 0x17, 0x0a, + 0x13, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x33, + 0x32, 0x37, 0x36, 0x38, 0x10, 0x0f, 0x1a, 0x15, 0xea, 0xaa, 0x19, 0x11, 0x18, 0x01, 0x2a, 0x0d, + 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x2a, 0x99, 0x03, + 0x0a, 0x13, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x45, 0x78, 0x70, + 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, + 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, + 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x32, 0x10, 0x01, 0x12, + 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, + 0x5f, 0x34, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, + 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x38, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, 0x52, + 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x36, 0x10, 0x04, 0x12, + 0x14, 0x0a, 0x10, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, + 0x5f, 0x33, 0x32, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, + 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x36, 0x34, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x41, + 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x32, 0x38, + 0x10, 0x07, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, + 0x4c, 0x41, 0x59, 0x5f, 0x32, 0x35, 0x36, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x44, 0x52, + 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x35, 0x31, 0x32, 0x10, 0x09, + 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x31, 0x30, 0x32, 0x34, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, 0x5f, + 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x10, 0x0b, + 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x34, 0x30, 0x39, 0x36, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, 0x5f, + 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x38, 0x31, 0x39, 0x32, 0x10, 0x0d, + 0x12, 0x17, 0x0a, 0x13, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x31, 0x36, 0x33, 0x38, 0x34, 0x10, 0x0e, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x44, 0x52, + 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x33, 0x32, 0x37, 0x36, 0x38, + 0x10, 0x0f, 0x1a, 0x15, 0xea, 0xaa, 0x19, 0x11, 0x18, 0x01, 0x2a, 0x0d, 0x41, 0x44, 0x52, 0x5f, + 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x2a, 0xea, 0x02, 0x0a, 0x07, 0x52, 0x78, + 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x33, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x34, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x35, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x36, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x37, 0x10, 0x07, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x38, 0x10, 0x08, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x39, 0x10, 0x09, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x31, 0x30, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, + 0x41, 0x59, 0x5f, 0x31, 0x31, 0x10, 0x0b, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, 0x5f, 0x44, 0x45, + 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x32, 0x10, 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, 0x5f, 0x44, + 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x33, 0x10, 0x0d, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, 0x5f, + 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x34, 0x10, 0x0e, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, + 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x35, 0x10, 0x0f, 0x1a, 0x59, 0xea, 0xaa, 0x19, + 0x0c, 0x10, 0x01, 0x2a, 0x08, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0xf2, 0xaa, 0x19, + 0x45, 0x0a, 0x43, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, + 0x70, 0x62, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0xa8, 0x02, 0x0a, 0x05, 0x4d, 0x69, 0x6e, 0x6f, 0x72, + 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x30, 0x10, + 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x0f, + 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x32, 0x10, 0x02, 0x12, + 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x33, 0x10, 0x03, + 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x34, 0x10, + 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x35, + 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, + 0x36, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, + 0x5f, 0x37, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, + 0x55, 0x5f, 0x38, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, + 0x46, 0x55, 0x5f, 0x39, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, + 0x52, 0x46, 0x55, 0x5f, 0x31, 0x30, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x49, 0x4e, 0x4f, + 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x31, 0x31, 0x10, 0x0b, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x49, + 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x31, 0x32, 0x10, 0x0c, 0x12, 0x10, 0x0a, 0x0c, + 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x31, 0x33, 0x10, 0x0d, 0x12, 0x10, + 0x0a, 0x0c, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x31, 0x34, 0x10, 0x0e, + 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x31, 0x35, + 0x10, 0x0f, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x18, 0x01, 0x2a, 0x05, 0x4d, 0x49, 0x4e, 0x4f, + 0x52, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, + 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_lorawan_proto_rawDescOnce sync.Once + file_lorawan_stack_api_lorawan_proto_rawDescData = file_lorawan_stack_api_lorawan_proto_rawDesc +) + +func file_lorawan_stack_api_lorawan_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_lorawan_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_lorawan_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_lorawan_proto_rawDescData) + }) + return file_lorawan_stack_api_lorawan_proto_rawDescData +} + +var file_lorawan_stack_api_lorawan_proto_enumTypes = make([]protoimpl.EnumInfo, 22) +var file_lorawan_stack_api_lorawan_proto_msgTypes = make([]protoimpl.MessageInfo, 63) +var file_lorawan_stack_api_lorawan_proto_goTypes = []interface{}{ + (MType)(0), // 0: ttn.lorawan.v3.MType + (Major)(0), // 1: ttn.lorawan.v3.Major + (MACVersion)(0), // 2: ttn.lorawan.v3.MACVersion + (PHYVersion)(0), // 3: ttn.lorawan.v3.PHYVersion + (DataRateIndex)(0), // 4: ttn.lorawan.v3.DataRateIndex + (DataRateOffset)(0), // 5: ttn.lorawan.v3.DataRateOffset + (JoinRequestType)(0), // 6: ttn.lorawan.v3.JoinRequestType + (RejoinRequestType)(0), // 7: ttn.lorawan.v3.RejoinRequestType + (CFListType)(0), // 8: ttn.lorawan.v3.CFListType + (Class)(0), // 9: ttn.lorawan.v3.Class + (TxSchedulePriority)(0), // 10: ttn.lorawan.v3.TxSchedulePriority + (MACCommandIdentifier)(0), // 11: ttn.lorawan.v3.MACCommandIdentifier + (AggregatedDutyCycle)(0), // 12: ttn.lorawan.v3.AggregatedDutyCycle + (PingSlotPeriod)(0), // 13: ttn.lorawan.v3.PingSlotPeriod + (RejoinCountExponent)(0), // 14: ttn.lorawan.v3.RejoinCountExponent + (RejoinTimeExponent)(0), // 15: ttn.lorawan.v3.RejoinTimeExponent + (RejoinPeriodExponent)(0), // 16: ttn.lorawan.v3.RejoinPeriodExponent + (DeviceEIRP)(0), // 17: ttn.lorawan.v3.DeviceEIRP + (ADRAckLimitExponent)(0), // 18: ttn.lorawan.v3.ADRAckLimitExponent + (ADRAckDelayExponent)(0), // 19: ttn.lorawan.v3.ADRAckDelayExponent + (RxDelay)(0), // 20: ttn.lorawan.v3.RxDelay + (Minor)(0), // 21: ttn.lorawan.v3.Minor + (*Message)(nil), // 22: ttn.lorawan.v3.Message + (*MHDR)(nil), // 23: ttn.lorawan.v3.MHDR + (*MACPayload)(nil), // 24: ttn.lorawan.v3.MACPayload + (*FHDR)(nil), // 25: ttn.lorawan.v3.FHDR + (*FCtrl)(nil), // 26: ttn.lorawan.v3.FCtrl + (*JoinRequestPayload)(nil), // 27: ttn.lorawan.v3.JoinRequestPayload + (*RejoinRequestPayload)(nil), // 28: ttn.lorawan.v3.RejoinRequestPayload + (*JoinAcceptPayload)(nil), // 29: ttn.lorawan.v3.JoinAcceptPayload + (*DLSettings)(nil), // 30: ttn.lorawan.v3.DLSettings + (*CFList)(nil), // 31: ttn.lorawan.v3.CFList + (*LoRaDataRate)(nil), // 32: ttn.lorawan.v3.LoRaDataRate + (*FSKDataRate)(nil), // 33: ttn.lorawan.v3.FSKDataRate + (*LRFHSSDataRate)(nil), // 34: ttn.lorawan.v3.LRFHSSDataRate + (*DataRate)(nil), // 35: ttn.lorawan.v3.DataRate + (*TxSettings)(nil), // 36: ttn.lorawan.v3.TxSettings + (*GatewayAntennaIdentifiers)(nil), // 37: ttn.lorawan.v3.GatewayAntennaIdentifiers + (*ClassBCGatewayIdentifiers)(nil), // 38: ttn.lorawan.v3.ClassBCGatewayIdentifiers + (*UplinkToken)(nil), // 39: ttn.lorawan.v3.UplinkToken + (*DownlinkPath)(nil), // 40: ttn.lorawan.v3.DownlinkPath + (*TxRequest)(nil), // 41: ttn.lorawan.v3.TxRequest + (*MACCommand)(nil), // 42: ttn.lorawan.v3.MACCommand + (*MACCommands)(nil), // 43: ttn.lorawan.v3.MACCommands + (*FrequencyValue)(nil), // 44: ttn.lorawan.v3.FrequencyValue + (*ZeroableFrequencyValue)(nil), // 45: ttn.lorawan.v3.ZeroableFrequencyValue + (*DataRateOffsetValue)(nil), // 46: ttn.lorawan.v3.DataRateOffsetValue + (*DataRateIndexValue)(nil), // 47: ttn.lorawan.v3.DataRateIndexValue + (*PingSlotPeriodValue)(nil), // 48: ttn.lorawan.v3.PingSlotPeriodValue + (*AggregatedDutyCycleValue)(nil), // 49: ttn.lorawan.v3.AggregatedDutyCycleValue + (*RxDelayValue)(nil), // 50: ttn.lorawan.v3.RxDelayValue + (*ADRAckLimitExponentValue)(nil), // 51: ttn.lorawan.v3.ADRAckLimitExponentValue + (*ADRAckDelayExponentValue)(nil), // 52: ttn.lorawan.v3.ADRAckDelayExponentValue + (*DeviceEIRPValue)(nil), // 53: ttn.lorawan.v3.DeviceEIRPValue + (*TxSettings_Downlink)(nil), // 54: ttn.lorawan.v3.TxSettings.Downlink + (*MACCommand_ResetInd)(nil), // 55: ttn.lorawan.v3.MACCommand.ResetInd + (*MACCommand_ResetConf)(nil), // 56: ttn.lorawan.v3.MACCommand.ResetConf + (*MACCommand_LinkCheckAns)(nil), // 57: ttn.lorawan.v3.MACCommand.LinkCheckAns + (*MACCommand_LinkADRReq)(nil), // 58: ttn.lorawan.v3.MACCommand.LinkADRReq + (*MACCommand_LinkADRAns)(nil), // 59: ttn.lorawan.v3.MACCommand.LinkADRAns + (*MACCommand_DutyCycleReq)(nil), // 60: ttn.lorawan.v3.MACCommand.DutyCycleReq + (*MACCommand_RxParamSetupReq)(nil), // 61: ttn.lorawan.v3.MACCommand.RxParamSetupReq + (*MACCommand_RxParamSetupAns)(nil), // 62: ttn.lorawan.v3.MACCommand.RxParamSetupAns + (*MACCommand_DevStatusAns)(nil), // 63: ttn.lorawan.v3.MACCommand.DevStatusAns + (*MACCommand_NewChannelReq)(nil), // 64: ttn.lorawan.v3.MACCommand.NewChannelReq + (*MACCommand_NewChannelAns)(nil), // 65: ttn.lorawan.v3.MACCommand.NewChannelAns + (*MACCommand_DLChannelReq)(nil), // 66: ttn.lorawan.v3.MACCommand.DLChannelReq + (*MACCommand_DLChannelAns)(nil), // 67: ttn.lorawan.v3.MACCommand.DLChannelAns + (*MACCommand_RxTimingSetupReq)(nil), // 68: ttn.lorawan.v3.MACCommand.RxTimingSetupReq + (*MACCommand_TxParamSetupReq)(nil), // 69: ttn.lorawan.v3.MACCommand.TxParamSetupReq + (*MACCommand_RekeyInd)(nil), // 70: ttn.lorawan.v3.MACCommand.RekeyInd + (*MACCommand_RekeyConf)(nil), // 71: ttn.lorawan.v3.MACCommand.RekeyConf + (*MACCommand_ADRParamSetupReq)(nil), // 72: ttn.lorawan.v3.MACCommand.ADRParamSetupReq + (*MACCommand_DeviceTimeAns)(nil), // 73: ttn.lorawan.v3.MACCommand.DeviceTimeAns + (*MACCommand_ForceRejoinReq)(nil), // 74: ttn.lorawan.v3.MACCommand.ForceRejoinReq + (*MACCommand_RejoinParamSetupReq)(nil), // 75: ttn.lorawan.v3.MACCommand.RejoinParamSetupReq + (*MACCommand_RejoinParamSetupAns)(nil), // 76: ttn.lorawan.v3.MACCommand.RejoinParamSetupAns + (*MACCommand_PingSlotInfoReq)(nil), // 77: ttn.lorawan.v3.MACCommand.PingSlotInfoReq + (*MACCommand_PingSlotChannelReq)(nil), // 78: ttn.lorawan.v3.MACCommand.PingSlotChannelReq + (*MACCommand_PingSlotChannelAns)(nil), // 79: ttn.lorawan.v3.MACCommand.PingSlotChannelAns + (*MACCommand_BeaconTimingAns)(nil), // 80: ttn.lorawan.v3.MACCommand.BeaconTimingAns + (*MACCommand_BeaconFreqReq)(nil), // 81: ttn.lorawan.v3.MACCommand.BeaconFreqReq + (*MACCommand_BeaconFreqAns)(nil), // 82: ttn.lorawan.v3.MACCommand.BeaconFreqAns + (*MACCommand_DeviceModeInd)(nil), // 83: ttn.lorawan.v3.MACCommand.DeviceModeInd + (*MACCommand_DeviceModeConf)(nil), // 84: ttn.lorawan.v3.MACCommand.DeviceModeConf + (*structpb.Struct)(nil), // 85: google.protobuf.Struct + (*timestamppb.Timestamp)(nil), // 86: google.protobuf.Timestamp + (*GatewayIdentifiers)(nil), // 87: ttn.lorawan.v3.GatewayIdentifiers +} +var file_lorawan_stack_api_lorawan_proto_depIdxs = []int32{ + 23, // 0: ttn.lorawan.v3.Message.m_hdr:type_name -> ttn.lorawan.v3.MHDR + 24, // 1: ttn.lorawan.v3.Message.mac_payload:type_name -> ttn.lorawan.v3.MACPayload + 27, // 2: ttn.lorawan.v3.Message.join_request_payload:type_name -> ttn.lorawan.v3.JoinRequestPayload + 29, // 3: ttn.lorawan.v3.Message.join_accept_payload:type_name -> ttn.lorawan.v3.JoinAcceptPayload + 28, // 4: ttn.lorawan.v3.Message.rejoin_request_payload:type_name -> ttn.lorawan.v3.RejoinRequestPayload + 0, // 5: ttn.lorawan.v3.MHDR.m_type:type_name -> ttn.lorawan.v3.MType + 1, // 6: ttn.lorawan.v3.MHDR.major:type_name -> ttn.lorawan.v3.Major + 25, // 7: ttn.lorawan.v3.MACPayload.f_hdr:type_name -> ttn.lorawan.v3.FHDR + 85, // 8: ttn.lorawan.v3.MACPayload.decoded_payload:type_name -> google.protobuf.Struct + 26, // 9: ttn.lorawan.v3.FHDR.f_ctrl:type_name -> ttn.lorawan.v3.FCtrl + 7, // 10: ttn.lorawan.v3.RejoinRequestPayload.rejoin_type:type_name -> ttn.lorawan.v3.RejoinRequestType + 30, // 11: ttn.lorawan.v3.JoinAcceptPayload.dl_settings:type_name -> ttn.lorawan.v3.DLSettings + 20, // 12: ttn.lorawan.v3.JoinAcceptPayload.rx_delay:type_name -> ttn.lorawan.v3.RxDelay + 31, // 13: ttn.lorawan.v3.JoinAcceptPayload.cf_list:type_name -> ttn.lorawan.v3.CFList + 5, // 14: ttn.lorawan.v3.DLSettings.rx1_dr_offset:type_name -> ttn.lorawan.v3.DataRateOffset + 4, // 15: ttn.lorawan.v3.DLSettings.rx2_dr:type_name -> ttn.lorawan.v3.DataRateIndex + 8, // 16: ttn.lorawan.v3.CFList.type:type_name -> ttn.lorawan.v3.CFListType + 32, // 17: ttn.lorawan.v3.DataRate.lora:type_name -> ttn.lorawan.v3.LoRaDataRate + 33, // 18: ttn.lorawan.v3.DataRate.fsk:type_name -> ttn.lorawan.v3.FSKDataRate + 34, // 19: ttn.lorawan.v3.DataRate.lrfhss:type_name -> ttn.lorawan.v3.LRFHSSDataRate + 35, // 20: ttn.lorawan.v3.TxSettings.data_rate:type_name -> ttn.lorawan.v3.DataRate + 86, // 21: ttn.lorawan.v3.TxSettings.time:type_name -> google.protobuf.Timestamp + 54, // 22: ttn.lorawan.v3.TxSettings.downlink:type_name -> ttn.lorawan.v3.TxSettings.Downlink + 87, // 23: ttn.lorawan.v3.GatewayAntennaIdentifiers.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 87, // 24: ttn.lorawan.v3.ClassBCGatewayIdentifiers.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 37, // 25: ttn.lorawan.v3.UplinkToken.ids:type_name -> ttn.lorawan.v3.GatewayAntennaIdentifiers + 86, // 26: ttn.lorawan.v3.UplinkToken.server_time:type_name -> google.protobuf.Timestamp + 86, // 27: ttn.lorawan.v3.UplinkToken.gateway_time:type_name -> google.protobuf.Timestamp + 37, // 28: ttn.lorawan.v3.DownlinkPath.fixed:type_name -> ttn.lorawan.v3.GatewayAntennaIdentifiers + 9, // 29: ttn.lorawan.v3.TxRequest.class:type_name -> ttn.lorawan.v3.Class + 40, // 30: ttn.lorawan.v3.TxRequest.downlink_paths:type_name -> ttn.lorawan.v3.DownlinkPath + 20, // 31: ttn.lorawan.v3.TxRequest.rx1_delay:type_name -> ttn.lorawan.v3.RxDelay + 35, // 32: ttn.lorawan.v3.TxRequest.rx1_data_rate:type_name -> ttn.lorawan.v3.DataRate + 35, // 33: ttn.lorawan.v3.TxRequest.rx2_data_rate:type_name -> ttn.lorawan.v3.DataRate + 10, // 34: ttn.lorawan.v3.TxRequest.priority:type_name -> ttn.lorawan.v3.TxSchedulePriority + 86, // 35: ttn.lorawan.v3.TxRequest.absolute_time:type_name -> google.protobuf.Timestamp + 85, // 36: ttn.lorawan.v3.TxRequest.advanced:type_name -> google.protobuf.Struct + 11, // 37: ttn.lorawan.v3.MACCommand.cid:type_name -> ttn.lorawan.v3.MACCommandIdentifier + 55, // 38: ttn.lorawan.v3.MACCommand.reset_ind:type_name -> ttn.lorawan.v3.MACCommand.ResetInd + 56, // 39: ttn.lorawan.v3.MACCommand.reset_conf:type_name -> ttn.lorawan.v3.MACCommand.ResetConf + 57, // 40: ttn.lorawan.v3.MACCommand.link_check_ans:type_name -> ttn.lorawan.v3.MACCommand.LinkCheckAns + 58, // 41: ttn.lorawan.v3.MACCommand.link_adr_req:type_name -> ttn.lorawan.v3.MACCommand.LinkADRReq + 59, // 42: ttn.lorawan.v3.MACCommand.link_adr_ans:type_name -> ttn.lorawan.v3.MACCommand.LinkADRAns + 60, // 43: ttn.lorawan.v3.MACCommand.duty_cycle_req:type_name -> ttn.lorawan.v3.MACCommand.DutyCycleReq + 61, // 44: ttn.lorawan.v3.MACCommand.rx_param_setup_req:type_name -> ttn.lorawan.v3.MACCommand.RxParamSetupReq + 62, // 45: ttn.lorawan.v3.MACCommand.rx_param_setup_ans:type_name -> ttn.lorawan.v3.MACCommand.RxParamSetupAns + 63, // 46: ttn.lorawan.v3.MACCommand.dev_status_ans:type_name -> ttn.lorawan.v3.MACCommand.DevStatusAns + 64, // 47: ttn.lorawan.v3.MACCommand.new_channel_req:type_name -> ttn.lorawan.v3.MACCommand.NewChannelReq + 65, // 48: ttn.lorawan.v3.MACCommand.new_channel_ans:type_name -> ttn.lorawan.v3.MACCommand.NewChannelAns + 66, // 49: ttn.lorawan.v3.MACCommand.dl_channel_req:type_name -> ttn.lorawan.v3.MACCommand.DLChannelReq + 67, // 50: ttn.lorawan.v3.MACCommand.dl_channel_ans:type_name -> ttn.lorawan.v3.MACCommand.DLChannelAns + 68, // 51: ttn.lorawan.v3.MACCommand.rx_timing_setup_req:type_name -> ttn.lorawan.v3.MACCommand.RxTimingSetupReq + 69, // 52: ttn.lorawan.v3.MACCommand.tx_param_setup_req:type_name -> ttn.lorawan.v3.MACCommand.TxParamSetupReq + 70, // 53: ttn.lorawan.v3.MACCommand.rekey_ind:type_name -> ttn.lorawan.v3.MACCommand.RekeyInd + 71, // 54: ttn.lorawan.v3.MACCommand.rekey_conf:type_name -> ttn.lorawan.v3.MACCommand.RekeyConf + 72, // 55: ttn.lorawan.v3.MACCommand.adr_param_setup_req:type_name -> ttn.lorawan.v3.MACCommand.ADRParamSetupReq + 73, // 56: ttn.lorawan.v3.MACCommand.device_time_ans:type_name -> ttn.lorawan.v3.MACCommand.DeviceTimeAns + 74, // 57: ttn.lorawan.v3.MACCommand.force_rejoin_req:type_name -> ttn.lorawan.v3.MACCommand.ForceRejoinReq + 75, // 58: ttn.lorawan.v3.MACCommand.rejoin_param_setup_req:type_name -> ttn.lorawan.v3.MACCommand.RejoinParamSetupReq + 76, // 59: ttn.lorawan.v3.MACCommand.rejoin_param_setup_ans:type_name -> ttn.lorawan.v3.MACCommand.RejoinParamSetupAns + 77, // 60: ttn.lorawan.v3.MACCommand.ping_slot_info_req:type_name -> ttn.lorawan.v3.MACCommand.PingSlotInfoReq + 78, // 61: ttn.lorawan.v3.MACCommand.ping_slot_channel_req:type_name -> ttn.lorawan.v3.MACCommand.PingSlotChannelReq + 79, // 62: ttn.lorawan.v3.MACCommand.ping_slot_channel_ans:type_name -> ttn.lorawan.v3.MACCommand.PingSlotChannelAns + 80, // 63: ttn.lorawan.v3.MACCommand.beacon_timing_ans:type_name -> ttn.lorawan.v3.MACCommand.BeaconTimingAns + 81, // 64: ttn.lorawan.v3.MACCommand.beacon_freq_req:type_name -> ttn.lorawan.v3.MACCommand.BeaconFreqReq + 82, // 65: ttn.lorawan.v3.MACCommand.beacon_freq_ans:type_name -> ttn.lorawan.v3.MACCommand.BeaconFreqAns + 83, // 66: ttn.lorawan.v3.MACCommand.device_mode_ind:type_name -> ttn.lorawan.v3.MACCommand.DeviceModeInd + 84, // 67: ttn.lorawan.v3.MACCommand.device_mode_conf:type_name -> ttn.lorawan.v3.MACCommand.DeviceModeConf + 42, // 68: ttn.lorawan.v3.MACCommands.commands:type_name -> ttn.lorawan.v3.MACCommand + 5, // 69: ttn.lorawan.v3.DataRateOffsetValue.value:type_name -> ttn.lorawan.v3.DataRateOffset + 4, // 70: ttn.lorawan.v3.DataRateIndexValue.value:type_name -> ttn.lorawan.v3.DataRateIndex + 13, // 71: ttn.lorawan.v3.PingSlotPeriodValue.value:type_name -> ttn.lorawan.v3.PingSlotPeriod + 12, // 72: ttn.lorawan.v3.AggregatedDutyCycleValue.value:type_name -> ttn.lorawan.v3.AggregatedDutyCycle + 20, // 73: ttn.lorawan.v3.RxDelayValue.value:type_name -> ttn.lorawan.v3.RxDelay + 18, // 74: ttn.lorawan.v3.ADRAckLimitExponentValue.value:type_name -> ttn.lorawan.v3.ADRAckLimitExponent + 19, // 75: ttn.lorawan.v3.ADRAckDelayExponentValue.value:type_name -> ttn.lorawan.v3.ADRAckDelayExponent + 17, // 76: ttn.lorawan.v3.DeviceEIRPValue.value:type_name -> ttn.lorawan.v3.DeviceEIRP + 21, // 77: ttn.lorawan.v3.MACCommand.ResetInd.minor_version:type_name -> ttn.lorawan.v3.Minor + 21, // 78: ttn.lorawan.v3.MACCommand.ResetConf.minor_version:type_name -> ttn.lorawan.v3.Minor + 4, // 79: ttn.lorawan.v3.MACCommand.LinkADRReq.data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 12, // 80: ttn.lorawan.v3.MACCommand.DutyCycleReq.max_duty_cycle:type_name -> ttn.lorawan.v3.AggregatedDutyCycle + 4, // 81: ttn.lorawan.v3.MACCommand.RxParamSetupReq.rx2_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 5, // 82: ttn.lorawan.v3.MACCommand.RxParamSetupReq.rx1_data_rate_offset:type_name -> ttn.lorawan.v3.DataRateOffset + 4, // 83: ttn.lorawan.v3.MACCommand.NewChannelReq.min_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 4, // 84: ttn.lorawan.v3.MACCommand.NewChannelReq.max_data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 20, // 85: ttn.lorawan.v3.MACCommand.RxTimingSetupReq.delay:type_name -> ttn.lorawan.v3.RxDelay + 17, // 86: ttn.lorawan.v3.MACCommand.TxParamSetupReq.max_eirp_index:type_name -> ttn.lorawan.v3.DeviceEIRP + 21, // 87: ttn.lorawan.v3.MACCommand.RekeyInd.minor_version:type_name -> ttn.lorawan.v3.Minor + 21, // 88: ttn.lorawan.v3.MACCommand.RekeyConf.minor_version:type_name -> ttn.lorawan.v3.Minor + 18, // 89: ttn.lorawan.v3.MACCommand.ADRParamSetupReq.adr_ack_limit_exponent:type_name -> ttn.lorawan.v3.ADRAckLimitExponent + 19, // 90: ttn.lorawan.v3.MACCommand.ADRParamSetupReq.adr_ack_delay_exponent:type_name -> ttn.lorawan.v3.ADRAckDelayExponent + 86, // 91: ttn.lorawan.v3.MACCommand.DeviceTimeAns.time:type_name -> google.protobuf.Timestamp + 7, // 92: ttn.lorawan.v3.MACCommand.ForceRejoinReq.rejoin_type:type_name -> ttn.lorawan.v3.RejoinRequestType + 4, // 93: ttn.lorawan.v3.MACCommand.ForceRejoinReq.data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 16, // 94: ttn.lorawan.v3.MACCommand.ForceRejoinReq.period_exponent:type_name -> ttn.lorawan.v3.RejoinPeriodExponent + 14, // 95: ttn.lorawan.v3.MACCommand.RejoinParamSetupReq.max_count_exponent:type_name -> ttn.lorawan.v3.RejoinCountExponent + 15, // 96: ttn.lorawan.v3.MACCommand.RejoinParamSetupReq.max_time_exponent:type_name -> ttn.lorawan.v3.RejoinTimeExponent + 13, // 97: ttn.lorawan.v3.MACCommand.PingSlotInfoReq.period:type_name -> ttn.lorawan.v3.PingSlotPeriod + 4, // 98: ttn.lorawan.v3.MACCommand.PingSlotChannelReq.data_rate_index:type_name -> ttn.lorawan.v3.DataRateIndex + 9, // 99: ttn.lorawan.v3.MACCommand.DeviceModeInd.class:type_name -> ttn.lorawan.v3.Class + 9, // 100: ttn.lorawan.v3.MACCommand.DeviceModeConf.class:type_name -> ttn.lorawan.v3.Class + 101, // [101:101] is the sub-list for method output_type + 101, // [101:101] is the sub-list for method input_type + 101, // [101:101] is the sub-list for extension type_name + 101, // [101:101] is the sub-list for extension extendee + 0, // [0:101] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_lorawan_proto_init() } +func file_lorawan_stack_api_lorawan_proto_init() { + if File_lorawan_stack_api_lorawan_proto != nil { + return + } + file_lorawan_stack_api_identifiers_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_lorawan_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MHDR); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACPayload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FHDR); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FCtrl); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*JoinRequestPayload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RejoinRequestPayload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*JoinAcceptPayload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DLSettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CFList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LoRaDataRate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FSKDataRate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LRFHSSDataRate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DataRate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TxSettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayAntennaIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClassBCGatewayIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UplinkToken); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DownlinkPath); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TxRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommands); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FrequencyValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ZeroableFrequencyValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DataRateOffsetValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DataRateIndexValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PingSlotPeriodValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AggregatedDutyCycleValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RxDelayValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ADRAckLimitExponentValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ADRAckDelayExponentValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceEIRPValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TxSettings_Downlink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_ResetInd); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_ResetConf); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_LinkCheckAns); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_LinkADRReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_LinkADRAns); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_DutyCycleReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_RxParamSetupReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_RxParamSetupAns); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_DevStatusAns); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_NewChannelReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_NewChannelAns); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_DLChannelReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_DLChannelAns); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_RxTimingSetupReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_TxParamSetupReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_RekeyInd); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_RekeyConf); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_ADRParamSetupReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_DeviceTimeAns); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_ForceRejoinReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_RejoinParamSetupReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_RejoinParamSetupAns); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_PingSlotInfoReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_PingSlotChannelReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_PingSlotChannelAns); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_BeaconTimingAns); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_BeaconFreqReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_BeaconFreqAns); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_DeviceModeInd); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACCommand_DeviceModeConf); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_lorawan_stack_api_lorawan_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*Message_MacPayload)(nil), + (*Message_JoinRequestPayload)(nil), + (*Message_JoinAcceptPayload)(nil), + (*Message_RejoinRequestPayload)(nil), + } + file_lorawan_stack_api_lorawan_proto_msgTypes[13].OneofWrappers = []interface{}{ + (*DataRate_Lora)(nil), + (*DataRate_Fsk)(nil), + (*DataRate_Lrfhss)(nil), + } + file_lorawan_stack_api_lorawan_proto_msgTypes[18].OneofWrappers = []interface{}{ + (*DownlinkPath_UplinkToken)(nil), + (*DownlinkPath_Fixed)(nil), + } + file_lorawan_stack_api_lorawan_proto_msgTypes[20].OneofWrappers = []interface{}{ + (*MACCommand_RawPayload)(nil), + (*MACCommand_ResetInd_)(nil), + (*MACCommand_ResetConf_)(nil), + (*MACCommand_LinkCheckAns_)(nil), + (*MACCommand_LinkAdrReq)(nil), + (*MACCommand_LinkAdrAns)(nil), + (*MACCommand_DutyCycleReq_)(nil), + (*MACCommand_RxParamSetupReq_)(nil), + (*MACCommand_RxParamSetupAns_)(nil), + (*MACCommand_DevStatusAns_)(nil), + (*MACCommand_NewChannelReq_)(nil), + (*MACCommand_NewChannelAns_)(nil), + (*MACCommand_DlChannelReq)(nil), + (*MACCommand_DlChannelAns)(nil), + (*MACCommand_RxTimingSetupReq_)(nil), + (*MACCommand_TxParamSetupReq_)(nil), + (*MACCommand_RekeyInd_)(nil), + (*MACCommand_RekeyConf_)(nil), + (*MACCommand_AdrParamSetupReq)(nil), + (*MACCommand_DeviceTimeAns_)(nil), + (*MACCommand_ForceRejoinReq_)(nil), + (*MACCommand_RejoinParamSetupReq_)(nil), + (*MACCommand_RejoinParamSetupAns_)(nil), + (*MACCommand_PingSlotInfoReq_)(nil), + (*MACCommand_PingSlotChannelReq_)(nil), + (*MACCommand_PingSlotChannelAns_)(nil), + (*MACCommand_BeaconTimingAns_)(nil), + (*MACCommand_BeaconFreqReq_)(nil), + (*MACCommand_BeaconFreqAns_)(nil), + (*MACCommand_DeviceModeInd_)(nil), + (*MACCommand_DeviceModeConf_)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_lorawan_proto_rawDesc, + NumEnums: 22, + NumMessages: 63, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_lorawan_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_lorawan_proto_depIdxs, + EnumInfos: file_lorawan_stack_api_lorawan_proto_enumTypes, + MessageInfos: file_lorawan_stack_api_lorawan_proto_msgTypes, + }.Build() + File_lorawan_stack_api_lorawan_proto = out.File + file_lorawan_stack_api_lorawan_proto_rawDesc = nil + file_lorawan_stack_api_lorawan_proto_goTypes = nil + file_lorawan_stack_api_lorawan_proto_depIdxs = nil } diff --git a/pkg/ttnpb/lorawan.pb.setters.fm.go b/pkg/ttnpb/lorawan.pb.setters.fm.go index c886804b1b..cfba782da7 100644 --- a/pkg/ttnpb/lorawan.pb.setters.fm.go +++ b/pkg/ttnpb/lorawan.pb.setters.fm.go @@ -224,8 +224,7 @@ func (dst *MHDR) SetFields(src *MHDR, paths ...string) error { if src != nil { dst.MType = src.MType } else { - var zero MType - dst.MType = zero + dst.MType = 0 } case "major": if len(subs) > 0 { @@ -234,8 +233,7 @@ func (dst *MHDR) SetFields(src *MHDR, paths ...string) error { if src != nil { dst.Major = src.Major } else { - var zero Major - dst.Major = zero + dst.Major = 0 } default: @@ -492,8 +490,7 @@ func (dst *RejoinRequestPayload) SetFields(src *RejoinRequestPayload, paths ...s if src != nil { dst.RejoinType = src.RejoinType } else { - var zero RejoinRequestType - dst.RejoinType = zero + dst.RejoinType = 0 } case "net_id": if len(subs) > 0 { @@ -611,8 +608,7 @@ func (dst *JoinAcceptPayload) SetFields(src *JoinAcceptPayload, paths ...string) if src != nil { dst.RxDelay = src.RxDelay } else { - var zero RxDelay - dst.RxDelay = zero + dst.RxDelay = 0 } case "cf_list": if len(subs) > 0 { @@ -657,8 +653,7 @@ func (dst *DLSettings) SetFields(src *DLSettings, paths ...string) error { if src != nil { dst.Rx1DrOffset = src.Rx1DrOffset } else { - var zero DataRateOffset - dst.Rx1DrOffset = zero + dst.Rx1DrOffset = 0 } case "rx2_dr": if len(subs) > 0 { @@ -667,8 +662,7 @@ func (dst *DLSettings) SetFields(src *DLSettings, paths ...string) error { if src != nil { dst.Rx2Dr = src.Rx2Dr } else { - var zero DataRateIndex - dst.Rx2Dr = zero + dst.Rx2Dr = 0 } case "opt_neg": if len(subs) > 0 { @@ -698,8 +692,7 @@ func (dst *CFList) SetFields(src *CFList, paths ...string) error { if src != nil { dst.Type = src.Type } else { - var zero CFListType - dst.Type = zero + dst.Type = 0 } case "freq": if len(subs) > 0 { @@ -1354,8 +1347,7 @@ func (dst *TxRequest) SetFields(src *TxRequest, paths ...string) error { if src != nil { dst.Class = src.Class } else { - var zero Class - dst.Class = zero + dst.Class = 0 } case "downlink_paths": if len(subs) > 0 { @@ -1373,8 +1365,7 @@ func (dst *TxRequest) SetFields(src *TxRequest, paths ...string) error { if src != nil { dst.Rx1Delay = src.Rx1Delay } else { - var zero RxDelay - dst.Rx1Delay = zero + dst.Rx1Delay = 0 } case "rx1_data_rate": if len(subs) > 0 { @@ -1453,8 +1444,7 @@ func (dst *TxRequest) SetFields(src *TxRequest, paths ...string) error { if src != nil { dst.Priority = src.Priority } else { - var zero TxSchedulePriority - dst.Priority = zero + dst.Priority = 0 } case "absolute_time": if len(subs) > 0 { @@ -1502,8 +1492,7 @@ func (dst *MACCommand) SetFields(src *MACCommand, paths ...string) error { if src != nil { dst.Cid = src.Cid } else { - var zero MACCommandIdentifier - dst.Cid = zero + dst.Cid = 0 } case "payload": @@ -2706,8 +2695,7 @@ func (dst *DataRateOffsetValue) SetFields(src *DataRateOffsetValue, paths ...str if src != nil { dst.Value = src.Value } else { - var zero DataRateOffset - dst.Value = zero + dst.Value = 0 } default: @@ -2727,8 +2715,7 @@ func (dst *DataRateIndexValue) SetFields(src *DataRateIndexValue, paths ...strin if src != nil { dst.Value = src.Value } else { - var zero DataRateIndex - dst.Value = zero + dst.Value = 0 } default: @@ -2748,8 +2735,7 @@ func (dst *PingSlotPeriodValue) SetFields(src *PingSlotPeriodValue, paths ...str if src != nil { dst.Value = src.Value } else { - var zero PingSlotPeriod - dst.Value = zero + dst.Value = 0 } default: @@ -2769,8 +2755,7 @@ func (dst *AggregatedDutyCycleValue) SetFields(src *AggregatedDutyCycleValue, pa if src != nil { dst.Value = src.Value } else { - var zero AggregatedDutyCycle - dst.Value = zero + dst.Value = 0 } default: @@ -2790,8 +2775,7 @@ func (dst *RxDelayValue) SetFields(src *RxDelayValue, paths ...string) error { if src != nil { dst.Value = src.Value } else { - var zero RxDelay - dst.Value = zero + dst.Value = 0 } default: @@ -2811,8 +2795,7 @@ func (dst *ADRAckLimitExponentValue) SetFields(src *ADRAckLimitExponentValue, pa if src != nil { dst.Value = src.Value } else { - var zero ADRAckLimitExponent - dst.Value = zero + dst.Value = 0 } default: @@ -2832,8 +2815,7 @@ func (dst *ADRAckDelayExponentValue) SetFields(src *ADRAckDelayExponentValue, pa if src != nil { dst.Value = src.Value } else { - var zero ADRAckDelayExponent - dst.Value = zero + dst.Value = 0 } default: @@ -2853,8 +2835,7 @@ func (dst *DeviceEIRPValue) SetFields(src *DeviceEIRPValue, paths ...string) err if src != nil { dst.Value = src.Value } else { - var zero DeviceEIRP - dst.Value = zero + dst.Value = 0 } default: @@ -2915,8 +2896,7 @@ func (dst *MACCommand_ResetInd) SetFields(src *MACCommand_ResetInd, paths ...str if src != nil { dst.MinorVersion = src.MinorVersion } else { - var zero Minor - dst.MinorVersion = zero + dst.MinorVersion = 0 } default: @@ -2936,8 +2916,7 @@ func (dst *MACCommand_ResetConf) SetFields(src *MACCommand_ResetConf, paths ...s if src != nil { dst.MinorVersion = src.MinorVersion } else { - var zero Minor - dst.MinorVersion = zero + dst.MinorVersion = 0 } default: @@ -2988,8 +2967,7 @@ func (dst *MACCommand_LinkADRReq) SetFields(src *MACCommand_LinkADRReq, paths .. if src != nil { dst.DataRateIndex = src.DataRateIndex } else { - var zero DataRateIndex - dst.DataRateIndex = zero + dst.DataRateIndex = 0 } case "tx_power_index": if len(subs) > 0 { @@ -3089,8 +3067,7 @@ func (dst *MACCommand_DutyCycleReq) SetFields(src *MACCommand_DutyCycleReq, path if src != nil { dst.MaxDutyCycle = src.MaxDutyCycle } else { - var zero AggregatedDutyCycle - dst.MaxDutyCycle = zero + dst.MaxDutyCycle = 0 } default: @@ -3110,8 +3087,7 @@ func (dst *MACCommand_RxParamSetupReq) SetFields(src *MACCommand_RxParamSetupReq if src != nil { dst.Rx2DataRateIndex = src.Rx2DataRateIndex } else { - var zero DataRateIndex - dst.Rx2DataRateIndex = zero + dst.Rx2DataRateIndex = 0 } case "rx1_data_rate_offset": if len(subs) > 0 { @@ -3120,8 +3096,7 @@ func (dst *MACCommand_RxParamSetupReq) SetFields(src *MACCommand_RxParamSetupReq if src != nil { dst.Rx1DataRateOffset = src.Rx1DataRateOffset } else { - var zero DataRateOffset - dst.Rx1DataRateOffset = zero + dst.Rx1DataRateOffset = 0 } case "rx2_frequency": if len(subs) > 0 { @@ -3243,8 +3218,7 @@ func (dst *MACCommand_NewChannelReq) SetFields(src *MACCommand_NewChannelReq, pa if src != nil { dst.MinDataRateIndex = src.MinDataRateIndex } else { - var zero DataRateIndex - dst.MinDataRateIndex = zero + dst.MinDataRateIndex = 0 } case "max_data_rate_index": if len(subs) > 0 { @@ -3253,8 +3227,7 @@ func (dst *MACCommand_NewChannelReq) SetFields(src *MACCommand_NewChannelReq, pa if src != nil { dst.MaxDataRateIndex = src.MaxDataRateIndex } else { - var zero DataRateIndex - dst.MaxDataRateIndex = zero + dst.MaxDataRateIndex = 0 } default: @@ -3367,8 +3340,7 @@ func (dst *MACCommand_RxTimingSetupReq) SetFields(src *MACCommand_RxTimingSetupR if src != nil { dst.Delay = src.Delay } else { - var zero RxDelay - dst.Delay = zero + dst.Delay = 0 } default: @@ -3388,8 +3360,7 @@ func (dst *MACCommand_TxParamSetupReq) SetFields(src *MACCommand_TxParamSetupReq if src != nil { dst.MaxEirpIndex = src.MaxEirpIndex } else { - var zero DeviceEIRP - dst.MaxEirpIndex = zero + dst.MaxEirpIndex = 0 } case "uplink_dwell_time": if len(subs) > 0 { @@ -3429,8 +3400,7 @@ func (dst *MACCommand_RekeyInd) SetFields(src *MACCommand_RekeyInd, paths ...str if src != nil { dst.MinorVersion = src.MinorVersion } else { - var zero Minor - dst.MinorVersion = zero + dst.MinorVersion = 0 } default: @@ -3450,8 +3420,7 @@ func (dst *MACCommand_RekeyConf) SetFields(src *MACCommand_RekeyConf, paths ...s if src != nil { dst.MinorVersion = src.MinorVersion } else { - var zero Minor - dst.MinorVersion = zero + dst.MinorVersion = 0 } default: @@ -3471,8 +3440,7 @@ func (dst *MACCommand_ADRParamSetupReq) SetFields(src *MACCommand_ADRParamSetupR if src != nil { dst.AdrAckLimitExponent = src.AdrAckLimitExponent } else { - var zero ADRAckLimitExponent - dst.AdrAckLimitExponent = zero + dst.AdrAckLimitExponent = 0 } case "adr_ack_delay_exponent": if len(subs) > 0 { @@ -3481,8 +3449,7 @@ func (dst *MACCommand_ADRParamSetupReq) SetFields(src *MACCommand_ADRParamSetupR if src != nil { dst.AdrAckDelayExponent = src.AdrAckDelayExponent } else { - var zero ADRAckDelayExponent - dst.AdrAckDelayExponent = zero + dst.AdrAckDelayExponent = 0 } default: @@ -3522,8 +3489,7 @@ func (dst *MACCommand_ForceRejoinReq) SetFields(src *MACCommand_ForceRejoinReq, if src != nil { dst.RejoinType = src.RejoinType } else { - var zero RejoinRequestType - dst.RejoinType = zero + dst.RejoinType = 0 } case "data_rate_index": if len(subs) > 0 { @@ -3532,8 +3498,7 @@ func (dst *MACCommand_ForceRejoinReq) SetFields(src *MACCommand_ForceRejoinReq, if src != nil { dst.DataRateIndex = src.DataRateIndex } else { - var zero DataRateIndex - dst.DataRateIndex = zero + dst.DataRateIndex = 0 } case "max_retries": if len(subs) > 0 { @@ -3552,8 +3517,7 @@ func (dst *MACCommand_ForceRejoinReq) SetFields(src *MACCommand_ForceRejoinReq, if src != nil { dst.PeriodExponent = src.PeriodExponent } else { - var zero RejoinPeriodExponent - dst.PeriodExponent = zero + dst.PeriodExponent = 0 } default: @@ -3573,8 +3537,7 @@ func (dst *MACCommand_RejoinParamSetupReq) SetFields(src *MACCommand_RejoinParam if src != nil { dst.MaxCountExponent = src.MaxCountExponent } else { - var zero RejoinCountExponent - dst.MaxCountExponent = zero + dst.MaxCountExponent = 0 } case "max_time_exponent": if len(subs) > 0 { @@ -3583,8 +3546,7 @@ func (dst *MACCommand_RejoinParamSetupReq) SetFields(src *MACCommand_RejoinParam if src != nil { dst.MaxTimeExponent = src.MaxTimeExponent } else { - var zero RejoinTimeExponent - dst.MaxTimeExponent = zero + dst.MaxTimeExponent = 0 } default: @@ -3625,8 +3587,7 @@ func (dst *MACCommand_PingSlotInfoReq) SetFields(src *MACCommand_PingSlotInfoReq if src != nil { dst.Period = src.Period } else { - var zero PingSlotPeriod - dst.Period = zero + dst.Period = 0 } default: @@ -3656,8 +3617,7 @@ func (dst *MACCommand_PingSlotChannelReq) SetFields(src *MACCommand_PingSlotChan if src != nil { dst.DataRateIndex = src.DataRateIndex } else { - var zero DataRateIndex - dst.DataRateIndex = zero + dst.DataRateIndex = 0 } default: @@ -3781,8 +3741,7 @@ func (dst *MACCommand_DeviceModeInd) SetFields(src *MACCommand_DeviceModeInd, pa if src != nil { dst.Class = src.Class } else { - var zero Class - dst.Class = zero + dst.Class = 0 } default: @@ -3802,8 +3761,7 @@ func (dst *MACCommand_DeviceModeConf) SetFields(src *MACCommand_DeviceModeConf, if src != nil { dst.Class = src.Class } else { - var zero Class - dst.Class = zero + dst.Class = 0 } default: diff --git a/pkg/ttnpb/lorawan.pb.validate.go b/pkg/ttnpb/lorawan.pb.validate.go index 459d162efc..c080cf53d3 100644 --- a/pkg/ttnpb/lorawan.pb.validate.go +++ b/pkg/ttnpb/lorawan.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _lorawan_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on Message with the rules defined in // the proto definition for this message. If any rules are violated, an error // is returned. diff --git a/pkg/ttnpb/lorawan_flags.pb.go b/pkg/ttnpb/lorawan_flags.pb.go index 88e1744004..8d44160cbc 100644 --- a/pkg/ttnpb/lorawan_flags.pb.go +++ b/pkg/ttnpb/lorawan_flags.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/lorawan.proto package ttnpb diff --git a/pkg/ttnpb/lorawan_json.pb.go b/pkg/ttnpb/lorawan_json.pb.go index 558f7e7340..81a7068ca9 100644 --- a/pkg/ttnpb/lorawan_json.pb.go +++ b/pkg/ttnpb/lorawan_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/lorawan.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" types "go.thethings.network/lorawan-stack/v3/pkg/types" strconv "strconv" @@ -1379,7 +1379,7 @@ func (x *MACPayload) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.DecodedPayload == nil { s.WriteNil() } else { - gogo.MarshalStruct(s, x.DecodedPayload) + golang.MarshalStruct(s, x.DecodedPayload) } } if x.FullFCnt != 0 || s.HasField("full_f_cnt") { @@ -1423,7 +1423,7 @@ func (x *MACPayload) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.DecodedPayload = nil return } - v := gogo.UnmarshalStruct(s) + v := golang.UnmarshalStruct(s) if s.Err() != nil { return } @@ -1457,7 +1457,7 @@ func (x *FHDR) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("f_ctrl") // NOTE: FCtrl does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.FCtrl) + golang.MarshalMessage(s, x.FCtrl) } if x.FCnt != 0 || s.HasField("f_cnt") { s.WriteMoreIf(&wroteField) @@ -1497,7 +1497,7 @@ func (x *FHDR) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: FCtrl does not seem to implement UnmarshalProtoJSON. var v FCtrl - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.FCtrl = &v case "f_cnt", "fCnt": s.AddField("f_cnt") @@ -2008,7 +2008,7 @@ func (x *UplinkToken) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ServerTime == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ServerTime) + golang.MarshalTimestamp(s, x.ServerTime) } } if x.ConcentratorTime != 0 || s.HasField("concentrator_time") { @@ -2022,7 +2022,7 @@ func (x *UplinkToken) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.GatewayTime == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.GatewayTime) + golang.MarshalTimestamp(s, x.GatewayTime) } } s.WriteObjectEnd() @@ -2058,7 +2058,7 @@ func (x *UplinkToken) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ServerTime = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -2072,7 +2072,7 @@ func (x *UplinkToken) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.GatewayTime = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -2179,7 +2179,7 @@ func (x *TxRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("rx1_data_rate") // NOTE: DataRate does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Rx1DataRate) + golang.MarshalMessage(s, x.Rx1DataRate) } if x.Rx1Frequency != 0 || s.HasField("rx1_frequency") { s.WriteMoreIf(&wroteField) @@ -2190,7 +2190,7 @@ func (x *TxRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("rx2_data_rate") // NOTE: DataRate does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Rx2DataRate) + golang.MarshalMessage(s, x.Rx2DataRate) } if x.Rx2Frequency != 0 || s.HasField("rx2_frequency") { s.WriteMoreIf(&wroteField) @@ -2208,7 +2208,7 @@ func (x *TxRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.AbsoluteTime == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.AbsoluteTime) + golang.MarshalTimestamp(s, x.AbsoluteTime) } } if x.FrequencyPlanId != "" || s.HasField("frequency_plan_id") { @@ -2222,7 +2222,7 @@ func (x *TxRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.Advanced == nil { s.WriteNil() } else { - gogo.MarshalStruct(s, x.Advanced) + golang.MarshalStruct(s, x.Advanced) } } s.WriteObjectEnd() @@ -2274,7 +2274,7 @@ func (x *TxRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: DataRate does not seem to implement UnmarshalProtoJSON. var v DataRate - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Rx1DataRate = &v case "rx1_frequency", "rx1Frequency": s.AddField("rx1_frequency") @@ -2287,7 +2287,7 @@ func (x *TxRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: DataRate does not seem to implement UnmarshalProtoJSON. var v DataRate - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Rx2DataRate = &v case "rx2_frequency", "rx2Frequency": s.AddField("rx2_frequency") @@ -2301,7 +2301,7 @@ func (x *TxRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.AbsoluteTime = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -2315,7 +2315,7 @@ func (x *TxRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.Advanced = nil return } - v := gogo.UnmarshalStruct(s) + v := golang.UnmarshalStruct(s) if s.Err() != nil { return } @@ -3214,7 +3214,7 @@ func (x *MACCommand) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("link_check_ans") // NOTE: MACCommand_LinkCheckAns does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.LinkCheckAns) + golang.MarshalMessage(s, ov.LinkCheckAns) case *MACCommand_LinkAdrReq: s.WriteMoreIf(&wroteField) s.WriteObjectField("link_adr_req") @@ -3223,7 +3223,7 @@ func (x *MACCommand) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("link_adr_ans") // NOTE: MACCommand_LinkADRAns does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.LinkAdrAns) + golang.MarshalMessage(s, ov.LinkAdrAns) case *MACCommand_DutyCycleReq_: s.WriteMoreIf(&wroteField) s.WriteObjectField("duty_cycle_req") @@ -3236,12 +3236,12 @@ func (x *MACCommand) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("rx_param_setup_ans") // NOTE: MACCommand_RxParamSetupAns does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.RxParamSetupAns) + golang.MarshalMessage(s, ov.RxParamSetupAns) case *MACCommand_DevStatusAns_: s.WriteMoreIf(&wroteField) s.WriteObjectField("dev_status_ans") // NOTE: MACCommand_DevStatusAns does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.DevStatusAns) + golang.MarshalMessage(s, ov.DevStatusAns) case *MACCommand_NewChannelReq_: s.WriteMoreIf(&wroteField) s.WriteObjectField("new_channel_req") @@ -3250,17 +3250,17 @@ func (x *MACCommand) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("new_channel_ans") // NOTE: MACCommand_NewChannelAns does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.NewChannelAns) + golang.MarshalMessage(s, ov.NewChannelAns) case *MACCommand_DlChannelReq: s.WriteMoreIf(&wroteField) s.WriteObjectField("dl_channel_req") // NOTE: MACCommand_DLChannelReq does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.DlChannelReq) + golang.MarshalMessage(s, ov.DlChannelReq) case *MACCommand_DlChannelAns: s.WriteMoreIf(&wroteField) s.WriteObjectField("dl_channel_ans") // NOTE: MACCommand_DLChannelAns does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.DlChannelAns) + golang.MarshalMessage(s, ov.DlChannelAns) case *MACCommand_RxTimingSetupReq_: s.WriteMoreIf(&wroteField) s.WriteObjectField("rx_timing_setup_req") @@ -3285,7 +3285,7 @@ func (x *MACCommand) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("device_time_ans") // NOTE: MACCommand_DeviceTimeAns does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.DeviceTimeAns) + golang.MarshalMessage(s, ov.DeviceTimeAns) case *MACCommand_ForceRejoinReq_: s.WriteMoreIf(&wroteField) s.WriteObjectField("force_rejoin_req") @@ -3298,7 +3298,7 @@ func (x *MACCommand) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("rejoin_param_setup_ans") // NOTE: MACCommand_RejoinParamSetupAns does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.RejoinParamSetupAns) + golang.MarshalMessage(s, ov.RejoinParamSetupAns) case *MACCommand_PingSlotInfoReq_: s.WriteMoreIf(&wroteField) s.WriteObjectField("ping_slot_info_req") @@ -3311,22 +3311,22 @@ func (x *MACCommand) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("ping_slot_channel_ans") // NOTE: MACCommand_PingSlotChannelAns does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.PingSlotChannelAns) + golang.MarshalMessage(s, ov.PingSlotChannelAns) case *MACCommand_BeaconTimingAns_: s.WriteMoreIf(&wroteField) s.WriteObjectField("beacon_timing_ans") // NOTE: MACCommand_BeaconTimingAns does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.BeaconTimingAns) + golang.MarshalMessage(s, ov.BeaconTimingAns) case *MACCommand_BeaconFreqReq_: s.WriteMoreIf(&wroteField) s.WriteObjectField("beacon_freq_req") // NOTE: MACCommand_BeaconFreqReq does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.BeaconFreqReq) + golang.MarshalMessage(s, ov.BeaconFreqReq) case *MACCommand_BeaconFreqAns_: s.WriteMoreIf(&wroteField) s.WriteObjectField("beacon_freq_ans") // NOTE: MACCommand_BeaconFreqAns does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.BeaconFreqAns) + golang.MarshalMessage(s, ov.BeaconFreqAns) case *MACCommand_DeviceModeInd_: s.WriteMoreIf(&wroteField) s.WriteObjectField("device_mode_ind") @@ -3390,7 +3390,7 @@ func (x *MACCommand) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: MACCommand_LinkCheckAns does not seem to implement UnmarshalProtoJSON. var v MACCommand_LinkCheckAns - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.LinkCheckAns = &v case "link_adr_req", "linkAdrReq": ov := &MACCommand_LinkAdrReq{} @@ -3411,7 +3411,7 @@ func (x *MACCommand) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: MACCommand_LinkADRAns does not seem to implement UnmarshalProtoJSON. var v MACCommand_LinkADRAns - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.LinkAdrAns = &v case "duty_cycle_req", "dutyCycleReq": ov := &MACCommand_DutyCycleReq_{} @@ -3441,7 +3441,7 @@ func (x *MACCommand) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: MACCommand_RxParamSetupAns does not seem to implement UnmarshalProtoJSON. var v MACCommand_RxParamSetupAns - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.RxParamSetupAns = &v case "dev_status_ans", "devStatusAns": s.AddField("dev_status_ans") @@ -3453,7 +3453,7 @@ func (x *MACCommand) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: MACCommand_DevStatusAns does not seem to implement UnmarshalProtoJSON. var v MACCommand_DevStatusAns - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.DevStatusAns = &v case "new_channel_req", "newChannelReq": ov := &MACCommand_NewChannelReq_{} @@ -3474,7 +3474,7 @@ func (x *MACCommand) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: MACCommand_NewChannelAns does not seem to implement UnmarshalProtoJSON. var v MACCommand_NewChannelAns - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.NewChannelAns = &v case "dl_channel_req", "dlChannelReq": s.AddField("dl_channel_req") @@ -3486,7 +3486,7 @@ func (x *MACCommand) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: MACCommand_DLChannelReq does not seem to implement UnmarshalProtoJSON. var v MACCommand_DLChannelReq - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.DlChannelReq = &v case "dl_channel_ans", "dlChannelAns": s.AddField("dl_channel_ans") @@ -3498,7 +3498,7 @@ func (x *MACCommand) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: MACCommand_DLChannelAns does not seem to implement UnmarshalProtoJSON. var v MACCommand_DLChannelAns - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.DlChannelAns = &v case "rx_timing_setup_req", "rxTimingSetupReq": ov := &MACCommand_RxTimingSetupReq_{} @@ -3555,7 +3555,7 @@ func (x *MACCommand) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: MACCommand_DeviceTimeAns does not seem to implement UnmarshalProtoJSON. var v MACCommand_DeviceTimeAns - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.DeviceTimeAns = &v case "force_rejoin_req", "forceRejoinReq": ov := &MACCommand_ForceRejoinReq_{} @@ -3585,7 +3585,7 @@ func (x *MACCommand) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: MACCommand_RejoinParamSetupAns does not seem to implement UnmarshalProtoJSON. var v MACCommand_RejoinParamSetupAns - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.RejoinParamSetupAns = &v case "ping_slot_info_req", "pingSlotInfoReq": ov := &MACCommand_PingSlotInfoReq_{} @@ -3615,7 +3615,7 @@ func (x *MACCommand) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: MACCommand_PingSlotChannelAns does not seem to implement UnmarshalProtoJSON. var v MACCommand_PingSlotChannelAns - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.PingSlotChannelAns = &v case "beacon_timing_ans", "beaconTimingAns": s.AddField("beacon_timing_ans") @@ -3627,7 +3627,7 @@ func (x *MACCommand) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: MACCommand_BeaconTimingAns does not seem to implement UnmarshalProtoJSON. var v MACCommand_BeaconTimingAns - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.BeaconTimingAns = &v case "beacon_freq_req", "beaconFreqReq": s.AddField("beacon_freq_req") @@ -3639,7 +3639,7 @@ func (x *MACCommand) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: MACCommand_BeaconFreqReq does not seem to implement UnmarshalProtoJSON. var v MACCommand_BeaconFreqReq - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.BeaconFreqReq = &v case "beacon_freq_ans", "beaconFreqAns": s.AddField("beacon_freq_ans") @@ -3651,7 +3651,7 @@ func (x *MACCommand) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: MACCommand_BeaconFreqAns does not seem to implement UnmarshalProtoJSON. var v MACCommand_BeaconFreqAns - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.BeaconFreqAns = &v case "device_mode_ind", "deviceModeInd": ov := &MACCommand_DeviceModeInd_{} diff --git a/pkg/ttnpb/messages.pb.go b/pkg/ttnpb/messages.pb.go index fc1d04c719..93a61926e0 100644 --- a/pkg/ttnpb/messages.pb.go +++ b/pkg/ttnpb/messages.pb.go @@ -1,32 +1,46 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/messages.proto package ttnpb import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + structpb "google.golang.org/protobuf/types/known/structpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type PayloadFormatter int32 @@ -40,31 +54,52 @@ const ( // Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename. PayloadFormatter_FORMATTER_JAVASCRIPT PayloadFormatter = 3 // CayenneLPP payload formatter. - PayloadFormatter_FORMATTER_CAYENNELPP PayloadFormatter = 4 + PayloadFormatter_FORMATTER_CAYENNELPP PayloadFormatter = 4 // More payload formatters can be added. ) -var PayloadFormatter_name = map[int32]string{ - 0: "FORMATTER_NONE", - 1: "FORMATTER_REPOSITORY", - 2: "FORMATTER_GRPC_SERVICE", - 3: "FORMATTER_JAVASCRIPT", - 4: "FORMATTER_CAYENNELPP", -} +// Enum value maps for PayloadFormatter. +var ( + PayloadFormatter_name = map[int32]string{ + 0: "FORMATTER_NONE", + 1: "FORMATTER_REPOSITORY", + 2: "FORMATTER_GRPC_SERVICE", + 3: "FORMATTER_JAVASCRIPT", + 4: "FORMATTER_CAYENNELPP", + } + PayloadFormatter_value = map[string]int32{ + "FORMATTER_NONE": 0, + "FORMATTER_REPOSITORY": 1, + "FORMATTER_GRPC_SERVICE": 2, + "FORMATTER_JAVASCRIPT": 3, + "FORMATTER_CAYENNELPP": 4, + } +) -var PayloadFormatter_value = map[string]int32{ - "FORMATTER_NONE": 0, - "FORMATTER_REPOSITORY": 1, - "FORMATTER_GRPC_SERVICE": 2, - "FORMATTER_JAVASCRIPT": 3, - "FORMATTER_CAYENNELPP": 4, +func (x PayloadFormatter) Enum() *PayloadFormatter { + p := new(PayloadFormatter) + *p = x + return p } func (x PayloadFormatter) String() string { - return proto.EnumName(PayloadFormatter_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PayloadFormatter) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_messages_proto_enumTypes[0].Descriptor() } +func (PayloadFormatter) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_messages_proto_enumTypes[0] +} + +func (x PayloadFormatter) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PayloadFormatter.Descriptor instead. func (PayloadFormatter) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{0} + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{0} } type TxAcknowledgment_Result int32 @@ -81,408 +116,472 @@ const ( TxAcknowledgment_GPS_UNLOCKED TxAcknowledgment_Result = 8 ) -var TxAcknowledgment_Result_name = map[int32]string{ - 0: "SUCCESS", - 1: "UNKNOWN_ERROR", - 2: "TOO_LATE", - 3: "TOO_EARLY", - 4: "COLLISION_PACKET", - 5: "COLLISION_BEACON", - 6: "TX_FREQ", - 7: "TX_POWER", - 8: "GPS_UNLOCKED", -} - -var TxAcknowledgment_Result_value = map[string]int32{ - "SUCCESS": 0, - "UNKNOWN_ERROR": 1, - "TOO_LATE": 2, - "TOO_EARLY": 3, - "COLLISION_PACKET": 4, - "COLLISION_BEACON": 5, - "TX_FREQ": 6, - "TX_POWER": 7, - "GPS_UNLOCKED": 8, +// Enum value maps for TxAcknowledgment_Result. +var ( + TxAcknowledgment_Result_name = map[int32]string{ + 0: "SUCCESS", + 1: "UNKNOWN_ERROR", + 2: "TOO_LATE", + 3: "TOO_EARLY", + 4: "COLLISION_PACKET", + 5: "COLLISION_BEACON", + 6: "TX_FREQ", + 7: "TX_POWER", + 8: "GPS_UNLOCKED", + } + TxAcknowledgment_Result_value = map[string]int32{ + "SUCCESS": 0, + "UNKNOWN_ERROR": 1, + "TOO_LATE": 2, + "TOO_EARLY": 3, + "COLLISION_PACKET": 4, + "COLLISION_BEACON": 5, + "TX_FREQ": 6, + "TX_POWER": 7, + "GPS_UNLOCKED": 8, + } +) + +func (x TxAcknowledgment_Result) Enum() *TxAcknowledgment_Result { + p := new(TxAcknowledgment_Result) + *p = x + return p } func (x TxAcknowledgment_Result) String() string { - return proto.EnumName(TxAcknowledgment_Result_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TxAcknowledgment_Result) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_messages_proto_enumTypes[1].Descriptor() +} + +func (TxAcknowledgment_Result) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_messages_proto_enumTypes[1] +} + +func (x TxAcknowledgment_Result) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } +// Deprecated: Use TxAcknowledgment_Result.Descriptor instead. func (TxAcknowledgment_Result) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{2, 0} + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{2, 0} } // Uplink message from the end device to the network type UplinkMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + RawPayload []byte `protobuf:"bytes,1,opt,name=raw_payload,json=rawPayload,proto3" json:"raw_payload,omitempty"` Payload *Message `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` Settings *TxSettings `protobuf:"bytes,4,opt,name=settings,proto3" json:"settings,omitempty"` RxMetadata []*RxMetadata `protobuf:"bytes,5,rep,name=rx_metadata,json=rxMetadata,proto3" json:"rx_metadata,omitempty"` // Server time when a component received the message. // The Gateway Server and Network Server set this value to their local server time of reception. - ReceivedAt *types.Timestamp `protobuf:"bytes,6,opt,name=received_at,json=receivedAt,proto3" json:"received_at,omitempty"` - CorrelationIds []string `protobuf:"bytes,7,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` + ReceivedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=received_at,json=receivedAt,proto3" json:"received_at,omitempty"` + CorrelationIds []string `protobuf:"bytes,7,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` // Index of the device channel that received the message. // Set by Network Server. DeviceChannelIndex uint32 `protobuf:"varint,9,opt,name=device_channel_index,json=deviceChannelIndex,proto3" json:"device_channel_index,omitempty"` // Consumed airtime for the transmission of the uplink message. Calculated by Network Server using the RawPayload size and the transmission settings. - ConsumedAirtime *types.Duration `protobuf:"bytes,10,opt,name=consumed_airtime,json=consumedAirtime,proto3" json:"consumed_airtime,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ConsumedAirtime *durationpb.Duration `protobuf:"bytes,10,opt,name=consumed_airtime,json=consumedAirtime,proto3" json:"consumed_airtime,omitempty"` } -func (m *UplinkMessage) Reset() { *m = UplinkMessage{} } -func (m *UplinkMessage) String() string { return proto.CompactTextString(m) } -func (*UplinkMessage) ProtoMessage() {} -func (*UplinkMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{0} -} -func (m *UplinkMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UplinkMessage.Unmarshal(m, b) -} -func (m *UplinkMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UplinkMessage.Marshal(b, m, deterministic) -} -func (m *UplinkMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_UplinkMessage.Merge(m, src) +func (x *UplinkMessage) Reset() { + *x = UplinkMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UplinkMessage) XXX_Size() int { - return xxx_messageInfo_UplinkMessage.Size(m) + +func (x *UplinkMessage) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UplinkMessage) XXX_DiscardUnknown() { - xxx_messageInfo_UplinkMessage.DiscardUnknown(m) + +func (*UplinkMessage) ProtoMessage() {} + +func (x *UplinkMessage) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UplinkMessage proto.InternalMessageInfo +// Deprecated: Use UplinkMessage.ProtoReflect.Descriptor instead. +func (*UplinkMessage) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{0} +} -func (m *UplinkMessage) GetRawPayload() []byte { - if m != nil { - return m.RawPayload +func (x *UplinkMessage) GetRawPayload() []byte { + if x != nil { + return x.RawPayload } return nil } -func (m *UplinkMessage) GetPayload() *Message { - if m != nil { - return m.Payload +func (x *UplinkMessage) GetPayload() *Message { + if x != nil { + return x.Payload } return nil } -func (m *UplinkMessage) GetSettings() *TxSettings { - if m != nil { - return m.Settings +func (x *UplinkMessage) GetSettings() *TxSettings { + if x != nil { + return x.Settings } return nil } -func (m *UplinkMessage) GetRxMetadata() []*RxMetadata { - if m != nil { - return m.RxMetadata +func (x *UplinkMessage) GetRxMetadata() []*RxMetadata { + if x != nil { + return x.RxMetadata } return nil } -func (m *UplinkMessage) GetReceivedAt() *types.Timestamp { - if m != nil { - return m.ReceivedAt +func (x *UplinkMessage) GetReceivedAt() *timestamppb.Timestamp { + if x != nil { + return x.ReceivedAt } return nil } -func (m *UplinkMessage) GetCorrelationIds() []string { - if m != nil { - return m.CorrelationIds +func (x *UplinkMessage) GetCorrelationIds() []string { + if x != nil { + return x.CorrelationIds } return nil } -func (m *UplinkMessage) GetDeviceChannelIndex() uint32 { - if m != nil { - return m.DeviceChannelIndex +func (x *UplinkMessage) GetDeviceChannelIndex() uint32 { + if x != nil { + return x.DeviceChannelIndex } return 0 } -func (m *UplinkMessage) GetConsumedAirtime() *types.Duration { - if m != nil { - return m.ConsumedAirtime +func (x *UplinkMessage) GetConsumedAirtime() *durationpb.Duration { + if x != nil { + return x.ConsumedAirtime } return nil } // Downlink message from the network to the end device type DownlinkMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + RawPayload []byte `protobuf:"bytes,1,opt,name=raw_payload,json=rawPayload,proto3" json:"raw_payload,omitempty"` Payload *Message `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` EndDeviceIds *EndDeviceIdentifiers `protobuf:"bytes,3,opt,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` - // Types that are valid to be assigned to Settings: + // Types that are assignable to Settings: // *DownlinkMessage_Request // *DownlinkMessage_Scheduled - Settings isDownlinkMessage_Settings `protobuf_oneof:"settings"` - CorrelationIds []string `protobuf:"bytes,6,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` - SessionKeyId []byte `protobuf:"bytes,7,opt,name=session_key_id,json=sessionKeyId,proto3" json:"session_key_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Settings isDownlinkMessage_Settings `protobuf_oneof:"settings"` + CorrelationIds []string `protobuf:"bytes,6,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` + SessionKeyId []byte `protobuf:"bytes,7,opt,name=session_key_id,json=sessionKeyId,proto3" json:"session_key_id,omitempty"` } -func (m *DownlinkMessage) Reset() { *m = DownlinkMessage{} } -func (m *DownlinkMessage) String() string { return proto.CompactTextString(m) } -func (*DownlinkMessage) ProtoMessage() {} -func (*DownlinkMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{1} -} -func (m *DownlinkMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DownlinkMessage.Unmarshal(m, b) -} -func (m *DownlinkMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DownlinkMessage.Marshal(b, m, deterministic) -} -func (m *DownlinkMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_DownlinkMessage.Merge(m, src) -} -func (m *DownlinkMessage) XXX_Size() int { - return xxx_messageInfo_DownlinkMessage.Size(m) +func (x *DownlinkMessage) Reset() { + *x = DownlinkMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DownlinkMessage) XXX_DiscardUnknown() { - xxx_messageInfo_DownlinkMessage.DiscardUnknown(m) + +func (x *DownlinkMessage) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_DownlinkMessage proto.InternalMessageInfo +func (*DownlinkMessage) ProtoMessage() {} -type isDownlinkMessage_Settings interface { - isDownlinkMessage_Settings() +func (x *DownlinkMessage) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type DownlinkMessage_Request struct { - Request *TxRequest `protobuf:"bytes,4,opt,name=request,proto3,oneof" json:"request,omitempty"` -} -type DownlinkMessage_Scheduled struct { - Scheduled *TxSettings `protobuf:"bytes,5,opt,name=scheduled,proto3,oneof" json:"scheduled,omitempty"` +// Deprecated: Use DownlinkMessage.ProtoReflect.Descriptor instead. +func (*DownlinkMessage) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{1} } -func (*DownlinkMessage_Request) isDownlinkMessage_Settings() {} -func (*DownlinkMessage_Scheduled) isDownlinkMessage_Settings() {} - -func (m *DownlinkMessage) GetSettings() isDownlinkMessage_Settings { - if m != nil { - return m.Settings +func (x *DownlinkMessage) GetRawPayload() []byte { + if x != nil { + return x.RawPayload } return nil } -func (m *DownlinkMessage) GetRawPayload() []byte { - if m != nil { - return m.RawPayload +func (x *DownlinkMessage) GetPayload() *Message { + if x != nil { + return x.Payload } return nil } -func (m *DownlinkMessage) GetPayload() *Message { - if m != nil { - return m.Payload +func (x *DownlinkMessage) GetEndDeviceIds() *EndDeviceIdentifiers { + if x != nil { + return x.EndDeviceIds } return nil } -func (m *DownlinkMessage) GetEndDeviceIds() *EndDeviceIdentifiers { +func (m *DownlinkMessage) GetSettings() isDownlinkMessage_Settings { if m != nil { - return m.EndDeviceIds + return m.Settings } return nil } -func (m *DownlinkMessage) GetRequest() *TxRequest { - if x, ok := m.GetSettings().(*DownlinkMessage_Request); ok { +func (x *DownlinkMessage) GetRequest() *TxRequest { + if x, ok := x.GetSettings().(*DownlinkMessage_Request); ok { return x.Request } return nil } -func (m *DownlinkMessage) GetScheduled() *TxSettings { - if x, ok := m.GetSettings().(*DownlinkMessage_Scheduled); ok { +func (x *DownlinkMessage) GetScheduled() *TxSettings { + if x, ok := x.GetSettings().(*DownlinkMessage_Scheduled); ok { return x.Scheduled } return nil } -func (m *DownlinkMessage) GetCorrelationIds() []string { - if m != nil { - return m.CorrelationIds +func (x *DownlinkMessage) GetCorrelationIds() []string { + if x != nil { + return x.CorrelationIds } return nil } -func (m *DownlinkMessage) GetSessionKeyId() []byte { - if m != nil { - return m.SessionKeyId +func (x *DownlinkMessage) GetSessionKeyId() []byte { + if x != nil { + return x.SessionKeyId } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*DownlinkMessage) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*DownlinkMessage_Request)(nil), - (*DownlinkMessage_Scheduled)(nil), - } +type isDownlinkMessage_Settings interface { + isDownlinkMessage_Settings() +} + +type DownlinkMessage_Request struct { + Request *TxRequest `protobuf:"bytes,4,opt,name=request,proto3,oneof"` +} + +type DownlinkMessage_Scheduled struct { + Scheduled *TxSettings `protobuf:"bytes,5,opt,name=scheduled,proto3,oneof"` } +func (*DownlinkMessage_Request) isDownlinkMessage_Settings() {} + +func (*DownlinkMessage_Scheduled) isDownlinkMessage_Settings() {} + type TxAcknowledgment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Correlation IDs for the downlink message. // Set automatically by the UDP and LBS frontends. // For gRPC and the MQTT v3 frontends, the correlation IDs must match the ones of the downlink message the Tx acknowledgment message refers to. CorrelationIds []string `protobuf:"bytes,1,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` Result TxAcknowledgment_Result `protobuf:"varint,2,opt,name=result,proto3,enum=ttn.lorawan.v3.TxAcknowledgment_Result" json:"result,omitempty"` // The acknowledged downlink message. Set by the Gateway Server. - DownlinkMessage *DownlinkMessage `protobuf:"bytes,3,opt,name=downlink_message,json=downlinkMessage,proto3" json:"downlink_message,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + DownlinkMessage *DownlinkMessage `protobuf:"bytes,3,opt,name=downlink_message,json=downlinkMessage,proto3" json:"downlink_message,omitempty"` } -func (m *TxAcknowledgment) Reset() { *m = TxAcknowledgment{} } -func (m *TxAcknowledgment) String() string { return proto.CompactTextString(m) } -func (*TxAcknowledgment) ProtoMessage() {} -func (*TxAcknowledgment) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{2} -} -func (m *TxAcknowledgment) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TxAcknowledgment.Unmarshal(m, b) -} -func (m *TxAcknowledgment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TxAcknowledgment.Marshal(b, m, deterministic) -} -func (m *TxAcknowledgment) XXX_Merge(src proto.Message) { - xxx_messageInfo_TxAcknowledgment.Merge(m, src) +func (x *TxAcknowledgment) Reset() { + *x = TxAcknowledgment{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *TxAcknowledgment) XXX_Size() int { - return xxx_messageInfo_TxAcknowledgment.Size(m) + +func (x *TxAcknowledgment) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *TxAcknowledgment) XXX_DiscardUnknown() { - xxx_messageInfo_TxAcknowledgment.DiscardUnknown(m) + +func (*TxAcknowledgment) ProtoMessage() {} + +func (x *TxAcknowledgment) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_TxAcknowledgment proto.InternalMessageInfo +// Deprecated: Use TxAcknowledgment.ProtoReflect.Descriptor instead. +func (*TxAcknowledgment) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{2} +} -func (m *TxAcknowledgment) GetCorrelationIds() []string { - if m != nil { - return m.CorrelationIds +func (x *TxAcknowledgment) GetCorrelationIds() []string { + if x != nil { + return x.CorrelationIds } return nil } -func (m *TxAcknowledgment) GetResult() TxAcknowledgment_Result { - if m != nil { - return m.Result +func (x *TxAcknowledgment) GetResult() TxAcknowledgment_Result { + if x != nil { + return x.Result } return TxAcknowledgment_SUCCESS } -func (m *TxAcknowledgment) GetDownlinkMessage() *DownlinkMessage { - if m != nil { - return m.DownlinkMessage +func (x *TxAcknowledgment) GetDownlinkMessage() *DownlinkMessage { + if x != nil { + return x.DownlinkMessage } return nil } type GatewayTxAcknowledgment struct { - GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` - TxAck *TxAcknowledgment `protobuf:"bytes,2,opt,name=tx_ack,json=txAck,proto3" json:"tx_ack,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GatewayTxAcknowledgment) Reset() { *m = GatewayTxAcknowledgment{} } -func (m *GatewayTxAcknowledgment) String() string { return proto.CompactTextString(m) } -func (*GatewayTxAcknowledgment) ProtoMessage() {} -func (*GatewayTxAcknowledgment) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{3} + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` + TxAck *TxAcknowledgment `protobuf:"bytes,2,opt,name=tx_ack,json=txAck,proto3" json:"tx_ack,omitempty"` } -func (m *GatewayTxAcknowledgment) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayTxAcknowledgment.Unmarshal(m, b) -} -func (m *GatewayTxAcknowledgment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayTxAcknowledgment.Marshal(b, m, deterministic) -} -func (m *GatewayTxAcknowledgment) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayTxAcknowledgment.Merge(m, src) + +func (x *GatewayTxAcknowledgment) Reset() { + *x = GatewayTxAcknowledgment{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GatewayTxAcknowledgment) XXX_Size() int { - return xxx_messageInfo_GatewayTxAcknowledgment.Size(m) + +func (x *GatewayTxAcknowledgment) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GatewayTxAcknowledgment) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayTxAcknowledgment.DiscardUnknown(m) + +func (*GatewayTxAcknowledgment) ProtoMessage() {} + +func (x *GatewayTxAcknowledgment) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GatewayTxAcknowledgment proto.InternalMessageInfo +// Deprecated: Use GatewayTxAcknowledgment.ProtoReflect.Descriptor instead. +func (*GatewayTxAcknowledgment) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{3} +} -func (m *GatewayTxAcknowledgment) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds +func (x *GatewayTxAcknowledgment) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds } return nil } -func (m *GatewayTxAcknowledgment) GetTxAck() *TxAcknowledgment { - if m != nil { - return m.TxAck +func (x *GatewayTxAcknowledgment) GetTxAck() *TxAcknowledgment { + if x != nil { + return x.TxAck } return nil } type GatewayUplinkMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Message *UplinkMessage `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` // LoRaWAN band ID of the gateway. - BandId string `protobuf:"bytes,2,opt,name=band_id,json=bandId,proto3" json:"band_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + BandId string `protobuf:"bytes,2,opt,name=band_id,json=bandId,proto3" json:"band_id,omitempty"` } -func (m *GatewayUplinkMessage) Reset() { *m = GatewayUplinkMessage{} } -func (m *GatewayUplinkMessage) String() string { return proto.CompactTextString(m) } -func (*GatewayUplinkMessage) ProtoMessage() {} -func (*GatewayUplinkMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{4} -} -func (m *GatewayUplinkMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GatewayUplinkMessage.Unmarshal(m, b) -} -func (m *GatewayUplinkMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GatewayUplinkMessage.Marshal(b, m, deterministic) -} -func (m *GatewayUplinkMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_GatewayUplinkMessage.Merge(m, src) +func (x *GatewayUplinkMessage) Reset() { + *x = GatewayUplinkMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GatewayUplinkMessage) XXX_Size() int { - return xxx_messageInfo_GatewayUplinkMessage.Size(m) + +func (x *GatewayUplinkMessage) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GatewayUplinkMessage) XXX_DiscardUnknown() { - xxx_messageInfo_GatewayUplinkMessage.DiscardUnknown(m) + +func (*GatewayUplinkMessage) ProtoMessage() {} + +func (x *GatewayUplinkMessage) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GatewayUplinkMessage proto.InternalMessageInfo +// Deprecated: Use GatewayUplinkMessage.ProtoReflect.Descriptor instead. +func (*GatewayUplinkMessage) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{4} +} -func (m *GatewayUplinkMessage) GetMessage() *UplinkMessage { - if m != nil { - return m.Message +func (x *GatewayUplinkMessage) GetMessage() *UplinkMessage { + if x != nil { + return x.Message } return nil } -func (m *GatewayUplinkMessage) GetBandId() string { - if m != nil { - return m.BandId +func (x *GatewayUplinkMessage) GetBandId() string { + if x != nil { + return x.BandId } return "" } type ApplicationUplink struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Join Server issued identifier for the session keys used by this uplink. SessionKeyId []byte `protobuf:"bytes,1,opt,name=session_key_id,json=sessionKeyId,proto3" json:"session_key_id,omitempty"` // LoRaWAN FPort of the uplink message. @@ -495,14 +594,14 @@ type ApplicationUplink struct { FrmPayload []byte `protobuf:"bytes,4,opt,name=frm_payload,json=frmPayload,proto3" json:"frm_payload,omitempty"` // The decoded frame payload of the uplink message. // This field is set by the message processor that is configured for the end device (see formatters) or application (see default_formatters). - DecodedPayload *types.Struct `protobuf:"bytes,5,opt,name=decoded_payload,json=decodedPayload,proto3" json:"decoded_payload,omitempty"` + DecodedPayload *structpb.Struct `protobuf:"bytes,5,opt,name=decoded_payload,json=decodedPayload,proto3" json:"decoded_payload,omitempty"` // Warnings generated by the message processor while decoding the frm_payload. DecodedPayloadWarnings []string `protobuf:"bytes,12,rep,name=decoded_payload_warnings,json=decodedPayloadWarnings,proto3" json:"decoded_payload_warnings,omitempty"` // The normalized frame payload of the uplink message. // This field is set by the message processor that is configured for the end device (see formatters) or application (see default_formatters). // If the message processor is a custom script, there is no uplink normalizer script and the decoded output is valid // normalized payload, this field contains the decoded payload. - NormalizedPayload []*types.Struct `protobuf:"bytes,17,rep,name=normalized_payload,json=normalizedPayload,proto3" json:"normalized_payload,omitempty"` + NormalizedPayload []*structpb.Struct `protobuf:"bytes,17,rep,name=normalized_payload,json=normalizedPayload,proto3" json:"normalized_payload,omitempty"` // Warnings generated by the message processor while normalizing the decoded payload. NormalizedPayloadWarnings []string `protobuf:"bytes,18,rep,name=normalized_payload_warnings,json=normalizedPayloadWarnings,proto3" json:"normalized_payload_warnings,omitempty"` // A list of metadata for each antenna of each gateway that received this message. @@ -510,7 +609,7 @@ type ApplicationUplink struct { // Transmission settings used by the end device. Settings *TxSettings `protobuf:"bytes,7,opt,name=settings,proto3" json:"settings,omitempty"` // Server time when the Network Server received the message. - ReceivedAt *types.Timestamp `protobuf:"bytes,8,opt,name=received_at,json=receivedAt,proto3" json:"received_at,omitempty"` + ReceivedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=received_at,json=receivedAt,proto3" json:"received_at,omitempty"` // The AppSKey of the current session. // This field is only present if the skip_payload_crypto field of the EndDevice // is true. @@ -524,169 +623,178 @@ type ApplicationUplink struct { // Indicates whether the end device used confirmed data uplink. Confirmed bool `protobuf:"varint,11,opt,name=confirmed,proto3" json:"confirmed,omitempty"` // Consumed airtime for the transmission of the uplink message. Calculated by Network Server using the raw payload size and the transmission settings. - ConsumedAirtime *types.Duration `protobuf:"bytes,13,opt,name=consumed_airtime,json=consumedAirtime,proto3" json:"consumed_airtime,omitempty"` + ConsumedAirtime *durationpb.Duration `protobuf:"bytes,13,opt,name=consumed_airtime,json=consumedAirtime,proto3" json:"consumed_airtime,omitempty"` // End device location metadata, set by the Application Server while handling the message. Locations map[string]*Location `protobuf:"bytes,14,rep,name=locations,proto3" json:"locations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // End device version identifiers, set by the Application Server while handling the message. VersionIds *EndDeviceVersionIdentifiers `protobuf:"bytes,15,opt,name=version_ids,json=versionIds,proto3" json:"version_ids,omitempty"` // Network identifiers, set by the Network Server that handles the message. - NetworkIds *NetworkIdentifiers `protobuf:"bytes,16,opt,name=network_ids,json=networkIds,proto3" json:"network_ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + NetworkIds *NetworkIdentifiers `protobuf:"bytes,16,opt,name=network_ids,json=networkIds,proto3" json:"network_ids,omitempty"` } -func (m *ApplicationUplink) Reset() { *m = ApplicationUplink{} } -func (m *ApplicationUplink) String() string { return proto.CompactTextString(m) } -func (*ApplicationUplink) ProtoMessage() {} -func (*ApplicationUplink) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{5} -} -func (m *ApplicationUplink) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationUplink.Unmarshal(m, b) -} -func (m *ApplicationUplink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationUplink.Marshal(b, m, deterministic) -} -func (m *ApplicationUplink) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationUplink.Merge(m, src) +func (x *ApplicationUplink) Reset() { + *x = ApplicationUplink{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationUplink) XXX_Size() int { - return xxx_messageInfo_ApplicationUplink.Size(m) + +func (x *ApplicationUplink) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationUplink) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationUplink.DiscardUnknown(m) + +func (*ApplicationUplink) ProtoMessage() {} + +func (x *ApplicationUplink) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationUplink proto.InternalMessageInfo +// Deprecated: Use ApplicationUplink.ProtoReflect.Descriptor instead. +func (*ApplicationUplink) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{5} +} -func (m *ApplicationUplink) GetSessionKeyId() []byte { - if m != nil { - return m.SessionKeyId +func (x *ApplicationUplink) GetSessionKeyId() []byte { + if x != nil { + return x.SessionKeyId } return nil } -func (m *ApplicationUplink) GetFPort() uint32 { - if m != nil { - return m.FPort +func (x *ApplicationUplink) GetFPort() uint32 { + if x != nil { + return x.FPort } return 0 } -func (m *ApplicationUplink) GetFCnt() uint32 { - if m != nil { - return m.FCnt +func (x *ApplicationUplink) GetFCnt() uint32 { + if x != nil { + return x.FCnt } return 0 } -func (m *ApplicationUplink) GetFrmPayload() []byte { - if m != nil { - return m.FrmPayload +func (x *ApplicationUplink) GetFrmPayload() []byte { + if x != nil { + return x.FrmPayload } return nil } -func (m *ApplicationUplink) GetDecodedPayload() *types.Struct { - if m != nil { - return m.DecodedPayload +func (x *ApplicationUplink) GetDecodedPayload() *structpb.Struct { + if x != nil { + return x.DecodedPayload } return nil } -func (m *ApplicationUplink) GetDecodedPayloadWarnings() []string { - if m != nil { - return m.DecodedPayloadWarnings +func (x *ApplicationUplink) GetDecodedPayloadWarnings() []string { + if x != nil { + return x.DecodedPayloadWarnings } return nil } -func (m *ApplicationUplink) GetNormalizedPayload() []*types.Struct { - if m != nil { - return m.NormalizedPayload +func (x *ApplicationUplink) GetNormalizedPayload() []*structpb.Struct { + if x != nil { + return x.NormalizedPayload } return nil } -func (m *ApplicationUplink) GetNormalizedPayloadWarnings() []string { - if m != nil { - return m.NormalizedPayloadWarnings +func (x *ApplicationUplink) GetNormalizedPayloadWarnings() []string { + if x != nil { + return x.NormalizedPayloadWarnings } return nil } -func (m *ApplicationUplink) GetRxMetadata() []*RxMetadata { - if m != nil { - return m.RxMetadata +func (x *ApplicationUplink) GetRxMetadata() []*RxMetadata { + if x != nil { + return x.RxMetadata } return nil } -func (m *ApplicationUplink) GetSettings() *TxSettings { - if m != nil { - return m.Settings +func (x *ApplicationUplink) GetSettings() *TxSettings { + if x != nil { + return x.Settings } return nil } -func (m *ApplicationUplink) GetReceivedAt() *types.Timestamp { - if m != nil { - return m.ReceivedAt +func (x *ApplicationUplink) GetReceivedAt() *timestamppb.Timestamp { + if x != nil { + return x.ReceivedAt } return nil } -func (m *ApplicationUplink) GetAppSKey() *KeyEnvelope { - if m != nil { - return m.AppSKey +func (x *ApplicationUplink) GetAppSKey() *KeyEnvelope { + if x != nil { + return x.AppSKey } return nil } -func (m *ApplicationUplink) GetLastAFCntDown() uint32 { - if m != nil { - return m.LastAFCntDown +func (x *ApplicationUplink) GetLastAFCntDown() uint32 { + if x != nil { + return x.LastAFCntDown } return 0 } -func (m *ApplicationUplink) GetConfirmed() bool { - if m != nil { - return m.Confirmed +func (x *ApplicationUplink) GetConfirmed() bool { + if x != nil { + return x.Confirmed } return false } -func (m *ApplicationUplink) GetConsumedAirtime() *types.Duration { - if m != nil { - return m.ConsumedAirtime +func (x *ApplicationUplink) GetConsumedAirtime() *durationpb.Duration { + if x != nil { + return x.ConsumedAirtime } return nil } -func (m *ApplicationUplink) GetLocations() map[string]*Location { - if m != nil { - return m.Locations +func (x *ApplicationUplink) GetLocations() map[string]*Location { + if x != nil { + return x.Locations } return nil } -func (m *ApplicationUplink) GetVersionIds() *EndDeviceVersionIdentifiers { - if m != nil { - return m.VersionIds +func (x *ApplicationUplink) GetVersionIds() *EndDeviceVersionIdentifiers { + if x != nil { + return x.VersionIds } return nil } -func (m *ApplicationUplink) GetNetworkIds() *NetworkIdentifiers { - if m != nil { - return m.NetworkIds +func (x *ApplicationUplink) GetNetworkIds() *NetworkIdentifiers { + if x != nil { + return x.NetworkIds } return nil } type ApplicationUplinkNormalized struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Join Server issued identifier for the session keys used by this uplink. SessionKeyId []byte `protobuf:"bytes,1,opt,name=session_key_id,json=sessionKeyId,proto3" json:"session_key_id,omitempty"` // LoRaWAN FPort of the uplink message. @@ -698,7 +806,7 @@ type ApplicationUplinkNormalized struct { FrmPayload []byte `protobuf:"bytes,4,opt,name=frm_payload,json=frmPayload,proto3" json:"frm_payload,omitempty"` // The normalized frame payload of the uplink message. // This field is set for each item in normalized_payload in the corresponding ApplicationUplink message. - NormalizedPayload *types.Struct `protobuf:"bytes,5,opt,name=normalized_payload,json=normalizedPayload,proto3" json:"normalized_payload,omitempty"` + NormalizedPayload *structpb.Struct `protobuf:"bytes,5,opt,name=normalized_payload,json=normalizedPayload,proto3" json:"normalized_payload,omitempty"` // This field is set to normalized_payload_warnings in the corresponding ApplicationUplink message. NormalizedPayloadWarnings []string `protobuf:"bytes,6,rep,name=normalized_payload_warnings,json=normalizedPayloadWarnings,proto3" json:"normalized_payload_warnings,omitempty"` // A list of metadata for each antenna of each gateway that received this message. @@ -706,199 +814,217 @@ type ApplicationUplinkNormalized struct { // Transmission settings used by the end device. Settings *TxSettings `protobuf:"bytes,8,opt,name=settings,proto3" json:"settings,omitempty"` // Server time when the Network Server received the message. - ReceivedAt *types.Timestamp `protobuf:"bytes,9,opt,name=received_at,json=receivedAt,proto3" json:"received_at,omitempty"` + ReceivedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=received_at,json=receivedAt,proto3" json:"received_at,omitempty"` // Indicates whether the end device used confirmed data uplink. Confirmed bool `protobuf:"varint,10,opt,name=confirmed,proto3" json:"confirmed,omitempty"` // Consumed airtime for the transmission of the uplink message. Calculated by Network Server using the raw payload size and the transmission settings. - ConsumedAirtime *types.Duration `protobuf:"bytes,11,opt,name=consumed_airtime,json=consumedAirtime,proto3" json:"consumed_airtime,omitempty"` + ConsumedAirtime *durationpb.Duration `protobuf:"bytes,11,opt,name=consumed_airtime,json=consumedAirtime,proto3" json:"consumed_airtime,omitempty"` // End device location metadata, set by the Application Server while handling the message. Locations map[string]*Location `protobuf:"bytes,12,rep,name=locations,proto3" json:"locations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // End device version identifiers, set by the Application Server while handling the message. VersionIds *EndDeviceVersionIdentifiers `protobuf:"bytes,13,opt,name=version_ids,json=versionIds,proto3" json:"version_ids,omitempty"` // Network identifiers, set by the Network Server that handles the message. - NetworkIds *NetworkIdentifiers `protobuf:"bytes,14,opt,name=network_ids,json=networkIds,proto3" json:"network_ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + NetworkIds *NetworkIdentifiers `protobuf:"bytes,14,opt,name=network_ids,json=networkIds,proto3" json:"network_ids,omitempty"` } -func (m *ApplicationUplinkNormalized) Reset() { *m = ApplicationUplinkNormalized{} } -func (m *ApplicationUplinkNormalized) String() string { return proto.CompactTextString(m) } -func (*ApplicationUplinkNormalized) ProtoMessage() {} -func (*ApplicationUplinkNormalized) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{6} -} -func (m *ApplicationUplinkNormalized) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationUplinkNormalized.Unmarshal(m, b) -} -func (m *ApplicationUplinkNormalized) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationUplinkNormalized.Marshal(b, m, deterministic) -} -func (m *ApplicationUplinkNormalized) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationUplinkNormalized.Merge(m, src) +func (x *ApplicationUplinkNormalized) Reset() { + *x = ApplicationUplinkNormalized{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationUplinkNormalized) XXX_Size() int { - return xxx_messageInfo_ApplicationUplinkNormalized.Size(m) + +func (x *ApplicationUplinkNormalized) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationUplinkNormalized) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationUplinkNormalized.DiscardUnknown(m) + +func (*ApplicationUplinkNormalized) ProtoMessage() {} + +func (x *ApplicationUplinkNormalized) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationUplinkNormalized proto.InternalMessageInfo +// Deprecated: Use ApplicationUplinkNormalized.ProtoReflect.Descriptor instead. +func (*ApplicationUplinkNormalized) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{6} +} -func (m *ApplicationUplinkNormalized) GetSessionKeyId() []byte { - if m != nil { - return m.SessionKeyId +func (x *ApplicationUplinkNormalized) GetSessionKeyId() []byte { + if x != nil { + return x.SessionKeyId } return nil } -func (m *ApplicationUplinkNormalized) GetFPort() uint32 { - if m != nil { - return m.FPort +func (x *ApplicationUplinkNormalized) GetFPort() uint32 { + if x != nil { + return x.FPort } return 0 } -func (m *ApplicationUplinkNormalized) GetFCnt() uint32 { - if m != nil { - return m.FCnt +func (x *ApplicationUplinkNormalized) GetFCnt() uint32 { + if x != nil { + return x.FCnt } return 0 } -func (m *ApplicationUplinkNormalized) GetFrmPayload() []byte { - if m != nil { - return m.FrmPayload +func (x *ApplicationUplinkNormalized) GetFrmPayload() []byte { + if x != nil { + return x.FrmPayload } return nil } -func (m *ApplicationUplinkNormalized) GetNormalizedPayload() *types.Struct { - if m != nil { - return m.NormalizedPayload +func (x *ApplicationUplinkNormalized) GetNormalizedPayload() *structpb.Struct { + if x != nil { + return x.NormalizedPayload } return nil } -func (m *ApplicationUplinkNormalized) GetNormalizedPayloadWarnings() []string { - if m != nil { - return m.NormalizedPayloadWarnings +func (x *ApplicationUplinkNormalized) GetNormalizedPayloadWarnings() []string { + if x != nil { + return x.NormalizedPayloadWarnings } return nil } -func (m *ApplicationUplinkNormalized) GetRxMetadata() []*RxMetadata { - if m != nil { - return m.RxMetadata +func (x *ApplicationUplinkNormalized) GetRxMetadata() []*RxMetadata { + if x != nil { + return x.RxMetadata } return nil } -func (m *ApplicationUplinkNormalized) GetSettings() *TxSettings { - if m != nil { - return m.Settings +func (x *ApplicationUplinkNormalized) GetSettings() *TxSettings { + if x != nil { + return x.Settings } return nil } -func (m *ApplicationUplinkNormalized) GetReceivedAt() *types.Timestamp { - if m != nil { - return m.ReceivedAt +func (x *ApplicationUplinkNormalized) GetReceivedAt() *timestamppb.Timestamp { + if x != nil { + return x.ReceivedAt } return nil } -func (m *ApplicationUplinkNormalized) GetConfirmed() bool { - if m != nil { - return m.Confirmed +func (x *ApplicationUplinkNormalized) GetConfirmed() bool { + if x != nil { + return x.Confirmed } return false } -func (m *ApplicationUplinkNormalized) GetConsumedAirtime() *types.Duration { - if m != nil { - return m.ConsumedAirtime +func (x *ApplicationUplinkNormalized) GetConsumedAirtime() *durationpb.Duration { + if x != nil { + return x.ConsumedAirtime } return nil } -func (m *ApplicationUplinkNormalized) GetLocations() map[string]*Location { - if m != nil { - return m.Locations +func (x *ApplicationUplinkNormalized) GetLocations() map[string]*Location { + if x != nil { + return x.Locations } return nil } -func (m *ApplicationUplinkNormalized) GetVersionIds() *EndDeviceVersionIdentifiers { - if m != nil { - return m.VersionIds +func (x *ApplicationUplinkNormalized) GetVersionIds() *EndDeviceVersionIdentifiers { + if x != nil { + return x.VersionIds } return nil } -func (m *ApplicationUplinkNormalized) GetNetworkIds() *NetworkIdentifiers { - if m != nil { - return m.NetworkIds +func (x *ApplicationUplinkNormalized) GetNetworkIds() *NetworkIdentifiers { + if x != nil { + return x.NetworkIds } return nil } type ApplicationLocation struct { - Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"` - Location *Location `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty"` - Attributes map[string]string `protobuf:"bytes,3,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationLocation) Reset() { *m = ApplicationLocation{} } -func (m *ApplicationLocation) String() string { return proto.CompactTextString(m) } -func (*ApplicationLocation) ProtoMessage() {} -func (*ApplicationLocation) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{7} -} -func (m *ApplicationLocation) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationLocation.Unmarshal(m, b) + Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"` + Location *Location `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty"` + Attributes map[string]string `protobuf:"bytes,3,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *ApplicationLocation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationLocation.Marshal(b, m, deterministic) -} -func (m *ApplicationLocation) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationLocation.Merge(m, src) + +func (x *ApplicationLocation) Reset() { + *x = ApplicationLocation{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationLocation) XXX_Size() int { - return xxx_messageInfo_ApplicationLocation.Size(m) + +func (x *ApplicationLocation) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationLocation) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationLocation.DiscardUnknown(m) + +func (*ApplicationLocation) ProtoMessage() {} + +func (x *ApplicationLocation) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationLocation proto.InternalMessageInfo +// Deprecated: Use ApplicationLocation.ProtoReflect.Descriptor instead. +func (*ApplicationLocation) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{7} +} -func (m *ApplicationLocation) GetService() string { - if m != nil { - return m.Service +func (x *ApplicationLocation) GetService() string { + if x != nil { + return x.Service } return "" } -func (m *ApplicationLocation) GetLocation() *Location { - if m != nil { - return m.Location +func (x *ApplicationLocation) GetLocation() *Location { + if x != nil { + return x.Location } return nil } -func (m *ApplicationLocation) GetAttributes() map[string]string { - if m != nil { - return m.Attributes +func (x *ApplicationLocation) GetAttributes() map[string]string { + if x != nil { + return x.Attributes } return nil } type ApplicationJoinAccept struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Join Server issued identifier for the session keys negotiated in this join. SessionKeyId []byte `protobuf:"bytes,1,opt,name=session_key_id,json=sessionKeyId,proto3" json:"session_key_id,omitempty"` // Encrypted Application Session Key (if Join Server sent it to Network Server). @@ -909,72 +1035,81 @@ type ApplicationJoinAccept struct { // rejoin-request. PendingSession bool `protobuf:"varint,4,opt,name=pending_session,json=pendingSession,proto3" json:"pending_session,omitempty"` // Server time when the Network Server received the message. - ReceivedAt *types.Timestamp `protobuf:"bytes,8,opt,name=received_at,json=receivedAt,proto3" json:"received_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ReceivedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=received_at,json=receivedAt,proto3" json:"received_at,omitempty"` } -func (m *ApplicationJoinAccept) Reset() { *m = ApplicationJoinAccept{} } -func (m *ApplicationJoinAccept) String() string { return proto.CompactTextString(m) } -func (*ApplicationJoinAccept) ProtoMessage() {} -func (*ApplicationJoinAccept) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{8} -} -func (m *ApplicationJoinAccept) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationJoinAccept.Unmarshal(m, b) -} -func (m *ApplicationJoinAccept) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationJoinAccept.Marshal(b, m, deterministic) -} -func (m *ApplicationJoinAccept) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationJoinAccept.Merge(m, src) +func (x *ApplicationJoinAccept) Reset() { + *x = ApplicationJoinAccept{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationJoinAccept) XXX_Size() int { - return xxx_messageInfo_ApplicationJoinAccept.Size(m) + +func (x *ApplicationJoinAccept) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationJoinAccept) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationJoinAccept.DiscardUnknown(m) + +func (*ApplicationJoinAccept) ProtoMessage() {} + +func (x *ApplicationJoinAccept) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationJoinAccept proto.InternalMessageInfo +// Deprecated: Use ApplicationJoinAccept.ProtoReflect.Descriptor instead. +func (*ApplicationJoinAccept) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{8} +} -func (m *ApplicationJoinAccept) GetSessionKeyId() []byte { - if m != nil { - return m.SessionKeyId +func (x *ApplicationJoinAccept) GetSessionKeyId() []byte { + if x != nil { + return x.SessionKeyId } return nil } -func (m *ApplicationJoinAccept) GetAppSKey() *KeyEnvelope { - if m != nil { - return m.AppSKey +func (x *ApplicationJoinAccept) GetAppSKey() *KeyEnvelope { + if x != nil { + return x.AppSKey } return nil } -func (m *ApplicationJoinAccept) GetInvalidatedDownlinks() []*ApplicationDownlink { - if m != nil { - return m.InvalidatedDownlinks +func (x *ApplicationJoinAccept) GetInvalidatedDownlinks() []*ApplicationDownlink { + if x != nil { + return x.InvalidatedDownlinks } return nil } -func (m *ApplicationJoinAccept) GetPendingSession() bool { - if m != nil { - return m.PendingSession +func (x *ApplicationJoinAccept) GetPendingSession() bool { + if x != nil { + return x.PendingSession } return false } -func (m *ApplicationJoinAccept) GetReceivedAt() *types.Timestamp { - if m != nil { - return m.ReceivedAt +func (x *ApplicationJoinAccept) GetReceivedAt() *timestamppb.Timestamp { + if x != nil { + return x.ReceivedAt } return nil } type ApplicationDownlink struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Join Server issued identifier for the session keys used by this downlink. SessionKeyId []byte `protobuf:"bytes,1,opt,name=session_key_id,json=sessionKeyId,proto3" json:"session_key_id,omitempty"` FPort uint32 `protobuf:"varint,2,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` @@ -987,7 +1122,7 @@ type ApplicationDownlink struct { // When scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters), // this fields acts as input for the downlink encoder, and the output is set to frm_payload. // When reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload. - DecodedPayload *types.Struct `protobuf:"bytes,5,opt,name=decoded_payload,json=decodedPayload,proto3" json:"decoded_payload,omitempty"` + DecodedPayload *structpb.Struct `protobuf:"bytes,5,opt,name=decoded_payload,json=decodedPayload,proto3" json:"decoded_payload,omitempty"` // Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink). DecodedPayloadWarnings []string `protobuf:"bytes,10,rep,name=decoded_payload_warnings,json=decodedPayloadWarnings,proto3" json:"decoded_payload_warnings,omitempty"` Confirmed bool `protobuf:"varint,6,opt,name=confirmed,proto3" json:"confirmed,omitempty"` @@ -996,431 +1131,430 @@ type ApplicationDownlink struct { // If not set, this downlink message may be transmitted in class A, B and C. ClassBC *ApplicationDownlink_ClassBC `protobuf:"bytes,7,opt,name=class_b_c,json=classBC,proto3" json:"class_b_c,omitempty"` // Priority for scheduling the downlink message. - Priority TxSchedulePriority `protobuf:"varint,8,opt,name=priority,proto3,enum=ttn.lorawan.v3.TxSchedulePriority" json:"priority,omitempty"` - CorrelationIds []string `protobuf:"bytes,9,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Priority TxSchedulePriority `protobuf:"varint,8,opt,name=priority,proto3,enum=ttn.lorawan.v3.TxSchedulePriority" json:"priority,omitempty"` + CorrelationIds []string `protobuf:"bytes,9,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` } -func (m *ApplicationDownlink) Reset() { *m = ApplicationDownlink{} } -func (m *ApplicationDownlink) String() string { return proto.CompactTextString(m) } -func (*ApplicationDownlink) ProtoMessage() {} -func (*ApplicationDownlink) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{9} -} -func (m *ApplicationDownlink) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationDownlink.Unmarshal(m, b) -} -func (m *ApplicationDownlink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationDownlink.Marshal(b, m, deterministic) -} -func (m *ApplicationDownlink) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationDownlink.Merge(m, src) +func (x *ApplicationDownlink) Reset() { + *x = ApplicationDownlink{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationDownlink) XXX_Size() int { - return xxx_messageInfo_ApplicationDownlink.Size(m) + +func (x *ApplicationDownlink) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationDownlink) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationDownlink.DiscardUnknown(m) + +func (*ApplicationDownlink) ProtoMessage() {} + +func (x *ApplicationDownlink) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationDownlink proto.InternalMessageInfo +// Deprecated: Use ApplicationDownlink.ProtoReflect.Descriptor instead. +func (*ApplicationDownlink) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{9} +} -func (m *ApplicationDownlink) GetSessionKeyId() []byte { - if m != nil { - return m.SessionKeyId +func (x *ApplicationDownlink) GetSessionKeyId() []byte { + if x != nil { + return x.SessionKeyId } return nil } -func (m *ApplicationDownlink) GetFPort() uint32 { - if m != nil { - return m.FPort +func (x *ApplicationDownlink) GetFPort() uint32 { + if x != nil { + return x.FPort } return 0 } -func (m *ApplicationDownlink) GetFCnt() uint32 { - if m != nil { - return m.FCnt +func (x *ApplicationDownlink) GetFCnt() uint32 { + if x != nil { + return x.FCnt } return 0 } -func (m *ApplicationDownlink) GetFrmPayload() []byte { - if m != nil { - return m.FrmPayload +func (x *ApplicationDownlink) GetFrmPayload() []byte { + if x != nil { + return x.FrmPayload } return nil } -func (m *ApplicationDownlink) GetDecodedPayload() *types.Struct { - if m != nil { - return m.DecodedPayload +func (x *ApplicationDownlink) GetDecodedPayload() *structpb.Struct { + if x != nil { + return x.DecodedPayload } return nil } -func (m *ApplicationDownlink) GetDecodedPayloadWarnings() []string { - if m != nil { - return m.DecodedPayloadWarnings +func (x *ApplicationDownlink) GetDecodedPayloadWarnings() []string { + if x != nil { + return x.DecodedPayloadWarnings } return nil } -func (m *ApplicationDownlink) GetConfirmed() bool { - if m != nil { - return m.Confirmed +func (x *ApplicationDownlink) GetConfirmed() bool { + if x != nil { + return x.Confirmed } return false } -func (m *ApplicationDownlink) GetClassBC() *ApplicationDownlink_ClassBC { - if m != nil { - return m.ClassBC +func (x *ApplicationDownlink) GetClassBC() *ApplicationDownlink_ClassBC { + if x != nil { + return x.ClassBC } return nil } -func (m *ApplicationDownlink) GetPriority() TxSchedulePriority { - if m != nil { - return m.Priority +func (x *ApplicationDownlink) GetPriority() TxSchedulePriority { + if x != nil { + return x.Priority } return TxSchedulePriority_LOWEST } -func (m *ApplicationDownlink) GetCorrelationIds() []string { - if m != nil { - return m.CorrelationIds +func (x *ApplicationDownlink) GetCorrelationIds() []string { + if x != nil { + return x.CorrelationIds } return nil } -type ApplicationDownlink_ClassBC struct { - // Possible gateway identifiers, antenna index, and group index to use for this downlink message. - // The Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot. - // If none of the gateways can be selected, the downlink message fails. - // If empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks. - // If group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group. - Gateways []*ClassBCGatewayIdentifiers `protobuf:"bytes,7,rep,name=gateways,proto3" json:"gateways,omitempty"` - // Absolute time when the downlink message should be transmitted. - // This requires the gateway to have GPS time synchronization. - // If the time is in the past or if there is a scheduling conflict, the downlink message fails. - // If null, the time is selected based on slot availability. This is recommended in class B mode. - AbsoluteTime *types.Timestamp `protobuf:"bytes,8,opt,name=absolute_time,json=absoluteTime,proto3" json:"absolute_time,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type ApplicationDownlinks struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationDownlink_ClassBC) Reset() { *m = ApplicationDownlink_ClassBC{} } -func (m *ApplicationDownlink_ClassBC) String() string { return proto.CompactTextString(m) } -func (*ApplicationDownlink_ClassBC) ProtoMessage() {} -func (*ApplicationDownlink_ClassBC) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{9, 0} -} -func (m *ApplicationDownlink_ClassBC) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationDownlink_ClassBC.Unmarshal(m, b) -} -func (m *ApplicationDownlink_ClassBC) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationDownlink_ClassBC.Marshal(b, m, deterministic) -} -func (m *ApplicationDownlink_ClassBC) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationDownlink_ClassBC.Merge(m, src) -} -func (m *ApplicationDownlink_ClassBC) XXX_Size() int { - return xxx_messageInfo_ApplicationDownlink_ClassBC.Size(m) -} -func (m *ApplicationDownlink_ClassBC) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationDownlink_ClassBC.DiscardUnknown(m) + Downlinks []*ApplicationDownlink `protobuf:"bytes,1,rep,name=downlinks,proto3" json:"downlinks,omitempty"` } -var xxx_messageInfo_ApplicationDownlink_ClassBC proto.InternalMessageInfo - -func (m *ApplicationDownlink_ClassBC) GetGateways() []*ClassBCGatewayIdentifiers { - if m != nil { - return m.Gateways +func (x *ApplicationDownlinks) Reset() { + *x = ApplicationDownlinks{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (m *ApplicationDownlink_ClassBC) GetAbsoluteTime() *types.Timestamp { - if m != nil { - return m.AbsoluteTime - } - return nil +func (x *ApplicationDownlinks) String() string { + return protoimpl.X.MessageStringOf(x) } -type ApplicationDownlinks struct { - Downlinks []*ApplicationDownlink `protobuf:"bytes,1,rep,name=downlinks,proto3" json:"downlinks,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (*ApplicationDownlinks) ProtoMessage() {} + +func (x *ApplicationDownlinks) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *ApplicationDownlinks) Reset() { *m = ApplicationDownlinks{} } -func (m *ApplicationDownlinks) String() string { return proto.CompactTextString(m) } -func (*ApplicationDownlinks) ProtoMessage() {} +// Deprecated: Use ApplicationDownlinks.ProtoReflect.Descriptor instead. func (*ApplicationDownlinks) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{10} -} -func (m *ApplicationDownlinks) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationDownlinks.Unmarshal(m, b) -} -func (m *ApplicationDownlinks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationDownlinks.Marshal(b, m, deterministic) -} -func (m *ApplicationDownlinks) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationDownlinks.Merge(m, src) -} -func (m *ApplicationDownlinks) XXX_Size() int { - return xxx_messageInfo_ApplicationDownlinks.Size(m) -} -func (m *ApplicationDownlinks) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationDownlinks.DiscardUnknown(m) + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{10} } -var xxx_messageInfo_ApplicationDownlinks proto.InternalMessageInfo - -func (m *ApplicationDownlinks) GetDownlinks() []*ApplicationDownlink { - if m != nil { - return m.Downlinks +func (x *ApplicationDownlinks) GetDownlinks() []*ApplicationDownlink { + if x != nil { + return x.Downlinks } return nil } type ApplicationDownlinkFailed struct { - Downlink *ApplicationDownlink `protobuf:"bytes,1,opt,name=downlink,proto3" json:"downlink,omitempty"` - Error *ErrorDetails `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationDownlinkFailed) Reset() { *m = ApplicationDownlinkFailed{} } -func (m *ApplicationDownlinkFailed) String() string { return proto.CompactTextString(m) } -func (*ApplicationDownlinkFailed) ProtoMessage() {} -func (*ApplicationDownlinkFailed) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{11} -} -func (m *ApplicationDownlinkFailed) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationDownlinkFailed.Unmarshal(m, b) -} -func (m *ApplicationDownlinkFailed) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationDownlinkFailed.Marshal(b, m, deterministic) + Downlink *ApplicationDownlink `protobuf:"bytes,1,opt,name=downlink,proto3" json:"downlink,omitempty"` + Error *ErrorDetails `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` } -func (m *ApplicationDownlinkFailed) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationDownlinkFailed.Merge(m, src) + +func (x *ApplicationDownlinkFailed) Reset() { + *x = ApplicationDownlinkFailed{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationDownlinkFailed) XXX_Size() int { - return xxx_messageInfo_ApplicationDownlinkFailed.Size(m) + +func (x *ApplicationDownlinkFailed) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationDownlinkFailed) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationDownlinkFailed.DiscardUnknown(m) + +func (*ApplicationDownlinkFailed) ProtoMessage() {} + +func (x *ApplicationDownlinkFailed) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationDownlinkFailed proto.InternalMessageInfo +// Deprecated: Use ApplicationDownlinkFailed.ProtoReflect.Descriptor instead. +func (*ApplicationDownlinkFailed) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{11} +} -func (m *ApplicationDownlinkFailed) GetDownlink() *ApplicationDownlink { - if m != nil { - return m.Downlink +func (x *ApplicationDownlinkFailed) GetDownlink() *ApplicationDownlink { + if x != nil { + return x.Downlink } return nil } -func (m *ApplicationDownlinkFailed) GetError() *ErrorDetails { - if m != nil { - return m.Error +func (x *ApplicationDownlinkFailed) GetError() *ErrorDetails { + if x != nil { + return x.Error } return nil } type ApplicationInvalidatedDownlinks struct { - Downlinks []*ApplicationDownlink `protobuf:"bytes,1,rep,name=downlinks,proto3" json:"downlinks,omitempty"` - LastFCntDown uint32 `protobuf:"varint,2,opt,name=last_f_cnt_down,json=lastFCntDown,proto3" json:"last_f_cnt_down,omitempty"` - SessionKeyId []byte `protobuf:"bytes,3,opt,name=session_key_id,json=sessionKeyId,proto3" json:"session_key_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationInvalidatedDownlinks) Reset() { *m = ApplicationInvalidatedDownlinks{} } -func (m *ApplicationInvalidatedDownlinks) String() string { return proto.CompactTextString(m) } -func (*ApplicationInvalidatedDownlinks) ProtoMessage() {} -func (*ApplicationInvalidatedDownlinks) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{12} + Downlinks []*ApplicationDownlink `protobuf:"bytes,1,rep,name=downlinks,proto3" json:"downlinks,omitempty"` + LastFCntDown uint32 `protobuf:"varint,2,opt,name=last_f_cnt_down,json=lastFCntDown,proto3" json:"last_f_cnt_down,omitempty"` + SessionKeyId []byte `protobuf:"bytes,3,opt,name=session_key_id,json=sessionKeyId,proto3" json:"session_key_id,omitempty"` } -func (m *ApplicationInvalidatedDownlinks) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationInvalidatedDownlinks.Unmarshal(m, b) -} -func (m *ApplicationInvalidatedDownlinks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationInvalidatedDownlinks.Marshal(b, m, deterministic) -} -func (m *ApplicationInvalidatedDownlinks) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationInvalidatedDownlinks.Merge(m, src) + +func (x *ApplicationInvalidatedDownlinks) Reset() { + *x = ApplicationInvalidatedDownlinks{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationInvalidatedDownlinks) XXX_Size() int { - return xxx_messageInfo_ApplicationInvalidatedDownlinks.Size(m) + +func (x *ApplicationInvalidatedDownlinks) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationInvalidatedDownlinks) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationInvalidatedDownlinks.DiscardUnknown(m) + +func (*ApplicationInvalidatedDownlinks) ProtoMessage() {} + +func (x *ApplicationInvalidatedDownlinks) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationInvalidatedDownlinks proto.InternalMessageInfo +// Deprecated: Use ApplicationInvalidatedDownlinks.ProtoReflect.Descriptor instead. +func (*ApplicationInvalidatedDownlinks) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{12} +} -func (m *ApplicationInvalidatedDownlinks) GetDownlinks() []*ApplicationDownlink { - if m != nil { - return m.Downlinks +func (x *ApplicationInvalidatedDownlinks) GetDownlinks() []*ApplicationDownlink { + if x != nil { + return x.Downlinks } return nil } -func (m *ApplicationInvalidatedDownlinks) GetLastFCntDown() uint32 { - if m != nil { - return m.LastFCntDown +func (x *ApplicationInvalidatedDownlinks) GetLastFCntDown() uint32 { + if x != nil { + return x.LastFCntDown } return 0 } -func (m *ApplicationInvalidatedDownlinks) GetSessionKeyId() []byte { - if m != nil { - return m.SessionKeyId +func (x *ApplicationInvalidatedDownlinks) GetSessionKeyId() []byte { + if x != nil { + return x.SessionKeyId } return nil } type DownlinkQueueOperationErrorDetails struct { - DevAddr []byte `protobuf:"bytes,1,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` - SessionKeyId []byte `protobuf:"bytes,2,opt,name=session_key_id,json=sessionKeyId,proto3" json:"session_key_id,omitempty"` - MinFCntDown uint32 `protobuf:"varint,3,opt,name=min_f_cnt_down,json=minFCntDown,proto3" json:"min_f_cnt_down,omitempty"` - PendingDevAddr []byte `protobuf:"bytes,4,opt,name=pending_dev_addr,json=pendingDevAddr,proto3" json:"pending_dev_addr,omitempty"` - PendingSessionKeyId []byte `protobuf:"bytes,5,opt,name=pending_session_key_id,json=pendingSessionKeyId,proto3" json:"pending_session_key_id,omitempty"` - PendingMinFCntDown uint32 `protobuf:"varint,6,opt,name=pending_min_f_cnt_down,json=pendingMinFCntDown,proto3" json:"pending_min_f_cnt_down,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DownlinkQueueOperationErrorDetails) Reset() { *m = DownlinkQueueOperationErrorDetails{} } -func (m *DownlinkQueueOperationErrorDetails) String() string { return proto.CompactTextString(m) } -func (*DownlinkQueueOperationErrorDetails) ProtoMessage() {} -func (*DownlinkQueueOperationErrorDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{13} -} -func (m *DownlinkQueueOperationErrorDetails) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DownlinkQueueOperationErrorDetails.Unmarshal(m, b) -} -func (m *DownlinkQueueOperationErrorDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DownlinkQueueOperationErrorDetails.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DevAddr []byte `protobuf:"bytes,1,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` + SessionKeyId []byte `protobuf:"bytes,2,opt,name=session_key_id,json=sessionKeyId,proto3" json:"session_key_id,omitempty"` + MinFCntDown uint32 `protobuf:"varint,3,opt,name=min_f_cnt_down,json=minFCntDown,proto3" json:"min_f_cnt_down,omitempty"` + PendingDevAddr []byte `protobuf:"bytes,4,opt,name=pending_dev_addr,json=pendingDevAddr,proto3" json:"pending_dev_addr,omitempty"` + PendingSessionKeyId []byte `protobuf:"bytes,5,opt,name=pending_session_key_id,json=pendingSessionKeyId,proto3" json:"pending_session_key_id,omitempty"` + PendingMinFCntDown uint32 `protobuf:"varint,6,opt,name=pending_min_f_cnt_down,json=pendingMinFCntDown,proto3" json:"pending_min_f_cnt_down,omitempty"` } -func (m *DownlinkQueueOperationErrorDetails) XXX_Merge(src proto.Message) { - xxx_messageInfo_DownlinkQueueOperationErrorDetails.Merge(m, src) + +func (x *DownlinkQueueOperationErrorDetails) Reset() { + *x = DownlinkQueueOperationErrorDetails{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DownlinkQueueOperationErrorDetails) XXX_Size() int { - return xxx_messageInfo_DownlinkQueueOperationErrorDetails.Size(m) + +func (x *DownlinkQueueOperationErrorDetails) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DownlinkQueueOperationErrorDetails) XXX_DiscardUnknown() { - xxx_messageInfo_DownlinkQueueOperationErrorDetails.DiscardUnknown(m) + +func (*DownlinkQueueOperationErrorDetails) ProtoMessage() {} + +func (x *DownlinkQueueOperationErrorDetails) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DownlinkQueueOperationErrorDetails proto.InternalMessageInfo +// Deprecated: Use DownlinkQueueOperationErrorDetails.ProtoReflect.Descriptor instead. +func (*DownlinkQueueOperationErrorDetails) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{13} +} -func (m *DownlinkQueueOperationErrorDetails) GetDevAddr() []byte { - if m != nil { - return m.DevAddr +func (x *DownlinkQueueOperationErrorDetails) GetDevAddr() []byte { + if x != nil { + return x.DevAddr } return nil } -func (m *DownlinkQueueOperationErrorDetails) GetSessionKeyId() []byte { - if m != nil { - return m.SessionKeyId +func (x *DownlinkQueueOperationErrorDetails) GetSessionKeyId() []byte { + if x != nil { + return x.SessionKeyId } return nil } -func (m *DownlinkQueueOperationErrorDetails) GetMinFCntDown() uint32 { - if m != nil { - return m.MinFCntDown +func (x *DownlinkQueueOperationErrorDetails) GetMinFCntDown() uint32 { + if x != nil { + return x.MinFCntDown } return 0 } -func (m *DownlinkQueueOperationErrorDetails) GetPendingDevAddr() []byte { - if m != nil { - return m.PendingDevAddr +func (x *DownlinkQueueOperationErrorDetails) GetPendingDevAddr() []byte { + if x != nil { + return x.PendingDevAddr } return nil } -func (m *DownlinkQueueOperationErrorDetails) GetPendingSessionKeyId() []byte { - if m != nil { - return m.PendingSessionKeyId +func (x *DownlinkQueueOperationErrorDetails) GetPendingSessionKeyId() []byte { + if x != nil { + return x.PendingSessionKeyId } return nil } -func (m *DownlinkQueueOperationErrorDetails) GetPendingMinFCntDown() uint32 { - if m != nil { - return m.PendingMinFCntDown +func (x *DownlinkQueueOperationErrorDetails) GetPendingMinFCntDown() uint32 { + if x != nil { + return x.PendingMinFCntDown } return 0 } type ApplicationServiceData struct { - Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"` - Data *types.Struct `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ApplicationServiceData) Reset() { *m = ApplicationServiceData{} } -func (m *ApplicationServiceData) String() string { return proto.CompactTextString(m) } -func (*ApplicationServiceData) ProtoMessage() {} -func (*ApplicationServiceData) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{14} -} -func (m *ApplicationServiceData) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationServiceData.Unmarshal(m, b) -} -func (m *ApplicationServiceData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationServiceData.Marshal(b, m, deterministic) + Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"` + Data *structpb.Struct `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` } -func (m *ApplicationServiceData) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationServiceData.Merge(m, src) + +func (x *ApplicationServiceData) Reset() { + *x = ApplicationServiceData{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationServiceData) XXX_Size() int { - return xxx_messageInfo_ApplicationServiceData.Size(m) + +func (x *ApplicationServiceData) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ApplicationServiceData) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationServiceData.DiscardUnknown(m) + +func (*ApplicationServiceData) ProtoMessage() {} + +func (x *ApplicationServiceData) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ApplicationServiceData proto.InternalMessageInfo +// Deprecated: Use ApplicationServiceData.ProtoReflect.Descriptor instead. +func (*ApplicationServiceData) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{14} +} -func (m *ApplicationServiceData) GetService() string { - if m != nil { - return m.Service +func (x *ApplicationServiceData) GetService() string { + if x != nil { + return x.Service } return "" } -func (m *ApplicationServiceData) GetData() *types.Struct { - if m != nil { - return m.Data +func (x *ApplicationServiceData) GetData() *structpb.Struct { + if x != nil { + return x.Data } return nil } // Application uplink message. type ApplicationUp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + EndDeviceIds *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` CorrelationIds []string `protobuf:"bytes,2,rep,name=correlation_ids,json=correlationIds,proto3" json:"correlation_ids,omitempty"` // Server time when the Application Server received the message. - ReceivedAt *types.Timestamp `protobuf:"bytes,12,opt,name=received_at,json=receivedAt,proto3" json:"received_at,omitempty"` - // Types that are valid to be assigned to Up: + ReceivedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=received_at,json=receivedAt,proto3" json:"received_at,omitempty"` + // Types that are assignable to Up: // *ApplicationUp_UplinkMessage // *ApplicationUp_UplinkNormalized // *ApplicationUp_JoinAccept @@ -1434,216 +1568,228 @@ type ApplicationUp struct { // *ApplicationUp_ServiceData Up isApplicationUp_Up `protobuf_oneof:"up"` // Signals if the message is coming from the Network Server or is simulated. - Simulated bool `protobuf:"varint,14,opt,name=simulated,proto3" json:"simulated,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Simulated bool `protobuf:"varint,14,opt,name=simulated,proto3" json:"simulated,omitempty"` } -func (m *ApplicationUp) Reset() { *m = ApplicationUp{} } -func (m *ApplicationUp) String() string { return proto.CompactTextString(m) } -func (*ApplicationUp) ProtoMessage() {} -func (*ApplicationUp) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{15} -} -func (m *ApplicationUp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationUp.Unmarshal(m, b) -} -func (m *ApplicationUp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationUp.Marshal(b, m, deterministic) -} -func (m *ApplicationUp) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationUp.Merge(m, src) -} -func (m *ApplicationUp) XXX_Size() int { - return xxx_messageInfo_ApplicationUp.Size(m) +func (x *ApplicationUp) Reset() { + *x = ApplicationUp{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ApplicationUp) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationUp.DiscardUnknown(m) + +func (x *ApplicationUp) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_ApplicationUp proto.InternalMessageInfo +func (*ApplicationUp) ProtoMessage() {} -type isApplicationUp_Up interface { - isApplicationUp_Up() +func (x *ApplicationUp) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type ApplicationUp_UplinkMessage struct { - UplinkMessage *ApplicationUplink `protobuf:"bytes,3,opt,name=uplink_message,json=uplinkMessage,proto3,oneof" json:"uplink_message,omitempty"` -} -type ApplicationUp_UplinkNormalized struct { - UplinkNormalized *ApplicationUplinkNormalized `protobuf:"bytes,15,opt,name=uplink_normalized,json=uplinkNormalized,proto3,oneof" json:"uplink_normalized,omitempty"` -} -type ApplicationUp_JoinAccept struct { - JoinAccept *ApplicationJoinAccept `protobuf:"bytes,4,opt,name=join_accept,json=joinAccept,proto3,oneof" json:"join_accept,omitempty"` -} -type ApplicationUp_DownlinkAck struct { - DownlinkAck *ApplicationDownlink `protobuf:"bytes,5,opt,name=downlink_ack,json=downlinkAck,proto3,oneof" json:"downlink_ack,omitempty"` -} -type ApplicationUp_DownlinkNack struct { - DownlinkNack *ApplicationDownlink `protobuf:"bytes,6,opt,name=downlink_nack,json=downlinkNack,proto3,oneof" json:"downlink_nack,omitempty"` -} -type ApplicationUp_DownlinkSent struct { - DownlinkSent *ApplicationDownlink `protobuf:"bytes,7,opt,name=downlink_sent,json=downlinkSent,proto3,oneof" json:"downlink_sent,omitempty"` -} -type ApplicationUp_DownlinkFailed struct { - DownlinkFailed *ApplicationDownlinkFailed `protobuf:"bytes,8,opt,name=downlink_failed,json=downlinkFailed,proto3,oneof" json:"downlink_failed,omitempty"` -} -type ApplicationUp_DownlinkQueued struct { - DownlinkQueued *ApplicationDownlink `protobuf:"bytes,9,opt,name=downlink_queued,json=downlinkQueued,proto3,oneof" json:"downlink_queued,omitempty"` -} -type ApplicationUp_DownlinkQueueInvalidated struct { - DownlinkQueueInvalidated *ApplicationInvalidatedDownlinks `protobuf:"bytes,10,opt,name=downlink_queue_invalidated,json=downlinkQueueInvalidated,proto3,oneof" json:"downlink_queue_invalidated,omitempty"` -} -type ApplicationUp_LocationSolved struct { - LocationSolved *ApplicationLocation `protobuf:"bytes,11,opt,name=location_solved,json=locationSolved,proto3,oneof" json:"location_solved,omitempty"` -} -type ApplicationUp_ServiceData struct { - ServiceData *ApplicationServiceData `protobuf:"bytes,13,opt,name=service_data,json=serviceData,proto3,oneof" json:"service_data,omitempty"` +// Deprecated: Use ApplicationUp.ProtoReflect.Descriptor instead. +func (*ApplicationUp) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{15} } -func (*ApplicationUp_UplinkMessage) isApplicationUp_Up() {} -func (*ApplicationUp_UplinkNormalized) isApplicationUp_Up() {} -func (*ApplicationUp_JoinAccept) isApplicationUp_Up() {} -func (*ApplicationUp_DownlinkAck) isApplicationUp_Up() {} -func (*ApplicationUp_DownlinkNack) isApplicationUp_Up() {} -func (*ApplicationUp_DownlinkSent) isApplicationUp_Up() {} -func (*ApplicationUp_DownlinkFailed) isApplicationUp_Up() {} -func (*ApplicationUp_DownlinkQueued) isApplicationUp_Up() {} -func (*ApplicationUp_DownlinkQueueInvalidated) isApplicationUp_Up() {} -func (*ApplicationUp_LocationSolved) isApplicationUp_Up() {} -func (*ApplicationUp_ServiceData) isApplicationUp_Up() {} - -func (m *ApplicationUp) GetUp() isApplicationUp_Up { - if m != nil { - return m.Up +func (x *ApplicationUp) GetEndDeviceIds() *EndDeviceIdentifiers { + if x != nil { + return x.EndDeviceIds } return nil } -func (m *ApplicationUp) GetEndDeviceIds() *EndDeviceIdentifiers { - if m != nil { - return m.EndDeviceIds +func (x *ApplicationUp) GetCorrelationIds() []string { + if x != nil { + return x.CorrelationIds } return nil } -func (m *ApplicationUp) GetCorrelationIds() []string { - if m != nil { - return m.CorrelationIds +func (x *ApplicationUp) GetReceivedAt() *timestamppb.Timestamp { + if x != nil { + return x.ReceivedAt } return nil } -func (m *ApplicationUp) GetReceivedAt() *types.Timestamp { +func (m *ApplicationUp) GetUp() isApplicationUp_Up { if m != nil { - return m.ReceivedAt + return m.Up } return nil } -func (m *ApplicationUp) GetUplinkMessage() *ApplicationUplink { - if x, ok := m.GetUp().(*ApplicationUp_UplinkMessage); ok { +func (x *ApplicationUp) GetUplinkMessage() *ApplicationUplink { + if x, ok := x.GetUp().(*ApplicationUp_UplinkMessage); ok { return x.UplinkMessage } return nil } -func (m *ApplicationUp) GetUplinkNormalized() *ApplicationUplinkNormalized { - if x, ok := m.GetUp().(*ApplicationUp_UplinkNormalized); ok { +func (x *ApplicationUp) GetUplinkNormalized() *ApplicationUplinkNormalized { + if x, ok := x.GetUp().(*ApplicationUp_UplinkNormalized); ok { return x.UplinkNormalized } return nil } -func (m *ApplicationUp) GetJoinAccept() *ApplicationJoinAccept { - if x, ok := m.GetUp().(*ApplicationUp_JoinAccept); ok { +func (x *ApplicationUp) GetJoinAccept() *ApplicationJoinAccept { + if x, ok := x.GetUp().(*ApplicationUp_JoinAccept); ok { return x.JoinAccept } return nil } -func (m *ApplicationUp) GetDownlinkAck() *ApplicationDownlink { - if x, ok := m.GetUp().(*ApplicationUp_DownlinkAck); ok { +func (x *ApplicationUp) GetDownlinkAck() *ApplicationDownlink { + if x, ok := x.GetUp().(*ApplicationUp_DownlinkAck); ok { return x.DownlinkAck } return nil } -func (m *ApplicationUp) GetDownlinkNack() *ApplicationDownlink { - if x, ok := m.GetUp().(*ApplicationUp_DownlinkNack); ok { +func (x *ApplicationUp) GetDownlinkNack() *ApplicationDownlink { + if x, ok := x.GetUp().(*ApplicationUp_DownlinkNack); ok { return x.DownlinkNack } return nil } -func (m *ApplicationUp) GetDownlinkSent() *ApplicationDownlink { - if x, ok := m.GetUp().(*ApplicationUp_DownlinkSent); ok { +func (x *ApplicationUp) GetDownlinkSent() *ApplicationDownlink { + if x, ok := x.GetUp().(*ApplicationUp_DownlinkSent); ok { return x.DownlinkSent } return nil } -func (m *ApplicationUp) GetDownlinkFailed() *ApplicationDownlinkFailed { - if x, ok := m.GetUp().(*ApplicationUp_DownlinkFailed); ok { +func (x *ApplicationUp) GetDownlinkFailed() *ApplicationDownlinkFailed { + if x, ok := x.GetUp().(*ApplicationUp_DownlinkFailed); ok { return x.DownlinkFailed } return nil } -func (m *ApplicationUp) GetDownlinkQueued() *ApplicationDownlink { - if x, ok := m.GetUp().(*ApplicationUp_DownlinkQueued); ok { +func (x *ApplicationUp) GetDownlinkQueued() *ApplicationDownlink { + if x, ok := x.GetUp().(*ApplicationUp_DownlinkQueued); ok { return x.DownlinkQueued } return nil } -func (m *ApplicationUp) GetDownlinkQueueInvalidated() *ApplicationInvalidatedDownlinks { - if x, ok := m.GetUp().(*ApplicationUp_DownlinkQueueInvalidated); ok { +func (x *ApplicationUp) GetDownlinkQueueInvalidated() *ApplicationInvalidatedDownlinks { + if x, ok := x.GetUp().(*ApplicationUp_DownlinkQueueInvalidated); ok { return x.DownlinkQueueInvalidated } return nil } -func (m *ApplicationUp) GetLocationSolved() *ApplicationLocation { - if x, ok := m.GetUp().(*ApplicationUp_LocationSolved); ok { +func (x *ApplicationUp) GetLocationSolved() *ApplicationLocation { + if x, ok := x.GetUp().(*ApplicationUp_LocationSolved); ok { return x.LocationSolved } return nil } -func (m *ApplicationUp) GetServiceData() *ApplicationServiceData { - if x, ok := m.GetUp().(*ApplicationUp_ServiceData); ok { +func (x *ApplicationUp) GetServiceData() *ApplicationServiceData { + if x, ok := x.GetUp().(*ApplicationUp_ServiceData); ok { return x.ServiceData } return nil } -func (m *ApplicationUp) GetSimulated() bool { - if m != nil { - return m.Simulated +func (x *ApplicationUp) GetSimulated() bool { + if x != nil { + return x.Simulated } return false } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*ApplicationUp) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*ApplicationUp_UplinkMessage)(nil), - (*ApplicationUp_UplinkNormalized)(nil), - (*ApplicationUp_JoinAccept)(nil), - (*ApplicationUp_DownlinkAck)(nil), - (*ApplicationUp_DownlinkNack)(nil), - (*ApplicationUp_DownlinkSent)(nil), - (*ApplicationUp_DownlinkFailed)(nil), - (*ApplicationUp_DownlinkQueued)(nil), - (*ApplicationUp_DownlinkQueueInvalidated)(nil), - (*ApplicationUp_LocationSolved)(nil), - (*ApplicationUp_ServiceData)(nil), - } +type isApplicationUp_Up interface { + isApplicationUp_Up() +} + +type ApplicationUp_UplinkMessage struct { + UplinkMessage *ApplicationUplink `protobuf:"bytes,3,opt,name=uplink_message,json=uplinkMessage,proto3,oneof"` +} + +type ApplicationUp_UplinkNormalized struct { + UplinkNormalized *ApplicationUplinkNormalized `protobuf:"bytes,15,opt,name=uplink_normalized,json=uplinkNormalized,proto3,oneof"` +} + +type ApplicationUp_JoinAccept struct { + JoinAccept *ApplicationJoinAccept `protobuf:"bytes,4,opt,name=join_accept,json=joinAccept,proto3,oneof"` +} + +type ApplicationUp_DownlinkAck struct { + DownlinkAck *ApplicationDownlink `protobuf:"bytes,5,opt,name=downlink_ack,json=downlinkAck,proto3,oneof"` } +type ApplicationUp_DownlinkNack struct { + DownlinkNack *ApplicationDownlink `protobuf:"bytes,6,opt,name=downlink_nack,json=downlinkNack,proto3,oneof"` +} + +type ApplicationUp_DownlinkSent struct { + DownlinkSent *ApplicationDownlink `protobuf:"bytes,7,opt,name=downlink_sent,json=downlinkSent,proto3,oneof"` +} + +type ApplicationUp_DownlinkFailed struct { + DownlinkFailed *ApplicationDownlinkFailed `protobuf:"bytes,8,opt,name=downlink_failed,json=downlinkFailed,proto3,oneof"` +} + +type ApplicationUp_DownlinkQueued struct { + DownlinkQueued *ApplicationDownlink `protobuf:"bytes,9,opt,name=downlink_queued,json=downlinkQueued,proto3,oneof"` +} + +type ApplicationUp_DownlinkQueueInvalidated struct { + DownlinkQueueInvalidated *ApplicationInvalidatedDownlinks `protobuf:"bytes,10,opt,name=downlink_queue_invalidated,json=downlinkQueueInvalidated,proto3,oneof"` +} + +type ApplicationUp_LocationSolved struct { + LocationSolved *ApplicationLocation `protobuf:"bytes,11,opt,name=location_solved,json=locationSolved,proto3,oneof"` +} + +type ApplicationUp_ServiceData struct { + ServiceData *ApplicationServiceData `protobuf:"bytes,13,opt,name=service_data,json=serviceData,proto3,oneof"` +} + +func (*ApplicationUp_UplinkMessage) isApplicationUp_Up() {} + +func (*ApplicationUp_UplinkNormalized) isApplicationUp_Up() {} + +func (*ApplicationUp_JoinAccept) isApplicationUp_Up() {} + +func (*ApplicationUp_DownlinkAck) isApplicationUp_Up() {} + +func (*ApplicationUp_DownlinkNack) isApplicationUp_Up() {} + +func (*ApplicationUp_DownlinkSent) isApplicationUp_Up() {} + +func (*ApplicationUp_DownlinkFailed) isApplicationUp_Up() {} + +func (*ApplicationUp_DownlinkQueued) isApplicationUp_Up() {} + +func (*ApplicationUp_DownlinkQueueInvalidated) isApplicationUp_Up() {} + +func (*ApplicationUp_LocationSolved) isApplicationUp_Up() {} + +func (*ApplicationUp_ServiceData) isApplicationUp_Up() {} + type MessagePayloadFormatters struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Payload formatter for uplink messages, must be set together with its parameter. UpFormatter PayloadFormatter `protobuf:"varint,1,opt,name=up_formatter,json=upFormatter,proto3,enum=ttn.lorawan.v3.PayloadFormatter" json:"up_formatter,omitempty"` // Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration. @@ -1651,340 +1797,1167 @@ type MessagePayloadFormatters struct { // Payload formatter for downlink messages, must be set together with its parameter. DownFormatter PayloadFormatter `protobuf:"varint,3,opt,name=down_formatter,json=downFormatter,proto3,enum=ttn.lorawan.v3.PayloadFormatter" json:"down_formatter,omitempty"` // Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration. - DownFormatterParameter string `protobuf:"bytes,4,opt,name=down_formatter_parameter,json=downFormatterParameter,proto3" json:"down_formatter_parameter,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + DownFormatterParameter string `protobuf:"bytes,4,opt,name=down_formatter_parameter,json=downFormatterParameter,proto3" json:"down_formatter_parameter,omitempty"` } -func (m *MessagePayloadFormatters) Reset() { *m = MessagePayloadFormatters{} } -func (m *MessagePayloadFormatters) String() string { return proto.CompactTextString(m) } -func (*MessagePayloadFormatters) ProtoMessage() {} -func (*MessagePayloadFormatters) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{16} -} -func (m *MessagePayloadFormatters) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MessagePayloadFormatters.Unmarshal(m, b) -} -func (m *MessagePayloadFormatters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MessagePayloadFormatters.Marshal(b, m, deterministic) -} -func (m *MessagePayloadFormatters) XXX_Merge(src proto.Message) { - xxx_messageInfo_MessagePayloadFormatters.Merge(m, src) +func (x *MessagePayloadFormatters) Reset() { + *x = MessagePayloadFormatters{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MessagePayloadFormatters) XXX_Size() int { - return xxx_messageInfo_MessagePayloadFormatters.Size(m) + +func (x *MessagePayloadFormatters) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MessagePayloadFormatters) XXX_DiscardUnknown() { - xxx_messageInfo_MessagePayloadFormatters.DiscardUnknown(m) + +func (*MessagePayloadFormatters) ProtoMessage() {} + +func (x *MessagePayloadFormatters) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MessagePayloadFormatters proto.InternalMessageInfo +// Deprecated: Use MessagePayloadFormatters.ProtoReflect.Descriptor instead. +func (*MessagePayloadFormatters) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{16} +} -func (m *MessagePayloadFormatters) GetUpFormatter() PayloadFormatter { - if m != nil { - return m.UpFormatter +func (x *MessagePayloadFormatters) GetUpFormatter() PayloadFormatter { + if x != nil { + return x.UpFormatter } return PayloadFormatter_FORMATTER_NONE } -func (m *MessagePayloadFormatters) GetUpFormatterParameter() string { - if m != nil { - return m.UpFormatterParameter +func (x *MessagePayloadFormatters) GetUpFormatterParameter() string { + if x != nil { + return x.UpFormatterParameter } return "" } -func (m *MessagePayloadFormatters) GetDownFormatter() PayloadFormatter { - if m != nil { - return m.DownFormatter +func (x *MessagePayloadFormatters) GetDownFormatter() PayloadFormatter { + if x != nil { + return x.DownFormatter } return PayloadFormatter_FORMATTER_NONE } -func (m *MessagePayloadFormatters) GetDownFormatterParameter() string { - if m != nil { - return m.DownFormatterParameter +func (x *MessagePayloadFormatters) GetDownFormatterParameter() string { + if x != nil { + return x.DownFormatterParameter } return "" } type DownlinkQueueRequest struct { - EndDeviceIds *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` - Downlinks []*ApplicationDownlink `protobuf:"bytes,2,rep,name=downlinks,proto3" json:"downlinks,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EndDeviceIds *EndDeviceIdentifiers `protobuf:"bytes,1,opt,name=end_device_ids,json=endDeviceIds,proto3" json:"end_device_ids,omitempty"` + Downlinks []*ApplicationDownlink `protobuf:"bytes,2,rep,name=downlinks,proto3" json:"downlinks,omitempty"` +} + +func (x *DownlinkQueueRequest) Reset() { + *x = DownlinkQueueRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DownlinkQueueRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DownlinkQueueRequest) Reset() { *m = DownlinkQueueRequest{} } -func (m *DownlinkQueueRequest) String() string { return proto.CompactTextString(m) } -func (*DownlinkQueueRequest) ProtoMessage() {} +func (*DownlinkQueueRequest) ProtoMessage() {} + +func (x *DownlinkQueueRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DownlinkQueueRequest.ProtoReflect.Descriptor instead. func (*DownlinkQueueRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_bbc6bff5780bdc9d, []int{17} + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{17} } -func (m *DownlinkQueueRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DownlinkQueueRequest.Unmarshal(m, b) + +func (x *DownlinkQueueRequest) GetEndDeviceIds() *EndDeviceIdentifiers { + if x != nil { + return x.EndDeviceIds + } + return nil } -func (m *DownlinkQueueRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DownlinkQueueRequest.Marshal(b, m, deterministic) + +func (x *DownlinkQueueRequest) GetDownlinks() []*ApplicationDownlink { + if x != nil { + return x.Downlinks + } + return nil } -func (m *DownlinkQueueRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DownlinkQueueRequest.Merge(m, src) + +type ApplicationDownlink_ClassBC struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Possible gateway identifiers, antenna index, and group index to use for this downlink message. + // The Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot. + // If none of the gateways can be selected, the downlink message fails. + // If empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks. + // If group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group. + Gateways []*ClassBCGatewayIdentifiers `protobuf:"bytes,7,rep,name=gateways,proto3" json:"gateways,omitempty"` + // Absolute time when the downlink message should be transmitted. + // This requires the gateway to have GPS time synchronization. + // If the time is in the past or if there is a scheduling conflict, the downlink message fails. + // If null, the time is selected based on slot availability. This is recommended in class B mode. + AbsoluteTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=absolute_time,json=absoluteTime,proto3" json:"absolute_time,omitempty"` } -func (m *DownlinkQueueRequest) XXX_Size() int { - return xxx_messageInfo_DownlinkQueueRequest.Size(m) + +func (x *ApplicationDownlink_ClassBC) Reset() { + *x = ApplicationDownlink_ClassBC{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DownlinkQueueRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DownlinkQueueRequest.DiscardUnknown(m) + +func (x *ApplicationDownlink_ClassBC) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_DownlinkQueueRequest proto.InternalMessageInfo +func (*ApplicationDownlink_ClassBC) ProtoMessage() {} -func (m *DownlinkQueueRequest) GetEndDeviceIds() *EndDeviceIdentifiers { - if m != nil { - return m.EndDeviceIds +func (x *ApplicationDownlink_ClassBC) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_messages_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (m *DownlinkQueueRequest) GetDownlinks() []*ApplicationDownlink { - if m != nil { - return m.Downlinks - } - return nil -} - -func init() { - proto.RegisterEnum("ttn.lorawan.v3.PayloadFormatter", PayloadFormatter_name, PayloadFormatter_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.PayloadFormatter", PayloadFormatter_name, PayloadFormatter_value) - proto.RegisterEnum("ttn.lorawan.v3.TxAcknowledgment_Result", TxAcknowledgment_Result_name, TxAcknowledgment_Result_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.TxAcknowledgment_Result", TxAcknowledgment_Result_name, TxAcknowledgment_Result_value) - proto.RegisterType((*UplinkMessage)(nil), "ttn.lorawan.v3.UplinkMessage") - golang_proto.RegisterType((*UplinkMessage)(nil), "ttn.lorawan.v3.UplinkMessage") - proto.RegisterType((*DownlinkMessage)(nil), "ttn.lorawan.v3.DownlinkMessage") - golang_proto.RegisterType((*DownlinkMessage)(nil), "ttn.lorawan.v3.DownlinkMessage") - proto.RegisterType((*TxAcknowledgment)(nil), "ttn.lorawan.v3.TxAcknowledgment") - golang_proto.RegisterType((*TxAcknowledgment)(nil), "ttn.lorawan.v3.TxAcknowledgment") - proto.RegisterType((*GatewayTxAcknowledgment)(nil), "ttn.lorawan.v3.GatewayTxAcknowledgment") - golang_proto.RegisterType((*GatewayTxAcknowledgment)(nil), "ttn.lorawan.v3.GatewayTxAcknowledgment") - proto.RegisterType((*GatewayUplinkMessage)(nil), "ttn.lorawan.v3.GatewayUplinkMessage") - golang_proto.RegisterType((*GatewayUplinkMessage)(nil), "ttn.lorawan.v3.GatewayUplinkMessage") - proto.RegisterType((*ApplicationUplink)(nil), "ttn.lorawan.v3.ApplicationUplink") - golang_proto.RegisterType((*ApplicationUplink)(nil), "ttn.lorawan.v3.ApplicationUplink") - proto.RegisterMapType((map[string]*Location)(nil), "ttn.lorawan.v3.ApplicationUplink.LocationsEntry") - golang_proto.RegisterMapType((map[string]*Location)(nil), "ttn.lorawan.v3.ApplicationUplink.LocationsEntry") - proto.RegisterType((*ApplicationUplinkNormalized)(nil), "ttn.lorawan.v3.ApplicationUplinkNormalized") - golang_proto.RegisterType((*ApplicationUplinkNormalized)(nil), "ttn.lorawan.v3.ApplicationUplinkNormalized") - proto.RegisterMapType((map[string]*Location)(nil), "ttn.lorawan.v3.ApplicationUplinkNormalized.LocationsEntry") - golang_proto.RegisterMapType((map[string]*Location)(nil), "ttn.lorawan.v3.ApplicationUplinkNormalized.LocationsEntry") - proto.RegisterType((*ApplicationLocation)(nil), "ttn.lorawan.v3.ApplicationLocation") - golang_proto.RegisterType((*ApplicationLocation)(nil), "ttn.lorawan.v3.ApplicationLocation") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.ApplicationLocation.AttributesEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.ApplicationLocation.AttributesEntry") - proto.RegisterType((*ApplicationJoinAccept)(nil), "ttn.lorawan.v3.ApplicationJoinAccept") - golang_proto.RegisterType((*ApplicationJoinAccept)(nil), "ttn.lorawan.v3.ApplicationJoinAccept") - proto.RegisterType((*ApplicationDownlink)(nil), "ttn.lorawan.v3.ApplicationDownlink") - golang_proto.RegisterType((*ApplicationDownlink)(nil), "ttn.lorawan.v3.ApplicationDownlink") - proto.RegisterType((*ApplicationDownlink_ClassBC)(nil), "ttn.lorawan.v3.ApplicationDownlink.ClassBC") - golang_proto.RegisterType((*ApplicationDownlink_ClassBC)(nil), "ttn.lorawan.v3.ApplicationDownlink.ClassBC") - proto.RegisterType((*ApplicationDownlinks)(nil), "ttn.lorawan.v3.ApplicationDownlinks") - golang_proto.RegisterType((*ApplicationDownlinks)(nil), "ttn.lorawan.v3.ApplicationDownlinks") - proto.RegisterType((*ApplicationDownlinkFailed)(nil), "ttn.lorawan.v3.ApplicationDownlinkFailed") - golang_proto.RegisterType((*ApplicationDownlinkFailed)(nil), "ttn.lorawan.v3.ApplicationDownlinkFailed") - proto.RegisterType((*ApplicationInvalidatedDownlinks)(nil), "ttn.lorawan.v3.ApplicationInvalidatedDownlinks") - golang_proto.RegisterType((*ApplicationInvalidatedDownlinks)(nil), "ttn.lorawan.v3.ApplicationInvalidatedDownlinks") - proto.RegisterType((*DownlinkQueueOperationErrorDetails)(nil), "ttn.lorawan.v3.DownlinkQueueOperationErrorDetails") - golang_proto.RegisterType((*DownlinkQueueOperationErrorDetails)(nil), "ttn.lorawan.v3.DownlinkQueueOperationErrorDetails") - proto.RegisterType((*ApplicationServiceData)(nil), "ttn.lorawan.v3.ApplicationServiceData") - golang_proto.RegisterType((*ApplicationServiceData)(nil), "ttn.lorawan.v3.ApplicationServiceData") - proto.RegisterType((*ApplicationUp)(nil), "ttn.lorawan.v3.ApplicationUp") - golang_proto.RegisterType((*ApplicationUp)(nil), "ttn.lorawan.v3.ApplicationUp") - proto.RegisterType((*MessagePayloadFormatters)(nil), "ttn.lorawan.v3.MessagePayloadFormatters") - golang_proto.RegisterType((*MessagePayloadFormatters)(nil), "ttn.lorawan.v3.MessagePayloadFormatters") - proto.RegisterType((*DownlinkQueueRequest)(nil), "ttn.lorawan.v3.DownlinkQueueRequest") - golang_proto.RegisterType((*DownlinkQueueRequest)(nil), "ttn.lorawan.v3.DownlinkQueueRequest") -} - -func init() { proto.RegisterFile("lorawan-stack/api/messages.proto", fileDescriptor_bbc6bff5780bdc9d) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/messages.proto", fileDescriptor_bbc6bff5780bdc9d) -} - -var fileDescriptor_bbc6bff5780bdc9d = []byte{ - // 2773 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0x4f, 0x6c, 0xe3, 0xc6, - 0xd5, 0x37, 0x25, 0x59, 0x7f, 0x9e, 0xfe, 0x98, 0x9e, 0x38, 0x1b, 0xda, 0xd9, 0x64, 0xfd, 0x29, - 0x9b, 0x2f, 0xce, 0xe6, 0xb3, 0xbc, 0x9f, 0xb7, 0xdb, 0xa4, 0xdb, 0x26, 0x5b, 0x49, 0x96, 0xd7, - 0xf2, 0x1f, 0x49, 0x19, 0x69, 0x37, 0xbb, 0x09, 0x52, 0x82, 0x16, 0xc7, 0x32, 0x63, 0x8a, 0x64, - 0x48, 0x4a, 0xb6, 0xb7, 0x28, 0x10, 0xe4, 0xd6, 0x00, 0x3d, 0x34, 0x28, 0x50, 0x34, 0x2d, 0x8a, - 0xa2, 0x05, 0x72, 0x58, 0x14, 0x3d, 0x14, 0xbd, 0xf5, 0x92, 0x4b, 0x81, 0x1c, 0xda, 0x5b, 0x81, - 0x5e, 0x0b, 0xb4, 0x97, 0x06, 0xe8, 0x25, 0xa7, 0xc2, 0x97, 0x14, 0x1c, 0x0e, 0x25, 0x92, 0xd2, - 0xda, 0xd6, 0x26, 0x29, 0xd2, 0x8b, 0x61, 0xce, 0xbc, 0xf7, 0x9b, 0x37, 0x6f, 0xde, 0xfb, 0xbd, - 0x37, 0x23, 0x58, 0x54, 0x75, 0x53, 0x3a, 0x94, 0xb4, 0x65, 0xcb, 0x96, 0xda, 0x07, 0x2b, 0x92, - 0xa1, 0xac, 0x74, 0x89, 0x65, 0x49, 0x1d, 0x62, 0x15, 0x0c, 0x53, 0xb7, 0x75, 0x94, 0xb3, 0x6d, - 0xad, 0xc0, 0xa4, 0x0a, 0xfd, 0x6b, 0x0b, 0xc5, 0x8e, 0x62, 0xef, 0xf7, 0x76, 0x0b, 0x6d, 0xbd, - 0xbb, 0x42, 0xb4, 0xbe, 0x7e, 0x6c, 0x98, 0xfa, 0xd1, 0xf1, 0x0a, 0x15, 0x6e, 0x2f, 0x77, 0x88, - 0xb6, 0xdc, 0x97, 0x54, 0x45, 0x96, 0x6c, 0xb2, 0x32, 0xf2, 0x8f, 0x0b, 0xb9, 0xb0, 0xec, 0x83, - 0xe8, 0xe8, 0x1d, 0xdd, 0x55, 0xde, 0xed, 0xed, 0xd1, 0x2f, 0xfa, 0x41, 0xff, 0x63, 0xe2, 0x65, - 0x9f, 0x78, 0x6b, 0x9f, 0xb4, 0xf6, 0x15, 0xad, 0x63, 0x55, 0x35, 0xb9, 0x67, 0xd9, 0xa6, 0x42, - 0x2c, 0xff, 0xd2, 0x1d, 0x7d, 0xf9, 0x2d, 0x4b, 0xd7, 0x56, 0x24, 0x4d, 0xd3, 0x6d, 0xc9, 0x56, - 0x74, 0x8d, 0x6d, 0x63, 0x61, 0x6d, 0x22, 0x90, 0x3d, 0x55, 0xea, 0x58, 0x63, 0x50, 0x2e, 0x76, - 0x74, 0xbd, 0xa3, 0x92, 0xa1, 0xc1, 0x96, 0x6d, 0xf6, 0xda, 0x36, 0x9b, 0xbd, 0x14, 0x9e, 0xb5, - 0x95, 0x2e, 0xb1, 0x6c, 0xa9, 0x6b, 0x30, 0x81, 0xa7, 0xc3, 0x02, 0x72, 0xcf, 0xa4, 0xf8, 0x6c, - 0xfe, 0xa9, 0xd1, 0xd3, 0x20, 0xa6, 0xa9, 0x9b, 0x6c, 0xfa, 0x99, 0xd1, 0x69, 0x45, 0x26, 0x9a, - 0xad, 0xec, 0x29, 0xc4, 0x1c, 0x98, 0x38, 0x2a, 0x74, 0x40, 0x8e, 0xbd, 0xd9, 0x4b, 0xa3, 0xb3, - 0xde, 0xd9, 0xba, 0x02, 0x63, 0x03, 0xc2, 0x96, 0x64, 0xc9, 0x96, 0x98, 0x44, 0xc1, 0xe7, 0x2a, - 0xdd, 0x20, 0x9a, 0x64, 0x28, 0xfd, 0xd5, 0x15, 0xdd, 0xa0, 0x7e, 0x1a, 0xf5, 0x59, 0xfe, 0xef, - 0x51, 0xc8, 0xde, 0x36, 0x54, 0x45, 0x3b, 0xd8, 0x71, 0x23, 0x0b, 0x5d, 0x82, 0xb4, 0x29, 0x1d, - 0x8a, 0x86, 0x74, 0xac, 0xea, 0x92, 0x2c, 0x70, 0x8b, 0xdc, 0x52, 0x06, 0x83, 0x29, 0x1d, 0x36, - 0xdc, 0x11, 0xf4, 0xff, 0x90, 0xf0, 0x26, 0x23, 0x8b, 0xdc, 0x52, 0x7a, 0xf5, 0x89, 0x42, 0x30, - 0x0a, 0x0b, 0x0c, 0x0a, 0x7b, 0x72, 0xe8, 0xdb, 0x90, 0xb4, 0x88, 0x6d, 0x3b, 0xa7, 0x2a, 0xc4, - 0xa8, 0xce, 0x42, 0x58, 0xa7, 0x75, 0xd4, 0x64, 0x12, 0xa5, 0xe4, 0x49, 0x69, 0xfa, 0x3d, 0x2e, - 0xc2, 0x73, 0x78, 0xa0, 0x85, 0xbe, 0x09, 0x69, 0xf3, 0x48, 0xf4, 0x36, 0x2b, 0x4c, 0x2f, 0x46, - 0xc7, 0x81, 0xe0, 0xa3, 0x1d, 0x26, 0x81, 0xc1, 0x1c, 0xfc, 0x4f, 0x95, 0x49, 0x9b, 0x28, 0x7d, - 0x22, 0x8b, 0x92, 0x2d, 0xc4, 0x99, 0x05, 0xee, 0x79, 0x17, 0xbc, 0xf3, 0x2e, 0xb4, 0xbc, 0x80, - 0xc0, 0xe0, 0x89, 0x17, 0x6d, 0x74, 0x1d, 0x66, 0xda, 0xba, 0x69, 0x12, 0x95, 0xfa, 0x4d, 0x54, - 0x64, 0x4b, 0x48, 0x2c, 0x46, 0x97, 0x52, 0xa5, 0xcc, 0x49, 0x29, 0xf5, 0x3e, 0x17, 0xcf, 0xc7, - 0xcc, 0x88, 0x20, 0xe3, 0x9c, 0x4f, 0xa8, 0x2a, 0x5b, 0xe8, 0x06, 0xcc, 0xc9, 0xa4, 0xaf, 0xb4, - 0x89, 0xd8, 0xde, 0x97, 0x34, 0x8d, 0xa8, 0xa2, 0xa2, 0xc9, 0xe4, 0x48, 0x48, 0x2d, 0x72, 0x4b, - 0x59, 0xba, 0xc5, 0x2b, 0x51, 0xe1, 0x33, 0x0e, 0x23, 0x57, 0xaa, 0xec, 0x0a, 0x55, 0x1d, 0x19, - 0xb4, 0x06, 0x7c, 0x5b, 0xd7, 0xac, 0x5e, 0xd7, 0xb1, 0x57, 0x31, 0x9d, 0x40, 0x15, 0x80, 0x1a, - 0x3d, 0x3f, 0x62, 0xf4, 0x1a, 0x0b, 0x52, 0x3c, 0xe3, 0xa9, 0x14, 0x5d, 0x8d, 0xcd, 0x58, 0x32, - 0xca, 0xc7, 0x36, 0x63, 0xc9, 0x24, 0x9f, 0xca, 0xff, 0x2c, 0x0a, 0x33, 0x6b, 0xfa, 0xa1, 0xf6, - 0x65, 0x1f, 0xf4, 0x26, 0xe4, 0x88, 0x26, 0x8b, 0x6c, 0xe7, 0x8e, 0xaf, 0xa2, 0x54, 0xf3, 0x72, - 0x58, 0xb3, 0xa2, 0xc9, 0x6b, 0x54, 0xa8, 0x3a, 0xcc, 0x11, 0x9c, 0x21, 0xc3, 0x51, 0x0b, 0x5d, - 0x87, 0x84, 0x49, 0xde, 0xee, 0x11, 0xcb, 0x66, 0x31, 0x33, 0x3f, 0x1a, 0x33, 0xd8, 0x15, 0xd8, - 0x98, 0xc2, 0x9e, 0x2c, 0xba, 0x01, 0x29, 0xab, 0xbd, 0x4f, 0xe4, 0x9e, 0x4a, 0x64, 0x61, 0xfa, - 0xac, 0x60, 0xdb, 0x98, 0xc2, 0x43, 0xf1, 0x71, 0x67, 0x1d, 0x3f, 0xc7, 0x59, 0x17, 0x20, 0x67, - 0x11, 0xcb, 0x72, 0x54, 0x0e, 0xc8, 0xb1, 0xa8, 0xc8, 0x42, 0xc2, 0x71, 0x26, 0x3d, 0xe5, 0xfb, - 0x51, 0xe1, 0x1d, 0x1e, 0x67, 0xd8, 0xfc, 0x16, 0x39, 0xae, 0xca, 0xa5, 0x99, 0x61, 0x3a, 0xa0, - 0xe8, 0xbf, 0x4a, 0x5c, 0xfe, 0xfb, 0x51, 0xe0, 0x5b, 0x47, 0xc5, 0xf6, 0x81, 0xa6, 0x1f, 0xaa, - 0x44, 0xee, 0x74, 0x89, 0x36, 0x36, 0xf0, 0xb8, 0x73, 0x18, 0x53, 0x85, 0xb8, 0x49, 0xac, 0x9e, - 0x6a, 0xd3, 0x43, 0xcb, 0xad, 0x3e, 0x37, 0xba, 0xf9, 0xe0, 0x42, 0x05, 0x4c, 0xc5, 0xa9, 0xb5, - 0xef, 0xd2, 0xb4, 0x63, 0x00, 0x68, 0x13, 0x78, 0x99, 0x05, 0x8d, 0xc8, 0x0a, 0x0f, 0x3b, 0xcf, - 0x4b, 0x61, 0xd0, 0x50, 0x70, 0xe1, 0x19, 0x39, 0x38, 0x90, 0xff, 0x90, 0x83, 0xb8, 0xbb, 0x10, - 0x4a, 0x43, 0xa2, 0x79, 0xbb, 0x5c, 0xae, 0x34, 0x9b, 0xfc, 0x14, 0x9a, 0x85, 0xec, 0xed, 0xda, - 0x56, 0xad, 0xfe, 0x5a, 0x4d, 0xac, 0x60, 0x5c, 0xc7, 0x3c, 0x87, 0x32, 0x90, 0x6c, 0xd5, 0xeb, - 0xe2, 0x76, 0xb1, 0x55, 0xe1, 0x23, 0x28, 0x0b, 0x29, 0xe7, 0xab, 0x52, 0xc4, 0xdb, 0xf7, 0xf8, - 0x28, 0x9a, 0x03, 0xbe, 0x5c, 0xdf, 0xde, 0xae, 0x36, 0xab, 0xf5, 0x9a, 0xd8, 0x28, 0x96, 0xb7, - 0x2a, 0x2d, 0x3e, 0x16, 0x1c, 0x2d, 0x55, 0x8a, 0xe5, 0x7a, 0x8d, 0x9f, 0x76, 0x16, 0x6a, 0xdd, - 0x15, 0xd7, 0x71, 0xe5, 0x55, 0x3e, 0x4e, 0x51, 0xef, 0x8a, 0x8d, 0xfa, 0x6b, 0x15, 0xcc, 0x27, - 0x10, 0x0f, 0x99, 0x5b, 0x8d, 0xa6, 0x78, 0xbb, 0xb6, 0x5d, 0x2f, 0x6f, 0x55, 0xd6, 0xf8, 0xe4, - 0x42, 0xfc, 0x93, 0x07, 0xf3, 0x11, 0x81, 0xcb, 0xff, 0x98, 0x83, 0x27, 0x6e, 0x49, 0x36, 0x39, - 0x94, 0x8e, 0x47, 0x8e, 0xa4, 0x0c, 0xe9, 0x8e, 0x3b, 0xc5, 0x8e, 0xc3, 0xf1, 0x45, 0x3e, 0xec, - 0x0b, 0xa6, 0xed, 0x8f, 0x6c, 0xe8, 0x78, 0x63, 0x16, 0x7a, 0x11, 0xe2, 0xf6, 0x91, 0x28, 0xb5, - 0x0f, 0x58, 0x56, 0x2d, 0x9e, 0x75, 0x40, 0x78, 0xda, 0x76, 0x46, 0xf2, 0x26, 0xcc, 0x31, 0xe8, - 0x20, 0x63, 0x17, 0x21, 0xe1, 0x9d, 0x8e, 0x6b, 0xd1, 0x53, 0x61, 0xc4, 0x80, 0xbc, 0x8f, 0x5f, - 0x3d, 0x3d, 0xf4, 0x04, 0x24, 0x76, 0x25, 0x4d, 0x76, 0x42, 0xd7, 0x31, 0x2a, 0x85, 0xe3, 0xce, - 0x67, 0x55, 0xce, 0xff, 0x23, 0x09, 0xb3, 0x45, 0xc3, 0x50, 0x95, 0x36, 0x0d, 0x30, 0x17, 0x68, - 0x4c, 0xc0, 0x73, 0xa7, 0x05, 0x3c, 0xca, 0x43, 0x7c, 0x4f, 0x34, 0x74, 0xd3, 0x8d, 0xc9, 0x6c, - 0x29, 0x7d, 0x52, 0x4a, 0x5e, 0x89, 0x0b, 0x9f, 0x71, 0x2f, 0xfd, 0x95, 0xc3, 0xd3, 0x7b, 0x0d, - 0xdd, 0xb4, 0xd1, 0x63, 0x30, 0xbd, 0x27, 0xb6, 0x35, 0x9b, 0x46, 0x58, 0x16, 0xc7, 0xf6, 0xca, - 0x9a, 0xed, 0x70, 0xd4, 0x9e, 0xd9, 0x1d, 0x70, 0x54, 0xcc, 0xe5, 0xa8, 0x3d, 0xb3, 0xdb, 0x18, - 0x54, 0x96, 0x19, 0x99, 0xb4, 0x75, 0x99, 0xc8, 0x03, 0xa1, 0x69, 0xc6, 0x55, 0x61, 0xa6, 0x6c, - 0xd2, 0x6e, 0x00, 0xe7, 0x98, 0xbc, 0x87, 0xf0, 0x12, 0x08, 0x21, 0x04, 0xf1, 0x50, 0x32, 0x35, - 0x5a, 0xab, 0x32, 0x4e, 0xbe, 0xe1, 0x0b, 0x41, 0x8d, 0xd7, 0xd8, 0x2c, 0x5a, 0x07, 0xa4, 0xe9, - 0x66, 0x57, 0x52, 0x95, 0xfb, 0xbe, 0xe5, 0x67, 0x69, 0x69, 0x7a, 0xe8, 0xf2, 0xb3, 0x43, 0x15, - 0xcf, 0x82, 0x57, 0xe0, 0xc9, 0x51, 0x9c, 0xa1, 0x11, 0x88, 0x1a, 0x31, 0x3f, 0xa2, 0x37, 0xb0, - 0x23, 0x54, 0x1b, 0xe3, 0x13, 0xd5, 0x46, 0x7f, 0x69, 0x4e, 0x3c, 0x72, 0x69, 0xf6, 0x55, 0xd7, - 0xe4, 0x44, 0xd5, 0xf5, 0x45, 0x48, 0x49, 0x86, 0x21, 0x5a, 0x4e, 0x1c, 0xd1, 0xda, 0x98, 0x5e, - 0x7d, 0x32, 0xbc, 0xfe, 0x16, 0x39, 0xae, 0x68, 0x7d, 0xa2, 0xea, 0x06, 0xc1, 0x09, 0xc9, 0x30, - 0x9a, 0x5b, 0xe4, 0x18, 0x2d, 0xc1, 0xac, 0x2a, 0x59, 0xb6, 0x28, 0x89, 0x34, 0x6a, 0x44, 0x87, - 0x6f, 0x68, 0x91, 0xcc, 0xe2, 0xac, 0x33, 0x51, 0x5c, 0x2f, 0x6b, 0xb6, 0xc3, 0x4a, 0xe8, 0x22, - 0xa4, 0xda, 0xba, 0xb6, 0xa7, 0x98, 0x5d, 0x22, 0x0b, 0xe9, 0x45, 0x6e, 0x29, 0x89, 0x87, 0x03, - 0x63, 0x6b, 0x6d, 0x76, 0xd2, 0x5a, 0x8b, 0x6a, 0x90, 0x52, 0x75, 0x37, 0x45, 0x2c, 0x21, 0x47, - 0x0f, 0xe0, 0x6a, 0x78, 0x1b, 0x23, 0x69, 0x54, 0xd8, 0xf6, 0x54, 0x2a, 0x9a, 0x6d, 0x1e, 0xe3, - 0x21, 0x04, 0xda, 0x86, 0x74, 0x9f, 0x98, 0x96, 0xc7, 0xfb, 0x33, 0xd4, 0xa0, 0x17, 0x1e, 0x5a, - 0x44, 0xef, 0xb8, 0xb2, 0x01, 0xc6, 0xe9, 0x7b, 0x63, 0x96, 0x43, 0x5b, 0x1a, 0xb1, 0x0f, 0x75, - 0xf3, 0x80, 0xa2, 0xf1, 0xe3, 0x69, 0xab, 0xe6, 0x8a, 0x04, 0x40, 0x34, 0x6f, 0xcc, 0x5a, 0xb8, - 0x03, 0xb9, 0xa0, 0xbd, 0x88, 0x87, 0xa8, 0x73, 0x6a, 0x1c, 0x25, 0x0c, 0xe7, 0x5f, 0x54, 0x80, - 0xe9, 0xbe, 0xa4, 0xf6, 0x08, 0x63, 0x36, 0x21, 0xbc, 0x84, 0x07, 0x80, 0x5d, 0xb1, 0x1b, 0x91, - 0x97, 0xb8, 0x1b, 0xc9, 0x4f, 0x1f, 0xcc, 0xc7, 0x92, 0x1c, 0xcf, 0xe5, 0x7f, 0x97, 0x80, 0x27, - 0x47, 0x9c, 0x54, 0x1b, 0x84, 0xfd, 0xc4, 0xac, 0x73, 0x39, 0xc4, 0x3a, 0xd9, 0x93, 0x12, 0x5c, - 0x49, 0x0a, 0x9f, 0x71, 0x4b, 0x9f, 0x9f, 0x77, 0x1a, 0x63, 0x73, 0xff, 0x74, 0xea, 0xf1, 0x65, - 0xcf, 0xe4, 0x2c, 0x10, 0x9f, 0x90, 0x05, 0x12, 0x8f, 0xcc, 0x02, 0xc9, 0x47, 0x62, 0x81, 0x4a, - 0x90, 0x05, 0x52, 0x67, 0xb1, 0x00, 0x05, 0xf9, 0x2d, 0x17, 0x49, 0x72, 0x01, 0x3e, 0x08, 0x24, - 0x2b, 0x9c, 0x27, 0x59, 0xd3, 0x13, 0x27, 0xeb, 0x5d, 0x7f, 0xb2, 0x66, 0xa8, 0x9f, 0x6e, 0x9c, - 0x99, 0xac, 0xc3, 0x38, 0x3c, 0x7f, 0xda, 0x66, 0xbf, 0xd0, 0xb4, 0xcd, 0x7d, 0x25, 0xd3, 0x76, - 0x2a, 0xff, 0x87, 0x08, 0x3c, 0xe6, 0x73, 0x97, 0x27, 0x8c, 0x04, 0x48, 0x58, 0xc4, 0x74, 0xf6, - 0xc9, 0xd6, 0xf2, 0x3e, 0xd1, 0x2b, 0x90, 0xf4, 0x7c, 0x76, 0xd6, 0x92, 0xfe, 0x58, 0xf3, 0x74, - 0xd0, 0x7b, 0x1c, 0x80, 0x64, 0xdb, 0xa6, 0xb2, 0xdb, 0xb3, 0x89, 0x73, 0xc5, 0x70, 0x8e, 0xf0, - 0xda, 0x29, 0x47, 0xe8, 0xa1, 0x15, 0x8a, 0x03, 0x2d, 0xea, 0x8b, 0xd2, 0xf5, 0x93, 0xd2, 0xea, - 0x07, 0xdc, 0x0a, 0x0f, 0xf9, 0xcb, 0x66, 0x5e, 0xb8, 0xbc, 0xfa, 0xf4, 0x77, 0xde, 0x90, 0x96, - 0xef, 0x5f, 0x5d, 0xfe, 0xc6, 0x9b, 0x4b, 0x37, 0x6f, 0xbc, 0xb1, 0xfc, 0xe6, 0x4d, 0xef, 0xf3, - 0xf9, 0xef, 0xae, 0xfe, 0xdf, 0xf7, 0x2e, 0x5f, 0x99, 0x36, 0xa3, 0xc2, 0xc7, 0x1c, 0xf6, 0xad, - 0xbe, 0xf0, 0x32, 0xcc, 0x84, 0x50, 0xc7, 0x78, 0x78, 0xce, 0xef, 0xe1, 0xd4, 0x78, 0x3f, 0xfe, - 0x39, 0x02, 0x8f, 0xfb, 0x6c, 0xde, 0xd4, 0x15, 0xad, 0xd8, 0x6e, 0x13, 0xc3, 0x9e, 0x98, 0xf8, - 0x02, 0x45, 0x35, 0x32, 0x41, 0x51, 0xbd, 0x0b, 0x8f, 0x2b, 0x9a, 0xf7, 0x1e, 0x24, 0x8b, 0x5e, - 0x0f, 0xef, 0xb9, 0xf8, 0x99, 0x53, 0x5c, 0xec, 0x5d, 0x00, 0xf0, 0x9c, 0x0f, 0xc1, 0x1b, 0xb4, - 0xd0, 0x73, 0x30, 0x63, 0x10, 0x4d, 0x56, 0xb4, 0x8e, 0xc8, 0x4c, 0xa5, 0xa4, 0x9a, 0xc4, 0x39, - 0x36, 0xdc, 0x74, 0x47, 0xc3, 0x3c, 0x92, 0x7c, 0x34, 0x1e, 0xf1, 0xb9, 0xf5, 0x9f, 0x89, 0x40, - 0x78, 0x7a, 0x26, 0xa1, 0x3f, 0x71, 0x0f, 0xf1, 0xea, 0x87, 0x9c, 0xe7, 0xd6, 0x4f, 0x1f, 0xcc, - 0xff, 0x84, 0x5b, 0xa8, 0x3d, 0xc2, 0xe3, 0x14, 0xfd, 0x6b, 0xa8, 0xbd, 0x8e, 0xa2, 0x15, 0x6a, - 0xe4, 0x70, 0x83, 0x1c, 0x95, 0x8e, 0x6d, 0x62, 0xad, 0xab, 0x52, 0x27, 0x7f, 0xeb, 0x73, 0xe2, - 0xdd, 0x22, 0x36, 0x05, 0xfb, 0xa2, 0x7a, 0xec, 0x8f, 0xb8, 0x31, 0xc5, 0xae, 0xf4, 0x73, 0xee, - 0x2b, 0xbe, 0xfb, 0xff, 0xdc, 0x2d, 0x00, 0x4e, 0xbd, 0x05, 0x04, 0x2a, 0x56, 0x3c, 0x5c, 0xb1, - 0x6e, 0x41, 0xaa, 0xad, 0x4a, 0x96, 0x25, 0xee, 0x8a, 0x6d, 0xd6, 0x5f, 0xbf, 0x70, 0x8e, 0x2c, - 0x2a, 0x94, 0x1d, 0xa5, 0x52, 0x19, 0x27, 0xda, 0xee, 0x3f, 0x68, 0x03, 0x92, 0x86, 0xa9, 0xe8, - 0xa6, 0x62, 0x1f, 0xd3, 0xa4, 0xc8, 0x8d, 0x56, 0x82, 0xd6, 0x51, 0x93, 0xbd, 0x64, 0x34, 0x98, - 0xa4, 0xef, 0x4e, 0x3f, 0xd0, 0x1e, 0xf7, 0xae, 0x90, 0x3a, 0xfb, 0x5d, 0x61, 0xe1, 0xa7, 0x1c, - 0x24, 0x98, 0x55, 0xa8, 0x02, 0x49, 0x76, 0xa1, 0xb5, 0x58, 0xa3, 0xf1, 0x7c, 0xd8, 0x18, 0x26, - 0x3a, 0xe6, 0x2e, 0x3c, 0x50, 0x45, 0x37, 0x21, 0x2b, 0xed, 0x5a, 0xba, 0xda, 0xb3, 0x89, 0x48, - 0x6b, 0xf9, 0xd9, 0x77, 0x87, 0x8c, 0xa7, 0xe0, 0x0c, 0x0d, 0x7b, 0x47, 0x5f, 0x17, 0x79, 0x0f, - 0xe6, 0xc6, 0x38, 0xd4, 0x42, 0x45, 0x48, 0x0d, 0xf9, 0x8c, 0x3b, 0x3f, 0x9f, 0x0d, 0xb5, 0xf2, - 0xbf, 0xe1, 0x60, 0x7e, 0x8c, 0xc8, 0xba, 0xa4, 0xa8, 0x44, 0x46, 0x55, 0x48, 0x7a, 0xa2, 0xec, - 0x1e, 0x7e, 0x1e, 0x7c, 0x7f, 0x81, 0xf3, 0xd4, 0xd1, 0xb7, 0x60, 0x9a, 0x3e, 0x2d, 0x33, 0xf2, - 0xbe, 0x38, 0xd2, 0x41, 0x38, 0x93, 0x6b, 0xc4, 0x96, 0x14, 0xd5, 0xdf, 0x8d, 0xb9, 0x4a, 0xfe, - 0xd2, 0xcc, 0xc1, 0x25, 0xdf, 0x9a, 0xd5, 0x71, 0xcc, 0xfc, 0xf9, 0xfd, 0x82, 0x9e, 0x85, 0x19, - 0x7a, 0x17, 0xf3, 0xdd, 0xc4, 0x28, 0x07, 0xe1, 0x8c, 0x33, 0x3c, 0xb8, 0x88, 0x8d, 0x96, 0xb1, - 0xe8, 0x69, 0x65, 0xcc, 0xb7, 0x8f, 0x1f, 0x4e, 0x43, 0xde, 0x5b, 0xf8, 0xd5, 0x1e, 0xe9, 0x91, - 0xba, 0x41, 0xdc, 0xee, 0xce, 0xef, 0x09, 0xf4, 0x31, 0x07, 0x49, 0x99, 0xf4, 0x45, 0x49, 0x96, - 0x4d, 0x46, 0xe6, 0xbf, 0xe6, 0xde, 0x2f, 0xce, 0x6f, 0x42, 0x7e, 0xf5, 0xeb, 0x57, 0xaf, 0x16, - 0x4b, 0xe5, 0xb5, 0xfc, 0x07, 0x11, 0x2e, 0xf1, 0xcb, 0x48, 0xdc, 0x61, 0x1b, 0xad, 0x73, 0x52, - 0x8a, 0xdf, 0x8f, 0xed, 0xc7, 0x0c, 0xee, 0x93, 0x07, 0xf3, 0xef, 0x72, 0x70, 0xb3, 0xa3, 0x17, - 0xec, 0x7d, 0x62, 0x53, 0x4e, 0x2a, 0xb0, 0x26, 0x6a, 0x25, 0xf8, 0xe6, 0xde, 0xbf, 0xb6, 0x62, - 0x1c, 0x74, 0x56, 0xec, 0x63, 0x83, 0x58, 0x85, 0x1d, 0xc9, 0xb4, 0xf6, 0x25, 0x75, 0xa3, 0x72, - 0x97, 0x72, 0x12, 0x9a, 0x18, 0xe0, 0xb6, 0xd6, 0x75, 0x21, 0xbe, 0xe6, 0x92, 0x5a, 0x42, 0x26, - 0xfd, 0xa2, 0x2c, 0x9b, 0x63, 0x7c, 0x15, 0x39, 0xb5, 0xe4, 0x3f, 0x03, 0xb9, 0xae, 0xa2, 0xf9, - 0x4f, 0xc0, 0xa5, 0xf8, 0x74, 0x57, 0xd1, 0x06, 0x07, 0xf0, 0x17, 0x0e, 0x78, 0xaf, 0x0a, 0x0f, - 0xfc, 0x14, 0xfb, 0x6f, 0xf4, 0x93, 0xd7, 0x35, 0xac, 0x31, 0x77, 0xbd, 0x0c, 0x17, 0x42, 0xed, - 0x85, 0xe7, 0xb6, 0xe9, 0x90, 0xdb, 0x1e, 0x0b, 0xf6, 0x1b, 0xae, 0xf7, 0x56, 0x87, 0xea, 0x21, - 0x2f, 0xc6, 0xa9, 0x17, 0x11, 0x9b, 0xdd, 0x19, 0x3a, 0x33, 0xaf, 0xc0, 0x05, 0x5f, 0x5a, 0x34, - 0xdd, 0xd6, 0x76, 0xcd, 0xb9, 0x4c, 0x3d, 0xbc, 0xf1, 0x7d, 0x01, 0x62, 0xf4, 0x72, 0x16, 0x39, - 0xbd, 0x38, 0x51, 0x21, 0x5f, 0xf8, 0xff, 0x28, 0x05, 0xd9, 0xc0, 0x85, 0x04, 0xb5, 0x46, 0xde, - 0xd9, 0xb9, 0xf3, 0xbf, 0xb3, 0xfb, 0x18, 0x23, 0xfc, 0xe2, 0x3e, 0x52, 0x19, 0x22, 0xe7, 0x78, - 0x71, 0x0e, 0x3d, 0x00, 0x65, 0x26, 0x7a, 0x00, 0xda, 0x84, 0x5c, 0xcf, 0x18, 0xf3, 0xc2, 0xfc, - 0x3f, 0x67, 0xde, 0xc8, 0x36, 0xa6, 0x70, 0xb6, 0x17, 0x78, 0x08, 0x7d, 0x1d, 0x66, 0x19, 0xd6, - 0xf0, 0x9a, 0xfc, 0xb0, 0xb7, 0x93, 0x53, 0x2e, 0x78, 0x1b, 0x53, 0x98, 0xef, 0x85, 0x1f, 0x1f, - 0x36, 0x20, 0xfd, 0x96, 0xae, 0x68, 0xa2, 0x44, 0x5b, 0x72, 0xf6, 0x8b, 0xc4, 0xb3, 0xa7, 0xa0, - 0x0e, 0xfb, 0xf7, 0x8d, 0x29, 0x0c, 0x6f, 0x0d, 0xbb, 0xf9, 0x0d, 0xc8, 0x0c, 0x5e, 0xd5, 0xa5, - 0xf6, 0x01, 0xeb, 0x54, 0xce, 0xc3, 0xb9, 0x1b, 0x53, 0x38, 0xed, 0xa9, 0x16, 0xdb, 0x07, 0x68, - 0x13, 0xb2, 0x03, 0x24, 0xcd, 0x81, 0x8a, 0x4f, 0x02, 0x35, 0xb0, 0xa2, 0x26, 0x85, 0xb0, 0x2c, - 0xa2, 0xd9, 0xac, 0x59, 0x99, 0x14, 0xab, 0x49, 0x34, 0x1b, 0xb5, 0x60, 0xf0, 0xfc, 0x2f, 0xee, - 0xd1, 0xe2, 0xc8, 0x2a, 0xfb, 0xf3, 0xe7, 0x40, 0x73, 0xab, 0xe9, 0xc6, 0x14, 0xce, 0xc9, 0xc1, - 0xfa, 0x5a, 0xf3, 0xa1, 0xbe, 0xed, 0x14, 0x01, 0x99, 0xbd, 0x32, 0x9c, 0xd3, 0xc6, 0x01, 0x1e, - 0xad, 0x20, 0x32, 0xd2, 0x61, 0x21, 0x88, 0x27, 0xfa, 0x6e, 0x2e, 0xec, 0xf7, 0xb6, 0x95, 0x53, - 0xa0, 0xc7, 0x55, 0xd3, 0x8d, 0x29, 0x2c, 0x04, 0x96, 0xf1, 0x09, 0x39, 0x1b, 0xf0, 0xae, 0xb0, - 0xa2, 0xa5, 0xab, 0x7d, 0xf6, 0x1c, 0x79, 0xfa, 0x06, 0xbc, 0xab, 0xab, 0xb3, 0x01, 0x4f, 0xbb, - 0x49, 0x95, 0xd1, 0x16, 0x64, 0x18, 0xb1, 0x88, 0x94, 0x55, 0xdc, 0xe7, 0x86, 0xff, 0x3d, 0x05, - 0xcc, 0xc7, 0x52, 0x4e, 0x2c, 0x59, 0x3e, 0xd2, 0xba, 0x08, 0x29, 0x4b, 0xe9, 0xf6, 0x54, 0xba, - 0xf9, 0x9c, 0xdb, 0xc6, 0x0e, 0x06, 0x86, 0x5c, 0x54, 0x4a, 0x41, 0xa4, 0x67, 0xb8, 0xbf, 0x5a, - 0xfd, 0x31, 0x02, 0x02, 0x4b, 0x3d, 0xd6, 0x14, 0xaf, 0x3b, 0xf9, 0x62, 0xdb, 0xc4, 0xb4, 0xd0, - 0x0e, 0x64, 0x7a, 0x86, 0xb8, 0xe7, 0x0d, 0x50, 0x7e, 0xca, 0x8d, 0xfe, 0xd6, 0x11, 0x56, 0xf4, - 0x75, 0xac, 0xe9, 0x9e, 0x31, 0x18, 0x46, 0x37, 0xe1, 0x82, 0x1f, 0x4e, 0x34, 0x24, 0x53, 0xea, - 0x12, 0x07, 0x98, 0xde, 0xa8, 0x4b, 0xa9, 0x93, 0x52, 0xdc, 0x8c, 0x09, 0xef, 0x7c, 0x14, 0xc1, - 0x73, 0x3e, 0xbd, 0x86, 0x27, 0x86, 0x5e, 0x05, 0x7a, 0xfe, 0x3e, 0x8b, 0xa2, 0x13, 0x5b, 0x44, - 0x33, 0x64, 0x68, 0x53, 0x19, 0x84, 0x20, 0xa4, 0xcf, 0xaa, 0x58, 0xd8, 0xaa, 0x0b, 0x01, 0xdd, - 0x81, 0x5d, 0xbe, 0xc6, 0xf5, 0xf7, 0x1c, 0xcc, 0x05, 0x9a, 0x1c, 0xf6, 0xe3, 0xe6, 0x97, 0x44, - 0xf6, 0x3b, 0xfe, 0xbe, 0x2f, 0x72, 0xee, 0xbe, 0xaf, 0x04, 0x27, 0xa5, 0xc4, 0xfb, 0x5c, 0x8c, - 0xff, 0xc5, 0x0f, 0xe2, 0xbe, 0x1e, 0xf0, 0xca, 0xaf, 0x38, 0xe0, 0xc3, 0xae, 0x43, 0x08, 0x72, - 0xeb, 0x75, 0xbc, 0x53, 0x6c, 0xb5, 0x2a, 0x58, 0xac, 0xd5, 0x6b, 0x15, 0x7e, 0x0a, 0x09, 0x30, - 0x37, 0x1c, 0xc3, 0x95, 0x46, 0xbd, 0x59, 0x6d, 0xd5, 0xf1, 0x3d, 0x9e, 0x43, 0x0b, 0x70, 0x61, - 0x38, 0x73, 0x0b, 0x37, 0xca, 0x62, 0xb3, 0x82, 0xef, 0x54, 0xcb, 0x15, 0x3e, 0x12, 0xd4, 0xda, - 0x2c, 0xde, 0x29, 0x36, 0xcb, 0xb8, 0xda, 0x68, 0xf1, 0xd1, 0xe0, 0x4c, 0xb9, 0x78, 0xaf, 0x52, - 0xab, 0x55, 0xb6, 0x1b, 0x0d, 0x3e, 0xb6, 0x30, 0xfb, 0xc9, 0x83, 0xf9, 0xac, 0xc0, 0x5d, 0x49, - 0x0d, 0xe6, 0x4b, 0xd7, 0x3f, 0xfa, 0xdb, 0xd3, 0xdc, 0xeb, 0x2b, 0x13, 0xb4, 0x1f, 0xb6, 0x66, - 0xec, 0xee, 0xc6, 0x69, 0x11, 0xbb, 0xf6, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0b, 0x0b, 0x7a, - 0x8c, 0x91, 0x23, 0x00, 0x00, +// Deprecated: Use ApplicationDownlink_ClassBC.ProtoReflect.Descriptor instead. +func (*ApplicationDownlink_ClassBC) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_messages_proto_rawDescGZIP(), []int{9, 0} +} + +func (x *ApplicationDownlink_ClassBC) GetGateways() []*ClassBCGatewayIdentifiers { + if x != nil { + return x.Gateways + } + return nil +} + +func (x *ApplicationDownlink_ClassBC) GetAbsoluteTime() *timestamppb.Timestamp { + if x != nil { + return x.AbsoluteTime + } + return nil +} + +var File_lorawan_stack_api_messages_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_messages_proto_rawDesc = []byte{ + 0x0a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, + 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, + 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, + 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xe4, 0x03, 0x0a, 0x0d, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x40, 0x0a, 0x08, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x72, + 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x52, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x72, 0x78, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, + 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, + 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x3a, 0x0a, 0x14, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, + 0x03, 0x18, 0xff, 0x01, 0x52, 0x12, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, + 0x75, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, + 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x41, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x4a, 0x04, + 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x22, 0x9c, 0x03, 0x0a, 0x0f, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, + 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x31, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x12, 0x4a, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x35, + 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x07, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x64, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, + 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x42, 0x0f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x89, 0x03, 0x0a, 0x10, 0x54, 0x78, + 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x35, + 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, + 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x49, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, + 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x4a, 0x0a, 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa6, 0x01, 0x0a, + 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, + 0x53, 0x53, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x4f, 0x4f, 0x5f, 0x4c, + 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x4f, 0x4f, 0x5f, 0x45, 0x41, 0x52, + 0x4c, 0x59, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4c, 0x4c, 0x49, 0x53, 0x49, 0x4f, + 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, + 0x4c, 0x4c, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x10, 0x05, + 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x58, 0x5f, 0x46, 0x52, 0x45, 0x51, 0x10, 0x06, 0x12, 0x0c, 0x0a, + 0x08, 0x54, 0x58, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x47, + 0x50, 0x53, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x08, 0x1a, 0x06, 0xea, + 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x97, 0x01, 0x0a, 0x17, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x37, 0x0a, 0x06, 0x74, 0x78, 0x5f, 0x61, 0x63, 0x6b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, + 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x74, 0x78, 0x41, 0x63, 0x6b, 0x22, + 0x72, 0x0a, 0x14, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x61, + 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x6e, + 0x64, 0x49, 0x64, 0x22, 0xe9, 0x08, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x66, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x2a, 0x06, + 0x18, 0xff, 0x01, 0x38, 0xe0, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x13, 0x0a, + 0x05, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x66, 0x43, + 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6d, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x12, 0x40, 0x0a, 0x0f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0e, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, + 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, + 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, + 0x46, 0x0a, 0x12, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x52, 0x11, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3e, 0x0a, 0x1b, 0x6e, 0x6f, 0x72, 0x6d, 0x61, + 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x77, 0x61, + 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x19, 0x6e, 0x6f, + 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x57, + 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x78, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x72, 0x78, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x73, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, + 0x6f, 0x70, 0x65, 0x52, 0x07, 0x61, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x11, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, + 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x46, 0x43, + 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, + 0x6d, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x72, 0x6d, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, + 0x5f, 0x61, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x75, + 0x6d, 0x65, 0x64, 0x41, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x09, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, + 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0b, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x52, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x73, 0x1a, 0x56, 0x0a, + 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, + 0xb4, 0x07, 0x0a, 0x1b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, + 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, + 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, + 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, + 0x24, 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x0d, 0xfa, 0x42, 0x0a, 0x2a, 0x08, 0x18, 0xff, 0x01, 0x28, 0x01, 0x38, 0xe0, 0x01, 0x52, 0x05, + 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x66, 0x43, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, + 0x6d, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0a, 0x66, 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x50, 0x0a, 0x12, 0x6e, + 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x6e, 0x6f, 0x72, 0x6d, + 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3e, 0x0a, + 0x1b, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x19, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, + 0x0b, 0x72, 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0a, + 0x72, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x08, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x45, 0x0a, 0x0b, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, + 0x64, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x69, + 0x72, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, + 0x41, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x72, + 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, + 0x43, 0x0a, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x49, 0x64, 0x73, 0x1a, 0x56, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0xc5, 0x02, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x8a, 0x01, 0x0a, 0x0a, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, + 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, + 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, + 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0xd4, + 0x02, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, + 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, + 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, + 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x07, 0x61, 0x70, 0x70, 0x53, 0x4b, 0x65, + 0x79, 0x12, 0x58, 0x0a, 0x15, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x14, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, + 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0xed, 0x07, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0xcd, 0x01, + 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa6, 0x01, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, + 0x10, 0xf2, 0xaa, 0x19, 0x99, 0x01, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, + 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, + 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4e, 0x65, 0x77, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, + 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, + 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, + 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x22, 0x0a, + 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0b, 0xfa, + 0x42, 0x08, 0x2a, 0x06, 0x18, 0xff, 0x01, 0x38, 0xe0, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, + 0x74, 0x12, 0x13, 0x0a, 0x05, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x04, 0x66, 0x43, 0x6e, 0x74, 0x12, 0xc0, 0x01, 0x0a, 0x0b, 0x66, 0x72, 0x6d, 0x5f, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x9e, 0x01, 0xf2, + 0xaa, 0x19, 0x99, 0x01, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, + 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4e, 0x65, 0x77, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x46, 0x6c, 0x61, 0x67, 0x22, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, + 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x0a, 0x66, + 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x40, 0x0a, 0x0f, 0x64, 0x65, 0x63, + 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0e, 0x64, 0x65, 0x63, + 0x6f, 0x64, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x64, + 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x77, + 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x64, + 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x57, 0x61, 0x72, + 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, + 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, + 0x6d, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x62, 0x5f, 0x63, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x42, 0x43, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x43, 0x12, 0x48, 0x0a, 0x08, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x54, 0x78, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, + 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x1a, 0x9b, 0x01, + 0x0a, 0x07, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x43, 0x12, 0x45, 0x0a, 0x08, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x42, 0x43, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, + 0x12, 0x3f, 0x0a, 0x0d, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x59, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x41, 0x0a, + 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, + 0x22, 0xae, 0x01, 0x0a, 0x19, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x49, + 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x3c, 0x0a, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, + 0x00, 0x22, 0xc5, 0x01, 0x0a, 0x1f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, + 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x09, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x25, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, + 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, + 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x3a, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0x91, 0x05, 0x0a, 0x22, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0xc8, 0x01, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0xac, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, + 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, + 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, + 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x2e, 0x0a, 0x0e, 0x73, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0e, 0x6d, + 0x69, 0x6e, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, + 0x12, 0xd7, 0x01, 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x76, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xac, 0x01, 0xfa, 0x42, + 0x06, 0x7a, 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, + 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, + 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, + 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, + 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x70, 0x65, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x3d, 0x0a, 0x16, 0x70, 0x65, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, + 0x03, 0x18, 0x80, 0x10, 0x52, 0x13, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x16, 0x70, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, + 0x6f, 0x77, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x70, 0x65, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x4d, 0x69, 0x6e, 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x22, 0x69, 0x0a, + 0x16, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x08, + 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0x94, 0x09, 0x0a, 0x0d, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, + 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, + 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, + 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x4a, 0x0a, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x48, + 0x00, 0x52, 0x0d, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x5a, 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, + 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, + 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x48, 0x00, 0x52, 0x10, 0x75, 0x70, 0x6c, 0x69, + 0x6e, 0x6b, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x0b, + 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, + 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, + 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x48, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, + 0x6b, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x6b, + 0x12, 0x4a, 0x0a, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x63, + 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x0c, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x61, 0x63, 0x6b, 0x12, 0x4a, 0x0a, 0x0d, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x54, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0e, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x4e, + 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, + 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x0e, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x12, 0x6f, + 0x0a, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, + 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x73, 0x48, 0x00, 0x52, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x4e, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x12, + 0x4b, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, + 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, + 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, + 0x08, 0x01, 0x10, 0x00, 0x42, 0x09, 0x0a, 0x02, 0x75, 0x70, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, + 0xcc, 0x02, 0x0a, 0x18, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x0c, + 0x75, 0x70, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, + 0x75, 0x70, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x16, 0x75, + 0x70, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, + 0x72, 0x04, 0x18, 0x80, 0xc0, 0x02, 0x52, 0x14, 0x75, 0x70, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x0e, + 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x12, + 0x43, 0x0a, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x18, 0x80, 0xc0, 0x02, 0x52, 0x16, 0x64, 0x6f, + 0x77, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xbb, + 0x01, 0x0a, 0x14, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x4d, 0x0a, + 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, 0x10, 0xa0, 0x8d, + 0x06, 0x52, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x2a, 0xa3, 0x01, 0x0a, + 0x10, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, 0x45, 0x52, 0x5f, 0x4e, + 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, + 0x45, 0x52, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x4f, 0x52, 0x59, 0x10, 0x01, 0x12, + 0x1a, 0x0a, 0x16, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, 0x45, 0x52, 0x5f, 0x47, 0x52, 0x50, + 0x43, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x46, + 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, 0x45, 0x52, 0x5f, 0x4a, 0x41, 0x56, 0x41, 0x53, 0x43, 0x52, + 0x49, 0x50, 0x54, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, + 0x45, 0x52, 0x5f, 0x43, 0x41, 0x59, 0x45, 0x4e, 0x4e, 0x45, 0x4c, 0x50, 0x50, 0x10, 0x04, 0x1a, + 0x11, 0xea, 0xaa, 0x19, 0x0d, 0x18, 0x01, 0x2a, 0x09, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, + 0x45, 0x52, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_lorawan_stack_api_messages_proto_rawDescOnce sync.Once + file_lorawan_stack_api_messages_proto_rawDescData = file_lorawan_stack_api_messages_proto_rawDesc +) + +func file_lorawan_stack_api_messages_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_messages_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_messages_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_messages_proto_rawDescData) + }) + return file_lorawan_stack_api_messages_proto_rawDescData +} + +var file_lorawan_stack_api_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_lorawan_stack_api_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_lorawan_stack_api_messages_proto_goTypes = []interface{}{ + (PayloadFormatter)(0), // 0: ttn.lorawan.v3.PayloadFormatter + (TxAcknowledgment_Result)(0), // 1: ttn.lorawan.v3.TxAcknowledgment.Result + (*UplinkMessage)(nil), // 2: ttn.lorawan.v3.UplinkMessage + (*DownlinkMessage)(nil), // 3: ttn.lorawan.v3.DownlinkMessage + (*TxAcknowledgment)(nil), // 4: ttn.lorawan.v3.TxAcknowledgment + (*GatewayTxAcknowledgment)(nil), // 5: ttn.lorawan.v3.GatewayTxAcknowledgment + (*GatewayUplinkMessage)(nil), // 6: ttn.lorawan.v3.GatewayUplinkMessage + (*ApplicationUplink)(nil), // 7: ttn.lorawan.v3.ApplicationUplink + (*ApplicationUplinkNormalized)(nil), // 8: ttn.lorawan.v3.ApplicationUplinkNormalized + (*ApplicationLocation)(nil), // 9: ttn.lorawan.v3.ApplicationLocation + (*ApplicationJoinAccept)(nil), // 10: ttn.lorawan.v3.ApplicationJoinAccept + (*ApplicationDownlink)(nil), // 11: ttn.lorawan.v3.ApplicationDownlink + (*ApplicationDownlinks)(nil), // 12: ttn.lorawan.v3.ApplicationDownlinks + (*ApplicationDownlinkFailed)(nil), // 13: ttn.lorawan.v3.ApplicationDownlinkFailed + (*ApplicationInvalidatedDownlinks)(nil), // 14: ttn.lorawan.v3.ApplicationInvalidatedDownlinks + (*DownlinkQueueOperationErrorDetails)(nil), // 15: ttn.lorawan.v3.DownlinkQueueOperationErrorDetails + (*ApplicationServiceData)(nil), // 16: ttn.lorawan.v3.ApplicationServiceData + (*ApplicationUp)(nil), // 17: ttn.lorawan.v3.ApplicationUp + (*MessagePayloadFormatters)(nil), // 18: ttn.lorawan.v3.MessagePayloadFormatters + (*DownlinkQueueRequest)(nil), // 19: ttn.lorawan.v3.DownlinkQueueRequest + nil, // 20: ttn.lorawan.v3.ApplicationUplink.LocationsEntry + nil, // 21: ttn.lorawan.v3.ApplicationUplinkNormalized.LocationsEntry + nil, // 22: ttn.lorawan.v3.ApplicationLocation.AttributesEntry + (*ApplicationDownlink_ClassBC)(nil), // 23: ttn.lorawan.v3.ApplicationDownlink.ClassBC + (*Message)(nil), // 24: ttn.lorawan.v3.Message + (*TxSettings)(nil), // 25: ttn.lorawan.v3.TxSettings + (*RxMetadata)(nil), // 26: ttn.lorawan.v3.RxMetadata + (*timestamppb.Timestamp)(nil), // 27: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 28: google.protobuf.Duration + (*EndDeviceIdentifiers)(nil), // 29: ttn.lorawan.v3.EndDeviceIdentifiers + (*TxRequest)(nil), // 30: ttn.lorawan.v3.TxRequest + (*GatewayIdentifiers)(nil), // 31: ttn.lorawan.v3.GatewayIdentifiers + (*structpb.Struct)(nil), // 32: google.protobuf.Struct + (*KeyEnvelope)(nil), // 33: ttn.lorawan.v3.KeyEnvelope + (*EndDeviceVersionIdentifiers)(nil), // 34: ttn.lorawan.v3.EndDeviceVersionIdentifiers + (*NetworkIdentifiers)(nil), // 35: ttn.lorawan.v3.NetworkIdentifiers + (*Location)(nil), // 36: ttn.lorawan.v3.Location + (TxSchedulePriority)(0), // 37: ttn.lorawan.v3.TxSchedulePriority + (*ErrorDetails)(nil), // 38: ttn.lorawan.v3.ErrorDetails + (*ClassBCGatewayIdentifiers)(nil), // 39: ttn.lorawan.v3.ClassBCGatewayIdentifiers +} +var file_lorawan_stack_api_messages_proto_depIdxs = []int32{ + 24, // 0: ttn.lorawan.v3.UplinkMessage.payload:type_name -> ttn.lorawan.v3.Message + 25, // 1: ttn.lorawan.v3.UplinkMessage.settings:type_name -> ttn.lorawan.v3.TxSettings + 26, // 2: ttn.lorawan.v3.UplinkMessage.rx_metadata:type_name -> ttn.lorawan.v3.RxMetadata + 27, // 3: ttn.lorawan.v3.UplinkMessage.received_at:type_name -> google.protobuf.Timestamp + 28, // 4: ttn.lorawan.v3.UplinkMessage.consumed_airtime:type_name -> google.protobuf.Duration + 24, // 5: ttn.lorawan.v3.DownlinkMessage.payload:type_name -> ttn.lorawan.v3.Message + 29, // 6: ttn.lorawan.v3.DownlinkMessage.end_device_ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 30, // 7: ttn.lorawan.v3.DownlinkMessage.request:type_name -> ttn.lorawan.v3.TxRequest + 25, // 8: ttn.lorawan.v3.DownlinkMessage.scheduled:type_name -> ttn.lorawan.v3.TxSettings + 1, // 9: ttn.lorawan.v3.TxAcknowledgment.result:type_name -> ttn.lorawan.v3.TxAcknowledgment.Result + 3, // 10: ttn.lorawan.v3.TxAcknowledgment.downlink_message:type_name -> ttn.lorawan.v3.DownlinkMessage + 31, // 11: ttn.lorawan.v3.GatewayTxAcknowledgment.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 4, // 12: ttn.lorawan.v3.GatewayTxAcknowledgment.tx_ack:type_name -> ttn.lorawan.v3.TxAcknowledgment + 2, // 13: ttn.lorawan.v3.GatewayUplinkMessage.message:type_name -> ttn.lorawan.v3.UplinkMessage + 32, // 14: ttn.lorawan.v3.ApplicationUplink.decoded_payload:type_name -> google.protobuf.Struct + 32, // 15: ttn.lorawan.v3.ApplicationUplink.normalized_payload:type_name -> google.protobuf.Struct + 26, // 16: ttn.lorawan.v3.ApplicationUplink.rx_metadata:type_name -> ttn.lorawan.v3.RxMetadata + 25, // 17: ttn.lorawan.v3.ApplicationUplink.settings:type_name -> ttn.lorawan.v3.TxSettings + 27, // 18: ttn.lorawan.v3.ApplicationUplink.received_at:type_name -> google.protobuf.Timestamp + 33, // 19: ttn.lorawan.v3.ApplicationUplink.app_s_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 28, // 20: ttn.lorawan.v3.ApplicationUplink.consumed_airtime:type_name -> google.protobuf.Duration + 20, // 21: ttn.lorawan.v3.ApplicationUplink.locations:type_name -> ttn.lorawan.v3.ApplicationUplink.LocationsEntry + 34, // 22: ttn.lorawan.v3.ApplicationUplink.version_ids:type_name -> ttn.lorawan.v3.EndDeviceVersionIdentifiers + 35, // 23: ttn.lorawan.v3.ApplicationUplink.network_ids:type_name -> ttn.lorawan.v3.NetworkIdentifiers + 32, // 24: ttn.lorawan.v3.ApplicationUplinkNormalized.normalized_payload:type_name -> google.protobuf.Struct + 26, // 25: ttn.lorawan.v3.ApplicationUplinkNormalized.rx_metadata:type_name -> ttn.lorawan.v3.RxMetadata + 25, // 26: ttn.lorawan.v3.ApplicationUplinkNormalized.settings:type_name -> ttn.lorawan.v3.TxSettings + 27, // 27: ttn.lorawan.v3.ApplicationUplinkNormalized.received_at:type_name -> google.protobuf.Timestamp + 28, // 28: ttn.lorawan.v3.ApplicationUplinkNormalized.consumed_airtime:type_name -> google.protobuf.Duration + 21, // 29: ttn.lorawan.v3.ApplicationUplinkNormalized.locations:type_name -> ttn.lorawan.v3.ApplicationUplinkNormalized.LocationsEntry + 34, // 30: ttn.lorawan.v3.ApplicationUplinkNormalized.version_ids:type_name -> ttn.lorawan.v3.EndDeviceVersionIdentifiers + 35, // 31: ttn.lorawan.v3.ApplicationUplinkNormalized.network_ids:type_name -> ttn.lorawan.v3.NetworkIdentifiers + 36, // 32: ttn.lorawan.v3.ApplicationLocation.location:type_name -> ttn.lorawan.v3.Location + 22, // 33: ttn.lorawan.v3.ApplicationLocation.attributes:type_name -> ttn.lorawan.v3.ApplicationLocation.AttributesEntry + 33, // 34: ttn.lorawan.v3.ApplicationJoinAccept.app_s_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 11, // 35: ttn.lorawan.v3.ApplicationJoinAccept.invalidated_downlinks:type_name -> ttn.lorawan.v3.ApplicationDownlink + 27, // 36: ttn.lorawan.v3.ApplicationJoinAccept.received_at:type_name -> google.protobuf.Timestamp + 32, // 37: ttn.lorawan.v3.ApplicationDownlink.decoded_payload:type_name -> google.protobuf.Struct + 23, // 38: ttn.lorawan.v3.ApplicationDownlink.class_b_c:type_name -> ttn.lorawan.v3.ApplicationDownlink.ClassBC + 37, // 39: ttn.lorawan.v3.ApplicationDownlink.priority:type_name -> ttn.lorawan.v3.TxSchedulePriority + 11, // 40: ttn.lorawan.v3.ApplicationDownlinks.downlinks:type_name -> ttn.lorawan.v3.ApplicationDownlink + 11, // 41: ttn.lorawan.v3.ApplicationDownlinkFailed.downlink:type_name -> ttn.lorawan.v3.ApplicationDownlink + 38, // 42: ttn.lorawan.v3.ApplicationDownlinkFailed.error:type_name -> ttn.lorawan.v3.ErrorDetails + 11, // 43: ttn.lorawan.v3.ApplicationInvalidatedDownlinks.downlinks:type_name -> ttn.lorawan.v3.ApplicationDownlink + 32, // 44: ttn.lorawan.v3.ApplicationServiceData.data:type_name -> google.protobuf.Struct + 29, // 45: ttn.lorawan.v3.ApplicationUp.end_device_ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 27, // 46: ttn.lorawan.v3.ApplicationUp.received_at:type_name -> google.protobuf.Timestamp + 7, // 47: ttn.lorawan.v3.ApplicationUp.uplink_message:type_name -> ttn.lorawan.v3.ApplicationUplink + 8, // 48: ttn.lorawan.v3.ApplicationUp.uplink_normalized:type_name -> ttn.lorawan.v3.ApplicationUplinkNormalized + 10, // 49: ttn.lorawan.v3.ApplicationUp.join_accept:type_name -> ttn.lorawan.v3.ApplicationJoinAccept + 11, // 50: ttn.lorawan.v3.ApplicationUp.downlink_ack:type_name -> ttn.lorawan.v3.ApplicationDownlink + 11, // 51: ttn.lorawan.v3.ApplicationUp.downlink_nack:type_name -> ttn.lorawan.v3.ApplicationDownlink + 11, // 52: ttn.lorawan.v3.ApplicationUp.downlink_sent:type_name -> ttn.lorawan.v3.ApplicationDownlink + 13, // 53: ttn.lorawan.v3.ApplicationUp.downlink_failed:type_name -> ttn.lorawan.v3.ApplicationDownlinkFailed + 11, // 54: ttn.lorawan.v3.ApplicationUp.downlink_queued:type_name -> ttn.lorawan.v3.ApplicationDownlink + 14, // 55: ttn.lorawan.v3.ApplicationUp.downlink_queue_invalidated:type_name -> ttn.lorawan.v3.ApplicationInvalidatedDownlinks + 9, // 56: ttn.lorawan.v3.ApplicationUp.location_solved:type_name -> ttn.lorawan.v3.ApplicationLocation + 16, // 57: ttn.lorawan.v3.ApplicationUp.service_data:type_name -> ttn.lorawan.v3.ApplicationServiceData + 0, // 58: ttn.lorawan.v3.MessagePayloadFormatters.up_formatter:type_name -> ttn.lorawan.v3.PayloadFormatter + 0, // 59: ttn.lorawan.v3.MessagePayloadFormatters.down_formatter:type_name -> ttn.lorawan.v3.PayloadFormatter + 29, // 60: ttn.lorawan.v3.DownlinkQueueRequest.end_device_ids:type_name -> ttn.lorawan.v3.EndDeviceIdentifiers + 11, // 61: ttn.lorawan.v3.DownlinkQueueRequest.downlinks:type_name -> ttn.lorawan.v3.ApplicationDownlink + 36, // 62: ttn.lorawan.v3.ApplicationUplink.LocationsEntry.value:type_name -> ttn.lorawan.v3.Location + 36, // 63: ttn.lorawan.v3.ApplicationUplinkNormalized.LocationsEntry.value:type_name -> ttn.lorawan.v3.Location + 39, // 64: ttn.lorawan.v3.ApplicationDownlink.ClassBC.gateways:type_name -> ttn.lorawan.v3.ClassBCGatewayIdentifiers + 27, // 65: ttn.lorawan.v3.ApplicationDownlink.ClassBC.absolute_time:type_name -> google.protobuf.Timestamp + 66, // [66:66] is the sub-list for method output_type + 66, // [66:66] is the sub-list for method input_type + 66, // [66:66] is the sub-list for extension type_name + 66, // [66:66] is the sub-list for extension extendee + 0, // [0:66] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_messages_proto_init() } +func file_lorawan_stack_api_messages_proto_init() { + if File_lorawan_stack_api_messages_proto != nil { + return + } + file_lorawan_stack_api_error_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_keys_proto_init() + file_lorawan_stack_api_lorawan_proto_init() + file_lorawan_stack_api_metadata_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_messages_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UplinkMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DownlinkMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TxAcknowledgment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayTxAcknowledgment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GatewayUplinkMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationUplink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationUplinkNormalized); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationLocation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationJoinAccept); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationDownlink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationDownlinks); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationDownlinkFailed); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationInvalidatedDownlinks); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DownlinkQueueOperationErrorDetails); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationServiceData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationUp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessagePayloadFormatters); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DownlinkQueueRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_messages_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationDownlink_ClassBC); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_lorawan_stack_api_messages_proto_msgTypes[1].OneofWrappers = []interface{}{ + (*DownlinkMessage_Request)(nil), + (*DownlinkMessage_Scheduled)(nil), + } + file_lorawan_stack_api_messages_proto_msgTypes[15].OneofWrappers = []interface{}{ + (*ApplicationUp_UplinkMessage)(nil), + (*ApplicationUp_UplinkNormalized)(nil), + (*ApplicationUp_JoinAccept)(nil), + (*ApplicationUp_DownlinkAck)(nil), + (*ApplicationUp_DownlinkNack)(nil), + (*ApplicationUp_DownlinkSent)(nil), + (*ApplicationUp_DownlinkFailed)(nil), + (*ApplicationUp_DownlinkQueued)(nil), + (*ApplicationUp_DownlinkQueueInvalidated)(nil), + (*ApplicationUp_LocationSolved)(nil), + (*ApplicationUp_ServiceData)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_messages_proto_rawDesc, + NumEnums: 2, + NumMessages: 22, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_messages_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_messages_proto_depIdxs, + EnumInfos: file_lorawan_stack_api_messages_proto_enumTypes, + MessageInfos: file_lorawan_stack_api_messages_proto_msgTypes, + }.Build() + File_lorawan_stack_api_messages_proto = out.File + file_lorawan_stack_api_messages_proto_rawDesc = nil + file_lorawan_stack_api_messages_proto_goTypes = nil + file_lorawan_stack_api_messages_proto_depIdxs = nil } diff --git a/pkg/ttnpb/messages.pb.setters.fm.go b/pkg/ttnpb/messages.pb.setters.fm.go index a638bdeca5..377c74100a 100644 --- a/pkg/ttnpb/messages.pb.setters.fm.go +++ b/pkg/ttnpb/messages.pb.setters.fm.go @@ -320,8 +320,7 @@ func (dst *TxAcknowledgment) SetFields(src *TxAcknowledgment, paths ...string) e if src != nil { dst.Result = src.Result } else { - var zero TxAcknowledgment_Result - dst.Result = zero + dst.Result = 0 } case "downlink_message": if len(subs) > 0 { @@ -1121,8 +1120,7 @@ func (dst *ApplicationDownlink) SetFields(src *ApplicationDownlink, paths ...str if src != nil { dst.Priority = src.Priority } else { - var zero TxSchedulePriority - dst.Priority = zero + dst.Priority = 0 } case "correlation_ids": if len(subs) > 0 { @@ -1849,8 +1847,7 @@ func (dst *MessagePayloadFormatters) SetFields(src *MessagePayloadFormatters, pa if src != nil { dst.UpFormatter = src.UpFormatter } else { - var zero PayloadFormatter - dst.UpFormatter = zero + dst.UpFormatter = 0 } case "up_formatter_parameter": if len(subs) > 0 { @@ -1869,8 +1866,7 @@ func (dst *MessagePayloadFormatters) SetFields(src *MessagePayloadFormatters, pa if src != nil { dst.DownFormatter = src.DownFormatter } else { - var zero PayloadFormatter - dst.DownFormatter = zero + dst.DownFormatter = 0 } case "down_formatter_parameter": if len(subs) > 0 { diff --git a/pkg/ttnpb/messages.pb.validate.go b/pkg/ttnpb/messages.pb.validate.go index d61d839b60..bd2957ddf7 100644 --- a/pkg/ttnpb/messages.pb.validate.go +++ b/pkg/ttnpb/messages.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _messages_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on UplinkMessage with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/messages_flags.pb.go b/pkg/ttnpb/messages_flags.pb.go index 18d1bf3111..50fb7bdeb4 100644 --- a/pkg/ttnpb/messages_flags.pb.go +++ b/pkg/ttnpb/messages_flags.pb.go @@ -1,14 +1,14 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/messages.proto package ttnpb import ( flagsplugin "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - gogo "github.com/TheThingsIndustries/protoc-gen-go-flags/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-flags/golang" pflag "github.com/spf13/pflag" ) @@ -220,7 +220,7 @@ func (m *ApplicationUplink) SetFromFlags(flags *pflag.FlagSet, prefix string) (p if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("received_at", prefix)); err != nil { return nil, err } else if changed { - m.ReceivedAt = gogo.SetTimestamp(val) + m.ReceivedAt = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("received_at", prefix)) } if changed := flagsplugin.IsAnyPrefixSet(flags, flagsplugin.Prefix("app_s_key", prefix)); changed { @@ -248,7 +248,7 @@ func (m *ApplicationUplink) SetFromFlags(flags *pflag.FlagSet, prefix string) (p if val, changed, err := flagsplugin.GetDuration(flags, flagsplugin.Prefix("consumed_airtime", prefix)); err != nil { return nil, err } else if changed { - m.ConsumedAirtime = gogo.SetDuration(val) + m.ConsumedAirtime = golang.SetDuration(val) paths = append(paths, flagsplugin.Prefix("consumed_airtime", prefix)) } // FIXME: Skipping Locations because maps with message value types are currently not supported. @@ -488,7 +488,7 @@ func (m *ApplicationDownlink_ClassBC) SetFromFlags(flags *pflag.FlagSet, prefix if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("absolute_time", prefix)); err != nil { return nil, err } else if changed { - m.AbsoluteTime = gogo.SetTimestamp(val) + m.AbsoluteTime = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("absolute_time", prefix)) } return paths, nil diff --git a/pkg/ttnpb/messages_json.pb.go b/pkg/ttnpb/messages_json.pb.go index f993c85f89..810cb3aaf5 100644 --- a/pkg/ttnpb/messages_json.pb.go +++ b/pkg/ttnpb/messages_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/messages.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" types "go.thethings.network/lorawan-stack/v3/pkg/types" ) @@ -83,7 +83,7 @@ func (x *UplinkMessage) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("settings") // NOTE: TxSettings does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Settings) + golang.MarshalMessage(s, x.Settings) } if len(x.RxMetadata) > 0 || s.HasField("rx_metadata") { s.WriteMoreIf(&wroteField) @@ -102,7 +102,7 @@ func (x *UplinkMessage) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ReceivedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ReceivedAt) + golang.MarshalTimestamp(s, x.ReceivedAt) } } if len(x.CorrelationIds) > 0 || s.HasField("correlation_ids") { @@ -121,7 +121,7 @@ func (x *UplinkMessage) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ConsumedAirtime == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.ConsumedAirtime) + golang.MarshalDuration(s, x.ConsumedAirtime) } } s.WriteObjectEnd() @@ -159,7 +159,7 @@ func (x *UplinkMessage) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: TxSettings does not seem to implement UnmarshalProtoJSON. var v TxSettings - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Settings = &v case "rx_metadata", "rxMetadata": s.AddField("rx_metadata") @@ -185,7 +185,7 @@ func (x *UplinkMessage) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ReceivedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -206,7 +206,7 @@ func (x *UplinkMessage) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ConsumedAirtime = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -253,7 +253,7 @@ func (x *DownlinkMessage) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("scheduled") // NOTE: TxSettings does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.Scheduled) + golang.MarshalMessage(s, ov.Scheduled) } } if len(x.CorrelationIds) > 0 || s.HasField("correlation_ids") { @@ -319,7 +319,7 @@ func (x *DownlinkMessage) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: TxSettings does not seem to implement UnmarshalProtoJSON. var v TxSettings - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.Scheduled = &v case "correlation_ids", "correlationIds": s.AddField("correlation_ids") @@ -592,7 +592,7 @@ func (x *ApplicationUplink) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.DecodedPayload == nil { s.WriteNil() } else { - gogo.MarshalStruct(s, x.DecodedPayload) + golang.MarshalStruct(s, x.DecodedPayload) } } if len(x.DecodedPayloadWarnings) > 0 || s.HasField("decoded_payload_warnings") { @@ -610,7 +610,7 @@ func (x *ApplicationUplink) MarshalProtoJSON(s *jsonplugin.MarshalState) { if element == nil { s.WriteNil() } else { - gogo.MarshalStruct(s, element) + golang.MarshalStruct(s, element) } } s.WriteArrayEnd() @@ -635,7 +635,7 @@ func (x *ApplicationUplink) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("settings") // NOTE: TxSettings does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Settings) + golang.MarshalMessage(s, x.Settings) } if x.ReceivedAt != nil || s.HasField("received_at") { s.WriteMoreIf(&wroteField) @@ -643,7 +643,7 @@ func (x *ApplicationUplink) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ReceivedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ReceivedAt) + golang.MarshalTimestamp(s, x.ReceivedAt) } } if x.AppSKey != nil || s.HasField("app_s_key") { @@ -667,7 +667,7 @@ func (x *ApplicationUplink) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ConsumedAirtime == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.ConsumedAirtime) + golang.MarshalDuration(s, x.ConsumedAirtime) } } if x.Locations != nil || s.HasField("locations") { @@ -686,7 +686,7 @@ func (x *ApplicationUplink) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("version_ids") // NOTE: EndDeviceVersionIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.VersionIds) + golang.MarshalMessage(s, x.VersionIds) } if x.NetworkIds != nil || s.HasField("network_ids") { s.WriteMoreIf(&wroteField) @@ -728,7 +728,7 @@ func (x *ApplicationUplink) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.DecodedPayload = nil return } - v := gogo.UnmarshalStruct(s) + v := golang.UnmarshalStruct(s) if s.Err() != nil { return } @@ -747,7 +747,7 @@ func (x *ApplicationUplink) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { return } s.ReadArray(func() { - v := gogo.UnmarshalStruct(s) + v := golang.UnmarshalStruct(s) if s.Err() != nil { return } @@ -786,7 +786,7 @@ func (x *ApplicationUplink) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: TxSettings does not seem to implement UnmarshalProtoJSON. var v TxSettings - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Settings = &v case "received_at", "receivedAt": s.AddField("received_at") @@ -794,7 +794,7 @@ func (x *ApplicationUplink) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ReceivedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -818,7 +818,7 @@ func (x *ApplicationUplink) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ConsumedAirtime = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -843,7 +843,7 @@ func (x *ApplicationUplink) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: EndDeviceVersionIdentifiers does not seem to implement UnmarshalProtoJSON. var v EndDeviceVersionIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.VersionIds = &v case "network_ids", "networkIds": if s.ReadNil() { @@ -895,7 +895,7 @@ func (x *ApplicationUplinkNormalized) MarshalProtoJSON(s *jsonplugin.MarshalStat if x.NormalizedPayload == nil { s.WriteNil() } else { - gogo.MarshalStruct(s, x.NormalizedPayload) + golang.MarshalStruct(s, x.NormalizedPayload) } } if len(x.NormalizedPayloadWarnings) > 0 || s.HasField("normalized_payload_warnings") { @@ -918,7 +918,7 @@ func (x *ApplicationUplinkNormalized) MarshalProtoJSON(s *jsonplugin.MarshalStat s.WriteMoreIf(&wroteField) s.WriteObjectField("settings") // NOTE: TxSettings does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Settings) + golang.MarshalMessage(s, x.Settings) } if x.ReceivedAt != nil || s.HasField("received_at") { s.WriteMoreIf(&wroteField) @@ -926,7 +926,7 @@ func (x *ApplicationUplinkNormalized) MarshalProtoJSON(s *jsonplugin.MarshalStat if x.ReceivedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ReceivedAt) + golang.MarshalTimestamp(s, x.ReceivedAt) } } if x.Confirmed || s.HasField("confirmed") { @@ -940,7 +940,7 @@ func (x *ApplicationUplinkNormalized) MarshalProtoJSON(s *jsonplugin.MarshalStat if x.ConsumedAirtime == nil { s.WriteNil() } else { - gogo.MarshalDuration(s, x.ConsumedAirtime) + golang.MarshalDuration(s, x.ConsumedAirtime) } } if x.Locations != nil || s.HasField("locations") { @@ -959,7 +959,7 @@ func (x *ApplicationUplinkNormalized) MarshalProtoJSON(s *jsonplugin.MarshalStat s.WriteMoreIf(&wroteField) s.WriteObjectField("version_ids") // NOTE: EndDeviceVersionIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.VersionIds) + golang.MarshalMessage(s, x.VersionIds) } if x.NetworkIds != nil || s.HasField("network_ids") { s.WriteMoreIf(&wroteField) @@ -1001,7 +1001,7 @@ func (x *ApplicationUplinkNormalized) UnmarshalProtoJSON(s *jsonplugin.Unmarshal x.NormalizedPayload = nil return } - v := gogo.UnmarshalStruct(s) + v := golang.UnmarshalStruct(s) if s.Err() != nil { return } @@ -1039,7 +1039,7 @@ func (x *ApplicationUplinkNormalized) UnmarshalProtoJSON(s *jsonplugin.Unmarshal } // NOTE: TxSettings does not seem to implement UnmarshalProtoJSON. var v TxSettings - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Settings = &v case "received_at", "receivedAt": s.AddField("received_at") @@ -1047,7 +1047,7 @@ func (x *ApplicationUplinkNormalized) UnmarshalProtoJSON(s *jsonplugin.Unmarshal x.ReceivedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -1061,7 +1061,7 @@ func (x *ApplicationUplinkNormalized) UnmarshalProtoJSON(s *jsonplugin.Unmarshal x.ConsumedAirtime = nil return } - v := gogo.UnmarshalDuration(s) + v := golang.UnmarshalDuration(s) if s.Err() != nil { return } @@ -1086,7 +1086,7 @@ func (x *ApplicationUplinkNormalized) UnmarshalProtoJSON(s *jsonplugin.Unmarshal } // NOTE: EndDeviceVersionIdentifiers does not seem to implement UnmarshalProtoJSON. var v EndDeviceVersionIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.VersionIds = &v case "network_ids", "networkIds": if s.ReadNil() { @@ -1220,7 +1220,7 @@ func (x *ApplicationJoinAccept) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ReceivedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ReceivedAt) + golang.MarshalTimestamp(s, x.ReceivedAt) } } s.WriteObjectEnd() @@ -1277,7 +1277,7 @@ func (x *ApplicationJoinAccept) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) x.ReceivedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -1316,7 +1316,7 @@ func (x *ApplicationDownlink_ClassBC) MarshalProtoJSON(s *jsonplugin.MarshalStat if x.AbsoluteTime == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.AbsoluteTime) + golang.MarshalTimestamp(s, x.AbsoluteTime) } } s.WriteObjectEnd() @@ -1360,7 +1360,7 @@ func (x *ApplicationDownlink_ClassBC) UnmarshalProtoJSON(s *jsonplugin.Unmarshal x.AbsoluteTime = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -1408,7 +1408,7 @@ func (x *ApplicationDownlink) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.DecodedPayload == nil { s.WriteNil() } else { - gogo.MarshalStruct(s, x.DecodedPayload) + golang.MarshalStruct(s, x.DecodedPayload) } } if len(x.DecodedPayloadWarnings) > 0 || s.HasField("decoded_payload_warnings") { @@ -1471,7 +1471,7 @@ func (x *ApplicationDownlink) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.DecodedPayload = nil return } - v := gogo.UnmarshalStruct(s) + v := golang.UnmarshalStruct(s) if s.Err() != nil { return } @@ -1592,7 +1592,7 @@ func (x *ApplicationDownlinkFailed) MarshalProtoJSON(s *jsonplugin.MarshalState) s.WriteMoreIf(&wroteField) s.WriteObjectField("error") // NOTE: ErrorDetails does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Error) + golang.MarshalMessage(s, x.Error) } s.WriteObjectEnd() } @@ -1626,7 +1626,7 @@ func (x *ApplicationDownlinkFailed) UnmarshalProtoJSON(s *jsonplugin.UnmarshalSt } // NOTE: ErrorDetails does not seem to implement UnmarshalProtoJSON. var v ErrorDetails - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Error = &v } }) @@ -1822,7 +1822,7 @@ func (x *ApplicationUp) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ReceivedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ReceivedAt) + golang.MarshalTimestamp(s, x.ReceivedAt) } } if x.Up != nil { @@ -1871,7 +1871,7 @@ func (x *ApplicationUp) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("service_data") // NOTE: ApplicationServiceData does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.ServiceData) + golang.MarshalMessage(s, ov.ServiceData) } } if x.Simulated || s.HasField("simulated") { @@ -1916,7 +1916,7 @@ func (x *ApplicationUp) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ReceivedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -2021,7 +2021,7 @@ func (x *ApplicationUp) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ApplicationServiceData does not seem to implement UnmarshalProtoJSON. var v ApplicationServiceData - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.ServiceData = &v case "simulated": s.AddField("simulated") diff --git a/pkg/ttnpb/metadata.pb.go b/pkg/ttnpb/metadata.pb.go index d45ceaaa76..d0d1ef8331 100644 --- a/pkg/ttnpb/metadata.pb.go +++ b/pkg/ttnpb/metadata.pb.go @@ -1,32 +1,46 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/metadata.proto package ttnpb import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type LocationSource int32 @@ -48,49 +62,74 @@ const ( // The location is estimated with LoRa TDOA geolocation. LocationSource_SOURCE_LORA_TDOA_GEOLOCATION LocationSource = 8 // The location is estimated by a combination of geolocation sources. - LocationSource_SOURCE_COMBINED_GEOLOCATION LocationSource = 9 + LocationSource_SOURCE_COMBINED_GEOLOCATION LocationSource = 9 // More estimation methods can be added. +) + +// Enum value maps for LocationSource. +var ( + LocationSource_name = map[int32]string{ + 0: "SOURCE_UNKNOWN", + 1: "SOURCE_GPS", + 3: "SOURCE_REGISTRY", + 4: "SOURCE_IP_GEOLOCATION", + 5: "SOURCE_WIFI_RSSI_GEOLOCATION", + 6: "SOURCE_BT_RSSI_GEOLOCATION", + 7: "SOURCE_LORA_RSSI_GEOLOCATION", + 8: "SOURCE_LORA_TDOA_GEOLOCATION", + 9: "SOURCE_COMBINED_GEOLOCATION", + } + LocationSource_value = map[string]int32{ + "SOURCE_UNKNOWN": 0, + "SOURCE_GPS": 1, + "SOURCE_REGISTRY": 3, + "SOURCE_IP_GEOLOCATION": 4, + "SOURCE_WIFI_RSSI_GEOLOCATION": 5, + "SOURCE_BT_RSSI_GEOLOCATION": 6, + "SOURCE_LORA_RSSI_GEOLOCATION": 7, + "SOURCE_LORA_TDOA_GEOLOCATION": 8, + "SOURCE_COMBINED_GEOLOCATION": 9, + } ) -var LocationSource_name = map[int32]string{ - 0: "SOURCE_UNKNOWN", - 1: "SOURCE_GPS", - 3: "SOURCE_REGISTRY", - 4: "SOURCE_IP_GEOLOCATION", - 5: "SOURCE_WIFI_RSSI_GEOLOCATION", - 6: "SOURCE_BT_RSSI_GEOLOCATION", - 7: "SOURCE_LORA_RSSI_GEOLOCATION", - 8: "SOURCE_LORA_TDOA_GEOLOCATION", - 9: "SOURCE_COMBINED_GEOLOCATION", -} - -var LocationSource_value = map[string]int32{ - "SOURCE_UNKNOWN": 0, - "SOURCE_GPS": 1, - "SOURCE_REGISTRY": 3, - "SOURCE_IP_GEOLOCATION": 4, - "SOURCE_WIFI_RSSI_GEOLOCATION": 5, - "SOURCE_BT_RSSI_GEOLOCATION": 6, - "SOURCE_LORA_RSSI_GEOLOCATION": 7, - "SOURCE_LORA_TDOA_GEOLOCATION": 8, - "SOURCE_COMBINED_GEOLOCATION": 9, +func (x LocationSource) Enum() *LocationSource { + p := new(LocationSource) + *p = x + return p } func (x LocationSource) String() string { - return proto.EnumName(LocationSource_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (LocationSource) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_metadata_proto_enumTypes[0].Descriptor() } +func (LocationSource) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_metadata_proto_enumTypes[0] +} + +func (x LocationSource) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LocationSource.Descriptor instead. func (LocationSource) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_e1123b3e8fd87092, []int{0} + return file_lorawan_stack_api_metadata_proto_rawDescGZIP(), []int{0} } // Contains metadata for a received message. Each antenna that receives // a message corresponds to one RxMetadata. type RxMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + GatewayIds *GatewayIdentifiers `protobuf:"bytes,1,opt,name=gateway_ids,json=gatewayIds,proto3" json:"gateway_ids,omitempty"` PacketBroker *PacketBrokerMetadata `protobuf:"bytes,18,opt,name=packet_broker,json=packetBroker,proto3" json:"packet_broker,omitempty"` AntennaIndex uint32 `protobuf:"varint,2,opt,name=antenna_index,json=antennaIndex,proto3" json:"antenna_index,omitempty"` // Timestamp at the end of the transmission, provided by the gateway. The accuracy is undefined. - Time *types.Timestamp `protobuf:"bytes,3,opt,name=time,proto3" json:"time,omitempty"` + Time *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=time,proto3" json:"time,omitempty"` // Gateway concentrator timestamp when the Rx finished (microseconds). Timestamp uint32 `protobuf:"varint,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Gateway's internal fine timestamp when the Rx finished (nanoseconds). @@ -102,7 +141,7 @@ type RxMetadata struct { // This value equals `channel_rssi`. Rssi float32 `protobuf:"fixed32,8,opt,name=rssi,proto3" json:"rssi,omitempty"` // Received signal strength indicator of the signal (dBm). - SignalRssi *types.FloatValue `protobuf:"bytes,16,opt,name=signal_rssi,json=signalRssi,proto3" json:"signal_rssi,omitempty"` + SignalRssi *wrapperspb.FloatValue `protobuf:"bytes,16,opt,name=signal_rssi,json=signalRssi,proto3" json:"signal_rssi,omitempty"` // Received signal strength indicator of the channel (dBm). ChannelRssi float32 `protobuf:"fixed32,9,opt,name=channel_rssi,json=channelRssi,proto3" json:"channel_rssi,omitempty"` // Standard deviation of the RSSI during preamble. @@ -125,204 +164,213 @@ type RxMetadata struct { FrequencyDrift int32 `protobuf:"varint,20,opt,name=frequency_drift,json=frequencyDrift,proto3" json:"frequency_drift,omitempty"` // Timestamp at the end of the transmission, provided by the gateway. // Guaranteed to be based on a GPS PPS signal, with an accuracy of 1 millisecond. - GpsTime *types.Timestamp `protobuf:"bytes,21,opt,name=gps_time,json=gpsTime,proto3" json:"gps_time,omitempty"` + GpsTime *timestamppb.Timestamp `protobuf:"bytes,21,opt,name=gps_time,json=gpsTime,proto3" json:"gps_time,omitempty"` // Timestamp at which the Gateway Server has received the message. - ReceivedAt *types.Timestamp `protobuf:"bytes,22,opt,name=received_at,json=receivedAt,proto3" json:"received_at,omitempty"` + ReceivedAt *timestamppb.Timestamp `protobuf:"bytes,22,opt,name=received_at,json=receivedAt,proto3" json:"received_at,omitempty"` // Advanced metadata fields // - can be used for advanced information or experimental features that are not yet formally defined in the API // - field names are written in snake_case - Advanced *types.Struct `protobuf:"bytes,99,opt,name=advanced,proto3" json:"advanced,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Advanced *structpb.Struct `protobuf:"bytes,99,opt,name=advanced,proto3" json:"advanced,omitempty"` } -func (m *RxMetadata) Reset() { *m = RxMetadata{} } -func (m *RxMetadata) String() string { return proto.CompactTextString(m) } -func (*RxMetadata) ProtoMessage() {} -func (*RxMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_e1123b3e8fd87092, []int{0} -} -func (m *RxMetadata) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RxMetadata.Unmarshal(m, b) -} -func (m *RxMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RxMetadata.Marshal(b, m, deterministic) -} -func (m *RxMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_RxMetadata.Merge(m, src) +func (x *RxMetadata) Reset() { + *x = RxMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_metadata_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *RxMetadata) XXX_Size() int { - return xxx_messageInfo_RxMetadata.Size(m) + +func (x *RxMetadata) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *RxMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_RxMetadata.DiscardUnknown(m) + +func (*RxMetadata) ProtoMessage() {} + +func (x *RxMetadata) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_metadata_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_RxMetadata proto.InternalMessageInfo +// Deprecated: Use RxMetadata.ProtoReflect.Descriptor instead. +func (*RxMetadata) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_metadata_proto_rawDescGZIP(), []int{0} +} -func (m *RxMetadata) GetGatewayIds() *GatewayIdentifiers { - if m != nil { - return m.GatewayIds +func (x *RxMetadata) GetGatewayIds() *GatewayIdentifiers { + if x != nil { + return x.GatewayIds } return nil } -func (m *RxMetadata) GetPacketBroker() *PacketBrokerMetadata { - if m != nil { - return m.PacketBroker +func (x *RxMetadata) GetPacketBroker() *PacketBrokerMetadata { + if x != nil { + return x.PacketBroker } return nil } -func (m *RxMetadata) GetAntennaIndex() uint32 { - if m != nil { - return m.AntennaIndex +func (x *RxMetadata) GetAntennaIndex() uint32 { + if x != nil { + return x.AntennaIndex } return 0 } -func (m *RxMetadata) GetTime() *types.Timestamp { - if m != nil { - return m.Time +func (x *RxMetadata) GetTime() *timestamppb.Timestamp { + if x != nil { + return x.Time } return nil } -func (m *RxMetadata) GetTimestamp() uint32 { - if m != nil { - return m.Timestamp +func (x *RxMetadata) GetTimestamp() uint32 { + if x != nil { + return x.Timestamp } return 0 } -func (m *RxMetadata) GetFineTimestamp() uint64 { - if m != nil { - return m.FineTimestamp +func (x *RxMetadata) GetFineTimestamp() uint64 { + if x != nil { + return x.FineTimestamp } return 0 } -func (m *RxMetadata) GetEncryptedFineTimestamp() []byte { - if m != nil { - return m.EncryptedFineTimestamp +func (x *RxMetadata) GetEncryptedFineTimestamp() []byte { + if x != nil { + return x.EncryptedFineTimestamp } return nil } -func (m *RxMetadata) GetEncryptedFineTimestampKeyId() string { - if m != nil { - return m.EncryptedFineTimestampKeyId +func (x *RxMetadata) GetEncryptedFineTimestampKeyId() string { + if x != nil { + return x.EncryptedFineTimestampKeyId } return "" } -func (m *RxMetadata) GetRssi() float32 { - if m != nil { - return m.Rssi +func (x *RxMetadata) GetRssi() float32 { + if x != nil { + return x.Rssi } return 0 } -func (m *RxMetadata) GetSignalRssi() *types.FloatValue { - if m != nil { - return m.SignalRssi +func (x *RxMetadata) GetSignalRssi() *wrapperspb.FloatValue { + if x != nil { + return x.SignalRssi } return nil } -func (m *RxMetadata) GetChannelRssi() float32 { - if m != nil { - return m.ChannelRssi +func (x *RxMetadata) GetChannelRssi() float32 { + if x != nil { + return x.ChannelRssi } return 0 } -func (m *RxMetadata) GetRssiStandardDeviation() float32 { - if m != nil { - return m.RssiStandardDeviation +func (x *RxMetadata) GetRssiStandardDeviation() float32 { + if x != nil { + return x.RssiStandardDeviation } return 0 } -func (m *RxMetadata) GetSnr() float32 { - if m != nil { - return m.Snr +func (x *RxMetadata) GetSnr() float32 { + if x != nil { + return x.Snr } return 0 } -func (m *RxMetadata) GetFrequencyOffset() int64 { - if m != nil { - return m.FrequencyOffset +func (x *RxMetadata) GetFrequencyOffset() int64 { + if x != nil { + return x.FrequencyOffset } return 0 } -func (m *RxMetadata) GetLocation() *Location { - if m != nil { - return m.Location +func (x *RxMetadata) GetLocation() *Location { + if x != nil { + return x.Location } return nil } -func (m *RxMetadata) GetDownlinkPathConstraint() DownlinkPathConstraint { - if m != nil { - return m.DownlinkPathConstraint +func (x *RxMetadata) GetDownlinkPathConstraint() DownlinkPathConstraint { + if x != nil { + return x.DownlinkPathConstraint } return DownlinkPathConstraint_DOWNLINK_PATH_CONSTRAINT_NONE } -func (m *RxMetadata) GetUplinkToken() []byte { - if m != nil { - return m.UplinkToken +func (x *RxMetadata) GetUplinkToken() []byte { + if x != nil { + return x.UplinkToken } return nil } -func (m *RxMetadata) GetChannelIndex() uint32 { - if m != nil { - return m.ChannelIndex +func (x *RxMetadata) GetChannelIndex() uint32 { + if x != nil { + return x.ChannelIndex } return 0 } -func (m *RxMetadata) GetHoppingWidth() uint32 { - if m != nil { - return m.HoppingWidth +func (x *RxMetadata) GetHoppingWidth() uint32 { + if x != nil { + return x.HoppingWidth } return 0 } -func (m *RxMetadata) GetFrequencyDrift() int32 { - if m != nil { - return m.FrequencyDrift +func (x *RxMetadata) GetFrequencyDrift() int32 { + if x != nil { + return x.FrequencyDrift } return 0 } -func (m *RxMetadata) GetGpsTime() *types.Timestamp { - if m != nil { - return m.GpsTime +func (x *RxMetadata) GetGpsTime() *timestamppb.Timestamp { + if x != nil { + return x.GpsTime } return nil } -func (m *RxMetadata) GetReceivedAt() *types.Timestamp { - if m != nil { - return m.ReceivedAt +func (x *RxMetadata) GetReceivedAt() *timestamppb.Timestamp { + if x != nil { + return x.ReceivedAt } return nil } -func (m *RxMetadata) GetAdvanced() *types.Struct { - if m != nil { - return m.Advanced +func (x *RxMetadata) GetAdvanced() *structpb.Struct { + if x != nil { + return x.Advanced } return nil } type Location struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative. Latitude float64 `protobuf:"fixed64,1,opt,name=latitude,proto3" json:"latitude,omitempty"` // The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative. @@ -332,72 +380,81 @@ type Location struct { // The accuracy of the location (meters). Accuracy int32 `protobuf:"varint,4,opt,name=accuracy,proto3" json:"accuracy,omitempty"` // Source of the location information. - Source LocationSource `protobuf:"varint,5,opt,name=source,proto3,enum=ttn.lorawan.v3.LocationSource" json:"source,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Source LocationSource `protobuf:"varint,5,opt,name=source,proto3,enum=ttn.lorawan.v3.LocationSource" json:"source,omitempty"` } -func (m *Location) Reset() { *m = Location{} } -func (m *Location) String() string { return proto.CompactTextString(m) } -func (*Location) ProtoMessage() {} -func (*Location) Descriptor() ([]byte, []int) { - return fileDescriptor_e1123b3e8fd87092, []int{1} -} -func (m *Location) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Location.Unmarshal(m, b) -} -func (m *Location) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Location.Marshal(b, m, deterministic) -} -func (m *Location) XXX_Merge(src proto.Message) { - xxx_messageInfo_Location.Merge(m, src) +func (x *Location) Reset() { + *x = Location{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_metadata_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Location) XXX_Size() int { - return xxx_messageInfo_Location.Size(m) + +func (x *Location) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Location) XXX_DiscardUnknown() { - xxx_messageInfo_Location.DiscardUnknown(m) + +func (*Location) ProtoMessage() {} + +func (x *Location) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_metadata_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Location proto.InternalMessageInfo +// Deprecated: Use Location.ProtoReflect.Descriptor instead. +func (*Location) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_metadata_proto_rawDescGZIP(), []int{1} +} -func (m *Location) GetLatitude() float64 { - if m != nil { - return m.Latitude +func (x *Location) GetLatitude() float64 { + if x != nil { + return x.Latitude } return 0 } -func (m *Location) GetLongitude() float64 { - if m != nil { - return m.Longitude +func (x *Location) GetLongitude() float64 { + if x != nil { + return x.Longitude } return 0 } -func (m *Location) GetAltitude() int32 { - if m != nil { - return m.Altitude +func (x *Location) GetAltitude() int32 { + if x != nil { + return x.Altitude } return 0 } -func (m *Location) GetAccuracy() int32 { - if m != nil { - return m.Accuracy +func (x *Location) GetAccuracy() int32 { + if x != nil { + return x.Accuracy } return 0 } -func (m *Location) GetSource() LocationSource { - if m != nil { - return m.Source +func (x *Location) GetSource() LocationSource { + if x != nil { + return x.Source } return LocationSource_SOURCE_UNKNOWN } type PacketBrokerMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Message identifier generated by Packet Broker Router. MessageId string `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` // LoRa Alliance NetID of the Packet Broker Forwarder Member. @@ -409,7 +466,7 @@ type PacketBrokerMetadata struct { // Forwarder gateway EUI. ForwarderGatewayEui []byte `protobuf:"bytes,9,opt,name=forwarder_gateway_eui,json=forwarderGatewayEui,proto3" json:"forwarder_gateway_eui,omitempty"` // Forwarder gateway ID. - ForwarderGatewayId *types.StringValue `protobuf:"bytes,10,opt,name=forwarder_gateway_id,json=forwarderGatewayId,proto3" json:"forwarder_gateway_id,omitempty"` + ForwarderGatewayId *wrapperspb.StringValue `protobuf:"bytes,10,opt,name=forwarder_gateway_id,json=forwarderGatewayId,proto3" json:"forwarder_gateway_id,omitempty"` // LoRa Alliance NetID of the Packet Broker Home Network Member. HomeNetworkNetId []byte `protobuf:"bytes,5,opt,name=home_network_net_id,json=homeNetworkNetId,proto3" json:"home_network_net_id,omitempty"` // Tenant ID managed by the Packet Broker Home Network Member. @@ -418,109 +475,118 @@ type PacketBrokerMetadata struct { // Home Network Cluster ID of the Packet Broker Home Network. HomeNetworkClusterId string `protobuf:"bytes,8,opt,name=home_network_cluster_id,json=homeNetworkClusterId,proto3" json:"home_network_cluster_id,omitempty"` // Hops that the message passed. Each Packet Broker Router service appends an entry. - Hops []*PacketBrokerRouteHop `protobuf:"bytes,7,rep,name=hops,proto3" json:"hops,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Hops []*PacketBrokerRouteHop `protobuf:"bytes,7,rep,name=hops,proto3" json:"hops,omitempty"` } -func (m *PacketBrokerMetadata) Reset() { *m = PacketBrokerMetadata{} } -func (m *PacketBrokerMetadata) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerMetadata) ProtoMessage() {} -func (*PacketBrokerMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_e1123b3e8fd87092, []int{2} -} -func (m *PacketBrokerMetadata) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerMetadata.Unmarshal(m, b) -} -func (m *PacketBrokerMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerMetadata.Marshal(b, m, deterministic) -} -func (m *PacketBrokerMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerMetadata.Merge(m, src) +func (x *PacketBrokerMetadata) Reset() { + *x = PacketBrokerMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_metadata_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PacketBrokerMetadata) XXX_Size() int { - return xxx_messageInfo_PacketBrokerMetadata.Size(m) + +func (x *PacketBrokerMetadata) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PacketBrokerMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerMetadata.DiscardUnknown(m) + +func (*PacketBrokerMetadata) ProtoMessage() {} + +func (x *PacketBrokerMetadata) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_metadata_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PacketBrokerMetadata proto.InternalMessageInfo +// Deprecated: Use PacketBrokerMetadata.ProtoReflect.Descriptor instead. +func (*PacketBrokerMetadata) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_metadata_proto_rawDescGZIP(), []int{2} +} -func (m *PacketBrokerMetadata) GetMessageId() string { - if m != nil { - return m.MessageId +func (x *PacketBrokerMetadata) GetMessageId() string { + if x != nil { + return x.MessageId } return "" } -func (m *PacketBrokerMetadata) GetForwarderNetId() []byte { - if m != nil { - return m.ForwarderNetId +func (x *PacketBrokerMetadata) GetForwarderNetId() []byte { + if x != nil { + return x.ForwarderNetId } return nil } -func (m *PacketBrokerMetadata) GetForwarderTenantId() string { - if m != nil { - return m.ForwarderTenantId +func (x *PacketBrokerMetadata) GetForwarderTenantId() string { + if x != nil { + return x.ForwarderTenantId } return "" } -func (m *PacketBrokerMetadata) GetForwarderClusterId() string { - if m != nil { - return m.ForwarderClusterId +func (x *PacketBrokerMetadata) GetForwarderClusterId() string { + if x != nil { + return x.ForwarderClusterId } return "" } -func (m *PacketBrokerMetadata) GetForwarderGatewayEui() []byte { - if m != nil { - return m.ForwarderGatewayEui +func (x *PacketBrokerMetadata) GetForwarderGatewayEui() []byte { + if x != nil { + return x.ForwarderGatewayEui } return nil } -func (m *PacketBrokerMetadata) GetForwarderGatewayId() *types.StringValue { - if m != nil { - return m.ForwarderGatewayId +func (x *PacketBrokerMetadata) GetForwarderGatewayId() *wrapperspb.StringValue { + if x != nil { + return x.ForwarderGatewayId } return nil } -func (m *PacketBrokerMetadata) GetHomeNetworkNetId() []byte { - if m != nil { - return m.HomeNetworkNetId +func (x *PacketBrokerMetadata) GetHomeNetworkNetId() []byte { + if x != nil { + return x.HomeNetworkNetId } return nil } -func (m *PacketBrokerMetadata) GetHomeNetworkTenantId() string { - if m != nil { - return m.HomeNetworkTenantId +func (x *PacketBrokerMetadata) GetHomeNetworkTenantId() string { + if x != nil { + return x.HomeNetworkTenantId } return "" } -func (m *PacketBrokerMetadata) GetHomeNetworkClusterId() string { - if m != nil { - return m.HomeNetworkClusterId +func (x *PacketBrokerMetadata) GetHomeNetworkClusterId() string { + if x != nil { + return x.HomeNetworkClusterId } return "" } -func (m *PacketBrokerMetadata) GetHops() []*PacketBrokerRouteHop { - if m != nil { - return m.Hops +func (x *PacketBrokerMetadata) GetHops() []*PacketBrokerRouteHop { + if x != nil { + return x.Hops } return nil } type PacketBrokerRouteHop struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Time when the service received the message. - ReceivedAt *types.Timestamp `protobuf:"bytes,1,opt,name=received_at,json=receivedAt,proto3" json:"received_at,omitempty"` + ReceivedAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=received_at,json=receivedAt,proto3" json:"received_at,omitempty"` // Sender of the message, typically the authorized client identifier. SenderName string `protobuf:"bytes,2,opt,name=sender_name,json=senderName,proto3" json:"sender_name,omitempty"` // Sender IP address or host name. @@ -528,185 +594,429 @@ type PacketBrokerRouteHop struct { // Receiver of the message. ReceiverName string `protobuf:"bytes,4,opt,name=receiver_name,json=receiverName,proto3" json:"receiver_name,omitempty"` // Receiver agent. - ReceiverAgent string `protobuf:"bytes,5,opt,name=receiver_agent,json=receiverAgent,proto3" json:"receiver_agent,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ReceiverAgent string `protobuf:"bytes,5,opt,name=receiver_agent,json=receiverAgent,proto3" json:"receiver_agent,omitempty"` } -func (m *PacketBrokerRouteHop) Reset() { *m = PacketBrokerRouteHop{} } -func (m *PacketBrokerRouteHop) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerRouteHop) ProtoMessage() {} -func (*PacketBrokerRouteHop) Descriptor() ([]byte, []int) { - return fileDescriptor_e1123b3e8fd87092, []int{3} -} -func (m *PacketBrokerRouteHop) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerRouteHop.Unmarshal(m, b) -} -func (m *PacketBrokerRouteHop) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerRouteHop.Marshal(b, m, deterministic) -} -func (m *PacketBrokerRouteHop) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerRouteHop.Merge(m, src) +func (x *PacketBrokerRouteHop) Reset() { + *x = PacketBrokerRouteHop{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_metadata_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PacketBrokerRouteHop) XXX_Size() int { - return xxx_messageInfo_PacketBrokerRouteHop.Size(m) + +func (x *PacketBrokerRouteHop) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PacketBrokerRouteHop) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerRouteHop.DiscardUnknown(m) + +func (*PacketBrokerRouteHop) ProtoMessage() {} + +func (x *PacketBrokerRouteHop) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_metadata_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PacketBrokerRouteHop proto.InternalMessageInfo +// Deprecated: Use PacketBrokerRouteHop.ProtoReflect.Descriptor instead. +func (*PacketBrokerRouteHop) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_metadata_proto_rawDescGZIP(), []int{3} +} -func (m *PacketBrokerRouteHop) GetReceivedAt() *types.Timestamp { - if m != nil { - return m.ReceivedAt +func (x *PacketBrokerRouteHop) GetReceivedAt() *timestamppb.Timestamp { + if x != nil { + return x.ReceivedAt } return nil } -func (m *PacketBrokerRouteHop) GetSenderName() string { - if m != nil { - return m.SenderName +func (x *PacketBrokerRouteHop) GetSenderName() string { + if x != nil { + return x.SenderName } return "" } -func (m *PacketBrokerRouteHop) GetSenderAddress() string { - if m != nil { - return m.SenderAddress +func (x *PacketBrokerRouteHop) GetSenderAddress() string { + if x != nil { + return x.SenderAddress } return "" } -func (m *PacketBrokerRouteHop) GetReceiverName() string { - if m != nil { - return m.ReceiverName +func (x *PacketBrokerRouteHop) GetReceiverName() string { + if x != nil { + return x.ReceiverName } return "" } -func (m *PacketBrokerRouteHop) GetReceiverAgent() string { - if m != nil { - return m.ReceiverAgent +func (x *PacketBrokerRouteHop) GetReceiverAgent() string { + if x != nil { + return x.ReceiverAgent } return "" } -func init() { - proto.RegisterEnum("ttn.lorawan.v3.LocationSource", LocationSource_name, LocationSource_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.LocationSource", LocationSource_name, LocationSource_value) - proto.RegisterType((*RxMetadata)(nil), "ttn.lorawan.v3.RxMetadata") - golang_proto.RegisterType((*RxMetadata)(nil), "ttn.lorawan.v3.RxMetadata") - proto.RegisterType((*Location)(nil), "ttn.lorawan.v3.Location") - golang_proto.RegisterType((*Location)(nil), "ttn.lorawan.v3.Location") - proto.RegisterType((*PacketBrokerMetadata)(nil), "ttn.lorawan.v3.PacketBrokerMetadata") - golang_proto.RegisterType((*PacketBrokerMetadata)(nil), "ttn.lorawan.v3.PacketBrokerMetadata") - proto.RegisterType((*PacketBrokerRouteHop)(nil), "ttn.lorawan.v3.PacketBrokerRouteHop") - golang_proto.RegisterType((*PacketBrokerRouteHop)(nil), "ttn.lorawan.v3.PacketBrokerRouteHop") -} - -func init() { proto.RegisterFile("lorawan-stack/api/metadata.proto", fileDescriptor_e1123b3e8fd87092) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/metadata.proto", fileDescriptor_e1123b3e8fd87092) -} - -var fileDescriptor_e1123b3e8fd87092 = []byte{ - // 1522 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x56, 0x3b, 0x73, 0xdb, 0xc6, - 0x1a, 0x35, 0x48, 0x8a, 0x22, 0x97, 0x0f, 0xd3, 0xab, 0x17, 0x24, 0xcb, 0x12, 0x4d, 0xdf, 0x07, - 0xed, 0x19, 0x91, 0xbc, 0xe2, 0x55, 0xec, 0x49, 0x32, 0x93, 0x90, 0xa2, 0x24, 0xc3, 0xb6, 0x48, - 0x0d, 0x48, 0xdb, 0x49, 0x1a, 0xcc, 0x0a, 0x58, 0x82, 0x30, 0xc9, 0x5d, 0x04, 0x58, 0x52, 0x66, - 0x2a, 0x8f, 0xcb, 0x94, 0x9e, 0x49, 0x93, 0x74, 0x29, 0x55, 0xa4, 0xca, 0x0f, 0xf0, 0x9f, 0x48, - 0x93, 0x36, 0x45, 0x26, 0x2e, 0x5d, 0xba, 0x49, 0x06, 0x8b, 0x07, 0x5f, 0xf2, 0x78, 0xd4, 0x25, - 0xac, 0x80, 0xf3, 0x9d, 0x73, 0x80, 0xfd, 0xf6, 0xe0, 0x5b, 0x82, 0x6c, 0x8f, 0x5a, 0xe8, 0x0c, - 0x91, 0x1d, 0x9b, 0x21, 0xb5, 0x5b, 0x44, 0xa6, 0x51, 0xec, 0x63, 0x86, 0x34, 0xc4, 0x50, 0xc1, - 0xb4, 0x28, 0xa3, 0x30, 0xcd, 0x18, 0x29, 0x78, 0xac, 0xc2, 0xb0, 0xbc, 0x51, 0xd3, 0x0d, 0xd6, - 0x19, 0x9c, 0x16, 0x54, 0xda, 0x2f, 0xb6, 0x3a, 0xb8, 0xd5, 0x31, 0x88, 0x6e, 0x4b, 0x44, 0x1b, - 0xd8, 0xcc, 0x32, 0xb0, 0x5d, 0xe4, 0x2a, 0x75, 0x47, 0xc7, 0x64, 0x47, 0xa7, 0x3b, 0xed, 0x1e, - 0xd2, 0xed, 0x22, 0x22, 0x84, 0x32, 0xc4, 0x0c, 0x4a, 0x6c, 0xd7, 0x75, 0xa3, 0x32, 0xe1, 0x82, - 0xc9, 0x90, 0x8e, 0x4c, 0x8b, 0x3e, 0x1f, 0x4d, 0x8a, 0x87, 0xa8, 0x67, 0x68, 0x88, 0xe1, 0xe2, - 0xdc, 0x85, 0x67, 0xb1, 0x33, 0x61, 0xa1, 0x53, 0x9d, 0xba, 0xe2, 0xd3, 0x41, 0x9b, 0xdf, 0xf1, - 0x1b, 0x7e, 0xe5, 0xd1, 0xf7, 0x2f, 0xf5, 0xde, 0xcf, 0x6c, 0x4a, 0x2e, 0x78, 0xed, 0x4d, 0x9d, - 0x52, 0xbd, 0x87, 0xc7, 0x8f, 0xb2, 0x99, 0x35, 0x50, 0x99, 0x57, 0xdd, 0x9e, 0xad, 0x32, 0xa3, - 0x8f, 0x6d, 0x86, 0xfa, 0xa6, 0x47, 0xd8, 0x9a, 0x25, 0x9c, 0x59, 0xc8, 0x34, 0xb1, 0xe5, 0xdb, - 0xdf, 0x98, 0xdf, 0x0d, 0x4c, 0x06, 0x7d, 0xbf, 0x7c, 0x6b, 0xbe, 0x6c, 0x68, 0x98, 0x30, 0xa3, - 0x6d, 0x8c, 0x3d, 0x0a, 0x13, 0x0b, 0xa1, 0x26, 0x26, 0xc8, 0x34, 0x86, 0xbb, 0x45, 0x6a, 0xf2, - 0x65, 0xcc, 0x2f, 0x29, 0xf7, 0x5d, 0x1c, 0x00, 0xf9, 0xf9, 0xb1, 0xb7, 0xe9, 0xf0, 0x18, 0x24, - 0x74, 0xc4, 0xf0, 0x19, 0x1a, 0x29, 0x86, 0x66, 0x8b, 0x42, 0x56, 0xc8, 0x27, 0x76, 0x73, 0x85, - 0xe9, 0x10, 0x14, 0x8e, 0x5c, 0x8a, 0x34, 0x7e, 0x7a, 0x35, 0xf6, 0xae, 0xba, 0xf0, 0xad, 0x10, - 0xca, 0x08, 0x32, 0xd0, 0xfd, 0xaa, 0x0d, 0x25, 0x90, 0x32, 0x91, 0xda, 0xc5, 0x4c, 0x39, 0xb5, - 0x68, 0x17, 0x5b, 0x22, 0xe4, 0x86, 0xff, 0x9a, 0x35, 0x3c, 0xe1, 0xa4, 0x2a, 0xe7, 0xf8, 0xef, - 0x22, 0x27, 0xcd, 0x09, 0x14, 0xde, 0x02, 0x29, 0x44, 0x18, 0x26, 0x04, 0x29, 0x06, 0xd1, 0xf0, - 0x73, 0x31, 0x94, 0x15, 0xf2, 0x29, 0x39, 0xe9, 0x81, 0x92, 0x83, 0xc1, 0x02, 0x88, 0x38, 0x4d, - 0x17, 0xc3, 0xfc, 0x31, 0x1b, 0x05, 0xb7, 0xe1, 0x05, 0xbf, 0xe1, 0x85, 0x96, 0xbf, 0x23, 0x32, - 0xe7, 0xc1, 0x4d, 0x10, 0x0f, 0x36, 0x49, 0x8c, 0x70, 0xc3, 0x31, 0x00, 0xff, 0x0d, 0xd2, 0x6d, - 0x83, 0x60, 0x65, 0x4c, 0x59, 0xc8, 0x0a, 0xf9, 0x88, 0x9c, 0x72, 0xd0, 0xc0, 0x0a, 0xde, 0x03, - 0x22, 0x26, 0xaa, 0x35, 0x32, 0x19, 0xd6, 0x94, 0x19, 0x41, 0x34, 0x2b, 0xe4, 0x93, 0xf2, 0x6a, - 0x50, 0x3f, 0x9c, 0x52, 0xd6, 0xc0, 0xf6, 0xfb, 0x94, 0x4a, 0x17, 0x3b, 0x5b, 0x20, 0x2e, 0x66, - 0x85, 0x7c, 0x5c, 0xbe, 0x7e, 0xb1, 0xc1, 0x43, 0x3c, 0x92, 0x34, 0x08, 0x41, 0xc4, 0xb2, 0x6d, - 0x43, 0x8c, 0x65, 0x85, 0x7c, 0x48, 0xe6, 0xd7, 0xf0, 0x53, 0x90, 0xb0, 0x0d, 0x9d, 0xa0, 0x9e, - 0xc2, 0x4b, 0x19, 0xde, 0x8f, 0xeb, 0x73, 0xfd, 0x38, 0xec, 0x51, 0xc4, 0x9e, 0xa0, 0xde, 0x00, - 0xcb, 0xc0, 0xe5, 0xcb, 0x8e, 0xfa, 0x26, 0x48, 0xaa, 0x1d, 0x44, 0x08, 0xf6, 0xe4, 0x71, 0xee, - 0x9c, 0xf0, 0x30, 0x4e, 0xf9, 0x08, 0xac, 0x39, 0x25, 0xc5, 0x66, 0x88, 0x68, 0xc8, 0xd2, 0x14, - 0x0d, 0x0f, 0x0d, 0x9e, 0x2c, 0x11, 0x70, 0xf6, 0x8a, 0x53, 0x6e, 0x7a, 0xd5, 0x9a, 0x5f, 0x84, - 0x19, 0x10, 0xb6, 0x89, 0x25, 0x26, 0x38, 0xc7, 0xb9, 0x84, 0xb7, 0x41, 0xa6, 0x6d, 0xe1, 0xaf, - 0x07, 0x98, 0xa8, 0x23, 0x85, 0xb6, 0xdb, 0x36, 0x66, 0x62, 0x32, 0x2b, 0xe4, 0xc3, 0xf2, 0xd5, - 0x00, 0x6f, 0x70, 0x18, 0xfe, 0x1f, 0xc4, 0x7a, 0x54, 0x75, 0x9f, 0x92, 0xe2, 0x4b, 0x12, 0x67, - 0x93, 0xf4, 0xc8, 0xab, 0xcb, 0x01, 0x13, 0x3e, 0x03, 0xa2, 0x46, 0xcf, 0x48, 0xcf, 0x20, 0x5d, - 0xc5, 0x44, 0xac, 0xa3, 0xa8, 0x94, 0xd8, 0xcc, 0x42, 0x06, 0x61, 0x62, 0x3a, 0x2b, 0xe4, 0xd3, - 0xbb, 0xff, 0x99, 0x75, 0xa9, 0x79, 0xfc, 0x13, 0xc4, 0x3a, 0xfb, 0x01, 0x9b, 0x87, 0xfc, 0x25, - 0x0f, 0xf9, 0xaa, 0x76, 0x21, 0xc3, 0xe9, 0xdc, 0xc0, 0xe4, 0x4f, 0x62, 0xb4, 0x8b, 0x89, 0x78, - 0x95, 0xef, 0x7f, 0xc2, 0xc5, 0x5a, 0x0e, 0x04, 0x77, 0x40, 0xca, 0x6f, 0xae, 0x1b, 0xe4, 0x6b, - 0x4e, 0xee, 0xb8, 0xf7, 0x9d, 0xb0, 0xf8, 0xa7, 0x20, 0xfb, 0xbd, 0x77, 0x23, 0x7d, 0x0b, 0xa4, - 0x3a, 0xd4, 0x34, 0x0d, 0xa2, 0x2b, 0x67, 0x86, 0xc6, 0x3a, 0xe2, 0x92, 0x9b, 0x7b, 0x0f, 0x7c, - 0xea, 0x60, 0xf0, 0xbf, 0x60, 0xdc, 0x2b, 0x45, 0xb3, 0x8c, 0x36, 0x13, 0x97, 0xb3, 0x42, 0x7e, - 0x41, 0x4e, 0x07, 0x70, 0xcd, 0x41, 0xe1, 0x1e, 0x88, 0xe9, 0xa6, 0xcd, 0x63, 0x26, 0xae, 0x7c, - 0xf0, 0x23, 0x59, 0xd4, 0x4d, 0xdb, 0xb9, 0x83, 0x9f, 0x80, 0x84, 0x85, 0x55, 0x6c, 0x0c, 0xb1, - 0xa6, 0x20, 0x26, 0xae, 0x7e, 0x50, 0x09, 0x7c, 0x7a, 0x85, 0xc1, 0x32, 0x88, 0x21, 0x6d, 0x88, - 0x88, 0x8a, 0x35, 0x51, 0xe5, 0xca, 0xb5, 0x39, 0x65, 0x93, 0x0f, 0x52, 0x39, 0x20, 0xe6, 0x5e, - 0x84, 0x40, 0xcc, 0xdf, 0x4b, 0xc7, 0xa1, 0x87, 0x98, 0xc1, 0x06, 0x1a, 0xe6, 0x23, 0x49, 0xa8, - 0xae, 0xbd, 0xab, 0x2e, 0x43, 0xb8, 0x7e, 0xc5, 0xf9, 0xbd, 0x78, 0xf2, 0xf9, 0x6d, 0xef, 0xe2, - 0xb5, 0x1c, 0x10, 0xe1, 0x1e, 0x88, 0xf7, 0x28, 0xd1, 0x5d, 0x55, 0x68, 0x5e, 0xd5, 0xf6, 0x55, - 0xed, 0xd7, 0xf2, 0x98, 0x09, 0x37, 0x40, 0x0c, 0xf5, 0xbc, 0x67, 0x85, 0x79, 0x0f, 0x83, 0x7b, - 0x5e, 0x53, 0xd5, 0x81, 0x85, 0xd4, 0x11, 0x9f, 0x16, 0x4e, 0xcd, 0xbb, 0x87, 0x87, 0x20, 0x6a, - 0xd3, 0x81, 0xa5, 0x62, 0x3e, 0x24, 0xd2, 0xbb, 0x5b, 0xef, 0x4b, 0x66, 0x93, 0xb3, 0xaa, 0x69, - 0x3f, 0x4b, 0x6f, 0xcf, 0xd7, 0x43, 0x99, 0x2b, 0xb2, 0xa7, 0xfe, 0x38, 0xf6, 0xf6, 0x7c, 0x3d, - 0x12, 0x13, 0x32, 0x42, 0xee, 0xa7, 0x18, 0x58, 0xbe, 0x68, 0x30, 0xc2, 0x1b, 0x00, 0xf4, 0xb1, - 0x6d, 0x23, 0x1d, 0x3b, 0x13, 0x42, 0xe0, 0x13, 0x22, 0xee, 0x21, 0x92, 0x06, 0x7f, 0x11, 0x40, - 0xa6, 0x4d, 0xad, 0x33, 0x64, 0x69, 0xd8, 0x52, 0x08, 0x66, 0x0e, 0xcb, 0x69, 0x40, 0xb2, 0x7a, - 0x2e, 0xbc, 0xaa, 0xac, 0x3d, 0x88, 0xe5, 0x4a, 0xa5, 0x52, 0xe9, 0x7f, 0xe5, 0xdc, 0xf7, 0x21, - 0x61, 0xf1, 0xc7, 0x50, 0xd4, 0x39, 0x02, 0x89, 0xfe, 0xae, 0x1a, 0xfd, 0x26, 0xd2, 0x09, 0x9b, - 0xc2, 0x9b, 0xf3, 0xf5, 0x97, 0x02, 0xf8, 0x4c, 0xa7, 0x05, 0xd6, 0xc1, 0x8c, 0x1f, 0x94, 0x05, - 0x82, 0xd9, 0x19, 0xb5, 0xba, 0xc5, 0xe9, 0x23, 0x68, 0x58, 0x2e, 0x9a, 0x5d, 0xbd, 0xc8, 0x46, - 0x26, 0xb6, 0x0b, 0xc7, 0xc8, 0xb2, 0x3b, 0xa8, 0x77, 0xff, 0xe0, 0x8b, 0xea, 0x88, 0x61, 0x1b, - 0x5e, 0xda, 0xe0, 0x31, 0xe9, 0xbb, 0x16, 0x65, 0x6e, 0x20, 0xa7, 0x83, 0x45, 0xd4, 0x31, 0x93, - 0x34, 0x58, 0x00, 0x4b, 0xe3, 0x65, 0x31, 0x4c, 0x10, 0xe1, 0x2b, 0x0b, 0xf3, 0xf5, 0x5f, 0x0b, - 0x4a, 0x2d, 0x5e, 0x91, 0x34, 0x58, 0x02, 0xcb, 0x63, 0xbe, 0xda, 0x1b, 0xd8, 0x0c, 0x5b, 0x8e, - 0x20, 0xc2, 0x05, 0x30, 0xa8, 0xed, 0xbb, 0x25, 0x49, 0x83, 0x7f, 0x08, 0x60, 0x65, 0x2c, 0xf1, - 0x0f, 0x42, 0x3c, 0x70, 0x27, 0x60, 0xb2, 0xfa, 0xb3, 0xf0, 0xaa, 0x72, 0xf3, 0x01, 0xcc, 0xdd, - 0x2d, 0x55, 0xcb, 0xb5, 0xbd, 0xbb, 0x07, 0xb5, 0x52, 0xa9, 0x54, 0xa9, 0xee, 0xd7, 0x2e, 0x6a, - 0x64, 0xec, 0x6f, 0xd0, 0xc8, 0x7b, 0x6e, 0x23, 0xc7, 0x6d, 0xf3, 0x0e, 0xee, 0x83, 0x81, 0x01, - 0xeb, 0x93, 0xdd, 0x19, 0x9f, 0xf9, 0x7c, 0x7a, 0x27, 0x76, 0x37, 0x2f, 0xfa, 0x42, 0x0d, 0xa2, - 0xbb, 0x67, 0x05, 0x9c, 0x35, 0x94, 0x34, 0xf8, 0xab, 0x00, 0x96, 0x3a, 0xb4, 0x8f, 0x15, 0xef, - 0x05, 0xfd, 0xe0, 0x2d, 0xfc, 0xf3, 0x82, 0x97, 0x71, 0xd6, 0x51, 0x77, 0x75, 0x6e, 0xf4, 0xca, - 0x60, 0x75, 0x6a, 0x6d, 0xe3, 0xf4, 0x45, 0x79, 0x98, 0x96, 0x26, 0x14, 0x41, 0xfe, 0xf6, 0xc0, - 0xda, 0x94, 0x68, 0x22, 0x82, 0x31, 0xae, 0x5a, 0x9e, 0x50, 0x8d, 0x43, 0x78, 0x0f, 0x44, 0x3a, - 0xd4, 0xb4, 0xc5, 0xc5, 0x6c, 0xf8, 0x43, 0x7f, 0x95, 0x64, 0x3a, 0x60, 0xf8, 0x3e, 0x35, 0x65, - 0xae, 0xc8, 0xfd, 0x2e, 0x4c, 0x0f, 0x0c, 0xbf, 0x3c, 0x3b, 0xbe, 0x85, 0x4b, 0x8d, 0xef, 0x6d, - 0x90, 0xb0, 0x31, 0xe1, 0xa3, 0x04, 0xf5, 0xdd, 0x49, 0x1a, 0x97, 0x81, 0x0b, 0xd5, 0x51, 0x1f, - 0x3b, 0x7f, 0x93, 0x3c, 0x02, 0xd2, 0x34, 0x0b, 0xdb, 0xb6, 0xf7, 0x49, 0xa6, 0x5c, 0xb4, 0xe2, - 0x82, 0xce, 0x41, 0xe6, 0xb9, 0x7a, 0x4e, 0xee, 0x77, 0x98, 0xf4, 0x41, 0xdf, 0x2b, 0x20, 0x21, - 0x1d, 0x13, 0xc6, 0xf3, 0x13, 0x97, 0x03, 0x69, 0xc5, 0x01, 0xef, 0xfc, 0x10, 0x02, 0xe9, 0xe9, - 0x79, 0x0a, 0x21, 0x48, 0x37, 0x1b, 0x8f, 0xe5, 0xfd, 0x03, 0xe5, 0x71, 0xfd, 0x61, 0xbd, 0xf1, - 0xb4, 0x9e, 0xb9, 0x02, 0xd3, 0x00, 0x78, 0xd8, 0xd1, 0x49, 0x33, 0x23, 0xc0, 0x25, 0x70, 0xd5, - 0xbb, 0x97, 0x0f, 0x8e, 0xa4, 0x66, 0x4b, 0xfe, 0x32, 0x13, 0x86, 0xeb, 0x60, 0xc5, 0x03, 0xa5, - 0x13, 0xe5, 0xe8, 0xa0, 0xf1, 0xa8, 0xb1, 0x5f, 0x69, 0x49, 0x8d, 0x7a, 0x26, 0x02, 0xb3, 0x60, - 0xd3, 0x2b, 0x3d, 0x95, 0x0e, 0x25, 0x45, 0x6e, 0x36, 0xa5, 0x29, 0xc6, 0x02, 0xdc, 0x02, 0x1b, - 0x1e, 0xa3, 0xda, 0x9a, 0xaf, 0x47, 0x27, 0x1c, 0x1e, 0x35, 0xe4, 0xca, 0x3c, 0x63, 0x71, 0x96, - 0xd1, 0xaa, 0x35, 0x2a, 0x53, 0x8c, 0x18, 0xdc, 0x06, 0xd7, 0x3d, 0xc6, 0x7e, 0xe3, 0xb8, 0x2a, - 0xd5, 0x0f, 0x6a, 0x53, 0x84, 0xf8, 0x46, 0xfa, 0xcd, 0xf9, 0x3a, 0x10, 0x85, 0x3b, 0x51, 0x97, - 0x56, 0xdd, 0x7b, 0xfd, 0xdb, 0x96, 0xf0, 0x55, 0xf1, 0x12, 0x9f, 0x01, 0x23, 0xe6, 0xe9, 0x69, - 0x94, 0x07, 0xa1, 0xfc, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc5, 0xaa, 0xa4, 0x28, 0x15, 0x0e, - 0x00, 0x00, +var File_lorawan_stack_api_metadata_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_metadata_proto_rawDesc = []byte{ + 0x0a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, + 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, + 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x95, 0x09, 0x0a, 0x0a, 0x52, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, + 0x12, 0x49, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x62, 0x72, 0x6f, 0x6b, 0x65, + 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, + 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x61, + 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0c, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x25, + 0x0a, 0x0e, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x38, 0x0a, 0x18, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x65, 0x64, 0x46, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x44, 0x0a, 0x1f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6e, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x5f, + 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x65, 0x64, 0x46, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x73, 0x73, 0x69, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x04, 0x72, 0x73, 0x73, 0x69, 0x12, 0x3c, 0x0a, 0x0b, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x73, 0x73, 0x69, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x52, 0x73, 0x73, 0x69, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x5f, 0x72, 0x73, 0x73, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x73, 0x73, 0x69, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x73, + 0x73, 0x69, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x72, 0x73, 0x73, + 0x69, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6e, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x03, 0x73, 0x6e, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, + 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, + 0x34, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6a, 0x0a, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, + 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, + 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, + 0x6b, 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x16, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, + 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2d, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x68, 0x6f, 0x70, 0x70, + 0x69, 0x6e, 0x67, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x64, 0x72, 0x69, 0x66, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x72, 0x69, 0x66, + 0x74, 0x12, 0x35, 0x0a, 0x08, 0x67, 0x70, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x07, 0x67, 0x70, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x33, 0x0a, 0x08, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, + 0x64, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x52, 0x08, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x22, 0x80, 0x02, 0x0a, 0x08, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, + 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x12, 0x12, + 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x56, 0x40, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x56, 0xc0, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x09, + 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x42, + 0x17, 0xfa, 0x42, 0x14, 0x12, 0x12, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x66, 0x40, 0x29, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x66, 0xc0, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, + 0x75, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6c, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x6c, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x12, 0x46, 0x0a, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0e, 0xfa, 0x42, 0x05, + 0x82, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x02, 0x10, 0x00, 0x52, 0x06, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xae, 0x08, + 0x0a, 0x14, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0xd5, 0x01, 0x0a, 0x10, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0xaa, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, + 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, + 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x66, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2e, 0x0a, + 0x13, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, + 0x14, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, + 0xe9, 0x01, 0x0a, 0x15, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, + 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, + 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, + 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, + 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x45, 0x75, 0x69, 0x12, 0x4e, 0x0a, 0x14, 0x66, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0xda, 0x01, 0x0a, 0x13, + 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xaa, 0x01, 0xfa, 0x42, 0x06, 0x7a, + 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, + 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, + 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, + 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, + 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x4e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x68, 0x6f, 0x6d, 0x65, + 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x35, 0x0a, + 0x17, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, + 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x04, 0x68, 0x6f, 0x70, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x48, 0x6f, 0x70, 0x52, 0x04, 0x68, 0x6f, 0x70, 0x73, 0x22, 0xe7, + 0x01, 0x0a, 0x14, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x48, 0x6f, 0x70, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x23, 0x0a, 0x0d, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2a, 0x9b, 0x02, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x53, + 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, + 0x0e, 0x0a, 0x0a, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x47, 0x50, 0x53, 0x10, 0x01, 0x12, + 0x13, 0x0a, 0x0f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, + 0x52, 0x59, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x49, + 0x50, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, + 0x20, 0x0a, 0x1c, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x57, 0x49, 0x46, 0x49, 0x5f, 0x52, + 0x53, 0x53, 0x49, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x42, 0x54, 0x5f, 0x52, + 0x53, 0x53, 0x49, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0x06, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4c, 0x4f, 0x52, 0x41, + 0x5f, 0x52, 0x53, 0x53, 0x49, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x10, 0x07, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4c, 0x4f, + 0x52, 0x41, 0x5f, 0x54, 0x44, 0x4f, 0x41, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, + 0x43, 0x4f, 0x4d, 0x42, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x09, 0x1a, 0x0e, 0xea, 0xaa, 0x19, 0x0a, 0x18, 0x01, 0x2a, 0x06, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_metadata_proto_rawDescOnce sync.Once + file_lorawan_stack_api_metadata_proto_rawDescData = file_lorawan_stack_api_metadata_proto_rawDesc +) + +func file_lorawan_stack_api_metadata_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_metadata_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_metadata_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_metadata_proto_rawDescData) + }) + return file_lorawan_stack_api_metadata_proto_rawDescData +} + +var file_lorawan_stack_api_metadata_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_lorawan_stack_api_metadata_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_lorawan_stack_api_metadata_proto_goTypes = []interface{}{ + (LocationSource)(0), // 0: ttn.lorawan.v3.LocationSource + (*RxMetadata)(nil), // 1: ttn.lorawan.v3.RxMetadata + (*Location)(nil), // 2: ttn.lorawan.v3.Location + (*PacketBrokerMetadata)(nil), // 3: ttn.lorawan.v3.PacketBrokerMetadata + (*PacketBrokerRouteHop)(nil), // 4: ttn.lorawan.v3.PacketBrokerRouteHop + (*GatewayIdentifiers)(nil), // 5: ttn.lorawan.v3.GatewayIdentifiers + (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp + (*wrapperspb.FloatValue)(nil), // 7: google.protobuf.FloatValue + (DownlinkPathConstraint)(0), // 8: ttn.lorawan.v3.DownlinkPathConstraint + (*structpb.Struct)(nil), // 9: google.protobuf.Struct + (*wrapperspb.StringValue)(nil), // 10: google.protobuf.StringValue +} +var file_lorawan_stack_api_metadata_proto_depIdxs = []int32{ + 5, // 0: ttn.lorawan.v3.RxMetadata.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 3, // 1: ttn.lorawan.v3.RxMetadata.packet_broker:type_name -> ttn.lorawan.v3.PacketBrokerMetadata + 6, // 2: ttn.lorawan.v3.RxMetadata.time:type_name -> google.protobuf.Timestamp + 7, // 3: ttn.lorawan.v3.RxMetadata.signal_rssi:type_name -> google.protobuf.FloatValue + 2, // 4: ttn.lorawan.v3.RxMetadata.location:type_name -> ttn.lorawan.v3.Location + 8, // 5: ttn.lorawan.v3.RxMetadata.downlink_path_constraint:type_name -> ttn.lorawan.v3.DownlinkPathConstraint + 6, // 6: ttn.lorawan.v3.RxMetadata.gps_time:type_name -> google.protobuf.Timestamp + 6, // 7: ttn.lorawan.v3.RxMetadata.received_at:type_name -> google.protobuf.Timestamp + 9, // 8: ttn.lorawan.v3.RxMetadata.advanced:type_name -> google.protobuf.Struct + 0, // 9: ttn.lorawan.v3.Location.source:type_name -> ttn.lorawan.v3.LocationSource + 10, // 10: ttn.lorawan.v3.PacketBrokerMetadata.forwarder_gateway_id:type_name -> google.protobuf.StringValue + 4, // 11: ttn.lorawan.v3.PacketBrokerMetadata.hops:type_name -> ttn.lorawan.v3.PacketBrokerRouteHop + 6, // 12: ttn.lorawan.v3.PacketBrokerRouteHop.received_at:type_name -> google.protobuf.Timestamp + 13, // [13:13] is the sub-list for method output_type + 13, // [13:13] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_metadata_proto_init() } +func file_lorawan_stack_api_metadata_proto_init() { + if File_lorawan_stack_api_metadata_proto != nil { + return + } + file_lorawan_stack_api_enums_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_metadata_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RxMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_metadata_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Location); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_metadata_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_metadata_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerRouteHop); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_metadata_proto_rawDesc, + NumEnums: 1, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_metadata_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_metadata_proto_depIdxs, + EnumInfos: file_lorawan_stack_api_metadata_proto_enumTypes, + MessageInfos: file_lorawan_stack_api_metadata_proto_msgTypes, + }.Build() + File_lorawan_stack_api_metadata_proto = out.File + file_lorawan_stack_api_metadata_proto_rawDesc = nil + file_lorawan_stack_api_metadata_proto_goTypes = nil + file_lorawan_stack_api_metadata_proto_depIdxs = nil } diff --git a/pkg/ttnpb/metadata.pb.setters.fm.go b/pkg/ttnpb/metadata.pb.setters.fm.go index 28b5be46be..5eac69dbb0 100644 --- a/pkg/ttnpb/metadata.pb.setters.fm.go +++ b/pkg/ttnpb/metadata.pb.setters.fm.go @@ -206,8 +206,7 @@ func (dst *RxMetadata) SetFields(src *RxMetadata, paths ...string) error { if src != nil { dst.DownlinkPathConstraint = src.DownlinkPathConstraint } else { - var zero DownlinkPathConstraint - dst.DownlinkPathConstraint = zero + dst.DownlinkPathConstraint = 0 } case "uplink_token": if len(subs) > 0 { @@ -333,8 +332,7 @@ func (dst *Location) SetFields(src *Location, paths ...string) error { if src != nil { dst.Source = src.Source } else { - var zero LocationSource - dst.Source = zero + dst.Source = 0 } default: diff --git a/pkg/ttnpb/metadata.pb.validate.go b/pkg/ttnpb/metadata.pb.validate.go index 98548b0c65..90a88dd264 100644 --- a/pkg/ttnpb/metadata.pb.validate.go +++ b/pkg/ttnpb/metadata.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _metadata_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on RxMetadata with the rules defined // in the proto definition for this message. If any rules are violated, an // error is returned. diff --git a/pkg/ttnpb/metadata_flags.pb.go b/pkg/ttnpb/metadata_flags.pb.go index 1f903895ad..c35c941b3c 100644 --- a/pkg/ttnpb/metadata_flags.pb.go +++ b/pkg/ttnpb/metadata_flags.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/metadata.proto package ttnpb diff --git a/pkg/ttnpb/metadata_json.pb.go b/pkg/ttnpb/metadata_json.pb.go index 44e8b48ff0..4d640957f8 100644 --- a/pkg/ttnpb/metadata_json.pb.go +++ b/pkg/ttnpb/metadata_json.pb.go @@ -1,16 +1,16 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/metadata.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" - types "github.com/gogo/protobuf/types" - types1 "go.thethings.network/lorawan-stack/v3/pkg/types" + types "go.thethings.network/lorawan-stack/v3/pkg/types" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) // MarshalProtoJSON marshals the LocationSource to JSON. @@ -95,7 +95,7 @@ func (x *RxMetadata) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.Time == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.Time) + golang.MarshalTimestamp(s, x.Time) } } if x.Timestamp != 0 || s.HasField("timestamp") { @@ -188,7 +188,7 @@ func (x *RxMetadata) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.GpsTime == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.GpsTime) + golang.MarshalTimestamp(s, x.GpsTime) } } if x.ReceivedAt != nil || s.HasField("received_at") { @@ -197,7 +197,7 @@ func (x *RxMetadata) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ReceivedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ReceivedAt) + golang.MarshalTimestamp(s, x.ReceivedAt) } } if x.Advanced != nil || s.HasField("advanced") { @@ -206,7 +206,7 @@ func (x *RxMetadata) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.Advanced == nil { s.WriteNil() } else { - gogo.MarshalStruct(s, x.Advanced) + golang.MarshalStruct(s, x.Advanced) } } s.WriteObjectEnd() @@ -249,7 +249,7 @@ func (x *RxMetadata) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.Time = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -279,7 +279,7 @@ func (x *RxMetadata) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { if s.Err() != nil { return } - x.SignalRssi = &types.FloatValue{Value: v} + x.SignalRssi = &wrapperspb.FloatValue{Value: v} case "channel_rssi", "channelRssi": s.AddField("channel_rssi") x.ChannelRssi = s.ReadFloat32() @@ -320,7 +320,7 @@ func (x *RxMetadata) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.GpsTime = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -331,7 +331,7 @@ func (x *RxMetadata) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ReceivedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -342,7 +342,7 @@ func (x *RxMetadata) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.Advanced = nil return } - v := gogo.UnmarshalStruct(s) + v := golang.UnmarshalStruct(s) if s.Err() != nil { return } @@ -446,7 +446,7 @@ func (x *PacketBrokerMetadata) MarshalProtoJSON(s *jsonplugin.MarshalState) { if len(x.ForwarderNetId) > 0 || s.HasField("forwarder_net_id") { s.WriteMoreIf(&wroteField) s.WriteObjectField("forwarder_net_id") - types1.MarshalHEXBytes(s.WithField("forwarder_net_id"), x.ForwarderNetId) + types.MarshalHEXBytes(s.WithField("forwarder_net_id"), x.ForwarderNetId) } if x.ForwarderTenantId != "" || s.HasField("forwarder_tenant_id") { s.WriteMoreIf(&wroteField) @@ -461,7 +461,7 @@ func (x *PacketBrokerMetadata) MarshalProtoJSON(s *jsonplugin.MarshalState) { if len(x.ForwarderGatewayEui) > 0 || s.HasField("forwarder_gateway_eui") { s.WriteMoreIf(&wroteField) s.WriteObjectField("forwarder_gateway_eui") - types1.MarshalHEXBytes(s.WithField("forwarder_gateway_eui"), x.ForwarderGatewayEui) + types.MarshalHEXBytes(s.WithField("forwarder_gateway_eui"), x.ForwarderGatewayEui) } if x.ForwarderGatewayId != nil || s.HasField("forwarder_gateway_id") { s.WriteMoreIf(&wroteField) @@ -475,7 +475,7 @@ func (x *PacketBrokerMetadata) MarshalProtoJSON(s *jsonplugin.MarshalState) { if len(x.HomeNetworkNetId) > 0 || s.HasField("home_network_net_id") { s.WriteMoreIf(&wroteField) s.WriteObjectField("home_network_net_id") - types1.MarshalHEXBytes(s.WithField("home_network_net_id"), x.HomeNetworkNetId) + types.MarshalHEXBytes(s.WithField("home_network_net_id"), x.HomeNetworkNetId) } if x.HomeNetworkTenantId != "" || s.HasField("home_network_tenant_id") { s.WriteMoreIf(&wroteField) @@ -495,7 +495,7 @@ func (x *PacketBrokerMetadata) MarshalProtoJSON(s *jsonplugin.MarshalState) { for _, element := range x.Hops { s.WriteMoreIf(&wroteElement) // NOTE: PacketBrokerRouteHop does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, element) + golang.MarshalMessage(s, element) } s.WriteArrayEnd() } @@ -521,7 +521,7 @@ func (x *PacketBrokerMetadata) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) x.MessageId = s.ReadString() case "forwarder_net_id", "forwarderNetId": s.AddField("forwarder_net_id") - x.ForwarderNetId = types1.Unmarshal3Bytes(s.WithField("forwarder_net_id", false)) + x.ForwarderNetId = types.Unmarshal3Bytes(s.WithField("forwarder_net_id", false)) case "forwarder_tenant_id", "forwarderTenantId": s.AddField("forwarder_tenant_id") x.ForwarderTenantId = s.ReadString() @@ -530,7 +530,7 @@ func (x *PacketBrokerMetadata) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) x.ForwarderClusterId = s.ReadString() case "forwarder_gateway_eui", "forwarderGatewayEui": s.AddField("forwarder_gateway_eui") - x.ForwarderGatewayEui = types1.Unmarshal8Bytes(s.WithField("forwarder_gateway_eui", false)) + x.ForwarderGatewayEui = types.Unmarshal8Bytes(s.WithField("forwarder_gateway_eui", false)) case "forwarder_gateway_id", "forwarderGatewayId": s.AddField("forwarder_gateway_id") if s.ReadNil() { @@ -541,10 +541,10 @@ func (x *PacketBrokerMetadata) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) if s.Err() != nil { return } - x.ForwarderGatewayId = &types.StringValue{Value: v} + x.ForwarderGatewayId = &wrapperspb.StringValue{Value: v} case "home_network_net_id", "homeNetworkNetId": s.AddField("home_network_net_id") - x.HomeNetworkNetId = types1.Unmarshal3Bytes(s.WithField("home_network_net_id", false)) + x.HomeNetworkNetId = types.Unmarshal3Bytes(s.WithField("home_network_net_id", false)) case "home_network_tenant_id", "homeNetworkTenantId": s.AddField("home_network_tenant_id") x.HomeNetworkTenantId = s.ReadString() @@ -560,7 +560,7 @@ func (x *PacketBrokerMetadata) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) s.ReadArray(func() { // NOTE: PacketBrokerRouteHop does not seem to implement UnmarshalProtoJSON. var v PacketBrokerRouteHop - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Hops = append(x.Hops, &v) }) } diff --git a/pkg/ttnpb/mqtt.pb.go b/pkg/ttnpb/mqtt.pb.go index 55ab5a8997..f6cc52e2fd 100644 --- a/pkg/ttnpb/mqtt.pb.go +++ b/pkg/ttnpb/mqtt.pb.go @@ -1,120 +1,213 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/mqtt.proto package ttnpb import ( - fmt "fmt" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - golang_proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // The connection information of an MQTT frontend. type MQTTConnectionInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The public listen address of the frontend. PublicAddress string `protobuf:"bytes,1,opt,name=public_address,json=publicAddress,proto3" json:"public_address,omitempty"` // The public listen address of the TLS frontend. PublicTlsAddress string `protobuf:"bytes,2,opt,name=public_tls_address,json=publicTlsAddress,proto3" json:"public_tls_address,omitempty"` // The username to be used for authentication. - Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` } -func (m *MQTTConnectionInfo) Reset() { *m = MQTTConnectionInfo{} } -func (m *MQTTConnectionInfo) String() string { return proto.CompactTextString(m) } -func (*MQTTConnectionInfo) ProtoMessage() {} -func (*MQTTConnectionInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_dbbf9b6b10797b61, []int{0} -} -func (m *MQTTConnectionInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MQTTConnectionInfo.Unmarshal(m, b) -} -func (m *MQTTConnectionInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MQTTConnectionInfo.Marshal(b, m, deterministic) -} -func (m *MQTTConnectionInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_MQTTConnectionInfo.Merge(m, src) +func (x *MQTTConnectionInfo) Reset() { + *x = MQTTConnectionInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_mqtt_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MQTTConnectionInfo) XXX_Size() int { - return xxx_messageInfo_MQTTConnectionInfo.Size(m) + +func (x *MQTTConnectionInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MQTTConnectionInfo) XXX_DiscardUnknown() { - xxx_messageInfo_MQTTConnectionInfo.DiscardUnknown(m) + +func (*MQTTConnectionInfo) ProtoMessage() {} + +func (x *MQTTConnectionInfo) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_mqtt_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MQTTConnectionInfo proto.InternalMessageInfo +// Deprecated: Use MQTTConnectionInfo.ProtoReflect.Descriptor instead. +func (*MQTTConnectionInfo) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_mqtt_proto_rawDescGZIP(), []int{0} +} -func (m *MQTTConnectionInfo) GetPublicAddress() string { - if m != nil { - return m.PublicAddress +func (x *MQTTConnectionInfo) GetPublicAddress() string { + if x != nil { + return x.PublicAddress } return "" } -func (m *MQTTConnectionInfo) GetPublicTlsAddress() string { - if m != nil { - return m.PublicTlsAddress +func (x *MQTTConnectionInfo) GetPublicTlsAddress() string { + if x != nil { + return x.PublicTlsAddress } return "" } -func (m *MQTTConnectionInfo) GetUsername() string { - if m != nil { - return m.Username +func (x *MQTTConnectionInfo) GetUsername() string { + if x != nil { + return x.Username } return "" } -func init() { - proto.RegisterType((*MQTTConnectionInfo)(nil), "ttn.lorawan.v3.MQTTConnectionInfo") - golang_proto.RegisterType((*MQTTConnectionInfo)(nil), "ttn.lorawan.v3.MQTTConnectionInfo") +var File_lorawan_stack_api_mqtt_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_mqtt_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x41, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, + 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, + 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0xa9, 0x03, 0x0a, 0x12, 0x4d, 0x51, 0x54, 0x54, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0xb6, 0x01, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, + 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, + 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, + 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, + 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, + 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, + 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, + 0x24, 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0xbd, 0x01, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x74, 0x6c, 0x73, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, + 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, + 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, + 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, + 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, + 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, + 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, + 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x10, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x6c, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x35, 0x5a, 0x2f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, + 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { proto.RegisterFile("lorawan-stack/api/mqtt.proto", fileDescriptor_dbbf9b6b10797b61) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/mqtt.proto", fileDescriptor_dbbf9b6b10797b61) +var ( + file_lorawan_stack_api_mqtt_proto_rawDescOnce sync.Once + file_lorawan_stack_api_mqtt_proto_rawDescData = file_lorawan_stack_api_mqtt_proto_rawDesc +) + +func file_lorawan_stack_api_mqtt_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_mqtt_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_mqtt_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_mqtt_proto_rawDescData) + }) + return file_lorawan_stack_api_mqtt_proto_rawDescData } -var fileDescriptor_dbbf9b6b10797b61 = []byte{ - // 359 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x92, 0xcd, 0x4a, 0xf3, 0x40, - 0x14, 0x86, 0x99, 0xaf, 0xf0, 0xa1, 0x01, 0x8b, 0x64, 0x55, 0x8a, 0x88, 0x48, 0x17, 0x49, 0x71, - 0x32, 0x6a, 0xe9, 0xc2, 0x6c, 0x42, 0xea, 0xca, 0x85, 0x0b, 0x4b, 0x57, 0xfd, 0x93, 0x49, 0x3a, - 0x4d, 0x43, 0xd3, 0x99, 0x98, 0x9c, 0xa4, 0xb6, 0xd6, 0x9d, 0x20, 0xb8, 0xf0, 0x3e, 0xbc, 0x01, - 0x77, 0x82, 0xf7, 0xe2, 0x5d, 0xb8, 0x92, 0x66, 0x6a, 0x53, 0xf1, 0x06, 0xdc, 0x3d, 0x87, 0xf3, - 0xbe, 0x87, 0x07, 0x66, 0x94, 0xbd, 0x40, 0x44, 0x74, 0x4a, 0x39, 0x8e, 0x81, 0xba, 0x63, 0x42, - 0x43, 0x9f, 0x4c, 0x6e, 0x00, 0x8c, 0x30, 0x12, 0x20, 0xd4, 0x22, 0x00, 0x37, 0x56, 0x09, 0x23, - 0xad, 0x95, 0x6d, 0xcf, 0x87, 0x51, 0xe2, 0x18, 0xae, 0x98, 0x10, 0xc6, 0x53, 0x31, 0x0b, 0x23, - 0x71, 0x3b, 0x23, 0x59, 0xd8, 0xc5, 0x1e, 0xe3, 0x38, 0xa5, 0x81, 0x3f, 0xa0, 0xc0, 0xc8, 0x2f, - 0x90, 0x27, 0xcb, 0x78, 0xe3, 0x84, 0x27, 0x3c, 0x21, 0xcb, 0x4e, 0x32, 0xcc, 0xa6, 0x6c, 0xc8, - 0x48, 0xc6, 0x0f, 0x5f, 0x0a, 0x8a, 0x7a, 0x79, 0xd5, 0x6a, 0x9d, 0x0b, 0xce, 0x99, 0x0b, 0xbe, - 0xe0, 0x17, 0x7c, 0x28, 0xd4, 0x57, 0xa4, 0x14, 0xc3, 0xc4, 0x09, 0x7c, 0xf7, 0x9a, 0x0e, 0x06, - 0x11, 0x8b, 0xe3, 0x12, 0x3a, 0x40, 0xda, 0x76, 0xe3, 0x19, 0x7d, 0x36, 0x9e, 0x50, 0xf4, 0x88, - 0x4e, 0x1f, 0x50, 0x5f, 0xb3, 0x4c, 0xcd, 0x32, 0x3b, 0x14, 0xcf, 0x6d, 0xdc, 0x3e, 0xc6, 0x67, - 0xbd, 0xc5, 0x06, 0xe7, 0xd8, 0xc5, 0xbd, 0xea, 0xc6, 0x42, 0xef, 0x1a, 0x7a, 0x75, 0xd9, 0xb3, - 0x71, 0x9b, 0xe2, 0xb9, 0xec, 0xe5, 0x9c, 0x63, 0xd6, 0xcb, 0x17, 0xba, 0x66, 0x99, 0x66, 0x67, - 0x49, 0x77, 0x27, 0x47, 0xf5, 0x7b, 0xdd, 0xaa, 0x2c, 0xfa, 0x95, 0xe6, 0x8e, 0xd4, 0xb4, 0xa5, - 0xa5, 0xfa, 0x86, 0x14, 0x75, 0x25, 0x0e, 0x41, 0xbc, 0x96, 0xff, 0xf7, 0x37, 0xe5, 0x77, 0xa5, - 0x6a, 0x2b, 0x88, 0xbf, 0xfd, 0xcb, 0xca, 0x56, 0x12, 0xb3, 0x88, 0xd3, 0x09, 0x2b, 0x15, 0x96, - 0xd2, 0xcd, 0xf5, 0xdc, 0xa8, 0xbf, 0x7f, 0xec, 0xa3, 0x36, 0xf1, 0x84, 0x01, 0x23, 0x06, 0x23, - 0x9f, 0x7b, 0xb1, 0xc1, 0x19, 0x4c, 0x45, 0x34, 0x26, 0x3f, 0xbf, 0x59, 0x5a, 0x23, 0xe1, 0xd8, - 0x23, 0x00, 0x3c, 0x74, 0x9c, 0xff, 0xd9, 0x4b, 0xd7, 0xbe, 0x02, 0x00, 0x00, 0xff, 0xff, 0xab, - 0xc4, 0x52, 0x65, 0x8b, 0x02, 0x00, 0x00, +var file_lorawan_stack_api_mqtt_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_lorawan_stack_api_mqtt_proto_goTypes = []interface{}{ + (*MQTTConnectionInfo)(nil), // 0: ttn.lorawan.v3.MQTTConnectionInfo +} +var file_lorawan_stack_api_mqtt_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_mqtt_proto_init() } +func file_lorawan_stack_api_mqtt_proto_init() { + if File_lorawan_stack_api_mqtt_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_mqtt_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MQTTConnectionInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_mqtt_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_mqtt_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_mqtt_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_mqtt_proto_msgTypes, + }.Build() + File_lorawan_stack_api_mqtt_proto = out.File + file_lorawan_stack_api_mqtt_proto_rawDesc = nil + file_lorawan_stack_api_mqtt_proto_goTypes = nil + file_lorawan_stack_api_mqtt_proto_depIdxs = nil } diff --git a/pkg/ttnpb/mqtt.pb.validate.go b/pkg/ttnpb/mqtt.pb.validate.go index 7fc6acf01b..1fa4f28ffc 100644 --- a/pkg/ttnpb/mqtt.pb.validate.go +++ b/pkg/ttnpb/mqtt.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _mqtt_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on MQTTConnectionInfo with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/networkserver.pb.go b/pkg/ttnpb/networkserver.pb.go index 2699747b59..914d9b58b0 100644 --- a/pkg/ttnpb/networkserver.pb.go +++ b/pkg/ttnpb/networkserver.pb.go @@ -1,944 +1,597 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/networkserver.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // Response of GenerateDevAddr. type GenerateDevAddrResponse struct { - DevAddr []byte `protobuf:"bytes,1,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GenerateDevAddrResponse) Reset() { *m = GenerateDevAddrResponse{} } -func (m *GenerateDevAddrResponse) String() string { return proto.CompactTextString(m) } -func (*GenerateDevAddrResponse) ProtoMessage() {} -func (*GenerateDevAddrResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c77e7504ad1081b8, []int{0} -} -func (m *GenerateDevAddrResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GenerateDevAddrResponse.Unmarshal(m, b) -} -func (m *GenerateDevAddrResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GenerateDevAddrResponse.Marshal(b, m, deterministic) -} -func (m *GenerateDevAddrResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GenerateDevAddrResponse.Merge(m, src) -} -func (m *GenerateDevAddrResponse) XXX_Size() int { - return xxx_messageInfo_GenerateDevAddrResponse.Size(m) -} -func (m *GenerateDevAddrResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GenerateDevAddrResponse.DiscardUnknown(m) + DevAddr []byte `protobuf:"bytes,1,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` } -var xxx_messageInfo_GenerateDevAddrResponse proto.InternalMessageInfo - -func (m *GenerateDevAddrResponse) GetDevAddr() []byte { - if m != nil { - return m.DevAddr +func (x *GenerateDevAddrResponse) Reset() { + *x = GenerateDevAddrResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_networkserver_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -// Request of GetDefaultMACSettings. -type GetDefaultMACSettingsRequest struct { - FrequencyPlanId string `protobuf:"bytes,1,opt,name=frequency_plan_id,json=frequencyPlanId,proto3" json:"frequency_plan_id,omitempty"` - LorawanPhyVersion PHYVersion `protobuf:"varint,2,opt,name=lorawan_phy_version,json=lorawanPhyVersion,proto3,enum=ttn.lorawan.v3.PHYVersion" json:"lorawan_phy_version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetDefaultMACSettingsRequest) Reset() { *m = GetDefaultMACSettingsRequest{} } -func (m *GetDefaultMACSettingsRequest) String() string { return proto.CompactTextString(m) } -func (*GetDefaultMACSettingsRequest) ProtoMessage() {} -func (*GetDefaultMACSettingsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c77e7504ad1081b8, []int{1} -} -func (m *GetDefaultMACSettingsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetDefaultMACSettingsRequest.Unmarshal(m, b) -} -func (m *GetDefaultMACSettingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetDefaultMACSettingsRequest.Marshal(b, m, deterministic) -} -func (m *GetDefaultMACSettingsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetDefaultMACSettingsRequest.Merge(m, src) -} -func (m *GetDefaultMACSettingsRequest) XXX_Size() int { - return xxx_messageInfo_GetDefaultMACSettingsRequest.Size(m) -} -func (m *GetDefaultMACSettingsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetDefaultMACSettingsRequest.DiscardUnknown(m) +func (x *GenerateDevAddrResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_GetDefaultMACSettingsRequest proto.InternalMessageInfo +func (*GenerateDevAddrResponse) ProtoMessage() {} -func (m *GetDefaultMACSettingsRequest) GetFrequencyPlanId() string { - if m != nil { - return m.FrequencyPlanId +func (x *GenerateDevAddrResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_networkserver_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" -} - -func (m *GetDefaultMACSettingsRequest) GetLorawanPhyVersion() PHYVersion { - if m != nil { - return m.LorawanPhyVersion - } - return PHYVersion_PHY_UNKNOWN + return mi.MessageOf(x) } -type GetNetIDResponse struct { - NetId []byte `protobuf:"bytes,1,opt,name=net_id,json=netId,proto3" json:"net_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetNetIDResponse) Reset() { *m = GetNetIDResponse{} } -func (m *GetNetIDResponse) String() string { return proto.CompactTextString(m) } -func (*GetNetIDResponse) ProtoMessage() {} -func (*GetNetIDResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c77e7504ad1081b8, []int{2} -} -func (m *GetNetIDResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetNetIDResponse.Unmarshal(m, b) -} -func (m *GetNetIDResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetNetIDResponse.Marshal(b, m, deterministic) -} -func (m *GetNetIDResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetNetIDResponse.Merge(m, src) -} -func (m *GetNetIDResponse) XXX_Size() int { - return xxx_messageInfo_GetNetIDResponse.Size(m) -} -func (m *GetNetIDResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetNetIDResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetNetIDResponse proto.InternalMessageInfo - -func (m *GetNetIDResponse) GetNetId() []byte { - if m != nil { - return m.NetId - } - return nil -} - -type GetDeviceAdressPrefixesResponse struct { - DevAddrPrefixes [][]byte `protobuf:"bytes,1,rep,name=dev_addr_prefixes,json=devAddrPrefixes,proto3" json:"dev_addr_prefixes,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetDeviceAdressPrefixesResponse) Reset() { *m = GetDeviceAdressPrefixesResponse{} } -func (m *GetDeviceAdressPrefixesResponse) String() string { return proto.CompactTextString(m) } -func (*GetDeviceAdressPrefixesResponse) ProtoMessage() {} -func (*GetDeviceAdressPrefixesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c77e7504ad1081b8, []int{3} -} -func (m *GetDeviceAdressPrefixesResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetDeviceAdressPrefixesResponse.Unmarshal(m, b) -} -func (m *GetDeviceAdressPrefixesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetDeviceAdressPrefixesResponse.Marshal(b, m, deterministic) -} -func (m *GetDeviceAdressPrefixesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetDeviceAdressPrefixesResponse.Merge(m, src) -} -func (m *GetDeviceAdressPrefixesResponse) XXX_Size() int { - return xxx_messageInfo_GetDeviceAdressPrefixesResponse.Size(m) -} -func (m *GetDeviceAdressPrefixesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetDeviceAdressPrefixesResponse.DiscardUnknown(m) +// Deprecated: Use GenerateDevAddrResponse.ProtoReflect.Descriptor instead. +func (*GenerateDevAddrResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_networkserver_proto_rawDescGZIP(), []int{0} } -var xxx_messageInfo_GetDeviceAdressPrefixesResponse proto.InternalMessageInfo - -func (m *GetDeviceAdressPrefixesResponse) GetDevAddrPrefixes() [][]byte { - if m != nil { - return m.DevAddrPrefixes +func (x *GenerateDevAddrResponse) GetDevAddr() []byte { + if x != nil { + return x.DevAddr } return nil } -func init() { - proto.RegisterType((*GenerateDevAddrResponse)(nil), "ttn.lorawan.v3.GenerateDevAddrResponse") - golang_proto.RegisterType((*GenerateDevAddrResponse)(nil), "ttn.lorawan.v3.GenerateDevAddrResponse") - proto.RegisterType((*GetDefaultMACSettingsRequest)(nil), "ttn.lorawan.v3.GetDefaultMACSettingsRequest") - golang_proto.RegisterType((*GetDefaultMACSettingsRequest)(nil), "ttn.lorawan.v3.GetDefaultMACSettingsRequest") - proto.RegisterType((*GetNetIDResponse)(nil), "ttn.lorawan.v3.GetNetIDResponse") - golang_proto.RegisterType((*GetNetIDResponse)(nil), "ttn.lorawan.v3.GetNetIDResponse") - proto.RegisterType((*GetDeviceAdressPrefixesResponse)(nil), "ttn.lorawan.v3.GetDeviceAdressPrefixesResponse") - golang_proto.RegisterType((*GetDeviceAdressPrefixesResponse)(nil), "ttn.lorawan.v3.GetDeviceAdressPrefixesResponse") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/networkserver.proto", fileDescriptor_c77e7504ad1081b8) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/networkserver.proto", fileDescriptor_c77e7504ad1081b8) -} - -var fileDescriptor_c77e7504ad1081b8 = []byte{ - // 1180 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0xcf, 0x6f, 0x1b, 0x45, - 0x18, 0x65, 0x1c, 0xd7, 0x4d, 0x47, 0x56, 0xd3, 0x4c, 0x7f, 0x25, 0x6e, 0x4b, 0xa3, 0x2d, 0x88, - 0xaa, 0x90, 0x5d, 0x63, 0x17, 0x0e, 0xbd, 0xc0, 0x6e, 0x1d, 0x1c, 0x07, 0x12, 0xa5, 0x4e, 0x8a, - 0xda, 0x22, 0x64, 0x4d, 0x76, 0x3f, 0xef, 0x2e, 0x5e, 0xcf, 0x2c, 0x3b, 0x63, 0xa7, 0x6e, 0x95, - 0x4b, 0x0e, 0x1c, 0x11, 0x0a, 0x42, 0x42, 0x1c, 0x39, 0xa1, 0x08, 0x71, 0x80, 0x03, 0x17, 0x40, - 0x88, 0x13, 0x27, 0x2e, 0x1c, 0xf8, 0x03, 0xe8, 0xa9, 0x47, 0x8e, 0x39, 0x20, 0xe4, 0xdd, 0xb5, - 0x63, 0x7b, 0x6d, 0xd4, 0x14, 0x84, 0xb8, 0xcd, 0x7a, 0xde, 0xbc, 0xef, 0x7d, 0x3f, 0xde, 0x8c, - 0xf1, 0xf3, 0x1e, 0x0f, 0xe8, 0x36, 0x65, 0x8b, 0x42, 0x52, 0xb3, 0xa1, 0x51, 0xdf, 0xd5, 0x18, - 0xc8, 0x6d, 0x1e, 0x34, 0x04, 0x04, 0x6d, 0x08, 0x54, 0x3f, 0xe0, 0x92, 0x93, 0x93, 0x52, 0x32, - 0x35, 0x86, 0xaa, 0xed, 0x62, 0xae, 0x64, 0xbb, 0xd2, 0x69, 0x6d, 0xa9, 0x26, 0x6f, 0x6a, 0x9b, - 0x0e, 0x6c, 0x3a, 0x2e, 0xb3, 0x45, 0x85, 0x59, 0x2d, 0x21, 0x03, 0x17, 0x84, 0x16, 0x9e, 0x32, - 0x17, 0x6d, 0x60, 0x8b, 0x36, 0x5f, 0xac, 0x7b, 0xd4, 0x16, 0x1a, 0x65, 0x8c, 0x4b, 0x2a, 0x5d, - 0xce, 0x44, 0xc4, 0x9a, 0xd3, 0x07, 0x58, 0x80, 0xb5, 0x79, 0xc7, 0x0f, 0xf8, 0xfd, 0xce, 0xe0, - 0xe1, 0x36, 0xf5, 0x5c, 0x8b, 0x4a, 0xd0, 0x12, 0x8b, 0x98, 0xe2, 0xe6, 0x91, 0x84, 0xbc, 0x27, - 0x38, 0x1b, 0xa3, 0x63, 0x71, 0x80, 0xc4, 0xe6, 0x36, 0x8f, 0x4e, 0x6d, 0xb5, 0xea, 0xe1, 0x57, - 0xf8, 0x11, 0xae, 0x62, 0xf8, 0x45, 0x9b, 0x73, 0xdb, 0x83, 0xb0, 0x58, 0x49, 0xb2, 0x0b, 0xf1, - 0x6e, 0x9f, 0x03, 0x9a, 0xbe, 0xec, 0xc4, 0x9b, 0x4a, 0xb2, 0xdc, 0xc0, 0xac, 0x9a, 0x05, 0x6d, - 0xd7, 0xec, 0xa5, 0x74, 0x25, 0x89, 0x71, 0x2d, 0x60, 0xd2, 0xad, 0xbb, 0x10, 0xf4, 0xa2, 0x2c, - 0x24, 0x41, 0x4d, 0x10, 0x82, 0xda, 0xd0, 0x43, 0x5c, 0x4e, 0x22, 0x7a, 0x0d, 0x8c, 0x00, 0xea, - 0x40, 0x6d, 0xb8, 0x0f, 0x8c, 0xfa, 0x6e, 0xbb, 0xa0, 0x71, 0x3f, 0x4c, 0x26, 0x99, 0x98, 0xf2, - 0x08, 0xe1, 0xf3, 0x65, 0x60, 0x10, 0x50, 0x09, 0x25, 0x68, 0xeb, 0x96, 0x15, 0x54, 0x41, 0xf8, - 0x9c, 0x09, 0x20, 0x3f, 0x23, 0x3c, 0x6d, 0x41, 0xbb, 0x46, 0x2d, 0x2b, 0x98, 0x43, 0x0b, 0xe8, - 0x6a, 0xd6, 0xf8, 0x12, 0xed, 0xe9, 0xf3, 0x2b, 0x58, 0x29, 0xbc, 0x9a, 0xcf, 0xeb, 0xc6, 0xcd, - 0x92, 0xf2, 0x59, 0x0a, 0x1d, 0xff, 0x3c, 0x95, 0xe9, 0x36, 0x86, 0xd9, 0x07, 0x46, 0xe6, 0x41, - 0xda, 0x49, 0xfb, 0xe8, 0xf1, 0xfe, 0xfc, 0x2e, 0xc2, 0xaf, 0xd9, 0x5c, 0x95, 0x0e, 0xc8, 0xb0, - 0x7d, 0x6a, 0x3c, 0x81, 0xda, 0x70, 0x06, 0xed, 0xa2, 0xe6, 0x37, 0x6c, 0x4d, 0x76, 0x7c, 0x10, - 0xea, 0x2a, 0x0d, 0x84, 0x43, 0xbd, 0xe5, 0xa5, 0x3b, 0x46, 0x47, 0x82, 0x20, 0x47, 0x26, 0xb8, - 0xcd, 0x9a, 0x11, 0xc5, 0xf5, 0x90, 0xa0, 0x7a, 0xdc, 0x8a, 0x52, 0x52, 0xbe, 0x41, 0xf8, 0x62, - 0x19, 0x64, 0x09, 0xea, 0xb4, 0xe5, 0xc9, 0x55, 0xfd, 0xe6, 0x06, 0x48, 0xd9, 0x65, 0xad, 0xc2, - 0xfb, 0x2d, 0x10, 0x92, 0x14, 0xf1, 0x6c, 0x3d, 0xe8, 0xae, 0x99, 0xd9, 0xa9, 0xf9, 0x1e, 0x65, - 0x35, 0xd7, 0x0a, 0x73, 0x3e, 0x61, 0x1c, 0x3f, 0x30, 0xd2, 0x41, 0x6a, 0xee, 0xf5, 0xea, 0x4c, - 0x1f, 0xb1, 0xee, 0x51, 0x56, 0xb1, 0xc8, 0x26, 0x3e, 0x1d, 0x8b, 0xa9, 0xf9, 0x4e, 0xa7, 0xd6, - 0x86, 0x40, 0xb8, 0x9c, 0xcd, 0xa5, 0x16, 0xd0, 0xd5, 0x93, 0x85, 0x9c, 0x3a, 0x6c, 0x2f, 0x75, - 0x7d, 0xf9, 0xee, 0xdb, 0x11, 0xc2, 0x98, 0x3e, 0x30, 0x8e, 0xed, 0xa2, 0xd4, 0x29, 0x54, 0x9d, - 0x8d, 0x01, 0xeb, 0x4e, 0x27, 0xde, 0xbc, 0x31, 0xfd, 0xc7, 0xfe, 0x7c, 0x7a, 0xfa, 0x99, 0x53, - 0x48, 0xf9, 0x0d, 0xe1, 0x53, 0x65, 0x90, 0x6b, 0x20, 0x2b, 0xa5, 0x7e, 0x57, 0x7e, 0x42, 0x38, - 0xc3, 0x40, 0xf6, 0xf4, 0x65, 0x8d, 0x7d, 0xb4, 0xa7, 0x9f, 0x5f, 0x99, 0x56, 0xf2, 0xf9, 0x7c, - 0xfe, 0xe5, 0xe2, 0xb8, 0x8e, 0x4c, 0xfd, 0x0f, 0x3a, 0x52, 0x8c, 0x3a, 0x72, 0x8c, 0x81, 0xac, - 0x58, 0xca, 0x87, 0x29, 0x7c, 0x39, 0xec, 0x47, 0xd7, 0x22, 0xba, 0x15, 0x80, 0x10, 0xeb, 0x01, - 0xd4, 0xdd, 0xfb, 0x20, 0xfa, 0x89, 0x3e, 0x46, 0x78, 0xb6, 0x37, 0x7e, 0x35, 0x3f, 0xde, 0x9d, - 0x43, 0x0b, 0x53, 0x57, 0xb3, 0xc6, 0xf7, 0x68, 0x4f, 0x9f, 0x5d, 0x99, 0x79, 0x27, 0x1e, 0xc4, - 0x7c, 0x5e, 0x2b, 0x5c, 0x57, 0xde, 0x3d, 0x30, 0x4e, 0xec, 0xa1, 0x8c, 0x92, 0x7e, 0x90, 0x72, - 0x8e, 0x3d, 0xde, 0x9f, 0xff, 0x14, 0xe1, 0xca, 0x53, 0x26, 0x1c, 0x5b, 0x21, 0xd2, 0xb4, 0xe1, - 0xb9, 0x26, 0x90, 0x37, 0x9f, 0x3a, 0xf5, 0x24, 0x59, 0x75, 0xc6, 0x1a, 0xfc, 0x0d, 0x44, 0xe1, - 0xcf, 0x29, 0x9c, 0x5a, 0x13, 0xc4, 0xc1, 0x33, 0x23, 0x6e, 0x24, 0xe7, 0xd4, 0xe8, 0xee, 0x51, - 0x7b, 0x77, 0x8f, 0xba, 0xd4, 0xbd, 0x7b, 0x72, 0x2f, 0x8c, 0xce, 0xd7, 0x04, 0x1b, 0x2b, 0x67, - 0x76, 0x7f, 0x7d, 0xf4, 0x71, 0xea, 0x24, 0xc9, 0x6a, 0x4c, 0x68, 0xbd, 0x82, 0x92, 0xaf, 0x10, - 0x3e, 0x3b, 0xd6, 0x11, 0xe4, 0xa5, 0x24, 0xf1, 0x64, 0xe3, 0xe4, 0x2e, 0x8c, 0xa2, 0x07, 0x30, - 0xca, 0x4a, 0x18, 0xba, 0x44, 0x8c, 0x28, 0x74, 0xc8, 0x51, 0x6b, 0x52, 0xb3, 0x26, 0x62, 0x84, - 0xf6, 0x30, 0xe1, 0xba, 0x1d, 0xed, 0xe1, 0x18, 0x53, 0xed, 0x90, 0x3b, 0x78, 0xba, 0xe7, 0x85, - 0x89, 0x35, 0x59, 0x18, 0x23, 0x7d, 0xc8, 0x3d, 0x0a, 0x09, 0x15, 0x65, 0x09, 0xee, 0x2a, 0x8a, - 0x6c, 0x44, 0x76, 0x11, 0x9e, 0x1b, 0x18, 0xc6, 0xa1, 0x69, 0x9c, 0x18, 0x4a, 0x1b, 0x5b, 0xa5, - 0xc9, 0xe3, 0xac, 0x5c, 0x0a, 0x23, 0x9f, 0x27, 0x67, 0x07, 0xdb, 0xd0, 0x9f, 0xeb, 0xc2, 0x47, - 0x29, 0x9c, 0xd6, 0xc5, 0x9a, 0x20, 0x9b, 0xf8, 0x4c, 0x89, 0x6f, 0x33, 0xcf, 0x65, 0x8d, 0x5b, - 0x2d, 0x68, 0x41, 0x15, 0x7c, 0x8f, 0x9a, 0x40, 0x9e, 0x1b, 0x0d, 0x38, 0x82, 0x8a, 0xda, 0x31, - 0x41, 0x2e, 0xb9, 0x85, 0x67, 0x87, 0xf0, 0xeb, 0x2d, 0xe1, 0xfc, 0x43, 0xca, 0xda, 0x08, 0xe5, - 0x5b, 0xae, 0x90, 0x49, 0xca, 0x25, 0x66, 0x45, 0x65, 0xa9, 0x1c, 0x3e, 0x77, 0xb9, 0x04, 0x4a, - 0xf7, 0x7d, 0xcf, 0x35, 0xc3, 0x97, 0xa9, 0xc7, 0x29, 0x0a, 0x5f, 0x20, 0x9c, 0x2e, 0x77, 0x4b, - 0xb2, 0x84, 0xb3, 0xcb, 0x94, 0x59, 0x1e, 0xdc, 0xf6, 0xbb, 0x3b, 0xe4, 0xd2, 0xe8, 0xf1, 0xe8, - 0xf7, 0xd5, 0xe8, 0xad, 0x9c, 0x28, 0xf8, 0x2e, 0x3e, 0x57, 0x05, 0x9f, 0x07, 0x72, 0xf3, 0xbe, - 0x6e, 0x36, 0x18, 0xdf, 0xf6, 0xc0, 0xb2, 0x9b, 0xc0, 0x24, 0x49, 0x7a, 0x89, 0x4a, 0xd8, 0xa6, - 0x9d, 0x51, 0xe0, 0x24, 0xea, 0xc2, 0x77, 0x19, 0x7c, 0x7a, 0x4d, 0xf4, 0x73, 0xad, 0x82, 0xed, - 0x0a, 0x19, 0x74, 0xc8, 0xd7, 0x08, 0x4f, 0x95, 0x41, 0x92, 0x2b, 0x63, 0xa6, 0x65, 0x00, 0x1d, - 0x15, 0x7a, 0x7e, 0x62, 0xed, 0x94, 0x46, 0x38, 0x3c, 0x40, 0xcc, 0xee, 0xf0, 0xd0, 0xc3, 0x62, - 0x09, 0xed, 0xe1, 0xe1, 0x5f, 0x8d, 0x9a, 0x6b, 0x09, 0x75, 0x60, 0x73, 0xcc, 0xf7, 0x8e, 0x16, - 0x41, 0x93, 0xe7, 0xfa, 0xcb, 0x1d, 0xf2, 0x41, 0x0a, 0x4f, 0x6d, 0x8c, 0x13, 0xbd, 0x71, 0x34, - 0xd1, 0x3f, 0xa0, 0x50, 0xf5, 0xb7, 0x28, 0xf7, 0xb7, 0xb2, 0xd5, 0xa7, 0x94, 0xad, 0x0e, 0xcb, - 0xbe, 0x81, 0xae, 0xdd, 0x5b, 0x55, 0x96, 0xff, 0xad, 0x48, 0x37, 0xd0, 0x35, 0xf2, 0x0b, 0xc2, - 0x67, 0xaa, 0x20, 0x40, 0xbe, 0x41, 0x4d, 0xc9, 0x83, 0x4e, 0x7c, 0x0b, 0x0a, 0xf2, 0xe2, 0x68, - 0xd2, 0x21, 0x4a, 0x67, 0xd6, 0x11, 0xdb, 0xca, 0xc2, 0x02, 0x39, 0x85, 0xff, 0xa2, 0xad, 0xdd, - 0x84, 0x3e, 0x41, 0x38, 0x53, 0x02, 0x0f, 0x24, 0x3c, 0xa1, 0x51, 0x27, 0xcc, 0xbb, 0xb2, 0x1a, - 0x0a, 0x2f, 0x5f, 0x5b, 0x4a, 0x0a, 0x7f, 0x62, 0xa5, 0x87, 0xd2, 0x8c, 0x57, 0x7e, 0xfc, 0xfd, - 0x59, 0x74, 0x4f, 0x3b, 0xc2, 0x0b, 0x2b, 0x99, 0xbf, 0xb5, 0x95, 0x09, 0x55, 0x15, 0xff, 0x0a, - 0x00, 0x00, 0xff, 0xff, 0x56, 0x67, 0x31, 0x64, 0xf0, 0x0c, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// NsClient is the client API for Ns service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type NsClient interface { - // GenerateDevAddr requests a device address assignment from the Network Server. - GenerateDevAddr(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*GenerateDevAddrResponse, error) - // GetDefaultMACSettings retrieves the default MAC settings for a frequency plan. - GetDefaultMACSettings(ctx context.Context, in *GetDefaultMACSettingsRequest, opts ...grpc.CallOption) (*MACSettings, error) - GetNetID(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*GetNetIDResponse, error) - GetDeviceAddressPrefixes(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*GetDeviceAdressPrefixesResponse, error) -} - -type nsClient struct { - cc *grpc.ClientConn -} - -func NewNsClient(cc *grpc.ClientConn) NsClient { - return &nsClient{cc} -} - -func (c *nsClient) GenerateDevAddr(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*GenerateDevAddrResponse, error) { - out := new(GenerateDevAddrResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Ns/GenerateDevAddr", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *nsClient) GetDefaultMACSettings(ctx context.Context, in *GetDefaultMACSettingsRequest, opts ...grpc.CallOption) (*MACSettings, error) { - out := new(MACSettings) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Ns/GetDefaultMACSettings", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *nsClient) GetNetID(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*GetNetIDResponse, error) { - out := new(GetNetIDResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Ns/GetNetID", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *nsClient) GetDeviceAddressPrefixes(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*GetDeviceAdressPrefixesResponse, error) { - out := new(GetDeviceAdressPrefixesResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Ns/GetDeviceAddressPrefixes", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// NsServer is the server API for Ns service. -type NsServer interface { - // GenerateDevAddr requests a device address assignment from the Network Server. - GenerateDevAddr(context.Context, *types.Empty) (*GenerateDevAddrResponse, error) - // GetDefaultMACSettings retrieves the default MAC settings for a frequency plan. - GetDefaultMACSettings(context.Context, *GetDefaultMACSettingsRequest) (*MACSettings, error) - GetNetID(context.Context, *types.Empty) (*GetNetIDResponse, error) - GetDeviceAddressPrefixes(context.Context, *types.Empty) (*GetDeviceAdressPrefixesResponse, error) -} - -// UnimplementedNsServer can be embedded to have forward compatible implementations. -type UnimplementedNsServer struct { -} - -func (*UnimplementedNsServer) GenerateDevAddr(ctx context.Context, req *types.Empty) (*GenerateDevAddrResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GenerateDevAddr not implemented") -} -func (*UnimplementedNsServer) GetDefaultMACSettings(ctx context.Context, req *GetDefaultMACSettingsRequest) (*MACSettings, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetDefaultMACSettings not implemented") -} -func (*UnimplementedNsServer) GetNetID(ctx context.Context, req *types.Empty) (*GetNetIDResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetNetID not implemented") -} -func (*UnimplementedNsServer) GetDeviceAddressPrefixes(ctx context.Context, req *types.Empty) (*GetDeviceAdressPrefixesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetDeviceAddressPrefixes not implemented") -} - -func RegisterNsServer(s *grpc.Server, srv NsServer) { - s.RegisterService(&_Ns_serviceDesc, srv) -} - -func _Ns_GenerateDevAddr_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NsServer).GenerateDevAddr(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Ns/GenerateDevAddr", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NsServer).GenerateDevAddr(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) -} - -func _Ns_GetDefaultMACSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetDefaultMACSettingsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NsServer).GetDefaultMACSettings(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Ns/GetDefaultMACSettings", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NsServer).GetDefaultMACSettings(ctx, req.(*GetDefaultMACSettingsRequest)) - } - return interceptor(ctx, in, info, handler) -} +// Request of GetDefaultMACSettings. +type GetDefaultMACSettingsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func _Ns_GetNetID_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NsServer).GetNetID(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Ns/GetNetID", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NsServer).GetNetID(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) + FrequencyPlanId string `protobuf:"bytes,1,opt,name=frequency_plan_id,json=frequencyPlanId,proto3" json:"frequency_plan_id,omitempty"` + LorawanPhyVersion PHYVersion `protobuf:"varint,2,opt,name=lorawan_phy_version,json=lorawanPhyVersion,proto3,enum=ttn.lorawan.v3.PHYVersion" json:"lorawan_phy_version,omitempty"` } -func _Ns_GetDeviceAddressPrefixes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NsServer).GetDeviceAddressPrefixes(ctx, in) +func (x *GetDefaultMACSettingsRequest) Reset() { + *x = GetDefaultMACSettingsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_networkserver_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Ns/GetDeviceAddressPrefixes", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NsServer).GetDeviceAddressPrefixes(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) } -var _Ns_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.Ns", - HandlerType: (*NsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GenerateDevAddr", - Handler: _Ns_GenerateDevAddr_Handler, - }, - { - MethodName: "GetDefaultMACSettings", - Handler: _Ns_GetDefaultMACSettings_Handler, - }, - { - MethodName: "GetNetID", - Handler: _Ns_GetNetID_Handler, - }, - { - MethodName: "GetDeviceAddressPrefixes", - Handler: _Ns_GetDeviceAddressPrefixes_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/networkserver.proto", +func (x *GetDefaultMACSettingsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -// AsNsClient is the client API for AsNs service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type AsNsClient interface { - // Replace the entire downlink queue with the specified messages. - // This can also be used to empty the queue by specifying no messages. - // Note that this will trigger an immediate downlink if a downlink slot is available. - DownlinkQueueReplace(ctx context.Context, in *DownlinkQueueRequest, opts ...grpc.CallOption) (*types.Empty, error) - // Push downlink messages to the end of the downlink queue. - // Note that this will trigger an immediate downlink if a downlink slot is available. - DownlinkQueuePush(ctx context.Context, in *DownlinkQueueRequest, opts ...grpc.CallOption) (*types.Empty, error) - // List the items currently in the downlink queue. - DownlinkQueueList(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*ApplicationDownlinks, error) -} - -type asNsClient struct { - cc *grpc.ClientConn -} - -func NewAsNsClient(cc *grpc.ClientConn) AsNsClient { - return &asNsClient{cc} -} - -func (c *asNsClient) DownlinkQueueReplace(ctx context.Context, in *DownlinkQueueRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AsNs/DownlinkQueueReplace", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} +func (*GetDefaultMACSettingsRequest) ProtoMessage() {} -func (c *asNsClient) DownlinkQueuePush(ctx context.Context, in *DownlinkQueueRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AsNs/DownlinkQueuePush", in, out, opts...) - if err != nil { - return nil, err +func (x *GetDefaultMACSettingsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_networkserver_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return out, nil + return mi.MessageOf(x) } -func (c *asNsClient) DownlinkQueueList(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*ApplicationDownlinks, error) { - out := new(ApplicationDownlinks) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AsNs/DownlinkQueueList", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// AsNsServer is the server API for AsNs service. -type AsNsServer interface { - // Replace the entire downlink queue with the specified messages. - // This can also be used to empty the queue by specifying no messages. - // Note that this will trigger an immediate downlink if a downlink slot is available. - DownlinkQueueReplace(context.Context, *DownlinkQueueRequest) (*types.Empty, error) - // Push downlink messages to the end of the downlink queue. - // Note that this will trigger an immediate downlink if a downlink slot is available. - DownlinkQueuePush(context.Context, *DownlinkQueueRequest) (*types.Empty, error) - // List the items currently in the downlink queue. - DownlinkQueueList(context.Context, *EndDeviceIdentifiers) (*ApplicationDownlinks, error) -} - -// UnimplementedAsNsServer can be embedded to have forward compatible implementations. -type UnimplementedAsNsServer struct { -} - -func (*UnimplementedAsNsServer) DownlinkQueueReplace(ctx context.Context, req *DownlinkQueueRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DownlinkQueueReplace not implemented") -} -func (*UnimplementedAsNsServer) DownlinkQueuePush(ctx context.Context, req *DownlinkQueueRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DownlinkQueuePush not implemented") -} -func (*UnimplementedAsNsServer) DownlinkQueueList(ctx context.Context, req *EndDeviceIdentifiers) (*ApplicationDownlinks, error) { - return nil, status.Errorf(codes.Unimplemented, "method DownlinkQueueList not implemented") -} - -func RegisterAsNsServer(s *grpc.Server, srv AsNsServer) { - s.RegisterService(&_AsNs_serviceDesc, srv) -} - -func _AsNs_DownlinkQueueReplace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DownlinkQueueRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AsNsServer).DownlinkQueueReplace(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.AsNs/DownlinkQueueReplace", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AsNsServer).DownlinkQueueReplace(ctx, req.(*DownlinkQueueRequest)) - } - return interceptor(ctx, in, info, handler) +// Deprecated: Use GetDefaultMACSettingsRequest.ProtoReflect.Descriptor instead. +func (*GetDefaultMACSettingsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_networkserver_proto_rawDescGZIP(), []int{1} } -func _AsNs_DownlinkQueuePush_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DownlinkQueueRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AsNsServer).DownlinkQueuePush(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.AsNs/DownlinkQueuePush", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AsNsServer).DownlinkQueuePush(ctx, req.(*DownlinkQueueRequest)) +func (x *GetDefaultMACSettingsRequest) GetFrequencyPlanId() string { + if x != nil { + return x.FrequencyPlanId } - return interceptor(ctx, in, info, handler) + return "" } -func _AsNs_DownlinkQueueList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(EndDeviceIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AsNsServer).DownlinkQueueList(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.AsNs/DownlinkQueueList", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AsNsServer).DownlinkQueueList(ctx, req.(*EndDeviceIdentifiers)) +func (x *GetDefaultMACSettingsRequest) GetLorawanPhyVersion() PHYVersion { + if x != nil { + return x.LorawanPhyVersion } - return interceptor(ctx, in, info, handler) -} - -var _AsNs_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.AsNs", - HandlerType: (*AsNsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "DownlinkQueueReplace", - Handler: _AsNs_DownlinkQueueReplace_Handler, - }, - { - MethodName: "DownlinkQueuePush", - Handler: _AsNs_DownlinkQueuePush_Handler, - }, - { - MethodName: "DownlinkQueueList", - Handler: _AsNs_DownlinkQueueList_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/networkserver.proto", -} - -// GsNsClient is the client API for GsNs service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type GsNsClient interface { - // Called by the Gateway Server when an uplink message arrives. - HandleUplink(ctx context.Context, in *UplinkMessage, opts ...grpc.CallOption) (*types.Empty, error) - // Called by the Gateway Server when a Tx acknowledgment arrives. - ReportTxAcknowledgment(ctx context.Context, in *GatewayTxAcknowledgment, opts ...grpc.CallOption) (*types.Empty, error) -} - -type gsNsClient struct { - cc *grpc.ClientConn + return PHYVersion_PHY_UNKNOWN } -func NewGsNsClient(cc *grpc.ClientConn) GsNsClient { - return &gsNsClient{cc} -} +type GetNetIDResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (c *gsNsClient) HandleUplink(ctx context.Context, in *UplinkMessage, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GsNs/HandleUplink", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil + NetId []byte `protobuf:"bytes,1,opt,name=net_id,json=netId,proto3" json:"net_id,omitempty"` } -func (c *gsNsClient) ReportTxAcknowledgment(ctx context.Context, in *GatewayTxAcknowledgment, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GsNs/ReportTxAcknowledgment", in, out, opts...) - if err != nil { - return nil, err +func (x *GetNetIDResponse) Reset() { + *x = GetNetIDResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_networkserver_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return out, nil } -// GsNsServer is the server API for GsNs service. -type GsNsServer interface { - // Called by the Gateway Server when an uplink message arrives. - HandleUplink(context.Context, *UplinkMessage) (*types.Empty, error) - // Called by the Gateway Server when a Tx acknowledgment arrives. - ReportTxAcknowledgment(context.Context, *GatewayTxAcknowledgment) (*types.Empty, error) +func (x *GetNetIDResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -// UnimplementedGsNsServer can be embedded to have forward compatible implementations. -type UnimplementedGsNsServer struct { -} +func (*GetNetIDResponse) ProtoMessage() {} -func (*UnimplementedGsNsServer) HandleUplink(ctx context.Context, req *UplinkMessage) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method HandleUplink not implemented") -} -func (*UnimplementedGsNsServer) ReportTxAcknowledgment(ctx context.Context, req *GatewayTxAcknowledgment) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method ReportTxAcknowledgment not implemented") -} - -func RegisterGsNsServer(s *grpc.Server, srv GsNsServer) { - s.RegisterService(&_GsNs_serviceDesc, srv) -} - -func _GsNs_HandleUplink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UplinkMessage) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GsNsServer).HandleUplink(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GsNs/HandleUplink", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GsNsServer).HandleUplink(ctx, req.(*UplinkMessage)) - } - return interceptor(ctx, in, info, handler) -} - -func _GsNs_ReportTxAcknowledgment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GatewayTxAcknowledgment) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GsNsServer).ReportTxAcknowledgment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GsNs/ReportTxAcknowledgment", +func (x *GetNetIDResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_networkserver_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GsNsServer).ReportTxAcknowledgment(ctx, req.(*GatewayTxAcknowledgment)) - } - return interceptor(ctx, in, info, handler) -} - -var _GsNs_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.GsNs", - HandlerType: (*GsNsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "HandleUplink", - Handler: _GsNs_HandleUplink_Handler, - }, - { - MethodName: "ReportTxAcknowledgment", - Handler: _GsNs_ReportTxAcknowledgment_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/networkserver.proto", -} - -// NsEndDeviceRegistryClient is the client API for NsEndDeviceRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type NsEndDeviceRegistryClient interface { - // Get returns the device that matches the given identifiers. - // If there are multiple matches, an error will be returned. - Get(ctx context.Context, in *GetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) - // Set creates or updates the device. - Set(ctx context.Context, in *SetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) - // ResetFactoryDefaults resets device state to factory defaults. - ResetFactoryDefaults(ctx context.Context, in *ResetAndGetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) - // Delete deletes the device that matches the given identifiers. - // If there are multiple matches, an error will be returned. - Delete(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) -} - -type nsEndDeviceRegistryClient struct { - cc *grpc.ClientConn + return mi.MessageOf(x) } -func NewNsEndDeviceRegistryClient(cc *grpc.ClientConn) NsEndDeviceRegistryClient { - return &nsEndDeviceRegistryClient{cc} +// Deprecated: Use GetNetIDResponse.ProtoReflect.Descriptor instead. +func (*GetNetIDResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_networkserver_proto_rawDescGZIP(), []int{2} } -func (c *nsEndDeviceRegistryClient) Get(ctx context.Context, in *GetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { - out := new(EndDevice) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsEndDeviceRegistry/Get", in, out, opts...) - if err != nil { - return nil, err +func (x *GetNetIDResponse) GetNetId() []byte { + if x != nil { + return x.NetId } - return out, nil + return nil } -func (c *nsEndDeviceRegistryClient) Set(ctx context.Context, in *SetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { - out := new(EndDevice) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsEndDeviceRegistry/Set", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} +type GetDeviceAdressPrefixesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (c *nsEndDeviceRegistryClient) ResetFactoryDefaults(ctx context.Context, in *ResetAndGetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { - out := new(EndDevice) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsEndDeviceRegistry/ResetFactoryDefaults", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil + DevAddrPrefixes [][]byte `protobuf:"bytes,1,rep,name=dev_addr_prefixes,json=devAddrPrefixes,proto3" json:"dev_addr_prefixes,omitempty"` } -func (c *nsEndDeviceRegistryClient) Delete(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsEndDeviceRegistry/Delete", in, out, opts...) - if err != nil { - return nil, err +func (x *GetDeviceAdressPrefixesResponse) Reset() { + *x = GetDeviceAdressPrefixesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_networkserver_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return out, nil -} - -// NsEndDeviceRegistryServer is the server API for NsEndDeviceRegistry service. -type NsEndDeviceRegistryServer interface { - // Get returns the device that matches the given identifiers. - // If there are multiple matches, an error will be returned. - Get(context.Context, *GetEndDeviceRequest) (*EndDevice, error) - // Set creates or updates the device. - Set(context.Context, *SetEndDeviceRequest) (*EndDevice, error) - // ResetFactoryDefaults resets device state to factory defaults. - ResetFactoryDefaults(context.Context, *ResetAndGetEndDeviceRequest) (*EndDevice, error) - // Delete deletes the device that matches the given identifiers. - // If there are multiple matches, an error will be returned. - Delete(context.Context, *EndDeviceIdentifiers) (*types.Empty, error) } -// UnimplementedNsEndDeviceRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedNsEndDeviceRegistryServer struct { +func (x *GetDeviceAdressPrefixesResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (*UnimplementedNsEndDeviceRegistryServer) Get(ctx context.Context, req *GetEndDeviceRequest) (*EndDevice, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") -} -func (*UnimplementedNsEndDeviceRegistryServer) Set(ctx context.Context, req *SetEndDeviceRequest) (*EndDevice, error) { - return nil, status.Errorf(codes.Unimplemented, "method Set not implemented") -} -func (*UnimplementedNsEndDeviceRegistryServer) ResetFactoryDefaults(ctx context.Context, req *ResetAndGetEndDeviceRequest) (*EndDevice, error) { - return nil, status.Errorf(codes.Unimplemented, "method ResetFactoryDefaults not implemented") -} -func (*UnimplementedNsEndDeviceRegistryServer) Delete(ctx context.Context, req *EndDeviceIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} - -func RegisterNsEndDeviceRegistryServer(s *grpc.Server, srv NsEndDeviceRegistryServer) { - s.RegisterService(&_NsEndDeviceRegistry_serviceDesc, srv) -} +func (*GetDeviceAdressPrefixesResponse) ProtoMessage() {} -func _NsEndDeviceRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetEndDeviceRequest) - if err := dec(in); err != nil { - return nil, err +func (x *GetDeviceAdressPrefixesResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_networkserver_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - if interceptor == nil { - return srv.(NsEndDeviceRegistryServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NsEndDeviceRegistry/Get", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NsEndDeviceRegistryServer).Get(ctx, req.(*GetEndDeviceRequest)) - } - return interceptor(ctx, in, info, handler) + return mi.MessageOf(x) } -func _NsEndDeviceRegistry_Set_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetEndDeviceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NsEndDeviceRegistryServer).Set(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NsEndDeviceRegistry/Set", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NsEndDeviceRegistryServer).Set(ctx, req.(*SetEndDeviceRequest)) - } - return interceptor(ctx, in, info, handler) +// Deprecated: Use GetDeviceAdressPrefixesResponse.ProtoReflect.Descriptor instead. +func (*GetDeviceAdressPrefixesResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_networkserver_proto_rawDescGZIP(), []int{3} } -func _NsEndDeviceRegistry_ResetFactoryDefaults_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ResetAndGetEndDeviceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NsEndDeviceRegistryServer).ResetFactoryDefaults(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NsEndDeviceRegistry/ResetFactoryDefaults", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NsEndDeviceRegistryServer).ResetFactoryDefaults(ctx, req.(*ResetAndGetEndDeviceRequest)) +func (x *GetDeviceAdressPrefixesResponse) GetDevAddrPrefixes() [][]byte { + if x != nil { + return x.DevAddrPrefixes } - return interceptor(ctx, in, info, handler) + return nil } -func _NsEndDeviceRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(EndDeviceIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NsEndDeviceRegistryServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NsEndDeviceRegistry/Delete", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NsEndDeviceRegistryServer).Delete(ctx, req.(*EndDeviceIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} +var File_lorawan_stack_api_networkserver_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_networkserver_proto_rawDesc = []byte{ + 0x0a, 0x25, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, + 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, + 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, + 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, + 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, + 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe4, 0x01, 0x0a, 0x17, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xc8, 0x01, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xac, 0x01, 0xfa, 0x42, 0x06, + 0x7a, 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, + 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, + 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x19, + 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, + 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, 0x64, + 0x64, 0x72, 0x22, 0xb3, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x11, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x54, 0x0a, 0x13, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x5f, 0x70, 0x68, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x08, + 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xd7, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, + 0x4e, 0x65, 0x74, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xc2, 0x01, + 0x0a, 0x06, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xaa, + 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, + 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, + 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x6e, 0x65, 0x74, + 0x49, 0x64, 0x22, 0x8e, 0x02, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x41, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xea, 0x01, 0x0a, 0x11, 0x64, 0x65, 0x76, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0c, 0x42, 0xbd, 0x01, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x7a, 0x02, 0x68, + 0x05, 0xea, 0xaa, 0x19, 0x98, 0x01, 0x0a, 0x49, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x44, + 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x53, 0x6c, 0x69, 0x63, + 0x65, 0x12, 0x4b, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x44, 0x65, 0x76, 0x41, + 0x64, 0x64, 0x72, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x92, 0x41, + 0x11, 0x4a, 0x0f, 0x5b, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x30, 0x30, 0x2f, 0x32, 0x34, + 0x22, 0x5d, 0x52, 0x0f, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x50, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x65, 0x73, 0x32, 0xfe, 0x03, 0x0a, 0x02, 0x4e, 0x73, 0x12, 0x68, 0x0a, 0x0f, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, + 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x76, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x12, 0xae, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2c, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, + 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x44, 0x12, 0x42, 0x2f, 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6d, + 0x61, 0x63, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x66, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x7b, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, 0x70, 0x68, 0x79, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0x58, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x49, + 0x44, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, + 0x74, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x6e, 0x73, 0x2f, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x12, + 0x82, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, + 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x65, 0x73, 0x32, 0x90, 0x02, 0x0a, 0x04, 0x41, 0x73, 0x4e, 0x73, 0x12, 0x54, 0x0a, + 0x14, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, + 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x12, 0x51, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x50, 0x75, 0x73, 0x68, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x5f, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x32, 0xa8, 0x01, 0x0a, 0x04, 0x47, 0x73, 0x4e, 0x73, + 0x12, 0x45, 0x0a, 0x0c, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, + 0x12, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x59, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, + 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x32, 0xbc, 0x06, 0x0a, 0x13, 0x4e, 0x73, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xb2, 0x01, 0x0a, 0x03, 0x47, + 0x65, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x12, 0x63, 0x2f, 0x6e, 0x73, 0x2f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, + 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, + 0x86, 0x02, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0xbe, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb7, + 0x01, 0x1a, 0x63, 0x2f, 0x6e, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x4d, 0x22, 0x48, 0x2f, 0x6e, 0x73, + 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, + 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xce, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x73, + 0x65, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x73, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x41, 0x6e, 0x64, 0x47, 0x65, 0x74, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x68, 0x32, 0x63, 0x2f, 0x6e, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x95, 0x01, 0x0a, 0x06, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x2a, 0x45, 0x2f, 0x6e, 0x73, 0x2f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x7d, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, + 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_networkserver_proto_rawDescOnce sync.Once + file_lorawan_stack_api_networkserver_proto_rawDescData = file_lorawan_stack_api_networkserver_proto_rawDesc +) -var _NsEndDeviceRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.NsEndDeviceRegistry", - HandlerType: (*NsEndDeviceRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Get", - Handler: _NsEndDeviceRegistry_Get_Handler, - }, - { - MethodName: "Set", - Handler: _NsEndDeviceRegistry_Set_Handler, - }, - { - MethodName: "ResetFactoryDefaults", - Handler: _NsEndDeviceRegistry_ResetFactoryDefaults_Handler, - }, - { - MethodName: "Delete", - Handler: _NsEndDeviceRegistry_Delete_Handler, +func file_lorawan_stack_api_networkserver_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_networkserver_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_networkserver_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_networkserver_proto_rawDescData) + }) + return file_lorawan_stack_api_networkserver_proto_rawDescData +} + +var file_lorawan_stack_api_networkserver_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_lorawan_stack_api_networkserver_proto_goTypes = []interface{}{ + (*GenerateDevAddrResponse)(nil), // 0: ttn.lorawan.v3.GenerateDevAddrResponse + (*GetDefaultMACSettingsRequest)(nil), // 1: ttn.lorawan.v3.GetDefaultMACSettingsRequest + (*GetNetIDResponse)(nil), // 2: ttn.lorawan.v3.GetNetIDResponse + (*GetDeviceAdressPrefixesResponse)(nil), // 3: ttn.lorawan.v3.GetDeviceAdressPrefixesResponse + (PHYVersion)(0), // 4: ttn.lorawan.v3.PHYVersion + (*emptypb.Empty)(nil), // 5: google.protobuf.Empty + (*DownlinkQueueRequest)(nil), // 6: ttn.lorawan.v3.DownlinkQueueRequest + (*EndDeviceIdentifiers)(nil), // 7: ttn.lorawan.v3.EndDeviceIdentifiers + (*UplinkMessage)(nil), // 8: ttn.lorawan.v3.UplinkMessage + (*GatewayTxAcknowledgment)(nil), // 9: ttn.lorawan.v3.GatewayTxAcknowledgment + (*GetEndDeviceRequest)(nil), // 10: ttn.lorawan.v3.GetEndDeviceRequest + (*SetEndDeviceRequest)(nil), // 11: ttn.lorawan.v3.SetEndDeviceRequest + (*ResetAndGetEndDeviceRequest)(nil), // 12: ttn.lorawan.v3.ResetAndGetEndDeviceRequest + (*MACSettings)(nil), // 13: ttn.lorawan.v3.MACSettings + (*ApplicationDownlinks)(nil), // 14: ttn.lorawan.v3.ApplicationDownlinks + (*EndDevice)(nil), // 15: ttn.lorawan.v3.EndDevice +} +var file_lorawan_stack_api_networkserver_proto_depIdxs = []int32{ + 4, // 0: ttn.lorawan.v3.GetDefaultMACSettingsRequest.lorawan_phy_version:type_name -> ttn.lorawan.v3.PHYVersion + 5, // 1: ttn.lorawan.v3.Ns.GenerateDevAddr:input_type -> google.protobuf.Empty + 1, // 2: ttn.lorawan.v3.Ns.GetDefaultMACSettings:input_type -> ttn.lorawan.v3.GetDefaultMACSettingsRequest + 5, // 3: ttn.lorawan.v3.Ns.GetNetID:input_type -> google.protobuf.Empty + 5, // 4: ttn.lorawan.v3.Ns.GetDeviceAddressPrefixes:input_type -> google.protobuf.Empty + 6, // 5: ttn.lorawan.v3.AsNs.DownlinkQueueReplace:input_type -> ttn.lorawan.v3.DownlinkQueueRequest + 6, // 6: ttn.lorawan.v3.AsNs.DownlinkQueuePush:input_type -> ttn.lorawan.v3.DownlinkQueueRequest + 7, // 7: ttn.lorawan.v3.AsNs.DownlinkQueueList:input_type -> ttn.lorawan.v3.EndDeviceIdentifiers + 8, // 8: ttn.lorawan.v3.GsNs.HandleUplink:input_type -> ttn.lorawan.v3.UplinkMessage + 9, // 9: ttn.lorawan.v3.GsNs.ReportTxAcknowledgment:input_type -> ttn.lorawan.v3.GatewayTxAcknowledgment + 10, // 10: ttn.lorawan.v3.NsEndDeviceRegistry.Get:input_type -> ttn.lorawan.v3.GetEndDeviceRequest + 11, // 11: ttn.lorawan.v3.NsEndDeviceRegistry.Set:input_type -> ttn.lorawan.v3.SetEndDeviceRequest + 12, // 12: ttn.lorawan.v3.NsEndDeviceRegistry.ResetFactoryDefaults:input_type -> ttn.lorawan.v3.ResetAndGetEndDeviceRequest + 7, // 13: ttn.lorawan.v3.NsEndDeviceRegistry.Delete:input_type -> ttn.lorawan.v3.EndDeviceIdentifiers + 0, // 14: ttn.lorawan.v3.Ns.GenerateDevAddr:output_type -> ttn.lorawan.v3.GenerateDevAddrResponse + 13, // 15: ttn.lorawan.v3.Ns.GetDefaultMACSettings:output_type -> ttn.lorawan.v3.MACSettings + 2, // 16: ttn.lorawan.v3.Ns.GetNetID:output_type -> ttn.lorawan.v3.GetNetIDResponse + 3, // 17: ttn.lorawan.v3.Ns.GetDeviceAddressPrefixes:output_type -> ttn.lorawan.v3.GetDeviceAdressPrefixesResponse + 5, // 18: ttn.lorawan.v3.AsNs.DownlinkQueueReplace:output_type -> google.protobuf.Empty + 5, // 19: ttn.lorawan.v3.AsNs.DownlinkQueuePush:output_type -> google.protobuf.Empty + 14, // 20: ttn.lorawan.v3.AsNs.DownlinkQueueList:output_type -> ttn.lorawan.v3.ApplicationDownlinks + 5, // 21: ttn.lorawan.v3.GsNs.HandleUplink:output_type -> google.protobuf.Empty + 5, // 22: ttn.lorawan.v3.GsNs.ReportTxAcknowledgment:output_type -> google.protobuf.Empty + 15, // 23: ttn.lorawan.v3.NsEndDeviceRegistry.Get:output_type -> ttn.lorawan.v3.EndDevice + 15, // 24: ttn.lorawan.v3.NsEndDeviceRegistry.Set:output_type -> ttn.lorawan.v3.EndDevice + 15, // 25: ttn.lorawan.v3.NsEndDeviceRegistry.ResetFactoryDefaults:output_type -> ttn.lorawan.v3.EndDevice + 5, // 26: ttn.lorawan.v3.NsEndDeviceRegistry.Delete:output_type -> google.protobuf.Empty + 14, // [14:27] is the sub-list for method output_type + 1, // [1:14] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_networkserver_proto_init() } +func file_lorawan_stack_api_networkserver_proto_init() { + if File_lorawan_stack_api_networkserver_proto != nil { + return + } + file_lorawan_stack_api_end_device_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_messages_proto_init() + file_lorawan_stack_api_lorawan_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_networkserver_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenerateDevAddrResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_networkserver_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetDefaultMACSettingsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_networkserver_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetNetIDResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_networkserver_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetDeviceAdressPrefixesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_networkserver_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 4, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/networkserver.proto", + GoTypes: file_lorawan_stack_api_networkserver_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_networkserver_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_networkserver_proto_msgTypes, + }.Build() + File_lorawan_stack_api_networkserver_proto = out.File + file_lorawan_stack_api_networkserver_proto_rawDesc = nil + file_lorawan_stack_api_networkserver_proto_goTypes = nil + file_lorawan_stack_api_networkserver_proto_depIdxs = nil } diff --git a/pkg/ttnpb/networkserver.pb.gw.go b/pkg/ttnpb/networkserver.pb.gw.go index b8351119cb..3fa13513dc 100644 --- a/pkg/ttnpb/networkserver.pb.gw.go +++ b/pkg/ttnpb/networkserver.pb.gw.go @@ -13,16 +13,15 @@ import ( "io" "net/http" - "github.com/gogo/protobuf/types" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/emptypb" ) // Suppress "imported and not used" errors @@ -31,11 +30,10 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join func request_Ns_GenerateDevAddr_0(ctx context.Context, marshaler runtime.Marshaler, client NsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := client.GenerateDevAddr(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -44,7 +42,7 @@ func request_Ns_GenerateDevAddr_0(ctx context.Context, marshaler runtime.Marshal } func local_request_Ns_GenerateDevAddr_0(ctx context.Context, marshaler runtime.Marshaler, server NsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := server.GenerateDevAddr(ctx, &protoReq) @@ -70,7 +68,6 @@ func request_Ns_GetDefaultMACSettings_0(ctx context.Context, marshaler runtime.M } protoReq.FrequencyPlanId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "frequency_plan_id", err) } @@ -81,7 +78,6 @@ func request_Ns_GetDefaultMACSettings_0(ctx context.Context, marshaler runtime.M } e, err = runtime.Enum(val, PHYVersion_value) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "lorawan_phy_version", err) } @@ -111,7 +107,6 @@ func local_request_Ns_GetDefaultMACSettings_0(ctx context.Context, marshaler run } protoReq.FrequencyPlanId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "frequency_plan_id", err) } @@ -122,7 +117,6 @@ func local_request_Ns_GetDefaultMACSettings_0(ctx context.Context, marshaler run } e, err = runtime.Enum(val, PHYVersion_value) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "lorawan_phy_version", err) } @@ -135,7 +129,7 @@ func local_request_Ns_GetDefaultMACSettings_0(ctx context.Context, marshaler run } func request_Ns_GetNetID_0(ctx context.Context, marshaler runtime.Marshaler, client NsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := client.GetNetID(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -144,7 +138,7 @@ func request_Ns_GetNetID_0(ctx context.Context, marshaler runtime.Marshaler, cli } func local_request_Ns_GetNetID_0(ctx context.Context, marshaler runtime.Marshaler, server NsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := server.GetNetID(ctx, &protoReq) @@ -153,7 +147,7 @@ func local_request_Ns_GetNetID_0(ctx context.Context, marshaler runtime.Marshale } func request_Ns_GetDeviceAddressPrefixes_0(ctx context.Context, marshaler runtime.Marshaler, client NsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := client.GetDeviceAddressPrefixes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -162,7 +156,7 @@ func request_Ns_GetDeviceAddressPrefixes_0(ctx context.Context, marshaler runtim } func local_request_Ns_GetDeviceAddressPrefixes_0(ctx context.Context, marshaler runtime.Marshaler, server NsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := server.GetDeviceAddressPrefixes(ctx, &protoReq) @@ -191,7 +185,6 @@ func request_NsEndDeviceRegistry_Get_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -202,7 +195,6 @@ func request_NsEndDeviceRegistry_Get_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -236,7 +228,6 @@ func local_request_NsEndDeviceRegistry_Get_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -247,7 +238,6 @@ func local_request_NsEndDeviceRegistry_Get_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -289,7 +279,6 @@ func request_NsEndDeviceRegistry_Set_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.application_ids.application_id", err) } @@ -300,7 +289,6 @@ func request_NsEndDeviceRegistry_Set_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.device_id", err) } @@ -335,7 +323,6 @@ func local_request_NsEndDeviceRegistry_Set_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.application_ids.application_id", err) } @@ -346,7 +333,6 @@ func local_request_NsEndDeviceRegistry_Set_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.device_id", err) } @@ -381,7 +367,6 @@ func request_NsEndDeviceRegistry_Set_1(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.application_ids.application_id", err) } @@ -416,7 +401,6 @@ func local_request_NsEndDeviceRegistry_Set_1(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "end_device.ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device.ids.application_ids.application_id", err) } @@ -451,7 +435,6 @@ func request_NsEndDeviceRegistry_ResetFactoryDefaults_0(ctx context.Context, mar } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -462,7 +445,6 @@ func request_NsEndDeviceRegistry_ResetFactoryDefaults_0(ctx context.Context, mar } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -497,7 +479,6 @@ func local_request_NsEndDeviceRegistry_ResetFactoryDefaults_0(ctx context.Contex } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.application_ids.application_id", err) } @@ -508,7 +489,6 @@ func local_request_NsEndDeviceRegistry_ResetFactoryDefaults_0(ctx context.Contex } err = runtime.PopulateFieldFromPath(&protoReq, "end_device_ids.device_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "end_device_ids.device_id", err) } @@ -539,7 +519,6 @@ func request_NsEndDeviceRegistry_Delete_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -550,7 +529,6 @@ func request_NsEndDeviceRegistry_Delete_0(ctx context.Context, marshaler runtime } protoReq.DeviceId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "device_id", err) } @@ -584,7 +562,6 @@ func local_request_NsEndDeviceRegistry_Delete_0(ctx context.Context, marshaler r } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -595,7 +572,6 @@ func local_request_NsEndDeviceRegistry_Delete_0(ctx context.Context, marshaler r } protoReq.DeviceId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "device_id", err) } @@ -624,20 +600,22 @@ func RegisterNsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Ns/GenerateDevAddr", runtime.WithHTTPPathPattern("/ns/dev_addr")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Ns_GenerateDevAddr_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Ns_GenerateDevAddr_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Ns_GenerateDevAddr_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Ns_GenerateDevAddr_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -647,20 +625,22 @@ func RegisterNsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Ns/GetDefaultMACSettings", runtime.WithHTTPPathPattern("/ns/default_mac_settings/{frequency_plan_id}/{lorawan_phy_version}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Ns_GetDefaultMACSettings_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Ns_GetDefaultMACSettings_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Ns_GetDefaultMACSettings_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Ns_GetDefaultMACSettings_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -670,20 +650,22 @@ func RegisterNsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Ns/GetNetID", runtime.WithHTTPPathPattern("/ns/net_id")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Ns_GetNetID_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Ns_GetNetID_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Ns_GetNetID_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Ns_GetNetID_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -693,20 +675,22 @@ func RegisterNsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Ns/GetDeviceAddressPrefixes", runtime.WithHTTPPathPattern("/ns/dev_addr_prefixes")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Ns_GetDeviceAddressPrefixes_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Ns_GetDeviceAddressPrefixes_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Ns_GetDeviceAddressPrefixes_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Ns_GetDeviceAddressPrefixes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -725,20 +709,22 @@ func RegisterNsEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.NsEndDeviceRegistry/Get", runtime.WithHTTPPathPattern("/ns/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_NsEndDeviceRegistry_Get_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_NsEndDeviceRegistry_Get_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_NsEndDeviceRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_NsEndDeviceRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -748,20 +734,22 @@ func RegisterNsEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.NsEndDeviceRegistry/Set", runtime.WithHTTPPathPattern("/ns/applications/{end_device.ids.application_ids.application_id}/devices/{end_device.ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_NsEndDeviceRegistry_Set_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_NsEndDeviceRegistry_Set_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_NsEndDeviceRegistry_Set_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_NsEndDeviceRegistry_Set_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -771,20 +759,22 @@ func RegisterNsEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.NsEndDeviceRegistry/Set", runtime.WithHTTPPathPattern("/ns/applications/{end_device.ids.application_ids.application_id}/devices")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_NsEndDeviceRegistry_Set_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_NsEndDeviceRegistry_Set_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_NsEndDeviceRegistry_Set_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_NsEndDeviceRegistry_Set_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -794,20 +784,22 @@ func RegisterNsEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.NsEndDeviceRegistry/ResetFactoryDefaults", runtime.WithHTTPPathPattern("/ns/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_NsEndDeviceRegistry_ResetFactoryDefaults_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_NsEndDeviceRegistry_ResetFactoryDefaults_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_NsEndDeviceRegistry_ResetFactoryDefaults_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_NsEndDeviceRegistry_ResetFactoryDefaults_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -817,20 +809,22 @@ func RegisterNsEndDeviceRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.NsEndDeviceRegistry/Delete", runtime.WithHTTPPathPattern("/ns/applications/{application_ids.application_id}/devices/{device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_NsEndDeviceRegistry_Delete_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_NsEndDeviceRegistry_Delete_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_NsEndDeviceRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_NsEndDeviceRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -879,19 +873,21 @@ func RegisterNsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Ns/GenerateDevAddr", runtime.WithHTTPPathPattern("/ns/dev_addr")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Ns_GenerateDevAddr_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Ns_GenerateDevAddr_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Ns_GenerateDevAddr_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Ns_GenerateDevAddr_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -899,19 +895,21 @@ func RegisterNsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Ns/GetDefaultMACSettings", runtime.WithHTTPPathPattern("/ns/default_mac_settings/{frequency_plan_id}/{lorawan_phy_version}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Ns_GetDefaultMACSettings_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Ns_GetDefaultMACSettings_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Ns_GetDefaultMACSettings_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Ns_GetDefaultMACSettings_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -919,19 +917,21 @@ func RegisterNsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Ns/GetNetID", runtime.WithHTTPPathPattern("/ns/net_id")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Ns_GetNetID_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Ns_GetNetID_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Ns_GetNetID_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Ns_GetNetID_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -939,19 +939,21 @@ func RegisterNsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Ns/GetDeviceAddressPrefixes", runtime.WithHTTPPathPattern("/ns/dev_addr_prefixes")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Ns_GetDeviceAddressPrefixes_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Ns_GetDeviceAddressPrefixes_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Ns_GetDeviceAddressPrefixes_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Ns_GetDeviceAddressPrefixes_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -959,13 +961,13 @@ func RegisterNsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client } var ( - pattern_Ns_GenerateDevAddr_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"ns", "dev_addr"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Ns_GenerateDevAddr_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"ns", "dev_addr"}, "")) - pattern_Ns_GetDefaultMACSettings_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"ns", "default_mac_settings", "frequency_plan_id", "lorawan_phy_version"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Ns_GetDefaultMACSettings_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"ns", "default_mac_settings", "frequency_plan_id", "lorawan_phy_version"}, "")) - pattern_Ns_GetNetID_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"ns", "net_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Ns_GetNetID_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"ns", "net_id"}, "")) - pattern_Ns_GetDeviceAddressPrefixes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"ns", "dev_addr_prefixes"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Ns_GetDeviceAddressPrefixes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"ns", "dev_addr_prefixes"}, "")) ) var ( @@ -1020,19 +1022,21 @@ func RegisterNsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.NsEndDeviceRegistry/Get", runtime.WithHTTPPathPattern("/ns/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_NsEndDeviceRegistry_Get_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_NsEndDeviceRegistry_Get_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_NsEndDeviceRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_NsEndDeviceRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1040,19 +1044,21 @@ func RegisterNsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.NsEndDeviceRegistry/Set", runtime.WithHTTPPathPattern("/ns/applications/{end_device.ids.application_ids.application_id}/devices/{end_device.ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_NsEndDeviceRegistry_Set_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_NsEndDeviceRegistry_Set_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_NsEndDeviceRegistry_Set_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_NsEndDeviceRegistry_Set_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1060,19 +1066,21 @@ func RegisterNsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.NsEndDeviceRegistry/Set", runtime.WithHTTPPathPattern("/ns/applications/{end_device.ids.application_ids.application_id}/devices")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_NsEndDeviceRegistry_Set_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_NsEndDeviceRegistry_Set_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_NsEndDeviceRegistry_Set_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_NsEndDeviceRegistry_Set_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1080,19 +1088,21 @@ func RegisterNsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.NsEndDeviceRegistry/ResetFactoryDefaults", runtime.WithHTTPPathPattern("/ns/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_NsEndDeviceRegistry_ResetFactoryDefaults_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_NsEndDeviceRegistry_ResetFactoryDefaults_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_NsEndDeviceRegistry_ResetFactoryDefaults_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_NsEndDeviceRegistry_ResetFactoryDefaults_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1100,19 +1110,21 @@ func RegisterNsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.NsEndDeviceRegistry/Delete", runtime.WithHTTPPathPattern("/ns/applications/{application_ids.application_id}/devices/{device_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_NsEndDeviceRegistry_Delete_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_NsEndDeviceRegistry_Delete_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_NsEndDeviceRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_NsEndDeviceRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1120,15 +1132,15 @@ func RegisterNsEndDeviceRegistryHandlerClient(ctx context.Context, mux *runtime. } var ( - pattern_NsEndDeviceRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"ns", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_NsEndDeviceRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"ns", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id"}, "")) - pattern_NsEndDeviceRegistry_Set_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"ns", "applications", "end_device.ids.application_ids.application_id", "devices", "end_device.ids.device_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_NsEndDeviceRegistry_Set_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"ns", "applications", "end_device.ids.application_ids.application_id", "devices", "end_device.ids.device_id"}, "")) - pattern_NsEndDeviceRegistry_Set_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"ns", "applications", "end_device.ids.application_ids.application_id", "devices"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_NsEndDeviceRegistry_Set_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"ns", "applications", "end_device.ids.application_ids.application_id", "devices"}, "")) - pattern_NsEndDeviceRegistry_ResetFactoryDefaults_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"ns", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_NsEndDeviceRegistry_ResetFactoryDefaults_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"ns", "applications", "end_device_ids.application_ids.application_id", "devices", "end_device_ids.device_id"}, "")) - pattern_NsEndDeviceRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"ns", "applications", "application_ids.application_id", "devices", "device_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_NsEndDeviceRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"ns", "applications", "application_ids.application_id", "devices", "device_id"}, "")) ) var ( diff --git a/pkg/ttnpb/networkserver.pb.setters.fm.go b/pkg/ttnpb/networkserver.pb.setters.fm.go index 89f2317391..3313a99968 100644 --- a/pkg/ttnpb/networkserver.pb.setters.fm.go +++ b/pkg/ttnpb/networkserver.pb.setters.fm.go @@ -44,8 +44,7 @@ func (dst *GetDefaultMACSettingsRequest) SetFields(src *GetDefaultMACSettingsReq if src != nil { dst.LorawanPhyVersion = src.LorawanPhyVersion } else { - var zero PHYVersion - dst.LorawanPhyVersion = zero + dst.LorawanPhyVersion = 0 } default: diff --git a/pkg/ttnpb/networkserver.pb.validate.go b/pkg/ttnpb/networkserver.pb.validate.go index 5eb56293f8..19c387edde 100644 --- a/pkg/ttnpb/networkserver.pb.validate.go +++ b/pkg/ttnpb/networkserver.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _networkserver_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on GenerateDevAddrResponse with the // rules defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/networkserver_flags.pb.go b/pkg/ttnpb/networkserver_flags.pb.go index 9dab70db2f..f40aa28505 100644 --- a/pkg/ttnpb/networkserver_flags.pb.go +++ b/pkg/ttnpb/networkserver_flags.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/networkserver.proto package ttnpb diff --git a/pkg/ttnpb/networkserver_grpc.pb.go b/pkg/ttnpb/networkserver_grpc.pb.go new file mode 100644 index 0000000000..3e394531ea --- /dev/null +++ b/pkg/ttnpb/networkserver_grpc.pb.go @@ -0,0 +1,720 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/networkserver.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// NsClient is the client API for Ns service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type NsClient interface { + // GenerateDevAddr requests a device address assignment from the Network Server. + GenerateDevAddr(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GenerateDevAddrResponse, error) + // GetDefaultMACSettings retrieves the default MAC settings for a frequency plan. + GetDefaultMACSettings(ctx context.Context, in *GetDefaultMACSettingsRequest, opts ...grpc.CallOption) (*MACSettings, error) + GetNetID(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetNetIDResponse, error) + GetDeviceAddressPrefixes(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetDeviceAdressPrefixesResponse, error) +} + +type nsClient struct { + cc grpc.ClientConnInterface +} + +func NewNsClient(cc grpc.ClientConnInterface) NsClient { + return &nsClient{cc} +} + +func (c *nsClient) GenerateDevAddr(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GenerateDevAddrResponse, error) { + out := new(GenerateDevAddrResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Ns/GenerateDevAddr", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nsClient) GetDefaultMACSettings(ctx context.Context, in *GetDefaultMACSettingsRequest, opts ...grpc.CallOption) (*MACSettings, error) { + out := new(MACSettings) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Ns/GetDefaultMACSettings", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nsClient) GetNetID(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetNetIDResponse, error) { + out := new(GetNetIDResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Ns/GetNetID", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nsClient) GetDeviceAddressPrefixes(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetDeviceAdressPrefixesResponse, error) { + out := new(GetDeviceAdressPrefixesResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Ns/GetDeviceAddressPrefixes", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// NsServer is the server API for Ns service. +// All implementations must embed UnimplementedNsServer +// for forward compatibility +type NsServer interface { + // GenerateDevAddr requests a device address assignment from the Network Server. + GenerateDevAddr(context.Context, *emptypb.Empty) (*GenerateDevAddrResponse, error) + // GetDefaultMACSettings retrieves the default MAC settings for a frequency plan. + GetDefaultMACSettings(context.Context, *GetDefaultMACSettingsRequest) (*MACSettings, error) + GetNetID(context.Context, *emptypb.Empty) (*GetNetIDResponse, error) + GetDeviceAddressPrefixes(context.Context, *emptypb.Empty) (*GetDeviceAdressPrefixesResponse, error) + mustEmbedUnimplementedNsServer() +} + +// UnimplementedNsServer must be embedded to have forward compatible implementations. +type UnimplementedNsServer struct { +} + +func (UnimplementedNsServer) GenerateDevAddr(context.Context, *emptypb.Empty) (*GenerateDevAddrResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GenerateDevAddr not implemented") +} +func (UnimplementedNsServer) GetDefaultMACSettings(context.Context, *GetDefaultMACSettingsRequest) (*MACSettings, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDefaultMACSettings not implemented") +} +func (UnimplementedNsServer) GetNetID(context.Context, *emptypb.Empty) (*GetNetIDResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetNetID not implemented") +} +func (UnimplementedNsServer) GetDeviceAddressPrefixes(context.Context, *emptypb.Empty) (*GetDeviceAdressPrefixesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDeviceAddressPrefixes not implemented") +} +func (UnimplementedNsServer) mustEmbedUnimplementedNsServer() {} + +// UnsafeNsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to NsServer will +// result in compilation errors. +type UnsafeNsServer interface { + mustEmbedUnimplementedNsServer() +} + +func RegisterNsServer(s grpc.ServiceRegistrar, srv NsServer) { + s.RegisterService(&Ns_ServiceDesc, srv) +} + +func _Ns_GenerateDevAddr_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NsServer).GenerateDevAddr(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Ns/GenerateDevAddr", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NsServer).GenerateDevAddr(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Ns_GetDefaultMACSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetDefaultMACSettingsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NsServer).GetDefaultMACSettings(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Ns/GetDefaultMACSettings", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NsServer).GetDefaultMACSettings(ctx, req.(*GetDefaultMACSettingsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Ns_GetNetID_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NsServer).GetNetID(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Ns/GetNetID", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NsServer).GetNetID(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Ns_GetDeviceAddressPrefixes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NsServer).GetDeviceAddressPrefixes(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Ns/GetDeviceAddressPrefixes", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NsServer).GetDeviceAddressPrefixes(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +// Ns_ServiceDesc is the grpc.ServiceDesc for Ns service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Ns_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.Ns", + HandlerType: (*NsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GenerateDevAddr", + Handler: _Ns_GenerateDevAddr_Handler, + }, + { + MethodName: "GetDefaultMACSettings", + Handler: _Ns_GetDefaultMACSettings_Handler, + }, + { + MethodName: "GetNetID", + Handler: _Ns_GetNetID_Handler, + }, + { + MethodName: "GetDeviceAddressPrefixes", + Handler: _Ns_GetDeviceAddressPrefixes_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/networkserver.proto", +} + +// AsNsClient is the client API for AsNs service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type AsNsClient interface { + // Replace the entire downlink queue with the specified messages. + // This can also be used to empty the queue by specifying no messages. + // Note that this will trigger an immediate downlink if a downlink slot is available. + DownlinkQueueReplace(ctx context.Context, in *DownlinkQueueRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Push downlink messages to the end of the downlink queue. + // Note that this will trigger an immediate downlink if a downlink slot is available. + DownlinkQueuePush(ctx context.Context, in *DownlinkQueueRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // List the items currently in the downlink queue. + DownlinkQueueList(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*ApplicationDownlinks, error) +} + +type asNsClient struct { + cc grpc.ClientConnInterface +} + +func NewAsNsClient(cc grpc.ClientConnInterface) AsNsClient { + return &asNsClient{cc} +} + +func (c *asNsClient) DownlinkQueueReplace(ctx context.Context, in *DownlinkQueueRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AsNs/DownlinkQueueReplace", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *asNsClient) DownlinkQueuePush(ctx context.Context, in *DownlinkQueueRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AsNs/DownlinkQueuePush", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *asNsClient) DownlinkQueueList(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*ApplicationDownlinks, error) { + out := new(ApplicationDownlinks) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.AsNs/DownlinkQueueList", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AsNsServer is the server API for AsNs service. +// All implementations must embed UnimplementedAsNsServer +// for forward compatibility +type AsNsServer interface { + // Replace the entire downlink queue with the specified messages. + // This can also be used to empty the queue by specifying no messages. + // Note that this will trigger an immediate downlink if a downlink slot is available. + DownlinkQueueReplace(context.Context, *DownlinkQueueRequest) (*emptypb.Empty, error) + // Push downlink messages to the end of the downlink queue. + // Note that this will trigger an immediate downlink if a downlink slot is available. + DownlinkQueuePush(context.Context, *DownlinkQueueRequest) (*emptypb.Empty, error) + // List the items currently in the downlink queue. + DownlinkQueueList(context.Context, *EndDeviceIdentifiers) (*ApplicationDownlinks, error) + mustEmbedUnimplementedAsNsServer() +} + +// UnimplementedAsNsServer must be embedded to have forward compatible implementations. +type UnimplementedAsNsServer struct { +} + +func (UnimplementedAsNsServer) DownlinkQueueReplace(context.Context, *DownlinkQueueRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DownlinkQueueReplace not implemented") +} +func (UnimplementedAsNsServer) DownlinkQueuePush(context.Context, *DownlinkQueueRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DownlinkQueuePush not implemented") +} +func (UnimplementedAsNsServer) DownlinkQueueList(context.Context, *EndDeviceIdentifiers) (*ApplicationDownlinks, error) { + return nil, status.Errorf(codes.Unimplemented, "method DownlinkQueueList not implemented") +} +func (UnimplementedAsNsServer) mustEmbedUnimplementedAsNsServer() {} + +// UnsafeAsNsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AsNsServer will +// result in compilation errors. +type UnsafeAsNsServer interface { + mustEmbedUnimplementedAsNsServer() +} + +func RegisterAsNsServer(s grpc.ServiceRegistrar, srv AsNsServer) { + s.RegisterService(&AsNs_ServiceDesc, srv) +} + +func _AsNs_DownlinkQueueReplace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DownlinkQueueRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AsNsServer).DownlinkQueueReplace(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.AsNs/DownlinkQueueReplace", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AsNsServer).DownlinkQueueReplace(ctx, req.(*DownlinkQueueRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AsNs_DownlinkQueuePush_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DownlinkQueueRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AsNsServer).DownlinkQueuePush(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.AsNs/DownlinkQueuePush", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AsNsServer).DownlinkQueuePush(ctx, req.(*DownlinkQueueRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AsNs_DownlinkQueueList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EndDeviceIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AsNsServer).DownlinkQueueList(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.AsNs/DownlinkQueueList", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AsNsServer).DownlinkQueueList(ctx, req.(*EndDeviceIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// AsNs_ServiceDesc is the grpc.ServiceDesc for AsNs service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var AsNs_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.AsNs", + HandlerType: (*AsNsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "DownlinkQueueReplace", + Handler: _AsNs_DownlinkQueueReplace_Handler, + }, + { + MethodName: "DownlinkQueuePush", + Handler: _AsNs_DownlinkQueuePush_Handler, + }, + { + MethodName: "DownlinkQueueList", + Handler: _AsNs_DownlinkQueueList_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/networkserver.proto", +} + +// GsNsClient is the client API for GsNs service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type GsNsClient interface { + // Called by the Gateway Server when an uplink message arrives. + HandleUplink(ctx context.Context, in *UplinkMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Called by the Gateway Server when a Tx acknowledgment arrives. + ReportTxAcknowledgment(ctx context.Context, in *GatewayTxAcknowledgment, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type gsNsClient struct { + cc grpc.ClientConnInterface +} + +func NewGsNsClient(cc grpc.ClientConnInterface) GsNsClient { + return &gsNsClient{cc} +} + +func (c *gsNsClient) HandleUplink(ctx context.Context, in *UplinkMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GsNs/HandleUplink", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gsNsClient) ReportTxAcknowledgment(ctx context.Context, in *GatewayTxAcknowledgment, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GsNs/ReportTxAcknowledgment", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// GsNsServer is the server API for GsNs service. +// All implementations must embed UnimplementedGsNsServer +// for forward compatibility +type GsNsServer interface { + // Called by the Gateway Server when an uplink message arrives. + HandleUplink(context.Context, *UplinkMessage) (*emptypb.Empty, error) + // Called by the Gateway Server when a Tx acknowledgment arrives. + ReportTxAcknowledgment(context.Context, *GatewayTxAcknowledgment) (*emptypb.Empty, error) + mustEmbedUnimplementedGsNsServer() +} + +// UnimplementedGsNsServer must be embedded to have forward compatible implementations. +type UnimplementedGsNsServer struct { +} + +func (UnimplementedGsNsServer) HandleUplink(context.Context, *UplinkMessage) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method HandleUplink not implemented") +} +func (UnimplementedGsNsServer) ReportTxAcknowledgment(context.Context, *GatewayTxAcknowledgment) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method ReportTxAcknowledgment not implemented") +} +func (UnimplementedGsNsServer) mustEmbedUnimplementedGsNsServer() {} + +// UnsafeGsNsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to GsNsServer will +// result in compilation errors. +type UnsafeGsNsServer interface { + mustEmbedUnimplementedGsNsServer() +} + +func RegisterGsNsServer(s grpc.ServiceRegistrar, srv GsNsServer) { + s.RegisterService(&GsNs_ServiceDesc, srv) +} + +func _GsNs_HandleUplink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UplinkMessage) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GsNsServer).HandleUplink(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GsNs/HandleUplink", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GsNsServer).HandleUplink(ctx, req.(*UplinkMessage)) + } + return interceptor(ctx, in, info, handler) +} + +func _GsNs_ReportTxAcknowledgment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GatewayTxAcknowledgment) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GsNsServer).ReportTxAcknowledgment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GsNs/ReportTxAcknowledgment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GsNsServer).ReportTxAcknowledgment(ctx, req.(*GatewayTxAcknowledgment)) + } + return interceptor(ctx, in, info, handler) +} + +// GsNs_ServiceDesc is the grpc.ServiceDesc for GsNs service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var GsNs_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.GsNs", + HandlerType: (*GsNsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "HandleUplink", + Handler: _GsNs_HandleUplink_Handler, + }, + { + MethodName: "ReportTxAcknowledgment", + Handler: _GsNs_ReportTxAcknowledgment_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/networkserver.proto", +} + +// NsEndDeviceRegistryClient is the client API for NsEndDeviceRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type NsEndDeviceRegistryClient interface { + // Get returns the device that matches the given identifiers. + // If there are multiple matches, an error will be returned. + Get(ctx context.Context, in *GetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) + // Set creates or updates the device. + Set(ctx context.Context, in *SetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) + // ResetFactoryDefaults resets device state to factory defaults. + ResetFactoryDefaults(ctx context.Context, in *ResetAndGetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) + // Delete deletes the device that matches the given identifiers. + // If there are multiple matches, an error will be returned. + Delete(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type nsEndDeviceRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewNsEndDeviceRegistryClient(cc grpc.ClientConnInterface) NsEndDeviceRegistryClient { + return &nsEndDeviceRegistryClient{cc} +} + +func (c *nsEndDeviceRegistryClient) Get(ctx context.Context, in *GetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { + out := new(EndDevice) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsEndDeviceRegistry/Get", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nsEndDeviceRegistryClient) Set(ctx context.Context, in *SetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { + out := new(EndDevice) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsEndDeviceRegistry/Set", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nsEndDeviceRegistryClient) ResetFactoryDefaults(ctx context.Context, in *ResetAndGetEndDeviceRequest, opts ...grpc.CallOption) (*EndDevice, error) { + out := new(EndDevice) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsEndDeviceRegistry/ResetFactoryDefaults", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nsEndDeviceRegistryClient) Delete(ctx context.Context, in *EndDeviceIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsEndDeviceRegistry/Delete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// NsEndDeviceRegistryServer is the server API for NsEndDeviceRegistry service. +// All implementations must embed UnimplementedNsEndDeviceRegistryServer +// for forward compatibility +type NsEndDeviceRegistryServer interface { + // Get returns the device that matches the given identifiers. + // If there are multiple matches, an error will be returned. + Get(context.Context, *GetEndDeviceRequest) (*EndDevice, error) + // Set creates or updates the device. + Set(context.Context, *SetEndDeviceRequest) (*EndDevice, error) + // ResetFactoryDefaults resets device state to factory defaults. + ResetFactoryDefaults(context.Context, *ResetAndGetEndDeviceRequest) (*EndDevice, error) + // Delete deletes the device that matches the given identifiers. + // If there are multiple matches, an error will be returned. + Delete(context.Context, *EndDeviceIdentifiers) (*emptypb.Empty, error) + mustEmbedUnimplementedNsEndDeviceRegistryServer() +} + +// UnimplementedNsEndDeviceRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedNsEndDeviceRegistryServer struct { +} + +func (UnimplementedNsEndDeviceRegistryServer) Get(context.Context, *GetEndDeviceRequest) (*EndDevice, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (UnimplementedNsEndDeviceRegistryServer) Set(context.Context, *SetEndDeviceRequest) (*EndDevice, error) { + return nil, status.Errorf(codes.Unimplemented, "method Set not implemented") +} +func (UnimplementedNsEndDeviceRegistryServer) ResetFactoryDefaults(context.Context, *ResetAndGetEndDeviceRequest) (*EndDevice, error) { + return nil, status.Errorf(codes.Unimplemented, "method ResetFactoryDefaults not implemented") +} +func (UnimplementedNsEndDeviceRegistryServer) Delete(context.Context, *EndDeviceIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedNsEndDeviceRegistryServer) mustEmbedUnimplementedNsEndDeviceRegistryServer() {} + +// UnsafeNsEndDeviceRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to NsEndDeviceRegistryServer will +// result in compilation errors. +type UnsafeNsEndDeviceRegistryServer interface { + mustEmbedUnimplementedNsEndDeviceRegistryServer() +} + +func RegisterNsEndDeviceRegistryServer(s grpc.ServiceRegistrar, srv NsEndDeviceRegistryServer) { + s.RegisterService(&NsEndDeviceRegistry_ServiceDesc, srv) +} + +func _NsEndDeviceRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetEndDeviceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NsEndDeviceRegistryServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NsEndDeviceRegistry/Get", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NsEndDeviceRegistryServer).Get(ctx, req.(*GetEndDeviceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NsEndDeviceRegistry_Set_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetEndDeviceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NsEndDeviceRegistryServer).Set(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NsEndDeviceRegistry/Set", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NsEndDeviceRegistryServer).Set(ctx, req.(*SetEndDeviceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NsEndDeviceRegistry_ResetFactoryDefaults_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ResetAndGetEndDeviceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NsEndDeviceRegistryServer).ResetFactoryDefaults(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NsEndDeviceRegistry/ResetFactoryDefaults", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NsEndDeviceRegistryServer).ResetFactoryDefaults(ctx, req.(*ResetAndGetEndDeviceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NsEndDeviceRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EndDeviceIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NsEndDeviceRegistryServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NsEndDeviceRegistry/Delete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NsEndDeviceRegistryServer).Delete(ctx, req.(*EndDeviceIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// NsEndDeviceRegistry_ServiceDesc is the grpc.ServiceDesc for NsEndDeviceRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var NsEndDeviceRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.NsEndDeviceRegistry", + HandlerType: (*NsEndDeviceRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Get", + Handler: _NsEndDeviceRegistry_Get_Handler, + }, + { + MethodName: "Set", + Handler: _NsEndDeviceRegistry_Set_Handler, + }, + { + MethodName: "ResetFactoryDefaults", + Handler: _NsEndDeviceRegistry_ResetFactoryDefaults_Handler, + }, + { + MethodName: "Delete", + Handler: _NsEndDeviceRegistry_Delete_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/networkserver.proto", +} diff --git a/pkg/ttnpb/networkserver_json.pb.go b/pkg/ttnpb/networkserver_json.pb.go index 1a99d0909a..dc08d178d5 100644 --- a/pkg/ttnpb/networkserver_json.pb.go +++ b/pkg/ttnpb/networkserver_json.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/networkserver.proto package ttnpb diff --git a/pkg/ttnpb/notification_service.pb.go b/pkg/ttnpb/notification_service.pb.go index d83e3493b5..01c4b77876 100644 --- a/pkg/ttnpb/notification_service.pb.go +++ b/pkg/ttnpb/notification_service.pb.go @@ -1,36 +1,46 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2022 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/notification_service.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" + emptypb "google.golang.org/protobuf/types/known/emptypb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type NotificationReceiver int32 @@ -47,26 +57,47 @@ const ( NotificationReceiver_NOTIFICATION_RECEIVER_TECHNICAL_CONTACT NotificationReceiver = 4 ) -var NotificationReceiver_name = map[int32]string{ - 0: "NOTIFICATION_RECEIVER_UNKNOWN", - 1: "NOTIFICATION_RECEIVER_COLLABORATOR", - 3: "NOTIFICATION_RECEIVER_ADMINISTRATIVE_CONTACT", - 4: "NOTIFICATION_RECEIVER_TECHNICAL_CONTACT", -} +// Enum value maps for NotificationReceiver. +var ( + NotificationReceiver_name = map[int32]string{ + 0: "NOTIFICATION_RECEIVER_UNKNOWN", + 1: "NOTIFICATION_RECEIVER_COLLABORATOR", + 3: "NOTIFICATION_RECEIVER_ADMINISTRATIVE_CONTACT", + 4: "NOTIFICATION_RECEIVER_TECHNICAL_CONTACT", + } + NotificationReceiver_value = map[string]int32{ + "NOTIFICATION_RECEIVER_UNKNOWN": 0, + "NOTIFICATION_RECEIVER_COLLABORATOR": 1, + "NOTIFICATION_RECEIVER_ADMINISTRATIVE_CONTACT": 3, + "NOTIFICATION_RECEIVER_TECHNICAL_CONTACT": 4, + } +) -var NotificationReceiver_value = map[string]int32{ - "NOTIFICATION_RECEIVER_UNKNOWN": 0, - "NOTIFICATION_RECEIVER_COLLABORATOR": 1, - "NOTIFICATION_RECEIVER_ADMINISTRATIVE_CONTACT": 3, - "NOTIFICATION_RECEIVER_TECHNICAL_CONTACT": 4, +func (x NotificationReceiver) Enum() *NotificationReceiver { + p := new(NotificationReceiver) + *p = x + return p } func (x NotificationReceiver) String() string { - return proto.EnumName(NotificationReceiver_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (NotificationReceiver) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_notification_service_proto_enumTypes[0].Descriptor() +} + +func (NotificationReceiver) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_notification_service_proto_enumTypes[0] +} + +func (x NotificationReceiver) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use NotificationReceiver.Descriptor instead. func (NotificationReceiver) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_62db76852b39e787, []int{0} + return file_lorawan_stack_api_notification_service_proto_rawDescGZIP(), []int{0} } type NotificationStatus int32 @@ -77,37 +108,62 @@ const ( NotificationStatus_NOTIFICATION_STATUS_ARCHIVED NotificationStatus = 2 ) -var NotificationStatus_name = map[int32]string{ - 0: "NOTIFICATION_STATUS_UNSEEN", - 1: "NOTIFICATION_STATUS_SEEN", - 2: "NOTIFICATION_STATUS_ARCHIVED", -} +// Enum value maps for NotificationStatus. +var ( + NotificationStatus_name = map[int32]string{ + 0: "NOTIFICATION_STATUS_UNSEEN", + 1: "NOTIFICATION_STATUS_SEEN", + 2: "NOTIFICATION_STATUS_ARCHIVED", + } + NotificationStatus_value = map[string]int32{ + "NOTIFICATION_STATUS_UNSEEN": 0, + "NOTIFICATION_STATUS_SEEN": 1, + "NOTIFICATION_STATUS_ARCHIVED": 2, + } +) -var NotificationStatus_value = map[string]int32{ - "NOTIFICATION_STATUS_UNSEEN": 0, - "NOTIFICATION_STATUS_SEEN": 1, - "NOTIFICATION_STATUS_ARCHIVED": 2, +func (x NotificationStatus) Enum() *NotificationStatus { + p := new(NotificationStatus) + *p = x + return p } func (x NotificationStatus) String() string { - return proto.EnumName(NotificationStatus_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (NotificationStatus) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_notification_service_proto_enumTypes[1].Descriptor() +} + +func (NotificationStatus) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_notification_service_proto_enumTypes[1] } +func (x NotificationStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use NotificationStatus.Descriptor instead. func (NotificationStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_62db76852b39e787, []int{1} + return file_lorawan_stack_api_notification_service_proto_rawDescGZIP(), []int{1} } type Notification struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The immutable ID of the notification. Generated by the server. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // The time when the notification was triggered. - CreatedAt *types.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // The entity this notification is about. EntityIds *EntityIdentifiers `protobuf:"bytes,3,opt,name=entity_ids,json=entityIds,proto3" json:"entity_ids,omitempty"` // The type of this notification. NotificationType string `protobuf:"bytes,4,opt,name=notification_type,json=notificationType,proto3" json:"notification_type,omitempty"` // The data related to the notification. - Data *types.Any `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` + Data *anypb.Any `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` // If the notification was triggered by a user action, this contains the identifiers of the user that triggered the notification. SenderIds *UserIdentifiers `protobuf:"bytes,6,opt,name=sender_ids,json=senderIds,proto3" json:"sender_ids,omitempty"` // Relation of the notification receiver to the entity. @@ -117,229 +173,256 @@ type Notification struct { // The status of the notification. Status NotificationStatus `protobuf:"varint,10,opt,name=status,proto3,enum=ttn.lorawan.v3.NotificationStatus" json:"status,omitempty"` // The time when the notification status was updated. - StatusUpdatedAt *types.Timestamp `protobuf:"bytes,11,opt,name=status_updated_at,json=statusUpdatedAt,proto3" json:"status_updated_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + StatusUpdatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=status_updated_at,json=statusUpdatedAt,proto3" json:"status_updated_at,omitempty"` } -func (m *Notification) Reset() { *m = Notification{} } -func (m *Notification) String() string { return proto.CompactTextString(m) } -func (*Notification) ProtoMessage() {} -func (*Notification) Descriptor() ([]byte, []int) { - return fileDescriptor_62db76852b39e787, []int{0} -} -func (m *Notification) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Notification.Unmarshal(m, b) -} -func (m *Notification) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Notification.Marshal(b, m, deterministic) -} -func (m *Notification) XXX_Merge(src proto.Message) { - xxx_messageInfo_Notification.Merge(m, src) +func (x *Notification) Reset() { + *x = Notification{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_notification_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Notification) XXX_Size() int { - return xxx_messageInfo_Notification.Size(m) + +func (x *Notification) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Notification) XXX_DiscardUnknown() { - xxx_messageInfo_Notification.DiscardUnknown(m) + +func (*Notification) ProtoMessage() {} + +func (x *Notification) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_notification_service_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Notification proto.InternalMessageInfo +// Deprecated: Use Notification.ProtoReflect.Descriptor instead. +func (*Notification) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_notification_service_proto_rawDescGZIP(), []int{0} +} -func (m *Notification) GetId() string { - if m != nil { - return m.Id +func (x *Notification) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *Notification) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *Notification) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *Notification) GetEntityIds() *EntityIdentifiers { - if m != nil { - return m.EntityIds +func (x *Notification) GetEntityIds() *EntityIdentifiers { + if x != nil { + return x.EntityIds } return nil } -func (m *Notification) GetNotificationType() string { - if m != nil { - return m.NotificationType +func (x *Notification) GetNotificationType() string { + if x != nil { + return x.NotificationType } return "" } -func (m *Notification) GetData() *types.Any { - if m != nil { - return m.Data +func (x *Notification) GetData() *anypb.Any { + if x != nil { + return x.Data } return nil } -func (m *Notification) GetSenderIds() *UserIdentifiers { - if m != nil { - return m.SenderIds +func (x *Notification) GetSenderIds() *UserIdentifiers { + if x != nil { + return x.SenderIds } return nil } -func (m *Notification) GetReceivers() []NotificationReceiver { - if m != nil { - return m.Receivers +func (x *Notification) GetReceivers() []NotificationReceiver { + if x != nil { + return x.Receivers } return nil } -func (m *Notification) GetEmail() bool { - if m != nil { - return m.Email +func (x *Notification) GetEmail() bool { + if x != nil { + return x.Email } return false } -func (m *Notification) GetStatus() NotificationStatus { - if m != nil { - return m.Status +func (x *Notification) GetStatus() NotificationStatus { + if x != nil { + return x.Status } return NotificationStatus_NOTIFICATION_STATUS_UNSEEN } -func (m *Notification) GetStatusUpdatedAt() *types.Timestamp { - if m != nil { - return m.StatusUpdatedAt +func (x *Notification) GetStatusUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.StatusUpdatedAt } return nil } type CreateNotificationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The entity this notification is about. EntityIds *EntityIdentifiers `protobuf:"bytes,1,opt,name=entity_ids,json=entityIds,proto3" json:"entity_ids,omitempty"` // The type of this notification. NotificationType string `protobuf:"bytes,2,opt,name=notification_type,json=notificationType,proto3" json:"notification_type,omitempty"` // The data related to the notification. - Data *types.Any `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + Data *anypb.Any `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` // If the notification was triggered by a user action, this contains the identifiers of the user that triggered the notification. SenderIds *UserIdentifiers `protobuf:"bytes,4,opt,name=sender_ids,json=senderIds,proto3" json:"sender_ids,omitempty"` // Receivers of the notification. Receivers []NotificationReceiver `protobuf:"varint,5,rep,packed,name=receivers,proto3,enum=ttn.lorawan.v3.NotificationReceiver" json:"receivers,omitempty"` // Whether an email should be sent for the notification. - Email bool `protobuf:"varint,6,opt,name=email,proto3" json:"email,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Email bool `protobuf:"varint,6,opt,name=email,proto3" json:"email,omitempty"` } -func (m *CreateNotificationRequest) Reset() { *m = CreateNotificationRequest{} } -func (m *CreateNotificationRequest) String() string { return proto.CompactTextString(m) } -func (*CreateNotificationRequest) ProtoMessage() {} -func (*CreateNotificationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_62db76852b39e787, []int{1} -} -func (m *CreateNotificationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateNotificationRequest.Unmarshal(m, b) -} -func (m *CreateNotificationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateNotificationRequest.Marshal(b, m, deterministic) -} -func (m *CreateNotificationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateNotificationRequest.Merge(m, src) +func (x *CreateNotificationRequest) Reset() { + *x = CreateNotificationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_notification_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateNotificationRequest) XXX_Size() int { - return xxx_messageInfo_CreateNotificationRequest.Size(m) + +func (x *CreateNotificationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateNotificationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateNotificationRequest.DiscardUnknown(m) + +func (*CreateNotificationRequest) ProtoMessage() {} + +func (x *CreateNotificationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_notification_service_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CreateNotificationRequest proto.InternalMessageInfo +// Deprecated: Use CreateNotificationRequest.ProtoReflect.Descriptor instead. +func (*CreateNotificationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_notification_service_proto_rawDescGZIP(), []int{1} +} -func (m *CreateNotificationRequest) GetEntityIds() *EntityIdentifiers { - if m != nil { - return m.EntityIds +func (x *CreateNotificationRequest) GetEntityIds() *EntityIdentifiers { + if x != nil { + return x.EntityIds } return nil } -func (m *CreateNotificationRequest) GetNotificationType() string { - if m != nil { - return m.NotificationType +func (x *CreateNotificationRequest) GetNotificationType() string { + if x != nil { + return x.NotificationType } return "" } -func (m *CreateNotificationRequest) GetData() *types.Any { - if m != nil { - return m.Data +func (x *CreateNotificationRequest) GetData() *anypb.Any { + if x != nil { + return x.Data } return nil } -func (m *CreateNotificationRequest) GetSenderIds() *UserIdentifiers { - if m != nil { - return m.SenderIds +func (x *CreateNotificationRequest) GetSenderIds() *UserIdentifiers { + if x != nil { + return x.SenderIds } return nil } -func (m *CreateNotificationRequest) GetReceivers() []NotificationReceiver { - if m != nil { - return m.Receivers +func (x *CreateNotificationRequest) GetReceivers() []NotificationReceiver { + if x != nil { + return x.Receivers } return nil } -func (m *CreateNotificationRequest) GetEmail() bool { - if m != nil { - return m.Email +func (x *CreateNotificationRequest) GetEmail() bool { + if x != nil { + return x.Email } return false } type CreateNotificationResponse struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *CreateNotificationResponse) Reset() { *m = CreateNotificationResponse{} } -func (m *CreateNotificationResponse) String() string { return proto.CompactTextString(m) } -func (*CreateNotificationResponse) ProtoMessage() {} -func (*CreateNotificationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_62db76852b39e787, []int{2} -} -func (m *CreateNotificationResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateNotificationResponse.Unmarshal(m, b) -} -func (m *CreateNotificationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateNotificationResponse.Marshal(b, m, deterministic) + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *CreateNotificationResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateNotificationResponse.Merge(m, src) + +func (x *CreateNotificationResponse) Reset() { + *x = CreateNotificationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_notification_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateNotificationResponse) XXX_Size() int { - return xxx_messageInfo_CreateNotificationResponse.Size(m) + +func (x *CreateNotificationResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateNotificationResponse) XXX_DiscardUnknown() { - xxx_messageInfo_CreateNotificationResponse.DiscardUnknown(m) + +func (*CreateNotificationResponse) ProtoMessage() {} + +func (x *CreateNotificationResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_notification_service_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CreateNotificationResponse proto.InternalMessageInfo +// Deprecated: Use CreateNotificationResponse.ProtoReflect.Descriptor instead. +func (*CreateNotificationResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_notification_service_proto_rawDescGZIP(), []int{2} +} -func (m *CreateNotificationResponse) GetId() string { - if m != nil { - return m.Id +func (x *CreateNotificationResponse) GetId() string { + if x != nil { + return x.Id } return "" } type ListNotificationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The IDs of the receiving user. ReceiverIds *UserIdentifiers `protobuf:"bytes,1,opt,name=receiver_ids,json=receiverIds,proto3" json:"receiver_ids,omitempty"` // Select notifications with these statuses. @@ -348,470 +431,606 @@ type ListNotificationsRequest struct { // Limit the number of results per page. Limit uint32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,4,opt,name=page,proto3" json:"page,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Page uint32 `protobuf:"varint,4,opt,name=page,proto3" json:"page,omitempty"` } -func (m *ListNotificationsRequest) Reset() { *m = ListNotificationsRequest{} } -func (m *ListNotificationsRequest) String() string { return proto.CompactTextString(m) } -func (*ListNotificationsRequest) ProtoMessage() {} -func (*ListNotificationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_62db76852b39e787, []int{3} -} -func (m *ListNotificationsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListNotificationsRequest.Unmarshal(m, b) -} -func (m *ListNotificationsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListNotificationsRequest.Marshal(b, m, deterministic) -} -func (m *ListNotificationsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListNotificationsRequest.Merge(m, src) +func (x *ListNotificationsRequest) Reset() { + *x = ListNotificationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_notification_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListNotificationsRequest) XXX_Size() int { - return xxx_messageInfo_ListNotificationsRequest.Size(m) + +func (x *ListNotificationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListNotificationsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListNotificationsRequest.DiscardUnknown(m) + +func (*ListNotificationsRequest) ProtoMessage() {} + +func (x *ListNotificationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_notification_service_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListNotificationsRequest proto.InternalMessageInfo +// Deprecated: Use ListNotificationsRequest.ProtoReflect.Descriptor instead. +func (*ListNotificationsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_notification_service_proto_rawDescGZIP(), []int{3} +} -func (m *ListNotificationsRequest) GetReceiverIds() *UserIdentifiers { - if m != nil { - return m.ReceiverIds +func (x *ListNotificationsRequest) GetReceiverIds() *UserIdentifiers { + if x != nil { + return x.ReceiverIds } return nil } -func (m *ListNotificationsRequest) GetStatus() []NotificationStatus { - if m != nil { - return m.Status +func (x *ListNotificationsRequest) GetStatus() []NotificationStatus { + if x != nil { + return x.Status } return nil } -func (m *ListNotificationsRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListNotificationsRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListNotificationsRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListNotificationsRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } type ListNotificationsResponse struct { - Notifications []*Notification `protobuf:"bytes,1,rep,name=notifications,proto3" json:"notifications,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *ListNotificationsResponse) Reset() { *m = ListNotificationsResponse{} } -func (m *ListNotificationsResponse) String() string { return proto.CompactTextString(m) } -func (*ListNotificationsResponse) ProtoMessage() {} -func (*ListNotificationsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_62db76852b39e787, []int{4} -} -func (m *ListNotificationsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListNotificationsResponse.Unmarshal(m, b) + Notifications []*Notification `protobuf:"bytes,1,rep,name=notifications,proto3" json:"notifications,omitempty"` } -func (m *ListNotificationsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListNotificationsResponse.Marshal(b, m, deterministic) -} -func (m *ListNotificationsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListNotificationsResponse.Merge(m, src) + +func (x *ListNotificationsResponse) Reset() { + *x = ListNotificationsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_notification_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListNotificationsResponse) XXX_Size() int { - return xxx_messageInfo_ListNotificationsResponse.Size(m) + +func (x *ListNotificationsResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListNotificationsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListNotificationsResponse.DiscardUnknown(m) + +func (*ListNotificationsResponse) ProtoMessage() {} + +func (x *ListNotificationsResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_notification_service_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListNotificationsResponse proto.InternalMessageInfo +// Deprecated: Use ListNotificationsResponse.ProtoReflect.Descriptor instead. +func (*ListNotificationsResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_notification_service_proto_rawDescGZIP(), []int{4} +} -func (m *ListNotificationsResponse) GetNotifications() []*Notification { - if m != nil { - return m.Notifications +func (x *ListNotificationsResponse) GetNotifications() []*Notification { + if x != nil { + return x.Notifications } return nil } type UpdateNotificationStatusRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The IDs of the receiving user. ReceiverIds *UserIdentifiers `protobuf:"bytes,1,opt,name=receiver_ids,json=receiverIds,proto3" json:"receiver_ids,omitempty"` // The IDs of the notifications to update the status of. Ids []string `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` // The status to set on the notifications. - Status NotificationStatus `protobuf:"varint,3,opt,name=status,proto3,enum=ttn.lorawan.v3.NotificationStatus" json:"status,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Status NotificationStatus `protobuf:"varint,3,opt,name=status,proto3,enum=ttn.lorawan.v3.NotificationStatus" json:"status,omitempty"` } -func (m *UpdateNotificationStatusRequest) Reset() { *m = UpdateNotificationStatusRequest{} } -func (m *UpdateNotificationStatusRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateNotificationStatusRequest) ProtoMessage() {} -func (*UpdateNotificationStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_62db76852b39e787, []int{5} -} -func (m *UpdateNotificationStatusRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateNotificationStatusRequest.Unmarshal(m, b) -} -func (m *UpdateNotificationStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateNotificationStatusRequest.Marshal(b, m, deterministic) -} -func (m *UpdateNotificationStatusRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateNotificationStatusRequest.Merge(m, src) +func (x *UpdateNotificationStatusRequest) Reset() { + *x = UpdateNotificationStatusRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_notification_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UpdateNotificationStatusRequest) XXX_Size() int { - return xxx_messageInfo_UpdateNotificationStatusRequest.Size(m) + +func (x *UpdateNotificationStatusRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UpdateNotificationStatusRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateNotificationStatusRequest.DiscardUnknown(m) + +func (*UpdateNotificationStatusRequest) ProtoMessage() {} + +func (x *UpdateNotificationStatusRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_notification_service_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UpdateNotificationStatusRequest proto.InternalMessageInfo +// Deprecated: Use UpdateNotificationStatusRequest.ProtoReflect.Descriptor instead. +func (*UpdateNotificationStatusRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_notification_service_proto_rawDescGZIP(), []int{5} +} -func (m *UpdateNotificationStatusRequest) GetReceiverIds() *UserIdentifiers { - if m != nil { - return m.ReceiverIds +func (x *UpdateNotificationStatusRequest) GetReceiverIds() *UserIdentifiers { + if x != nil { + return x.ReceiverIds } return nil } -func (m *UpdateNotificationStatusRequest) GetIds() []string { - if m != nil { - return m.Ids +func (x *UpdateNotificationStatusRequest) GetIds() []string { + if x != nil { + return x.Ids } return nil } -func (m *UpdateNotificationStatusRequest) GetStatus() NotificationStatus { - if m != nil { - return m.Status +func (x *UpdateNotificationStatusRequest) GetStatus() NotificationStatus { + if x != nil { + return x.Status } return NotificationStatus_NOTIFICATION_STATUS_UNSEEN } type EntityStateChangedNotification struct { - State State `protobuf:"varint,1,opt,name=state,proto3,enum=ttn.lorawan.v3.State" json:"state,omitempty"` - StateDescription string `protobuf:"bytes,2,opt,name=state_description,json=stateDescription,proto3" json:"state_description,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *EntityStateChangedNotification) Reset() { *m = EntityStateChangedNotification{} } -func (m *EntityStateChangedNotification) String() string { return proto.CompactTextString(m) } -func (*EntityStateChangedNotification) ProtoMessage() {} -func (*EntityStateChangedNotification) Descriptor() ([]byte, []int) { - return fileDescriptor_62db76852b39e787, []int{6} -} -func (m *EntityStateChangedNotification) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EntityStateChangedNotification.Unmarshal(m, b) -} -func (m *EntityStateChangedNotification) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EntityStateChangedNotification.Marshal(b, m, deterministic) -} -func (m *EntityStateChangedNotification) XXX_Merge(src proto.Message) { - xxx_messageInfo_EntityStateChangedNotification.Merge(m, src) -} -func (m *EntityStateChangedNotification) XXX_Size() int { - return xxx_messageInfo_EntityStateChangedNotification.Size(m) -} -func (m *EntityStateChangedNotification) XXX_DiscardUnknown() { - xxx_messageInfo_EntityStateChangedNotification.DiscardUnknown(m) -} - -var xxx_messageInfo_EntityStateChangedNotification proto.InternalMessageInfo + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *EntityStateChangedNotification) GetState() State { - if m != nil { - return m.State - } - return State_STATE_REQUESTED + State State `protobuf:"varint,1,opt,name=state,proto3,enum=ttn.lorawan.v3.State" json:"state,omitempty"` + StateDescription string `protobuf:"bytes,2,opt,name=state_description,json=stateDescription,proto3" json:"state_description,omitempty"` } -func (m *EntityStateChangedNotification) GetStateDescription() string { - if m != nil { - return m.StateDescription +func (x *EntityStateChangedNotification) Reset() { + *x = EntityStateChangedNotification{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_notification_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func init() { - proto.RegisterEnum("ttn.lorawan.v3.NotificationReceiver", NotificationReceiver_name, NotificationReceiver_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.NotificationReceiver", NotificationReceiver_name, NotificationReceiver_value) - proto.RegisterEnum("ttn.lorawan.v3.NotificationStatus", NotificationStatus_name, NotificationStatus_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.NotificationStatus", NotificationStatus_name, NotificationStatus_value) - proto.RegisterType((*Notification)(nil), "ttn.lorawan.v3.Notification") - golang_proto.RegisterType((*Notification)(nil), "ttn.lorawan.v3.Notification") - proto.RegisterType((*CreateNotificationRequest)(nil), "ttn.lorawan.v3.CreateNotificationRequest") - golang_proto.RegisterType((*CreateNotificationRequest)(nil), "ttn.lorawan.v3.CreateNotificationRequest") - proto.RegisterType((*CreateNotificationResponse)(nil), "ttn.lorawan.v3.CreateNotificationResponse") - golang_proto.RegisterType((*CreateNotificationResponse)(nil), "ttn.lorawan.v3.CreateNotificationResponse") - proto.RegisterType((*ListNotificationsRequest)(nil), "ttn.lorawan.v3.ListNotificationsRequest") - golang_proto.RegisterType((*ListNotificationsRequest)(nil), "ttn.lorawan.v3.ListNotificationsRequest") - proto.RegisterType((*ListNotificationsResponse)(nil), "ttn.lorawan.v3.ListNotificationsResponse") - golang_proto.RegisterType((*ListNotificationsResponse)(nil), "ttn.lorawan.v3.ListNotificationsResponse") - proto.RegisterType((*UpdateNotificationStatusRequest)(nil), "ttn.lorawan.v3.UpdateNotificationStatusRequest") - golang_proto.RegisterType((*UpdateNotificationStatusRequest)(nil), "ttn.lorawan.v3.UpdateNotificationStatusRequest") - proto.RegisterType((*EntityStateChangedNotification)(nil), "ttn.lorawan.v3.EntityStateChangedNotification") - golang_proto.RegisterType((*EntityStateChangedNotification)(nil), "ttn.lorawan.v3.EntityStateChangedNotification") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/notification_service.proto", fileDescriptor_62db76852b39e787) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/notification_service.proto", fileDescriptor_62db76852b39e787) -} - -var fileDescriptor_62db76852b39e787 = []byte{ - // 1191 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xcd, 0x6e, 0xdb, 0x46, - 0x17, 0xcd, 0xe8, 0x2f, 0xd2, 0xd8, 0x51, 0xe4, 0x89, 0xf3, 0x7d, 0x94, 0xe2, 0x38, 0x8a, 0x1a, - 0xa4, 0x8a, 0x12, 0x91, 0x81, 0x0c, 0x07, 0xa8, 0x17, 0x45, 0x49, 0x59, 0x41, 0x94, 0xb8, 0x12, - 0x40, 0x53, 0x2e, 0x90, 0x0d, 0x41, 0x8b, 0x63, 0x9a, 0xb5, 0x44, 0xb2, 0x9c, 0x91, 0x52, 0xa1, - 0x28, 0x50, 0x64, 0xd9, 0x45, 0x8b, 0xba, 0x9b, 0x6e, 0xfa, 0x02, 0x7e, 0x8a, 0xbe, 0x43, 0x1f, - 0xa0, 0x8b, 0x16, 0x68, 0x90, 0x65, 0x0b, 0x74, 0xe1, 0x55, 0xc1, 0x21, 0x65, 0x93, 0x12, 0xe3, - 0xc8, 0x8b, 0xee, 0x48, 0xde, 0x73, 0xee, 0xdf, 0xb9, 0x77, 0x38, 0xf0, 0xd1, 0xc0, 0x76, 0xb5, - 0x57, 0x9a, 0x55, 0x27, 0x54, 0xeb, 0x1f, 0x09, 0x9a, 0x63, 0x0a, 0x96, 0x4d, 0xcd, 0x03, 0xb3, - 0xaf, 0x51, 0xd3, 0xb6, 0x54, 0x82, 0xdd, 0xb1, 0xd9, 0xc7, 0xbc, 0xe3, 0xda, 0xd4, 0x46, 0x79, - 0x4a, 0x2d, 0x3e, 0x60, 0xf0, 0xe3, 0x8d, 0x92, 0x68, 0x98, 0xf4, 0x70, 0xb4, 0xcf, 0xf7, 0xed, - 0xa1, 0x80, 0xad, 0xb1, 0x3d, 0x71, 0x5c, 0xfb, 0xcb, 0x89, 0xc0, 0xc0, 0xfd, 0xba, 0x81, 0xad, - 0xfa, 0x58, 0x1b, 0x98, 0xba, 0x46, 0xb1, 0x30, 0xf7, 0xe0, 0xbb, 0x2c, 0xd5, 0x43, 0x2e, 0x0c, - 0xdb, 0xb0, 0x7d, 0xf2, 0xfe, 0xe8, 0x80, 0xbd, 0xb1, 0x17, 0xf6, 0x14, 0xc0, 0xb7, 0x43, 0x70, - 0xe5, 0x10, 0x2b, 0x87, 0xa6, 0x65, 0x90, 0xb6, 0xa5, 0x8f, 0x08, 0x75, 0x4d, 0x4c, 0xc2, 0xa1, - 0x0d, 0xbb, 0x7e, 0x30, 0xd0, 0x0c, 0x22, 0x68, 0x96, 0x65, 0x53, 0x56, 0x0e, 0x09, 0xbc, 0x34, - 0x2f, 0xe5, 0xe5, 0x73, 0x62, 0x5b, 0x31, 0x4e, 0xd6, 0x0c, 0xdb, 0x36, 0x06, 0x98, 0xf5, 0x6c, - 0xde, 0x5a, 0x0c, 0xac, 0x67, 0xe5, 0x68, 0xd6, 0x24, 0x30, 0xdd, 0x9a, 0x35, 0xe1, 0xa1, 0x43, - 0xa7, 0xc6, 0x3b, 0xb3, 0x46, 0x6a, 0x0e, 0x31, 0xa1, 0xda, 0xd0, 0x09, 0x00, 0x1f, 0xcc, 0x2b, - 0x66, 0xea, 0xd8, 0xf2, 0x34, 0xc3, 0xee, 0x34, 0xfa, 0xed, 0x79, 0x10, 0xb6, 0x46, 0xc3, 0xc0, - 0x5c, 0x39, 0x49, 0xc1, 0xe5, 0x4e, 0x48, 0x66, 0x94, 0x87, 0x09, 0x53, 0xe7, 0x40, 0x19, 0x54, - 0x73, 0x72, 0xc2, 0xd4, 0xd1, 0x47, 0x10, 0xf6, 0x5d, 0xac, 0x51, 0xac, 0xab, 0x1a, 0xe5, 0x12, - 0x65, 0x50, 0x5d, 0x6a, 0x94, 0x78, 0x3f, 0x35, 0x7e, 0x9a, 0x1a, 0xaf, 0x4c, 0x53, 0x93, 0x73, - 0x01, 0x5a, 0xa4, 0xe8, 0x13, 0x08, 0xbd, 0x6c, 0xe8, 0x44, 0x35, 0x75, 0xc2, 0x25, 0x19, 0xf5, - 0x2e, 0x1f, 0x1d, 0x1c, 0xbe, 0xc5, 0x10, 0xed, 0xf3, 0xbc, 0xe5, 0x1c, 0x0e, 0x3e, 0x11, 0xf4, - 0x10, 0xae, 0x44, 0x66, 0x90, 0x4e, 0x1c, 0xcc, 0xa5, 0x58, 0x6e, 0x85, 0xb0, 0x41, 0x99, 0x38, - 0x18, 0x55, 0x61, 0x4a, 0xd7, 0xa8, 0xc6, 0xa5, 0x59, 0xa0, 0xd5, 0xb9, 0x1c, 0x45, 0x6b, 0x22, - 0x33, 0x04, 0xfa, 0x18, 0x42, 0x82, 0x2d, 0x1d, 0xbb, 0x2c, 0xb1, 0x0c, 0xc3, 0xdf, 0x99, 0x4d, - 0xac, 0x47, 0xb0, 0x1b, 0x49, 0xcb, 0xa7, 0x78, 0x69, 0x49, 0x30, 0xe7, 0xe2, 0x3e, 0x36, 0xc7, - 0xd8, 0x25, 0x5c, 0xb6, 0x9c, 0xac, 0xe6, 0x1b, 0xf7, 0x66, 0xe9, 0xe1, 0xa6, 0xca, 0x01, 0x58, - 0x3e, 0xa7, 0xa1, 0x55, 0x98, 0xc6, 0x43, 0xcd, 0x1c, 0x70, 0xb9, 0x32, 0xa8, 0x66, 0x65, 0xff, - 0x05, 0x6d, 0xc1, 0x0c, 0xa1, 0x1a, 0x1d, 0x11, 0x0e, 0x96, 0x41, 0x35, 0xdf, 0xa8, 0x5c, 0xe4, - 0x76, 0x97, 0x21, 0xe5, 0x80, 0x81, 0x9e, 0xc2, 0x15, 0xff, 0x49, 0x1d, 0x39, 0xfa, 0x54, 0xb0, - 0xa5, 0xf7, 0x0a, 0x76, 0xdd, 0x27, 0xf5, 0x7c, 0x8e, 0x48, 0x9f, 0xa7, 0xb2, 0x57, 0x0b, 0x59, - 0x19, 0xe1, 0x31, 0xb6, 0xa8, 0xea, 0x98, 0x0e, 0x1e, 0x98, 0x16, 0xf6, 0x3a, 0x55, 0xf9, 0x27, - 0x01, 0x8b, 0x4d, 0x26, 0x6f, 0xb4, 0xba, 0x2f, 0x46, 0x98, 0x50, 0xf4, 0x3c, 0x22, 0x37, 0x58, - 0x50, 0x6e, 0x29, 0x7b, 0x2a, 0xa5, 0xbf, 0x05, 0x89, 0x02, 0x08, 0x0b, 0xff, 0x24, 0x4e, 0x78, - 0x6f, 0xf8, 0x72, 0x52, 0xee, 0x54, 0xca, 0xb8, 0xa9, 0x02, 0xe0, 0xf4, 0x0b, 0x66, 0x20, 0x79, - 0xc9, 0x19, 0x48, 0x5d, 0x7a, 0x06, 0x7a, 0xe1, 0x19, 0x48, 0x2f, 0x3e, 0x03, 0xd2, 0xca, 0xa9, - 0x94, 0x3f, 0x06, 0x4b, 0x59, 0xc0, 0x81, 0x4a, 0xfa, 0xb5, 0x5f, 0x78, 0xcc, 0x58, 0x64, 0x42, - 0x63, 0x51, 0x79, 0x04, 0x4b, 0x71, 0x7d, 0x27, 0x8e, 0x6d, 0x11, 0x3c, 0xbb, 0xb2, 0x95, 0xbf, - 0x01, 0xe4, 0x76, 0x4c, 0x42, 0xc3, 0x60, 0x32, 0x55, 0x69, 0x07, 0x2e, 0x4f, 0xa3, 0x85, 0x74, - 0x7a, 0x5f, 0xe5, 0x21, 0x95, 0x96, 0xa6, 0x74, 0xaf, 0x0b, 0x2f, 0xce, 0xe6, 0x35, 0xc1, 0x5a, - 0xb0, 0xc0, 0xbc, 0x4a, 0xd7, 0x4f, 0xa5, 0xe5, 0x63, 0x90, 0x3b, 0x2f, 0x7f, 0x3a, 0xc0, 0xeb, - 0x30, 0x3d, 0x30, 0x87, 0x26, 0x65, 0xea, 0x5d, 0x63, 0x21, 0x6b, 0x49, 0xee, 0xcd, 0x55, 0xd9, - 0xff, 0x8c, 0x10, 0x4c, 0x39, 0x9a, 0xe1, 0x1f, 0x00, 0xd7, 0x64, 0xf6, 0xbc, 0x95, 0xfd, 0xeb, - 0xa4, 0x98, 0xca, 0x5e, 0x29, 0x80, 0x8a, 0x0a, 0x8b, 0x31, 0x45, 0x07, 0x2d, 0x92, 0xe0, 0xb5, - 0xf0, 0xac, 0x78, 0x65, 0x27, 0xab, 0x4b, 0x8d, 0xb5, 0x0b, 0x15, 0x8b, 0x52, 0x2a, 0x7f, 0x02, - 0x78, 0xc7, 0xdf, 0x92, 0x98, 0x25, 0xfc, 0x4f, 0xba, 0x7b, 0x1f, 0x26, 0x3d, 0x27, 0x5e, 0x6b, - 0x73, 0xd2, 0xea, 0xa9, 0xb4, 0x72, 0x0c, 0xf2, 0x59, 0x50, 0x78, 0x73, 0xd5, 0xeb, 0x9d, 0x9b, - 0xfc, 0x09, 0xdc, 0x93, 0x3d, 0x00, 0xda, 0x3e, 0x53, 0x21, 0xb9, 0xe8, 0xa9, 0xc1, 0x42, 0x46, - 0xda, 0x1f, 0x6a, 0xe5, 0x77, 0x00, 0xae, 0xfb, 0x8b, 0xea, 0x81, 0x71, 0xf3, 0x50, 0xb3, 0x0c, - 0xac, 0x47, 0x7e, 0x13, 0x9b, 0x30, 0xed, 0xd1, 0x30, 0xab, 0x30, 0xdf, 0xb8, 0x39, 0x1b, 0x91, - 0x11, 0x43, 0x41, 0x7c, 0x34, 0xda, 0xf4, 0xcf, 0x28, 0xac, 0xea, 0x98, 0xf4, 0x5d, 0xd3, 0xf1, - 0x7c, 0x05, 0x7b, 0xed, 0x61, 0xdd, 0x24, 0xf7, 0x0d, 0x90, 0x0b, 0x0c, 0xb2, 0x7d, 0x8e, 0xa8, - 0xfd, 0x06, 0xe0, 0x6a, 0xdc, 0x32, 0xa1, 0xbb, 0xf0, 0x76, 0xa7, 0xab, 0xb4, 0x9f, 0xb6, 0x9b, - 0xa2, 0xd2, 0xee, 0x76, 0x54, 0xb9, 0xd5, 0x6c, 0xb5, 0xf7, 0x5a, 0xb2, 0xda, 0xeb, 0xbc, 0xe8, - 0x74, 0x3f, 0xeb, 0x14, 0xae, 0xa0, 0xfb, 0xb0, 0x12, 0x0f, 0x69, 0x76, 0x77, 0x76, 0x44, 0xa9, - 0x2b, 0x8b, 0x4a, 0x57, 0x2e, 0x00, 0xf4, 0x18, 0x3e, 0x8a, 0xc7, 0x89, 0xdb, 0x9f, 0xb6, 0x3b, - 0xed, 0x5d, 0x45, 0x16, 0x95, 0xf6, 0x5e, 0x4b, 0x6d, 0x76, 0x3b, 0x8a, 0xd8, 0x54, 0x0a, 0x49, - 0xf4, 0x10, 0x7e, 0x18, 0xcf, 0x50, 0x5a, 0xcd, 0x67, 0x9d, 0x76, 0x53, 0xdc, 0x39, 0x03, 0xa7, - 0x4a, 0xb7, 0xdf, 0x9e, 0x14, 0x8b, 0x1c, 0xa8, 0xdd, 0x8c, 0xa5, 0xd4, 0x7e, 0x00, 0x10, 0xcd, - 0xab, 0x84, 0xd6, 0x61, 0x29, 0x82, 0xdf, 0x55, 0x44, 0xa5, 0xb7, 0xab, 0xf6, 0x3a, 0xbb, 0xad, - 0x96, 0x57, 0xdc, 0x1a, 0xe4, 0xe2, 0xec, 0xcc, 0x0a, 0x50, 0x19, 0xae, 0xc5, 0x59, 0x45, 0xb9, - 0xf9, 0xac, 0xbd, 0xd7, 0xda, 0x2e, 0x24, 0x4a, 0xb7, 0xde, 0x9e, 0x14, 0xff, 0xcf, 0x81, 0xda, - 0x8d, 0x18, 0x5c, 0xe3, 0xe7, 0x24, 0xbc, 0x11, 0xc9, 0xc9, 0xbf, 0x01, 0x22, 0x15, 0x66, 0xfc, - 0xd3, 0x08, 0x3d, 0x98, 0x95, 0xfd, 0x9d, 0x7f, 0x87, 0x52, 0x6d, 0x11, 0x68, 0xb0, 0xad, 0xc7, - 0x00, 0xa6, 0xbc, 0x5d, 0x46, 0xd5, 0x59, 0xd2, 0xbb, 0x8e, 0xb5, 0xd2, 0x83, 0x05, 0x90, 0xbe, - 0xf7, 0xca, 0xe6, 0xeb, 0x5f, 0xff, 0xf8, 0x31, 0x21, 0xbc, 0xac, 0xa3, 0x87, 0xc2, 0x88, 0x60, - 0x97, 0x08, 0x5f, 0x85, 0x77, 0x96, 0xf7, 0xbe, 0xa9, 0xa6, 0xfe, 0x75, 0xe4, 0xfa, 0x4b, 0xd0, - 0xf7, 0x00, 0x2e, 0xfb, 0xeb, 0x1f, 0x68, 0x23, 0xcc, 0x6d, 0xf5, 0xc5, 0x87, 0x43, 0xe9, 0x7f, - 0x73, 0xbf, 0xa3, 0x96, 0x77, 0xdd, 0xab, 0x3c, 0x61, 0x09, 0x3d, 0x6e, 0x5c, 0x26, 0x9d, 0x2d, - 0x50, 0x93, 0x36, 0x7f, 0xf9, 0x7d, 0x1d, 0xbc, 0x14, 0x0c, 0x9b, 0xa7, 0x87, 0x98, 0xb2, 0x9b, - 0x2b, 0x6f, 0x61, 0xfa, 0xca, 0x76, 0x8f, 0x84, 0xe8, 0xad, 0x6f, 0xbc, 0x21, 0x38, 0x47, 0x86, - 0x40, 0xa9, 0xe5, 0xec, 0xef, 0x67, 0x58, 0xf8, 0x8d, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x02, - 0x27, 0x75, 0x89, 0xf1, 0x0b, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// NotificationServiceClient is the client API for NotificationService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type NotificationServiceClient interface { - // Create a new notification. Can only be called by internal services using cluster auth. - Create(ctx context.Context, in *CreateNotificationRequest, opts ...grpc.CallOption) (*CreateNotificationResponse, error) - // List the notifications for a user or an organization. - // When called with user credentials and empty receiver_ids, this will list - // notifications for the current user and its organizations. - List(ctx context.Context, in *ListNotificationsRequest, opts ...grpc.CallOption) (*ListNotificationsResponse, error) - // Batch-update multiple notifications to the same status. - UpdateStatus(ctx context.Context, in *UpdateNotificationStatusRequest, opts ...grpc.CallOption) (*types.Empty, error) +func (x *EntityStateChangedNotification) String() string { + return protoimpl.X.MessageStringOf(x) } -type notificationServiceClient struct { - cc *grpc.ClientConn -} +func (*EntityStateChangedNotification) ProtoMessage() {} -func NewNotificationServiceClient(cc *grpc.ClientConn) NotificationServiceClient { - return ¬ificationServiceClient{cc} -} - -func (c *notificationServiceClient) Create(ctx context.Context, in *CreateNotificationRequest, opts ...grpc.CallOption) (*CreateNotificationResponse, error) { - out := new(CreateNotificationResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NotificationService/Create", in, out, opts...) - if err != nil { - return nil, err +func (x *EntityStateChangedNotification) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_notification_service_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return out, nil + return mi.MessageOf(x) } -func (c *notificationServiceClient) List(ctx context.Context, in *ListNotificationsRequest, opts ...grpc.CallOption) (*ListNotificationsResponse, error) { - out := new(ListNotificationsResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NotificationService/List", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// Deprecated: Use EntityStateChangedNotification.ProtoReflect.Descriptor instead. +func (*EntityStateChangedNotification) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_notification_service_proto_rawDescGZIP(), []int{6} } -func (c *notificationServiceClient) UpdateStatus(ctx context.Context, in *UpdateNotificationStatusRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NotificationService/UpdateStatus", in, out, opts...) - if err != nil { - return nil, err +func (x *EntityStateChangedNotification) GetState() State { + if x != nil { + return x.State } - return out, nil -} - -// NotificationServiceServer is the server API for NotificationService service. -type NotificationServiceServer interface { - // Create a new notification. Can only be called by internal services using cluster auth. - Create(context.Context, *CreateNotificationRequest) (*CreateNotificationResponse, error) - // List the notifications for a user or an organization. - // When called with user credentials and empty receiver_ids, this will list - // notifications for the current user and its organizations. - List(context.Context, *ListNotificationsRequest) (*ListNotificationsResponse, error) - // Batch-update multiple notifications to the same status. - UpdateStatus(context.Context, *UpdateNotificationStatusRequest) (*types.Empty, error) -} - -// UnimplementedNotificationServiceServer can be embedded to have forward compatible implementations. -type UnimplementedNotificationServiceServer struct { -} - -func (*UnimplementedNotificationServiceServer) Create(ctx context.Context, req *CreateNotificationRequest) (*CreateNotificationResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (*UnimplementedNotificationServiceServer) List(ctx context.Context, req *ListNotificationsRequest) (*ListNotificationsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method List not implemented") -} -func (*UnimplementedNotificationServiceServer) UpdateStatus(ctx context.Context, req *UpdateNotificationStatusRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateStatus not implemented") -} - -func RegisterNotificationServiceServer(s *grpc.Server, srv NotificationServiceServer) { - s.RegisterService(&_NotificationService_serviceDesc, srv) + return State_STATE_REQUESTED } -func _NotificationService_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateNotificationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NotificationServiceServer).Create(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NotificationService/Create", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NotificationServiceServer).Create(ctx, req.(*CreateNotificationRequest)) +func (x *EntityStateChangedNotification) GetStateDescription() string { + if x != nil { + return x.StateDescription } - return interceptor(ctx, in, info, handler) + return "" } -func _NotificationService_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListNotificationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NotificationServiceServer).List(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NotificationService/List", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NotificationServiceServer).List(ctx, req.(*ListNotificationsRequest)) - } - return interceptor(ctx, in, info, handler) -} +var File_lorawan_stack_api_notification_service_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_notification_service_proto_rawDesc = []byte{ + 0x0a, 0x2c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x41, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, + 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, + 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, + 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, + 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, + 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, + 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xaa, 0x04, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x49, 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3e, 0x0a, 0x0a, 0x73, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x52, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x72, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x72, 0x52, 0x09, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x46, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x52, + 0x12, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, + 0x69, 0x64, 0x73, 0x22, 0xf6, 0x02, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x4a, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x73, 0x12, 0x36, 0x0a, + 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, + 0x01, 0x18, 0x64, 0x52, 0x10, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x3e, 0x0a, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x52, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, + 0x55, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x92, 0x01, 0x0b, + 0x08, 0x01, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x2c, 0x0a, 0x1a, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xf3, 0x01, 0x0a, 0x18, 0x4c, + 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x4b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, 0x01, + 0x09, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, + 0x22, 0x5f, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, + 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0xe7, 0x01, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x49, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x42, 0x14, 0xfa, 0x42, 0x11, 0x92, 0x01, 0x0e, 0x08, 0x01, 0x10, 0xe8, 0x07, 0x18, 0x01, 0x22, + 0x05, 0x72, 0x03, 0x98, 0x01, 0x24, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0x8e, 0x01, 0x0a, 0x1e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0xdf, 0x01, 0x0a, + 0x14, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x1d, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x4e, 0x4f, 0x54, 0x49, + 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, + 0x52, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x01, + 0x12, 0x30, 0x0a, 0x2c, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x49, + 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, + 0x10, 0x03, 0x12, 0x2b, 0x0a, 0x27, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x54, 0x45, 0x43, 0x48, + 0x4e, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x10, 0x04, 0x1a, + 0x1d, 0xea, 0xaa, 0x19, 0x19, 0x18, 0x01, 0x2a, 0x15, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x52, 0x2a, 0x91, + 0x01, 0x0a, 0x12, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x1a, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, + 0x45, 0x45, 0x4e, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x45, 0x45, + 0x4e, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, + 0x56, 0x45, 0x44, 0x10, 0x02, 0x1a, 0x1b, 0xea, 0xaa, 0x19, 0x17, 0x18, 0x01, 0x2a, 0x13, 0x4e, + 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x32, 0x9d, 0x03, 0x0a, 0x13, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5f, 0x0a, 0x06, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x04, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x2f, 0x5a, 0x2d, 0x12, 0x2b, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x8f, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x30, 0x32, 0x2b, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, + 0x01, 0x2a, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_lorawan_stack_api_notification_service_proto_rawDescOnce sync.Once + file_lorawan_stack_api_notification_service_proto_rawDescData = file_lorawan_stack_api_notification_service_proto_rawDesc +) -func _NotificationService_UpdateStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateNotificationStatusRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NotificationServiceServer).UpdateStatus(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NotificationService/UpdateStatus", +func file_lorawan_stack_api_notification_service_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_notification_service_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_notification_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_notification_service_proto_rawDescData) + }) + return file_lorawan_stack_api_notification_service_proto_rawDescData +} + +var file_lorawan_stack_api_notification_service_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_lorawan_stack_api_notification_service_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_lorawan_stack_api_notification_service_proto_goTypes = []interface{}{ + (NotificationReceiver)(0), // 0: ttn.lorawan.v3.NotificationReceiver + (NotificationStatus)(0), // 1: ttn.lorawan.v3.NotificationStatus + (*Notification)(nil), // 2: ttn.lorawan.v3.Notification + (*CreateNotificationRequest)(nil), // 3: ttn.lorawan.v3.CreateNotificationRequest + (*CreateNotificationResponse)(nil), // 4: ttn.lorawan.v3.CreateNotificationResponse + (*ListNotificationsRequest)(nil), // 5: ttn.lorawan.v3.ListNotificationsRequest + (*ListNotificationsResponse)(nil), // 6: ttn.lorawan.v3.ListNotificationsResponse + (*UpdateNotificationStatusRequest)(nil), // 7: ttn.lorawan.v3.UpdateNotificationStatusRequest + (*EntityStateChangedNotification)(nil), // 8: ttn.lorawan.v3.EntityStateChangedNotification + (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp + (*EntityIdentifiers)(nil), // 10: ttn.lorawan.v3.EntityIdentifiers + (*anypb.Any)(nil), // 11: google.protobuf.Any + (*UserIdentifiers)(nil), // 12: ttn.lorawan.v3.UserIdentifiers + (State)(0), // 13: ttn.lorawan.v3.State + (*emptypb.Empty)(nil), // 14: google.protobuf.Empty +} +var file_lorawan_stack_api_notification_service_proto_depIdxs = []int32{ + 9, // 0: ttn.lorawan.v3.Notification.created_at:type_name -> google.protobuf.Timestamp + 10, // 1: ttn.lorawan.v3.Notification.entity_ids:type_name -> ttn.lorawan.v3.EntityIdentifiers + 11, // 2: ttn.lorawan.v3.Notification.data:type_name -> google.protobuf.Any + 12, // 3: ttn.lorawan.v3.Notification.sender_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 0, // 4: ttn.lorawan.v3.Notification.receivers:type_name -> ttn.lorawan.v3.NotificationReceiver + 1, // 5: ttn.lorawan.v3.Notification.status:type_name -> ttn.lorawan.v3.NotificationStatus + 9, // 6: ttn.lorawan.v3.Notification.status_updated_at:type_name -> google.protobuf.Timestamp + 10, // 7: ttn.lorawan.v3.CreateNotificationRequest.entity_ids:type_name -> ttn.lorawan.v3.EntityIdentifiers + 11, // 8: ttn.lorawan.v3.CreateNotificationRequest.data:type_name -> google.protobuf.Any + 12, // 9: ttn.lorawan.v3.CreateNotificationRequest.sender_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 0, // 10: ttn.lorawan.v3.CreateNotificationRequest.receivers:type_name -> ttn.lorawan.v3.NotificationReceiver + 12, // 11: ttn.lorawan.v3.ListNotificationsRequest.receiver_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 1, // 12: ttn.lorawan.v3.ListNotificationsRequest.status:type_name -> ttn.lorawan.v3.NotificationStatus + 2, // 13: ttn.lorawan.v3.ListNotificationsResponse.notifications:type_name -> ttn.lorawan.v3.Notification + 12, // 14: ttn.lorawan.v3.UpdateNotificationStatusRequest.receiver_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 1, // 15: ttn.lorawan.v3.UpdateNotificationStatusRequest.status:type_name -> ttn.lorawan.v3.NotificationStatus + 13, // 16: ttn.lorawan.v3.EntityStateChangedNotification.state:type_name -> ttn.lorawan.v3.State + 3, // 17: ttn.lorawan.v3.NotificationService.Create:input_type -> ttn.lorawan.v3.CreateNotificationRequest + 5, // 18: ttn.lorawan.v3.NotificationService.List:input_type -> ttn.lorawan.v3.ListNotificationsRequest + 7, // 19: ttn.lorawan.v3.NotificationService.UpdateStatus:input_type -> ttn.lorawan.v3.UpdateNotificationStatusRequest + 4, // 20: ttn.lorawan.v3.NotificationService.Create:output_type -> ttn.lorawan.v3.CreateNotificationResponse + 6, // 21: ttn.lorawan.v3.NotificationService.List:output_type -> ttn.lorawan.v3.ListNotificationsResponse + 14, // 22: ttn.lorawan.v3.NotificationService.UpdateStatus:output_type -> google.protobuf.Empty + 20, // [20:23] is the sub-list for method output_type + 17, // [17:20] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_notification_service_proto_init() } +func file_lorawan_stack_api_notification_service_proto_init() { + if File_lorawan_stack_api_notification_service_proto != nil { + return } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NotificationServiceServer).UpdateStatus(ctx, req.(*UpdateNotificationStatusRequest)) + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_enums_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_notification_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Notification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_notification_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateNotificationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_notification_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateNotificationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_notification_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNotificationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_notification_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNotificationsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_notification_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateNotificationStatusRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_notification_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EntityStateChangedNotification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } - return interceptor(ctx, in, info, handler) -} - -var _NotificationService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.NotificationService", - HandlerType: (*NotificationServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Create", - Handler: _NotificationService_Create_Handler, - }, - { - MethodName: "List", - Handler: _NotificationService_List_Handler, - }, - { - MethodName: "UpdateStatus", - Handler: _NotificationService_UpdateStatus_Handler, + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_notification_service_proto_rawDesc, + NumEnums: 2, + NumMessages: 7, + NumExtensions: 0, + NumServices: 1, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/notification_service.proto", + GoTypes: file_lorawan_stack_api_notification_service_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_notification_service_proto_depIdxs, + EnumInfos: file_lorawan_stack_api_notification_service_proto_enumTypes, + MessageInfos: file_lorawan_stack_api_notification_service_proto_msgTypes, + }.Build() + File_lorawan_stack_api_notification_service_proto = out.File + file_lorawan_stack_api_notification_service_proto_rawDesc = nil + file_lorawan_stack_api_notification_service_proto_goTypes = nil + file_lorawan_stack_api_notification_service_proto_depIdxs = nil } diff --git a/pkg/ttnpb/notification_service.pb.gw.go b/pkg/ttnpb/notification_service.pb.gw.go index d7415f0729..2b277f4d3c 100644 --- a/pkg/ttnpb/notification_service.pb.gw.go +++ b/pkg/ttnpb/notification_service.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join var ( @@ -54,7 +52,6 @@ func request_NotificationService_List_0(ctx context.Context, marshaler runtime.M } err = runtime.PopulateFieldFromPath(&protoReq, "receiver_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "receiver_ids.user_id", err) } @@ -88,7 +85,6 @@ func local_request_NotificationService_List_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "receiver_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "receiver_ids.user_id", err) } @@ -130,7 +126,6 @@ func request_NotificationService_UpdateStatus_0(ctx context.Context, marshaler r } err = runtime.PopulateFieldFromPath(&protoReq, "receiver_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "receiver_ids.user_id", err) } @@ -165,7 +160,6 @@ func local_request_NotificationService_UpdateStatus_0(ctx context.Context, marsh } err = runtime.PopulateFieldFromPath(&protoReq, "receiver_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "receiver_ids.user_id", err) } @@ -187,20 +181,22 @@ func RegisterNotificationServiceHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.NotificationService/List", runtime.WithHTTPPathPattern("/users/{receiver_ids.user_id}/notifications")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_NotificationService_List_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_NotificationService_List_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_NotificationService_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_NotificationService_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -210,20 +206,22 @@ func RegisterNotificationServiceHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.NotificationService/UpdateStatus", runtime.WithHTTPPathPattern("/users/{receiver_ids.user_id}/notifications")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_NotificationService_UpdateStatus_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_NotificationService_UpdateStatus_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_NotificationService_UpdateStatus_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_NotificationService_UpdateStatus_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -272,19 +270,21 @@ func RegisterNotificationServiceHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.NotificationService/List", runtime.WithHTTPPathPattern("/users/{receiver_ids.user_id}/notifications")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_NotificationService_List_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_NotificationService_List_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_NotificationService_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_NotificationService_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -292,19 +292,21 @@ func RegisterNotificationServiceHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.NotificationService/UpdateStatus", runtime.WithHTTPPathPattern("/users/{receiver_ids.user_id}/notifications")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_NotificationService_UpdateStatus_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_NotificationService_UpdateStatus_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_NotificationService_UpdateStatus_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_NotificationService_UpdateStatus_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -312,9 +314,9 @@ func RegisterNotificationServiceHandlerClient(ctx context.Context, mux *runtime. } var ( - pattern_NotificationService_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "receiver_ids.user_id", "notifications"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_NotificationService_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "receiver_ids.user_id", "notifications"}, "")) - pattern_NotificationService_UpdateStatus_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "receiver_ids.user_id", "notifications"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_NotificationService_UpdateStatus_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "receiver_ids.user_id", "notifications"}, "")) ) var ( diff --git a/pkg/ttnpb/notification_service.pb.setters.fm.go b/pkg/ttnpb/notification_service.pb.setters.fm.go index 7e88b82d03..9ec58f0c52 100644 --- a/pkg/ttnpb/notification_service.pb.setters.fm.go +++ b/pkg/ttnpb/notification_service.pb.setters.fm.go @@ -121,8 +121,7 @@ func (dst *Notification) SetFields(src *Notification, paths ...string) error { if src != nil { dst.Status = src.Status } else { - var zero NotificationStatus - dst.Status = zero + dst.Status = 0 } case "status_updated_at": if len(subs) > 0 { @@ -390,8 +389,7 @@ func (dst *UpdateNotificationStatusRequest) SetFields(src *UpdateNotificationSta if src != nil { dst.Status = src.Status } else { - var zero NotificationStatus - dst.Status = zero + dst.Status = 0 } default: @@ -411,8 +409,7 @@ func (dst *EntityStateChangedNotification) SetFields(src *EntityStateChangedNoti if src != nil { dst.State = src.State } else { - var zero State - dst.State = zero + dst.State = 0 } case "state_description": if len(subs) > 0 { diff --git a/pkg/ttnpb/notification_service.pb.validate.go b/pkg/ttnpb/notification_service.pb.validate.go index d49784d67e..948de60a99 100644 --- a/pkg/ttnpb/notification_service.pb.validate.go +++ b/pkg/ttnpb/notification_service.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _notification_service_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on Notification with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/notification_service_flags.pb.go b/pkg/ttnpb/notification_service_flags.pb.go index ff49fe8e29..06285eaf3b 100644 --- a/pkg/ttnpb/notification_service_flags.pb.go +++ b/pkg/ttnpb/notification_service_flags.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/notification_service.proto package ttnpb diff --git a/pkg/ttnpb/notification_service_grpc.pb.go b/pkg/ttnpb/notification_service_grpc.pb.go new file mode 100644 index 0000000000..8c8cfb8d23 --- /dev/null +++ b/pkg/ttnpb/notification_service_grpc.pb.go @@ -0,0 +1,188 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/notification_service.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// NotificationServiceClient is the client API for NotificationService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type NotificationServiceClient interface { + // Create a new notification. Can only be called by internal services using cluster auth. + Create(ctx context.Context, in *CreateNotificationRequest, opts ...grpc.CallOption) (*CreateNotificationResponse, error) + // List the notifications for a user or an organization. + // When called with user credentials and empty receiver_ids, this will list + // notifications for the current user and its organizations. + List(ctx context.Context, in *ListNotificationsRequest, opts ...grpc.CallOption) (*ListNotificationsResponse, error) + // Batch-update multiple notifications to the same status. + UpdateStatus(ctx context.Context, in *UpdateNotificationStatusRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type notificationServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewNotificationServiceClient(cc grpc.ClientConnInterface) NotificationServiceClient { + return ¬ificationServiceClient{cc} +} + +func (c *notificationServiceClient) Create(ctx context.Context, in *CreateNotificationRequest, opts ...grpc.CallOption) (*CreateNotificationResponse, error) { + out := new(CreateNotificationResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NotificationService/Create", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *notificationServiceClient) List(ctx context.Context, in *ListNotificationsRequest, opts ...grpc.CallOption) (*ListNotificationsResponse, error) { + out := new(ListNotificationsResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NotificationService/List", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *notificationServiceClient) UpdateStatus(ctx context.Context, in *UpdateNotificationStatusRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NotificationService/UpdateStatus", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// NotificationServiceServer is the server API for NotificationService service. +// All implementations must embed UnimplementedNotificationServiceServer +// for forward compatibility +type NotificationServiceServer interface { + // Create a new notification. Can only be called by internal services using cluster auth. + Create(context.Context, *CreateNotificationRequest) (*CreateNotificationResponse, error) + // List the notifications for a user or an organization. + // When called with user credentials and empty receiver_ids, this will list + // notifications for the current user and its organizations. + List(context.Context, *ListNotificationsRequest) (*ListNotificationsResponse, error) + // Batch-update multiple notifications to the same status. + UpdateStatus(context.Context, *UpdateNotificationStatusRequest) (*emptypb.Empty, error) + mustEmbedUnimplementedNotificationServiceServer() +} + +// UnimplementedNotificationServiceServer must be embedded to have forward compatible implementations. +type UnimplementedNotificationServiceServer struct { +} + +func (UnimplementedNotificationServiceServer) Create(context.Context, *CreateNotificationRequest) (*CreateNotificationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") +} +func (UnimplementedNotificationServiceServer) List(context.Context, *ListNotificationsRequest) (*ListNotificationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedNotificationServiceServer) UpdateStatus(context.Context, *UpdateNotificationStatusRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateStatus not implemented") +} +func (UnimplementedNotificationServiceServer) mustEmbedUnimplementedNotificationServiceServer() {} + +// UnsafeNotificationServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to NotificationServiceServer will +// result in compilation errors. +type UnsafeNotificationServiceServer interface { + mustEmbedUnimplementedNotificationServiceServer() +} + +func RegisterNotificationServiceServer(s grpc.ServiceRegistrar, srv NotificationServiceServer) { + s.RegisterService(&NotificationService_ServiceDesc, srv) +} + +func _NotificationService_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateNotificationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NotificationServiceServer).Create(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NotificationService/Create", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NotificationServiceServer).Create(ctx, req.(*CreateNotificationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NotificationService_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListNotificationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NotificationServiceServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NotificationService/List", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NotificationServiceServer).List(ctx, req.(*ListNotificationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NotificationService_UpdateStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateNotificationStatusRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NotificationServiceServer).UpdateStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NotificationService/UpdateStatus", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NotificationServiceServer).UpdateStatus(ctx, req.(*UpdateNotificationStatusRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// NotificationService_ServiceDesc is the grpc.ServiceDesc for NotificationService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var NotificationService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.NotificationService", + HandlerType: (*NotificationServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Create", + Handler: _NotificationService_Create_Handler, + }, + { + MethodName: "List", + Handler: _NotificationService_List_Handler, + }, + { + MethodName: "UpdateStatus", + Handler: _NotificationService_UpdateStatus_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/notification_service.proto", +} diff --git a/pkg/ttnpb/notification_service_json.pb.go b/pkg/ttnpb/notification_service_json.pb.go index 0f58a25260..1b2b7f08c1 100644 --- a/pkg/ttnpb/notification_service_json.pb.go +++ b/pkg/ttnpb/notification_service_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/notification_service.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" ) @@ -125,7 +125,7 @@ func (x *Notification) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.CreatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.CreatedAt) + golang.MarshalTimestamp(s, x.CreatedAt) } } if x.EntityIds != nil || s.HasField("entity_ids") { @@ -144,14 +144,14 @@ func (x *Notification) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.Data == nil { s.WriteNil() } else { - gogo.MarshalAny(s, x.Data) + golang.MarshalAny(s, x.Data, true) } } if x.SenderIds != nil || s.HasField("sender_ids") { s.WriteMoreIf(&wroteField) s.WriteObjectField("sender_ids") // NOTE: UserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.SenderIds) + golang.MarshalMessage(s, x.SenderIds) } if len(x.Receivers) > 0 || s.HasField("receivers") { s.WriteMoreIf(&wroteField) @@ -180,7 +180,7 @@ func (x *Notification) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.StatusUpdatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.StatusUpdatedAt) + golang.MarshalTimestamp(s, x.StatusUpdatedAt) } } s.WriteObjectEnd() @@ -209,7 +209,7 @@ func (x *Notification) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.CreatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -230,7 +230,7 @@ func (x *Notification) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.Data = nil return } - v := gogo.UnmarshalAny(s) + v := golang.UnmarshalAny(s) if s.Err() != nil { return } @@ -243,7 +243,7 @@ func (x *Notification) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: UserIdentifiers does not seem to implement UnmarshalProtoJSON. var v UserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.SenderIds = &v case "receivers": s.AddField("receivers") @@ -268,7 +268,7 @@ func (x *Notification) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.StatusUpdatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -306,14 +306,14 @@ func (x *CreateNotificationRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) if x.Data == nil { s.WriteNil() } else { - gogo.MarshalAny(s, x.Data) + golang.MarshalAny(s, x.Data, true) } } if x.SenderIds != nil || s.HasField("sender_ids") { s.WriteMoreIf(&wroteField) s.WriteObjectField("sender_ids") // NOTE: UserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.SenderIds) + golang.MarshalMessage(s, x.SenderIds) } if len(x.Receivers) > 0 || s.HasField("receivers") { s.WriteMoreIf(&wroteField) @@ -364,7 +364,7 @@ func (x *CreateNotificationRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalSt x.Data = nil return } - v := gogo.UnmarshalAny(s) + v := golang.UnmarshalAny(s) if s.Err() != nil { return } @@ -377,7 +377,7 @@ func (x *CreateNotificationRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalSt } // NOTE: UserIdentifiers does not seem to implement UnmarshalProtoJSON. var v UserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.SenderIds = &v case "receivers": s.AddField("receivers") @@ -414,7 +414,7 @@ func (x *ListNotificationsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) s.WriteMoreIf(&wroteField) s.WriteObjectField("receiver_ids") // NOTE: UserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ReceiverIds) + golang.MarshalMessage(s, x.ReceiverIds) } if len(x.Status) > 0 || s.HasField("status") { s.WriteMoreIf(&wroteField) @@ -462,7 +462,7 @@ func (x *ListNotificationsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalSta } // NOTE: UserIdentifiers does not seem to implement UnmarshalProtoJSON. var v UserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ReceiverIds = &v case "status": s.AddField("status") @@ -565,7 +565,7 @@ func (x *UpdateNotificationStatusRequest) MarshalProtoJSON(s *jsonplugin.Marshal s.WriteMoreIf(&wroteField) s.WriteObjectField("receiver_ids") // NOTE: UserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ReceiverIds) + golang.MarshalMessage(s, x.ReceiverIds) } if len(x.Ids) > 0 || s.HasField("ids") { s.WriteMoreIf(&wroteField) @@ -602,7 +602,7 @@ func (x *UpdateNotificationStatusRequest) UnmarshalProtoJSON(s *jsonplugin.Unmar } // NOTE: UserIdentifiers does not seem to implement UnmarshalProtoJSON. var v UserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ReceiverIds = &v case "ids": s.AddField("ids") diff --git a/pkg/ttnpb/oauth.pb.go b/pkg/ttnpb/oauth.pb.go index 31c234577e..1a9124bb5e 100644 --- a/pkg/ttnpb/oauth.pb.go +++ b/pkg/ttnpb/oauth.pb.go @@ -1,185 +1,228 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/oauth.proto package ttnpb import ( - fmt "fmt" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type OAuthClientAuthorizationIdentifiers struct { - UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` - ClientIds *ClientIdentifiers `protobuf:"bytes,2,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *OAuthClientAuthorizationIdentifiers) Reset() { *m = OAuthClientAuthorizationIdentifiers{} } -func (m *OAuthClientAuthorizationIdentifiers) String() string { return proto.CompactTextString(m) } -func (*OAuthClientAuthorizationIdentifiers) ProtoMessage() {} -func (*OAuthClientAuthorizationIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_1454904971eaa7d7, []int{0} -} -func (m *OAuthClientAuthorizationIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OAuthClientAuthorizationIdentifiers.Unmarshal(m, b) -} -func (m *OAuthClientAuthorizationIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OAuthClientAuthorizationIdentifiers.Marshal(b, m, deterministic) + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` + ClientIds *ClientIdentifiers `protobuf:"bytes,2,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` } -func (m *OAuthClientAuthorizationIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_OAuthClientAuthorizationIdentifiers.Merge(m, src) + +func (x *OAuthClientAuthorizationIdentifiers) Reset() { + *x = OAuthClientAuthorizationIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *OAuthClientAuthorizationIdentifiers) XXX_Size() int { - return xxx_messageInfo_OAuthClientAuthorizationIdentifiers.Size(m) + +func (x *OAuthClientAuthorizationIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *OAuthClientAuthorizationIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_OAuthClientAuthorizationIdentifiers.DiscardUnknown(m) + +func (*OAuthClientAuthorizationIdentifiers) ProtoMessage() {} + +func (x *OAuthClientAuthorizationIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_OAuthClientAuthorizationIdentifiers proto.InternalMessageInfo +// Deprecated: Use OAuthClientAuthorizationIdentifiers.ProtoReflect.Descriptor instead. +func (*OAuthClientAuthorizationIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_oauth_proto_rawDescGZIP(), []int{0} +} -func (m *OAuthClientAuthorizationIdentifiers) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *OAuthClientAuthorizationIdentifiers) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *OAuthClientAuthorizationIdentifiers) GetClientIds() *ClientIdentifiers { - if m != nil { - return m.ClientIds +func (x *OAuthClientAuthorizationIdentifiers) GetClientIds() *ClientIdentifiers { + if x != nil { + return x.ClientIds } return nil } type OAuthClientAuthorization struct { - UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` - ClientIds *ClientIdentifiers `protobuf:"bytes,2,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` - Rights []Right `protobuf:"varint,3,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` - CreatedAt *types.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *types.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *OAuthClientAuthorization) Reset() { *m = OAuthClientAuthorization{} } -func (m *OAuthClientAuthorization) String() string { return proto.CompactTextString(m) } -func (*OAuthClientAuthorization) ProtoMessage() {} -func (*OAuthClientAuthorization) Descriptor() ([]byte, []int) { - return fileDescriptor_1454904971eaa7d7, []int{1} -} -func (m *OAuthClientAuthorization) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OAuthClientAuthorization.Unmarshal(m, b) -} -func (m *OAuthClientAuthorization) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OAuthClientAuthorization.Marshal(b, m, deterministic) -} -func (m *OAuthClientAuthorization) XXX_Merge(src proto.Message) { - xxx_messageInfo_OAuthClientAuthorization.Merge(m, src) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` + ClientIds *ClientIdentifiers `protobuf:"bytes,2,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` + Rights []Right `protobuf:"varint,3,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` +} + +func (x *OAuthClientAuthorization) Reset() { + *x = OAuthClientAuthorization{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *OAuthClientAuthorization) XXX_Size() int { - return xxx_messageInfo_OAuthClientAuthorization.Size(m) + +func (x *OAuthClientAuthorization) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *OAuthClientAuthorization) XXX_DiscardUnknown() { - xxx_messageInfo_OAuthClientAuthorization.DiscardUnknown(m) + +func (*OAuthClientAuthorization) ProtoMessage() {} + +func (x *OAuthClientAuthorization) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_OAuthClientAuthorization proto.InternalMessageInfo +// Deprecated: Use OAuthClientAuthorization.ProtoReflect.Descriptor instead. +func (*OAuthClientAuthorization) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_oauth_proto_rawDescGZIP(), []int{1} +} -func (m *OAuthClientAuthorization) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *OAuthClientAuthorization) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *OAuthClientAuthorization) GetClientIds() *ClientIdentifiers { - if m != nil { - return m.ClientIds +func (x *OAuthClientAuthorization) GetClientIds() *ClientIdentifiers { + if x != nil { + return x.ClientIds } return nil } -func (m *OAuthClientAuthorization) GetRights() []Right { - if m != nil { - return m.Rights +func (x *OAuthClientAuthorization) GetRights() []Right { + if x != nil { + return x.Rights } return nil } -func (m *OAuthClientAuthorization) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *OAuthClientAuthorization) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *OAuthClientAuthorization) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *OAuthClientAuthorization) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } type OAuthClientAuthorizations struct { - Authorizations []*OAuthClientAuthorization `protobuf:"bytes,1,rep,name=authorizations,proto3" json:"authorizations,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *OAuthClientAuthorizations) Reset() { *m = OAuthClientAuthorizations{} } -func (m *OAuthClientAuthorizations) String() string { return proto.CompactTextString(m) } -func (*OAuthClientAuthorizations) ProtoMessage() {} -func (*OAuthClientAuthorizations) Descriptor() ([]byte, []int) { - return fileDescriptor_1454904971eaa7d7, []int{2} + Authorizations []*OAuthClientAuthorization `protobuf:"bytes,1,rep,name=authorizations,proto3" json:"authorizations,omitempty"` } -func (m *OAuthClientAuthorizations) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OAuthClientAuthorizations.Unmarshal(m, b) -} -func (m *OAuthClientAuthorizations) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OAuthClientAuthorizations.Marshal(b, m, deterministic) -} -func (m *OAuthClientAuthorizations) XXX_Merge(src proto.Message) { - xxx_messageInfo_OAuthClientAuthorizations.Merge(m, src) + +func (x *OAuthClientAuthorizations) Reset() { + *x = OAuthClientAuthorizations{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *OAuthClientAuthorizations) XXX_Size() int { - return xxx_messageInfo_OAuthClientAuthorizations.Size(m) + +func (x *OAuthClientAuthorizations) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *OAuthClientAuthorizations) XXX_DiscardUnknown() { - xxx_messageInfo_OAuthClientAuthorizations.DiscardUnknown(m) + +func (*OAuthClientAuthorizations) ProtoMessage() {} + +func (x *OAuthClientAuthorizations) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_OAuthClientAuthorizations proto.InternalMessageInfo +// Deprecated: Use OAuthClientAuthorizations.ProtoReflect.Descriptor instead. +func (*OAuthClientAuthorizations) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_oauth_proto_rawDescGZIP(), []int{2} +} -func (m *OAuthClientAuthorizations) GetAuthorizations() []*OAuthClientAuthorization { - if m != nil { - return m.Authorizations +func (x *OAuthClientAuthorizations) GetAuthorizations() []*OAuthClientAuthorization { + if x != nil { + return x.Authorizations } return nil } type ListOAuthClientAuthorizationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. @@ -187,361 +230,406 @@ type ListOAuthClientAuthorizationsRequest struct { // Limit the number of results per page. Limit uint32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,4,opt,name=page,proto3" json:"page,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Page uint32 `protobuf:"varint,4,opt,name=page,proto3" json:"page,omitempty"` } -func (m *ListOAuthClientAuthorizationsRequest) Reset() { *m = ListOAuthClientAuthorizationsRequest{} } -func (m *ListOAuthClientAuthorizationsRequest) String() string { return proto.CompactTextString(m) } -func (*ListOAuthClientAuthorizationsRequest) ProtoMessage() {} -func (*ListOAuthClientAuthorizationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1454904971eaa7d7, []int{3} -} -func (m *ListOAuthClientAuthorizationsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListOAuthClientAuthorizationsRequest.Unmarshal(m, b) -} -func (m *ListOAuthClientAuthorizationsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListOAuthClientAuthorizationsRequest.Marshal(b, m, deterministic) -} -func (m *ListOAuthClientAuthorizationsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListOAuthClientAuthorizationsRequest.Merge(m, src) +func (x *ListOAuthClientAuthorizationsRequest) Reset() { + *x = ListOAuthClientAuthorizationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListOAuthClientAuthorizationsRequest) XXX_Size() int { - return xxx_messageInfo_ListOAuthClientAuthorizationsRequest.Size(m) + +func (x *ListOAuthClientAuthorizationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListOAuthClientAuthorizationsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListOAuthClientAuthorizationsRequest.DiscardUnknown(m) + +func (*ListOAuthClientAuthorizationsRequest) ProtoMessage() {} + +func (x *ListOAuthClientAuthorizationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListOAuthClientAuthorizationsRequest proto.InternalMessageInfo +// Deprecated: Use ListOAuthClientAuthorizationsRequest.ProtoReflect.Descriptor instead. +func (*ListOAuthClientAuthorizationsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_oauth_proto_rawDescGZIP(), []int{3} +} -func (m *ListOAuthClientAuthorizationsRequest) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *ListOAuthClientAuthorizationsRequest) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *ListOAuthClientAuthorizationsRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListOAuthClientAuthorizationsRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *ListOAuthClientAuthorizationsRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListOAuthClientAuthorizationsRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListOAuthClientAuthorizationsRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListOAuthClientAuthorizationsRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } type OAuthAuthorizationCode struct { - UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` - UserSessionId string `protobuf:"bytes,9,opt,name=user_session_id,json=userSessionId,proto3" json:"user_session_id,omitempty"` - ClientIds *ClientIdentifiers `protobuf:"bytes,2,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` - Rights []Right `protobuf:"varint,3,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` - Code string `protobuf:"bytes,4,opt,name=code,proto3" json:"code,omitempty"` - RedirectUri string `protobuf:"bytes,5,opt,name=redirect_uri,json=redirectUri,proto3" json:"redirect_uri,omitempty"` - State string `protobuf:"bytes,6,opt,name=state,proto3" json:"state,omitempty"` - CreatedAt *types.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - ExpiresAt *types.Timestamp `protobuf:"bytes,8,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *OAuthAuthorizationCode) Reset() { *m = OAuthAuthorizationCode{} } -func (m *OAuthAuthorizationCode) String() string { return proto.CompactTextString(m) } -func (*OAuthAuthorizationCode) ProtoMessage() {} -func (*OAuthAuthorizationCode) Descriptor() ([]byte, []int) { - return fileDescriptor_1454904971eaa7d7, []int{4} -} -func (m *OAuthAuthorizationCode) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OAuthAuthorizationCode.Unmarshal(m, b) -} -func (m *OAuthAuthorizationCode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OAuthAuthorizationCode.Marshal(b, m, deterministic) -} -func (m *OAuthAuthorizationCode) XXX_Merge(src proto.Message) { - xxx_messageInfo_OAuthAuthorizationCode.Merge(m, src) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` + UserSessionId string `protobuf:"bytes,9,opt,name=user_session_id,json=userSessionId,proto3" json:"user_session_id,omitempty"` + ClientIds *ClientIdentifiers `protobuf:"bytes,2,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` + Rights []Right `protobuf:"varint,3,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` + Code string `protobuf:"bytes,4,opt,name=code,proto3" json:"code,omitempty"` + RedirectUri string `protobuf:"bytes,5,opt,name=redirect_uri,json=redirectUri,proto3" json:"redirect_uri,omitempty"` + State string `protobuf:"bytes,6,opt,name=state,proto3" json:"state,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` +} + +func (x *OAuthAuthorizationCode) Reset() { + *x = OAuthAuthorizationCode{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *OAuthAuthorizationCode) XXX_Size() int { - return xxx_messageInfo_OAuthAuthorizationCode.Size(m) + +func (x *OAuthAuthorizationCode) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *OAuthAuthorizationCode) XXX_DiscardUnknown() { - xxx_messageInfo_OAuthAuthorizationCode.DiscardUnknown(m) + +func (*OAuthAuthorizationCode) ProtoMessage() {} + +func (x *OAuthAuthorizationCode) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_OAuthAuthorizationCode proto.InternalMessageInfo +// Deprecated: Use OAuthAuthorizationCode.ProtoReflect.Descriptor instead. +func (*OAuthAuthorizationCode) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_oauth_proto_rawDescGZIP(), []int{4} +} -func (m *OAuthAuthorizationCode) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *OAuthAuthorizationCode) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *OAuthAuthorizationCode) GetUserSessionId() string { - if m != nil { - return m.UserSessionId +func (x *OAuthAuthorizationCode) GetUserSessionId() string { + if x != nil { + return x.UserSessionId } return "" } -func (m *OAuthAuthorizationCode) GetClientIds() *ClientIdentifiers { - if m != nil { - return m.ClientIds +func (x *OAuthAuthorizationCode) GetClientIds() *ClientIdentifiers { + if x != nil { + return x.ClientIds } return nil } -func (m *OAuthAuthorizationCode) GetRights() []Right { - if m != nil { - return m.Rights +func (x *OAuthAuthorizationCode) GetRights() []Right { + if x != nil { + return x.Rights } return nil } -func (m *OAuthAuthorizationCode) GetCode() string { - if m != nil { - return m.Code +func (x *OAuthAuthorizationCode) GetCode() string { + if x != nil { + return x.Code } return "" } -func (m *OAuthAuthorizationCode) GetRedirectUri() string { - if m != nil { - return m.RedirectUri +func (x *OAuthAuthorizationCode) GetRedirectUri() string { + if x != nil { + return x.RedirectUri } return "" } -func (m *OAuthAuthorizationCode) GetState() string { - if m != nil { - return m.State +func (x *OAuthAuthorizationCode) GetState() string { + if x != nil { + return x.State } return "" } -func (m *OAuthAuthorizationCode) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *OAuthAuthorizationCode) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *OAuthAuthorizationCode) GetExpiresAt() *types.Timestamp { - if m != nil { - return m.ExpiresAt +func (x *OAuthAuthorizationCode) GetExpiresAt() *timestamppb.Timestamp { + if x != nil { + return x.ExpiresAt } return nil } type OAuthAccessTokenIdentifiers struct { - UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` - ClientIds *ClientIdentifiers `protobuf:"bytes,2,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` - Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *OAuthAccessTokenIdentifiers) Reset() { *m = OAuthAccessTokenIdentifiers{} } -func (m *OAuthAccessTokenIdentifiers) String() string { return proto.CompactTextString(m) } -func (*OAuthAccessTokenIdentifiers) ProtoMessage() {} -func (*OAuthAccessTokenIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_1454904971eaa7d7, []int{5} -} -func (m *OAuthAccessTokenIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OAuthAccessTokenIdentifiers.Unmarshal(m, b) -} -func (m *OAuthAccessTokenIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OAuthAccessTokenIdentifiers.Marshal(b, m, deterministic) + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` + ClientIds *ClientIdentifiers `protobuf:"bytes,2,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` } -func (m *OAuthAccessTokenIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_OAuthAccessTokenIdentifiers.Merge(m, src) + +func (x *OAuthAccessTokenIdentifiers) Reset() { + *x = OAuthAccessTokenIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *OAuthAccessTokenIdentifiers) XXX_Size() int { - return xxx_messageInfo_OAuthAccessTokenIdentifiers.Size(m) + +func (x *OAuthAccessTokenIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *OAuthAccessTokenIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_OAuthAccessTokenIdentifiers.DiscardUnknown(m) + +func (*OAuthAccessTokenIdentifiers) ProtoMessage() {} + +func (x *OAuthAccessTokenIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_OAuthAccessTokenIdentifiers proto.InternalMessageInfo +// Deprecated: Use OAuthAccessTokenIdentifiers.ProtoReflect.Descriptor instead. +func (*OAuthAccessTokenIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_oauth_proto_rawDescGZIP(), []int{5} +} -func (m *OAuthAccessTokenIdentifiers) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *OAuthAccessTokenIdentifiers) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *OAuthAccessTokenIdentifiers) GetClientIds() *ClientIdentifiers { - if m != nil { - return m.ClientIds +func (x *OAuthAccessTokenIdentifiers) GetClientIds() *ClientIdentifiers { + if x != nil { + return x.ClientIds } return nil } -func (m *OAuthAccessTokenIdentifiers) GetId() string { - if m != nil { - return m.Id +func (x *OAuthAccessTokenIdentifiers) GetId() string { + if x != nil { + return x.Id } return "" } type OAuthAccessToken struct { - UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` - UserSessionId string `protobuf:"bytes,9,opt,name=user_session_id,json=userSessionId,proto3" json:"user_session_id,omitempty"` - ClientIds *ClientIdentifiers `protobuf:"bytes,2,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` - Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` - AccessToken string `protobuf:"bytes,4,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` - RefreshToken string `protobuf:"bytes,5,opt,name=refresh_token,json=refreshToken,proto3" json:"refresh_token,omitempty"` - Rights []Right `protobuf:"varint,6,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` - CreatedAt *types.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - ExpiresAt *types.Timestamp `protobuf:"bytes,8,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *OAuthAccessToken) Reset() { *m = OAuthAccessToken{} } -func (m *OAuthAccessToken) String() string { return proto.CompactTextString(m) } -func (*OAuthAccessToken) ProtoMessage() {} -func (*OAuthAccessToken) Descriptor() ([]byte, []int) { - return fileDescriptor_1454904971eaa7d7, []int{6} -} -func (m *OAuthAccessToken) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OAuthAccessToken.Unmarshal(m, b) -} -func (m *OAuthAccessToken) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OAuthAccessToken.Marshal(b, m, deterministic) -} -func (m *OAuthAccessToken) XXX_Merge(src proto.Message) { - xxx_messageInfo_OAuthAccessToken.Merge(m, src) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` + UserSessionId string `protobuf:"bytes,9,opt,name=user_session_id,json=userSessionId,proto3" json:"user_session_id,omitempty"` + ClientIds *ClientIdentifiers `protobuf:"bytes,2,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` + AccessToken string `protobuf:"bytes,4,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` + RefreshToken string `protobuf:"bytes,5,opt,name=refresh_token,json=refreshToken,proto3" json:"refresh_token,omitempty"` + Rights []Right `protobuf:"varint,6,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` +} + +func (x *OAuthAccessToken) Reset() { + *x = OAuthAccessToken{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *OAuthAccessToken) XXX_Size() int { - return xxx_messageInfo_OAuthAccessToken.Size(m) + +func (x *OAuthAccessToken) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *OAuthAccessToken) XXX_DiscardUnknown() { - xxx_messageInfo_OAuthAccessToken.DiscardUnknown(m) + +func (*OAuthAccessToken) ProtoMessage() {} + +func (x *OAuthAccessToken) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_OAuthAccessToken proto.InternalMessageInfo +// Deprecated: Use OAuthAccessToken.ProtoReflect.Descriptor instead. +func (*OAuthAccessToken) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_oauth_proto_rawDescGZIP(), []int{6} +} -func (m *OAuthAccessToken) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *OAuthAccessToken) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *OAuthAccessToken) GetUserSessionId() string { - if m != nil { - return m.UserSessionId +func (x *OAuthAccessToken) GetUserSessionId() string { + if x != nil { + return x.UserSessionId } return "" } -func (m *OAuthAccessToken) GetClientIds() *ClientIdentifiers { - if m != nil { - return m.ClientIds +func (x *OAuthAccessToken) GetClientIds() *ClientIdentifiers { + if x != nil { + return x.ClientIds } return nil } -func (m *OAuthAccessToken) GetId() string { - if m != nil { - return m.Id +func (x *OAuthAccessToken) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *OAuthAccessToken) GetAccessToken() string { - if m != nil { - return m.AccessToken +func (x *OAuthAccessToken) GetAccessToken() string { + if x != nil { + return x.AccessToken } return "" } -func (m *OAuthAccessToken) GetRefreshToken() string { - if m != nil { - return m.RefreshToken +func (x *OAuthAccessToken) GetRefreshToken() string { + if x != nil { + return x.RefreshToken } return "" } -func (m *OAuthAccessToken) GetRights() []Right { - if m != nil { - return m.Rights +func (x *OAuthAccessToken) GetRights() []Right { + if x != nil { + return x.Rights } return nil } -func (m *OAuthAccessToken) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *OAuthAccessToken) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *OAuthAccessToken) GetExpiresAt() *types.Timestamp { - if m != nil { - return m.ExpiresAt +func (x *OAuthAccessToken) GetExpiresAt() *timestamppb.Timestamp { + if x != nil { + return x.ExpiresAt } return nil } type OAuthAccessTokens struct { - Tokens []*OAuthAccessToken `protobuf:"bytes,1,rep,name=tokens,proto3" json:"tokens,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *OAuthAccessTokens) Reset() { *m = OAuthAccessTokens{} } -func (m *OAuthAccessTokens) String() string { return proto.CompactTextString(m) } -func (*OAuthAccessTokens) ProtoMessage() {} -func (*OAuthAccessTokens) Descriptor() ([]byte, []int) { - return fileDescriptor_1454904971eaa7d7, []int{7} -} -func (m *OAuthAccessTokens) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OAuthAccessTokens.Unmarshal(m, b) -} -func (m *OAuthAccessTokens) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OAuthAccessTokens.Marshal(b, m, deterministic) + Tokens []*OAuthAccessToken `protobuf:"bytes,1,rep,name=tokens,proto3" json:"tokens,omitempty"` } -func (m *OAuthAccessTokens) XXX_Merge(src proto.Message) { - xxx_messageInfo_OAuthAccessTokens.Merge(m, src) + +func (x *OAuthAccessTokens) Reset() { + *x = OAuthAccessTokens{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *OAuthAccessTokens) XXX_Size() int { - return xxx_messageInfo_OAuthAccessTokens.Size(m) + +func (x *OAuthAccessTokens) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *OAuthAccessTokens) XXX_DiscardUnknown() { - xxx_messageInfo_OAuthAccessTokens.DiscardUnknown(m) + +func (*OAuthAccessTokens) ProtoMessage() {} + +func (x *OAuthAccessTokens) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_OAuthAccessTokens proto.InternalMessageInfo +// Deprecated: Use OAuthAccessTokens.ProtoReflect.Descriptor instead. +func (*OAuthAccessTokens) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_oauth_proto_rawDescGZIP(), []int{7} +} -func (m *OAuthAccessTokens) GetTokens() []*OAuthAccessToken { - if m != nil { - return m.Tokens +func (x *OAuthAccessTokens) GetTokens() []*OAuthAccessToken { + if x != nil { + return x.Tokens } return nil } type ListOAuthAccessTokensRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` ClientIds *ClientIdentifiers `protobuf:"bytes,2,opt,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` // Order the results by this field path (must be present in the field mask). @@ -550,145 +638,442 @@ type ListOAuthAccessTokensRequest struct { // Limit the number of results per page. Limit uint32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,5,opt,name=page,proto3" json:"page,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Page uint32 `protobuf:"varint,5,opt,name=page,proto3" json:"page,omitempty"` } -func (m *ListOAuthAccessTokensRequest) Reset() { *m = ListOAuthAccessTokensRequest{} } -func (m *ListOAuthAccessTokensRequest) String() string { return proto.CompactTextString(m) } -func (*ListOAuthAccessTokensRequest) ProtoMessage() {} -func (*ListOAuthAccessTokensRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1454904971eaa7d7, []int{8} -} -func (m *ListOAuthAccessTokensRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListOAuthAccessTokensRequest.Unmarshal(m, b) -} -func (m *ListOAuthAccessTokensRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListOAuthAccessTokensRequest.Marshal(b, m, deterministic) -} -func (m *ListOAuthAccessTokensRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListOAuthAccessTokensRequest.Merge(m, src) +func (x *ListOAuthAccessTokensRequest) Reset() { + *x = ListOAuthAccessTokensRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListOAuthAccessTokensRequest) XXX_Size() int { - return xxx_messageInfo_ListOAuthAccessTokensRequest.Size(m) + +func (x *ListOAuthAccessTokensRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListOAuthAccessTokensRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListOAuthAccessTokensRequest.DiscardUnknown(m) + +func (*ListOAuthAccessTokensRequest) ProtoMessage() {} + +func (x *ListOAuthAccessTokensRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_oauth_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListOAuthAccessTokensRequest proto.InternalMessageInfo +// Deprecated: Use ListOAuthAccessTokensRequest.ProtoReflect.Descriptor instead. +func (*ListOAuthAccessTokensRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_oauth_proto_rawDescGZIP(), []int{8} +} -func (m *ListOAuthAccessTokensRequest) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *ListOAuthAccessTokensRequest) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *ListOAuthAccessTokensRequest) GetClientIds() *ClientIdentifiers { - if m != nil { - return m.ClientIds +func (x *ListOAuthAccessTokensRequest) GetClientIds() *ClientIdentifiers { + if x != nil { + return x.ClientIds } return nil } -func (m *ListOAuthAccessTokensRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListOAuthAccessTokensRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *ListOAuthAccessTokensRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListOAuthAccessTokensRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListOAuthAccessTokensRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListOAuthAccessTokensRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func init() { - proto.RegisterType((*OAuthClientAuthorizationIdentifiers)(nil), "ttn.lorawan.v3.OAuthClientAuthorizationIdentifiers") - golang_proto.RegisterType((*OAuthClientAuthorizationIdentifiers)(nil), "ttn.lorawan.v3.OAuthClientAuthorizationIdentifiers") - proto.RegisterType((*OAuthClientAuthorization)(nil), "ttn.lorawan.v3.OAuthClientAuthorization") - golang_proto.RegisterType((*OAuthClientAuthorization)(nil), "ttn.lorawan.v3.OAuthClientAuthorization") - proto.RegisterType((*OAuthClientAuthorizations)(nil), "ttn.lorawan.v3.OAuthClientAuthorizations") - golang_proto.RegisterType((*OAuthClientAuthorizations)(nil), "ttn.lorawan.v3.OAuthClientAuthorizations") - proto.RegisterType((*ListOAuthClientAuthorizationsRequest)(nil), "ttn.lorawan.v3.ListOAuthClientAuthorizationsRequest") - golang_proto.RegisterType((*ListOAuthClientAuthorizationsRequest)(nil), "ttn.lorawan.v3.ListOAuthClientAuthorizationsRequest") - proto.RegisterType((*OAuthAuthorizationCode)(nil), "ttn.lorawan.v3.OAuthAuthorizationCode") - golang_proto.RegisterType((*OAuthAuthorizationCode)(nil), "ttn.lorawan.v3.OAuthAuthorizationCode") - proto.RegisterType((*OAuthAccessTokenIdentifiers)(nil), "ttn.lorawan.v3.OAuthAccessTokenIdentifiers") - golang_proto.RegisterType((*OAuthAccessTokenIdentifiers)(nil), "ttn.lorawan.v3.OAuthAccessTokenIdentifiers") - proto.RegisterType((*OAuthAccessToken)(nil), "ttn.lorawan.v3.OAuthAccessToken") - golang_proto.RegisterType((*OAuthAccessToken)(nil), "ttn.lorawan.v3.OAuthAccessToken") - proto.RegisterType((*OAuthAccessTokens)(nil), "ttn.lorawan.v3.OAuthAccessTokens") - golang_proto.RegisterType((*OAuthAccessTokens)(nil), "ttn.lorawan.v3.OAuthAccessTokens") - proto.RegisterType((*ListOAuthAccessTokensRequest)(nil), "ttn.lorawan.v3.ListOAuthAccessTokensRequest") - golang_proto.RegisterType((*ListOAuthAccessTokensRequest)(nil), "ttn.lorawan.v3.ListOAuthAccessTokensRequest") -} - -func init() { proto.RegisterFile("lorawan-stack/api/oauth.proto", fileDescriptor_1454904971eaa7d7) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/oauth.proto", fileDescriptor_1454904971eaa7d7) -} - -var fileDescriptor_1454904971eaa7d7 = []byte{ - // 758 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x56, 0xcd, 0x6e, 0xd3, 0x4a, - 0x14, 0xbe, 0x8e, 0xf3, 0xd3, 0x4c, 0x9a, 0xdc, 0x5e, 0xeb, 0x82, 0x4c, 0x4b, 0xdb, 0xd4, 0x65, - 0x11, 0x81, 0x62, 0x4b, 0xad, 0x40, 0xb0, 0x23, 0x29, 0x9b, 0x22, 0x10, 0x68, 0x68, 0x37, 0x6c, - 0xa2, 0x89, 0x3d, 0x75, 0x46, 0x49, 0x3c, 0x66, 0xe6, 0x38, 0x6d, 0x79, 0x04, 0x56, 0x3c, 0x00, - 0xef, 0xc1, 0x12, 0x5e, 0x01, 0x36, 0xb0, 0x67, 0xc3, 0x33, 0x74, 0x85, 0x32, 0x76, 0x9a, 0xc4, - 0x6d, 0xa8, 0x8a, 0x22, 0xa8, 0xd8, 0xcd, 0xcc, 0xf9, 0xce, 0x37, 0xf3, 0x9d, 0xf3, 0xf9, 0xc8, - 0x68, 0xb5, 0xc7, 0x05, 0x39, 0x24, 0x41, 0x5d, 0x02, 0x71, 0xbb, 0x0e, 0x09, 0x99, 0xc3, 0x49, - 0x04, 0x1d, 0x3b, 0x14, 0x1c, 0xb8, 0x51, 0x01, 0x08, 0xec, 0x04, 0x62, 0x0f, 0xb6, 0x97, 0x1b, - 0x3e, 0x83, 0x4e, 0xd4, 0xb6, 0x5d, 0xde, 0x77, 0x68, 0x30, 0xe0, 0xc7, 0xa1, 0xe0, 0x47, 0xc7, - 0x8e, 0x02, 0xbb, 0x75, 0x9f, 0x06, 0xf5, 0x01, 0xe9, 0x31, 0x8f, 0x00, 0x75, 0xce, 0x2c, 0x62, - 0xca, 0xe5, 0xfa, 0x04, 0x85, 0xcf, 0x7d, 0x1e, 0x27, 0xb7, 0xa3, 0x03, 0xb5, 0x53, 0x1b, 0xb5, - 0x4a, 0xe0, 0xeb, 0x3e, 0xe7, 0x7e, 0x8f, 0x8e, 0x51, 0xc0, 0xfa, 0x54, 0x02, 0xe9, 0x87, 0x09, - 0x60, 0xf3, 0xac, 0x02, 0xe6, 0xd1, 0x00, 0xd8, 0x01, 0xa3, 0x42, 0x26, 0xa0, 0xb5, 0xb3, 0x20, - 0xc1, 0xfc, 0x0e, 0x24, 0x71, 0xeb, 0xbd, 0x86, 0x36, 0x9f, 0x35, 0x22, 0xe8, 0xec, 0xf4, 0x18, - 0x0d, 0x60, 0xb8, 0xe2, 0x82, 0xbd, 0x26, 0xc0, 0x78, 0xb0, 0x3b, 0x66, 0x33, 0x1e, 0xa1, 0x85, - 0x48, 0x52, 0xd1, 0x62, 0x9e, 0x34, 0xb5, 0xaa, 0x56, 0x2b, 0x6d, 0xad, 0xdb, 0xd3, 0x25, 0xb2, - 0xf7, 0x25, 0x15, 0x13, 0x29, 0xcd, 0x85, 0x93, 0x66, 0xee, 0x8d, 0x96, 0x59, 0xd2, 0x70, 0x21, - 0x52, 0x21, 0x69, 0x3c, 0x46, 0xc8, 0x55, 0xf7, 0x28, 0x9e, 0x8c, 0xe2, 0xd9, 0x48, 0xf3, 0xc4, - 0x2f, 0x39, 0x9f, 0xa9, 0xe8, 0x26, 0x41, 0x69, 0x7d, 0xca, 0x20, 0x73, 0xd6, 0xcb, 0xaf, 0xde, - 0x73, 0x8d, 0x3a, 0xca, 0xc7, 0x85, 0x37, 0xf5, 0xaa, 0x5e, 0xab, 0x6c, 0x5d, 0x4b, 0xf3, 0xe0, - 0x61, 0x14, 0x27, 0x20, 0xe3, 0x01, 0x42, 0xae, 0xa0, 0x04, 0xa8, 0xd7, 0x22, 0x60, 0x66, 0xd5, - 0xd5, 0xcb, 0x76, 0x6c, 0x09, 0x7b, 0x64, 0x09, 0x7b, 0x6f, 0x64, 0x09, 0x5c, 0x4c, 0xd0, 0x0d, - 0x18, 0xa6, 0x46, 0xa1, 0x37, 0x4a, 0xcd, 0x5d, 0x9c, 0x9a, 0xa0, 0x1b, 0x60, 0xf5, 0xd1, 0x8d, - 0x59, 0x25, 0x95, 0xc6, 0x73, 0x54, 0x21, 0x53, 0x27, 0xa6, 0x56, 0xd5, 0x6b, 0xa5, 0xad, 0x5a, - 0x5a, 0xc9, 0x2c, 0x0a, 0x9c, 0xca, 0xb7, 0xbe, 0x6a, 0xe8, 0xd6, 0x13, 0x26, 0x61, 0xe6, 0x9d, - 0x98, 0xbe, 0x8a, 0xa8, 0x84, 0x39, 0xb5, 0xf3, 0x1e, 0xca, 0x71, 0xe1, 0x51, 0xa1, 0x3a, 0x59, - 0x6c, 0x56, 0x4f, 0x9a, 0xab, 0x62, 0x05, 0xff, 0x83, 0x27, 0x2a, 0x8d, 0x4b, 0xf5, 0x89, 0x4d, - 0x0c, 0x37, 0xd6, 0x50, 0xae, 0xc7, 0xfa, 0x0c, 0x4c, 0xbd, 0xaa, 0xd5, 0xca, 0x8a, 0xf9, 0xb6, - 0x6e, 0x7e, 0x2f, 0xe0, 0xf8, 0xd8, 0x30, 0x50, 0x36, 0x24, 0x3e, 0x55, 0x5d, 0x2a, 0x63, 0xb5, - 0xb6, 0xbe, 0xe8, 0xe8, 0xba, 0x92, 0x35, 0x25, 0x68, 0x87, 0x7b, 0x74, 0x4e, 0x62, 0x1c, 0xf4, - 0xaf, 0x62, 0x91, 0x54, 0x4a, 0xc6, 0x83, 0x16, 0xf3, 0xcc, 0xa2, 0x92, 0x55, 0x38, 0x69, 0x66, - 0x45, 0xc6, 0x7c, 0x88, 0xcb, 0xc3, 0xf8, 0x8b, 0x38, 0xbc, 0xeb, 0xfd, 0x49, 0x33, 0x1b, 0x28, - 0xeb, 0x72, 0x2f, 0x2e, 0x50, 0x11, 0xab, 0xb5, 0x71, 0x07, 0x2d, 0x0a, 0xea, 0x31, 0x41, 0x5d, - 0x68, 0x45, 0x82, 0x29, 0x9f, 0x16, 0xd5, 0x6d, 0x42, 0x7f, 0xab, 0x69, 0xb8, 0x34, 0x8a, 0xee, - 0x0b, 0x66, 0xfc, 0x8f, 0x72, 0x12, 0x08, 0x50, 0x33, 0xaf, 0x18, 0xe2, 0x4d, 0xea, 0x1b, 0x29, - 0x5c, 0xf2, 0x1b, 0xa1, 0x47, 0x21, 0x13, 0x54, 0x0e, 0x53, 0x17, 0x2e, 0x4e, 0x4d, 0xd0, 0x0d, - 0xb0, 0x3e, 0x68, 0x68, 0x25, 0xee, 0xac, 0xeb, 0x52, 0x29, 0xf7, 0x78, 0x97, 0x5e, 0xed, 0x49, - 0x69, 0x54, 0x50, 0x86, 0x79, 0xca, 0xbc, 0x45, 0x9c, 0x61, 0x9e, 0xf5, 0x59, 0x47, 0x4b, 0x69, - 0x05, 0x7f, 0x83, 0x2b, 0x53, 0x3a, 0x8d, 0x0d, 0xb4, 0x48, 0x94, 0xc2, 0x16, 0x0c, 0x25, 0x26, - 0xf6, 0x2b, 0x91, 0x09, 0xd5, 0x9b, 0xa8, 0x2c, 0xe8, 0x81, 0xa0, 0xb2, 0x93, 0x60, 0x94, 0x0d, - 0xf1, 0x62, 0x72, 0x18, 0x83, 0xc6, 0x6e, 0xcf, 0x5f, 0x7e, 0x74, 0xff, 0x2e, 0x5b, 0x3e, 0x45, - 0xff, 0xa5, 0x7b, 0x2a, 0x8d, 0xfb, 0x28, 0xaf, 0x64, 0x8d, 0x46, 0x75, 0xf5, 0xdc, 0x51, 0x3d, - 0x91, 0x82, 0x13, 0xbc, 0xf5, 0x2e, 0x83, 0x6e, 0x9e, 0x8e, 0xe6, 0x49, 0xce, 0xf9, 0x8e, 0xe4, - 0x79, 0xb6, 0xff, 0x74, 0xbc, 0xeb, 0xbf, 0x38, 0xde, 0xb3, 0x3f, 0x1f, 0xef, 0xb9, 0xf1, 0x78, - 0x6f, 0xde, 0xfd, 0xf8, 0x6d, 0x4d, 0x7b, 0xe9, 0xf8, 0xdc, 0x86, 0x0e, 0x85, 0x0e, 0x0b, 0x7c, - 0x69, 0x07, 0x14, 0x0e, 0xb9, 0xe8, 0x3a, 0xd3, 0x7f, 0x5c, 0x83, 0x6d, 0x27, 0xec, 0xfa, 0x0e, - 0x40, 0x10, 0xb6, 0xdb, 0x79, 0xd5, 0xc3, 0xed, 0x1f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xab, 0x13, - 0xf3, 0xb5, 0x7d, 0x0a, 0x00, 0x00, +var File_lorawan_stack_api_oauth_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_oauth_proto_rawDesc = []byte{ + 0x0a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, + 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, + 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, + 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, + 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, + 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb7, 0x01, 0x0a, 0x23, 0x4f, 0x41, 0x75, 0x74, + 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, + 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x18, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, + 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, + 0x12, 0x2d, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x6d, 0x0a, 0x19, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x41, 0x75, 0x74, + 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xd8, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x41, 0x75, + 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x20, 0xfa, 0x42, 0x1d, 0x72, 0x1b, 0x52, 0x00, 0x52, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, + 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x22, + 0xd7, 0x03, 0x0a, 0x16, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, + 0x12, 0x2f, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x18, 0x40, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x2d, 0x0a, + 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, + 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x12, 0x2b, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x69, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x90, 0x01, 0x01, + 0x52, 0x0b, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x69, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, + 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0xbf, 0x01, 0x0a, 0x1b, 0x4f, 0x41, + 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, + 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xd2, 0x03, 0x0a, 0x10, + 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x2f, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2d, 0x0a, 0x06, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, + 0x68, 0x74, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, + 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, + 0x22, 0x4d, 0x0a, 0x11, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, + 0x9c, 0x02, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x20, 0xfa, 0x42, 0x1d, 0x72, 0x1b, 0x52, 0x00, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, + 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x42, 0x35, + 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, + 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_oauth_proto_rawDescOnce sync.Once + file_lorawan_stack_api_oauth_proto_rawDescData = file_lorawan_stack_api_oauth_proto_rawDesc +) + +func file_lorawan_stack_api_oauth_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_oauth_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_oauth_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_oauth_proto_rawDescData) + }) + return file_lorawan_stack_api_oauth_proto_rawDescData +} + +var file_lorawan_stack_api_oauth_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_lorawan_stack_api_oauth_proto_goTypes = []interface{}{ + (*OAuthClientAuthorizationIdentifiers)(nil), // 0: ttn.lorawan.v3.OAuthClientAuthorizationIdentifiers + (*OAuthClientAuthorization)(nil), // 1: ttn.lorawan.v3.OAuthClientAuthorization + (*OAuthClientAuthorizations)(nil), // 2: ttn.lorawan.v3.OAuthClientAuthorizations + (*ListOAuthClientAuthorizationsRequest)(nil), // 3: ttn.lorawan.v3.ListOAuthClientAuthorizationsRequest + (*OAuthAuthorizationCode)(nil), // 4: ttn.lorawan.v3.OAuthAuthorizationCode + (*OAuthAccessTokenIdentifiers)(nil), // 5: ttn.lorawan.v3.OAuthAccessTokenIdentifiers + (*OAuthAccessToken)(nil), // 6: ttn.lorawan.v3.OAuthAccessToken + (*OAuthAccessTokens)(nil), // 7: ttn.lorawan.v3.OAuthAccessTokens + (*ListOAuthAccessTokensRequest)(nil), // 8: ttn.lorawan.v3.ListOAuthAccessTokensRequest + (*UserIdentifiers)(nil), // 9: ttn.lorawan.v3.UserIdentifiers + (*ClientIdentifiers)(nil), // 10: ttn.lorawan.v3.ClientIdentifiers + (Right)(0), // 11: ttn.lorawan.v3.Right + (*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp +} +var file_lorawan_stack_api_oauth_proto_depIdxs = []int32{ + 9, // 0: ttn.lorawan.v3.OAuthClientAuthorizationIdentifiers.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 10, // 1: ttn.lorawan.v3.OAuthClientAuthorizationIdentifiers.client_ids:type_name -> ttn.lorawan.v3.ClientIdentifiers + 9, // 2: ttn.lorawan.v3.OAuthClientAuthorization.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 10, // 3: ttn.lorawan.v3.OAuthClientAuthorization.client_ids:type_name -> ttn.lorawan.v3.ClientIdentifiers + 11, // 4: ttn.lorawan.v3.OAuthClientAuthorization.rights:type_name -> ttn.lorawan.v3.Right + 12, // 5: ttn.lorawan.v3.OAuthClientAuthorization.created_at:type_name -> google.protobuf.Timestamp + 12, // 6: ttn.lorawan.v3.OAuthClientAuthorization.updated_at:type_name -> google.protobuf.Timestamp + 1, // 7: ttn.lorawan.v3.OAuthClientAuthorizations.authorizations:type_name -> ttn.lorawan.v3.OAuthClientAuthorization + 9, // 8: ttn.lorawan.v3.ListOAuthClientAuthorizationsRequest.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 9, // 9: ttn.lorawan.v3.OAuthAuthorizationCode.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 10, // 10: ttn.lorawan.v3.OAuthAuthorizationCode.client_ids:type_name -> ttn.lorawan.v3.ClientIdentifiers + 11, // 11: ttn.lorawan.v3.OAuthAuthorizationCode.rights:type_name -> ttn.lorawan.v3.Right + 12, // 12: ttn.lorawan.v3.OAuthAuthorizationCode.created_at:type_name -> google.protobuf.Timestamp + 12, // 13: ttn.lorawan.v3.OAuthAuthorizationCode.expires_at:type_name -> google.protobuf.Timestamp + 9, // 14: ttn.lorawan.v3.OAuthAccessTokenIdentifiers.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 10, // 15: ttn.lorawan.v3.OAuthAccessTokenIdentifiers.client_ids:type_name -> ttn.lorawan.v3.ClientIdentifiers + 9, // 16: ttn.lorawan.v3.OAuthAccessToken.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 10, // 17: ttn.lorawan.v3.OAuthAccessToken.client_ids:type_name -> ttn.lorawan.v3.ClientIdentifiers + 11, // 18: ttn.lorawan.v3.OAuthAccessToken.rights:type_name -> ttn.lorawan.v3.Right + 12, // 19: ttn.lorawan.v3.OAuthAccessToken.created_at:type_name -> google.protobuf.Timestamp + 12, // 20: ttn.lorawan.v3.OAuthAccessToken.expires_at:type_name -> google.protobuf.Timestamp + 6, // 21: ttn.lorawan.v3.OAuthAccessTokens.tokens:type_name -> ttn.lorawan.v3.OAuthAccessToken + 9, // 22: ttn.lorawan.v3.ListOAuthAccessTokensRequest.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 10, // 23: ttn.lorawan.v3.ListOAuthAccessTokensRequest.client_ids:type_name -> ttn.lorawan.v3.ClientIdentifiers + 24, // [24:24] is the sub-list for method output_type + 24, // [24:24] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_oauth_proto_init() } +func file_lorawan_stack_api_oauth_proto_init() { + if File_lorawan_stack_api_oauth_proto != nil { + return + } + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_rights_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_oauth_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OAuthClientAuthorizationIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_oauth_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OAuthClientAuthorization); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_oauth_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OAuthClientAuthorizations); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_oauth_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListOAuthClientAuthorizationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_oauth_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OAuthAuthorizationCode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_oauth_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OAuthAccessTokenIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_oauth_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OAuthAccessToken); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_oauth_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OAuthAccessTokens); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_oauth_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListOAuthAccessTokensRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_oauth_proto_rawDesc, + NumEnums: 0, + NumMessages: 9, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_oauth_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_oauth_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_oauth_proto_msgTypes, + }.Build() + File_lorawan_stack_api_oauth_proto = out.File + file_lorawan_stack_api_oauth_proto_rawDesc = nil + file_lorawan_stack_api_oauth_proto_goTypes = nil + file_lorawan_stack_api_oauth_proto_depIdxs = nil } diff --git a/pkg/ttnpb/oauth.pb.validate.go b/pkg/ttnpb/oauth.pb.validate.go index 326ae04017..5263ce17da 100644 --- a/pkg/ttnpb/oauth.pb.validate.go +++ b/pkg/ttnpb/oauth.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _oauth_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on // OAuthClientAuthorizationIdentifiers with the rules defined in the proto // definition for this message. If any rules are violated, an error is returned. diff --git a/pkg/ttnpb/oauth_json.pb.go b/pkg/ttnpb/oauth_json.pb.go index bb2dd20e77..964837ef23 100644 --- a/pkg/ttnpb/oauth_json.pb.go +++ b/pkg/ttnpb/oauth_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/oauth.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" ) @@ -23,13 +23,13 @@ func (x *OAuthClientAuthorization) MarshalProtoJSON(s *jsonplugin.MarshalState) s.WriteMoreIf(&wroteField) s.WriteObjectField("user_ids") // NOTE: UserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.UserIds) + golang.MarshalMessage(s, x.UserIds) } if x.ClientIds != nil || s.HasField("client_ids") { s.WriteMoreIf(&wroteField) s.WriteObjectField("client_ids") // NOTE: ClientIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ClientIds) + golang.MarshalMessage(s, x.ClientIds) } if len(x.Rights) > 0 || s.HasField("rights") { s.WriteMoreIf(&wroteField) @@ -48,7 +48,7 @@ func (x *OAuthClientAuthorization) MarshalProtoJSON(s *jsonplugin.MarshalState) if x.CreatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.CreatedAt) + golang.MarshalTimestamp(s, x.CreatedAt) } } if x.UpdatedAt != nil || s.HasField("updated_at") { @@ -57,7 +57,7 @@ func (x *OAuthClientAuthorization) MarshalProtoJSON(s *jsonplugin.MarshalState) if x.UpdatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.UpdatedAt) + golang.MarshalTimestamp(s, x.UpdatedAt) } } s.WriteObjectEnd() @@ -85,7 +85,7 @@ func (x *OAuthClientAuthorization) UnmarshalProtoJSON(s *jsonplugin.UnmarshalSta } // NOTE: UserIdentifiers does not seem to implement UnmarshalProtoJSON. var v UserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.UserIds = &v case "client_ids", "clientIds": s.AddField("client_ids") @@ -95,7 +95,7 @@ func (x *OAuthClientAuthorization) UnmarshalProtoJSON(s *jsonplugin.UnmarshalSta } // NOTE: ClientIdentifiers does not seem to implement UnmarshalProtoJSON. var v ClientIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ClientIds = &v case "rights": s.AddField("rights") @@ -114,7 +114,7 @@ func (x *OAuthClientAuthorization) UnmarshalProtoJSON(s *jsonplugin.UnmarshalSta x.CreatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -125,7 +125,7 @@ func (x *OAuthClientAuthorization) UnmarshalProtoJSON(s *jsonplugin.UnmarshalSta x.UpdatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -214,7 +214,7 @@ func (x *OAuthAuthorizationCode) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("user_ids") // NOTE: UserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.UserIds) + golang.MarshalMessage(s, x.UserIds) } if x.UserSessionId != "" || s.HasField("user_session_id") { s.WriteMoreIf(&wroteField) @@ -225,7 +225,7 @@ func (x *OAuthAuthorizationCode) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("client_ids") // NOTE: ClientIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ClientIds) + golang.MarshalMessage(s, x.ClientIds) } if len(x.Rights) > 0 || s.HasField("rights") { s.WriteMoreIf(&wroteField) @@ -259,7 +259,7 @@ func (x *OAuthAuthorizationCode) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.CreatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.CreatedAt) + golang.MarshalTimestamp(s, x.CreatedAt) } } if x.ExpiresAt != nil || s.HasField("expires_at") { @@ -268,7 +268,7 @@ func (x *OAuthAuthorizationCode) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ExpiresAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ExpiresAt) + golang.MarshalTimestamp(s, x.ExpiresAt) } } s.WriteObjectEnd() @@ -296,7 +296,7 @@ func (x *OAuthAuthorizationCode) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState } // NOTE: UserIdentifiers does not seem to implement UnmarshalProtoJSON. var v UserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.UserIds = &v case "user_session_id", "userSessionId": s.AddField("user_session_id") @@ -309,7 +309,7 @@ func (x *OAuthAuthorizationCode) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState } // NOTE: ClientIdentifiers does not seem to implement UnmarshalProtoJSON. var v ClientIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ClientIds = &v case "rights": s.AddField("rights") @@ -337,7 +337,7 @@ func (x *OAuthAuthorizationCode) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState x.CreatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -348,7 +348,7 @@ func (x *OAuthAuthorizationCode) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState x.ExpiresAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -374,7 +374,7 @@ func (x *OAuthAccessToken) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("user_ids") // NOTE: UserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.UserIds) + golang.MarshalMessage(s, x.UserIds) } if x.UserSessionId != "" || s.HasField("user_session_id") { s.WriteMoreIf(&wroteField) @@ -385,7 +385,7 @@ func (x *OAuthAccessToken) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("client_ids") // NOTE: ClientIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ClientIds) + golang.MarshalMessage(s, x.ClientIds) } if x.Id != "" || s.HasField("id") { s.WriteMoreIf(&wroteField) @@ -419,7 +419,7 @@ func (x *OAuthAccessToken) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.CreatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.CreatedAt) + golang.MarshalTimestamp(s, x.CreatedAt) } } if x.ExpiresAt != nil || s.HasField("expires_at") { @@ -428,7 +428,7 @@ func (x *OAuthAccessToken) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ExpiresAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ExpiresAt) + golang.MarshalTimestamp(s, x.ExpiresAt) } } s.WriteObjectEnd() @@ -456,7 +456,7 @@ func (x *OAuthAccessToken) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: UserIdentifiers does not seem to implement UnmarshalProtoJSON. var v UserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.UserIds = &v case "user_session_id", "userSessionId": s.AddField("user_session_id") @@ -469,7 +469,7 @@ func (x *OAuthAccessToken) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: ClientIdentifiers does not seem to implement UnmarshalProtoJSON. var v ClientIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ClientIds = &v case "id": s.AddField("id") @@ -497,7 +497,7 @@ func (x *OAuthAccessToken) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.CreatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -508,7 +508,7 @@ func (x *OAuthAccessToken) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ExpiresAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } diff --git a/pkg/ttnpb/oauth_services.pb.go b/pkg/ttnpb/oauth_services.pb.go index d939b800be..aa89c9d3bd 100644 --- a/pkg/ttnpb/oauth_services.pb.go +++ b/pkg/ttnpb/oauth_services.pb.go @@ -1,264 +1,152 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/oauth_services.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + reflect "reflect" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -func init() { - proto.RegisterFile("lorawan-stack/api/oauth_services.proto", fileDescriptor_10930ff381158870) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/oauth_services.proto", fileDescriptor_10930ff381158870) -} - -var fileDescriptor_10930ff381158870 = []byte{ - // 419 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x92, 0xbb, 0x6e, 0xdb, 0x30, - 0x14, 0x86, 0xa1, 0xa2, 0xf5, 0xa0, 0x02, 0x1d, 0x38, 0x74, 0x50, 0x2f, 0x40, 0x3d, 0x14, 0xad, - 0x5b, 0x93, 0x45, 0xd5, 0xce, 0x85, 0x7b, 0x2f, 0x7a, 0x03, 0xdc, 0x4e, 0x5d, 0x0c, 0x4a, 0x3e, - 0xa6, 0x08, 0xc9, 0xa4, 0x4a, 0x1e, 0xd9, 0x70, 0x0c, 0x2f, 0x79, 0x85, 0x4c, 0x59, 0xb2, 0x66, - 0xca, 0x94, 0x17, 0xc8, 0x3b, 0xe4, 0x11, 0x92, 0x07, 0x09, 0x44, 0xc9, 0x46, 0x14, 0xc4, 0x88, - 0x81, 0x64, 0x10, 0x74, 0xa8, 0xf3, 0xff, 0x07, 0x1f, 0xff, 0x23, 0xff, 0x69, 0xa6, 0x0d, 0x9f, - 0x72, 0xd5, 0xb5, 0xc8, 0xe3, 0x94, 0xf1, 0x5c, 0x32, 0xcd, 0x0b, 0x4c, 0x06, 0x16, 0xcc, 0x44, - 0xc6, 0x60, 0x69, 0x6e, 0x34, 0x6a, 0x72, 0x0f, 0x51, 0xd1, 0x5a, 0x4b, 0x27, 0x61, 0xd0, 0x15, - 0x12, 0x93, 0x22, 0xa2, 0xb1, 0x1e, 0x33, 0xa1, 0x85, 0x66, 0x4e, 0x16, 0x15, 0x23, 0x77, 0x72, - 0x07, 0x57, 0x55, 0xf6, 0xe0, 0xa1, 0xd0, 0x5a, 0x64, 0xe0, 0xe6, 0x73, 0xa5, 0x34, 0x72, 0x94, - 0x5a, 0xd5, 0xc3, 0x83, 0x07, 0x75, 0x77, 0x35, 0x03, 0xc6, 0x39, 0xce, 0xea, 0xe6, 0xa3, 0x35, - 0x84, 0x55, 0xfb, 0xf5, 0xe1, 0x1d, 0x3f, 0xf8, 0xdd, 0x2b, 0x30, 0x29, 0x1f, 0x6d, 0xe4, 0x96, - 0x9b, 0xdc, 0x07, 0x21, 0x2d, 0x9a, 0x19, 0xd9, 0xf5, 0xfc, 0xdb, 0x3f, 0xa4, 0x45, 0xf2, 0x86, - 0x36, 0x6f, 0x40, 0xcb, 0xaf, 0xce, 0xf8, 0x21, 0x93, 0xa0, 0xb0, 0x61, 0xb7, 0x7d, 0xf8, 0x5f, - 0x80, 0xc5, 0xe0, 0xf9, 0x45, 0xd7, 0x5a, 0x47, 0xfb, 0xd5, 0xf6, 0xf1, 0xe9, 0xce, 0xad, 0x0e, - 0x79, 0xc6, 0x0a, 0x0b, 0xc6, 0xb2, 0x79, 0xf9, 0x1a, 0xc8, 0xa1, 0xa5, 0x75, 0xb1, 0x60, 0xbc, - 0xe1, 0x20, 0x07, 0x9e, 0xef, 0x97, 0x14, 0x7f, 0x75, 0x0a, 0xca, 0x92, 0x97, 0x6b, 0x09, 0x7b, - 0x71, 0x0c, 0xd6, 0x56, 0xb2, 0x25, 0xd9, 0x93, 0x4b, 0xc9, 0xce, 0x2b, 0xdb, 0xbf, 0x1c, 0xd1, - 0x57, 0xf2, 0x79, 0x53, 0x22, 0x36, 0x8f, 0xdd, 0xcd, 0x9c, 0x66, 0x55, 0x2e, 0x18, 0x56, 0x80, - 0x7b, 0x9e, 0xdf, 0xfa, 0x08, 0x19, 0x20, 0x90, 0x70, 0xd3, 0x5c, 0xbe, 0x0d, 0x41, 0xa1, 0x1c, - 0x49, 0x30, 0x36, 0xb8, 0x4f, 0xab, 0x3d, 0xd3, 0xe5, 0x9e, 0xe9, 0xa7, 0x72, 0xcf, 0xed, 0x2f, - 0x8e, 0xb3, 0xd7, 0x79, 0x77, 0x4d, 0x4e, 0xb2, 0xef, 0xf9, 0x77, 0x2b, 0x40, 0x97, 0x00, 0x79, - 0x71, 0x55, 0x46, 0x9b, 0xd0, 0xfd, 0x71, 0x74, 0x3f, 0x3b, 0xdf, 0x6f, 0x26, 0x45, 0x36, 0x97, - 0xc3, 0xc5, 0xfb, 0xb7, 0x47, 0x27, 0x8f, 0xbd, 0x7f, 0x4c, 0x68, 0x8a, 0x09, 0x60, 0x22, 0x95, - 0xb0, 0x54, 0x01, 0x4e, 0xb5, 0x49, 0x59, 0xf3, 0x7f, 0x9f, 0x84, 0x2c, 0x4f, 0x05, 0x43, 0x54, - 0x79, 0x14, 0xb5, 0x1c, 0x5b, 0x78, 0x16, 0x00, 0x00, 0xff, 0xff, 0x81, 0xd5, 0xb4, 0xaf, 0xb6, - 0x03, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// OAuthAuthorizationRegistryClient is the client API for OAuthAuthorizationRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type OAuthAuthorizationRegistryClient interface { - // List OAuth clients that are authorized by the user. - List(ctx context.Context, in *ListOAuthClientAuthorizationsRequest, opts ...grpc.CallOption) (*OAuthClientAuthorizations, error) - // List OAuth access tokens issued to the OAuth client on behalf of the user. - ListTokens(ctx context.Context, in *ListOAuthAccessTokensRequest, opts ...grpc.CallOption) (*OAuthAccessTokens, error) - // Delete (de-authorize) an OAuth client for the user. - Delete(ctx context.Context, in *OAuthClientAuthorizationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) - // Delete (invalidate) an OAuth access token. - DeleteToken(ctx context.Context, in *OAuthAccessTokenIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) -} - -type oAuthAuthorizationRegistryClient struct { - cc *grpc.ClientConn -} - -func NewOAuthAuthorizationRegistryClient(cc *grpc.ClientConn) OAuthAuthorizationRegistryClient { - return &oAuthAuthorizationRegistryClient{cc} -} - -func (c *oAuthAuthorizationRegistryClient) List(ctx context.Context, in *ListOAuthClientAuthorizationsRequest, opts ...grpc.CallOption) (*OAuthClientAuthorizations, error) { - out := new(OAuthClientAuthorizations) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OAuthAuthorizationRegistry/List", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *oAuthAuthorizationRegistryClient) ListTokens(ctx context.Context, in *ListOAuthAccessTokensRequest, opts ...grpc.CallOption) (*OAuthAccessTokens, error) { - out := new(OAuthAccessTokens) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OAuthAuthorizationRegistry/ListTokens", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *oAuthAuthorizationRegistryClient) Delete(ctx context.Context, in *OAuthClientAuthorizationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OAuthAuthorizationRegistry/Delete", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *oAuthAuthorizationRegistryClient) DeleteToken(ctx context.Context, in *OAuthAccessTokenIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OAuthAuthorizationRegistry/DeleteToken", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// OAuthAuthorizationRegistryServer is the server API for OAuthAuthorizationRegistry service. -type OAuthAuthorizationRegistryServer interface { - // List OAuth clients that are authorized by the user. - List(context.Context, *ListOAuthClientAuthorizationsRequest) (*OAuthClientAuthorizations, error) - // List OAuth access tokens issued to the OAuth client on behalf of the user. - ListTokens(context.Context, *ListOAuthAccessTokensRequest) (*OAuthAccessTokens, error) - // Delete (de-authorize) an OAuth client for the user. - Delete(context.Context, *OAuthClientAuthorizationIdentifiers) (*types.Empty, error) - // Delete (invalidate) an OAuth access token. - DeleteToken(context.Context, *OAuthAccessTokenIdentifiers) (*types.Empty, error) -} - -// UnimplementedOAuthAuthorizationRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedOAuthAuthorizationRegistryServer struct { -} - -func (*UnimplementedOAuthAuthorizationRegistryServer) List(ctx context.Context, req *ListOAuthClientAuthorizationsRequest) (*OAuthClientAuthorizations, error) { - return nil, status.Errorf(codes.Unimplemented, "method List not implemented") -} -func (*UnimplementedOAuthAuthorizationRegistryServer) ListTokens(ctx context.Context, req *ListOAuthAccessTokensRequest) (*OAuthAccessTokens, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListTokens not implemented") -} -func (*UnimplementedOAuthAuthorizationRegistryServer) Delete(ctx context.Context, req *OAuthClientAuthorizationIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (*UnimplementedOAuthAuthorizationRegistryServer) DeleteToken(ctx context.Context, req *OAuthAccessTokenIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteToken not implemented") -} - -func RegisterOAuthAuthorizationRegistryServer(s *grpc.Server, srv OAuthAuthorizationRegistryServer) { - s.RegisterService(&_OAuthAuthorizationRegistry_serviceDesc, srv) -} - -func _OAuthAuthorizationRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListOAuthClientAuthorizationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OAuthAuthorizationRegistryServer).List(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OAuthAuthorizationRegistry/List", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OAuthAuthorizationRegistryServer).List(ctx, req.(*ListOAuthClientAuthorizationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OAuthAuthorizationRegistry_ListTokens_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListOAuthAccessTokensRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OAuthAuthorizationRegistryServer).ListTokens(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OAuthAuthorizationRegistry/ListTokens", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OAuthAuthorizationRegistryServer).ListTokens(ctx, req.(*ListOAuthAccessTokensRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OAuthAuthorizationRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(OAuthClientAuthorizationIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OAuthAuthorizationRegistryServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OAuthAuthorizationRegistry/Delete", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OAuthAuthorizationRegistryServer).Delete(ctx, req.(*OAuthClientAuthorizationIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _OAuthAuthorizationRegistry_DeleteToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(OAuthAccessTokenIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OAuthAuthorizationRegistryServer).DeleteToken(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OAuthAuthorizationRegistry/DeleteToken", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OAuthAuthorizationRegistryServer).DeleteToken(ctx, req.(*OAuthAccessTokenIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -var _OAuthAuthorizationRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.OAuthAuthorizationRegistry", - HandlerType: (*OAuthAuthorizationRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "List", - Handler: _OAuthAuthorizationRegistry_List_Handler, - }, - { - MethodName: "ListTokens", - Handler: _OAuthAuthorizationRegistry_ListTokens_Handler, - }, - { - MethodName: "Delete", - Handler: _OAuthAuthorizationRegistry_Delete_Handler, - }, - { - MethodName: "DeleteToken", - Handler: _OAuthAuthorizationRegistry_DeleteToken_Handler, +var File_lorawan_stack_api_oauth_services_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_oauth_services_proto_rawDesc = []byte{ + 0x0a, 0x26, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, + 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x32, 0xb3, 0x05, 0x0a, 0x1a, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, + 0x12, 0x99, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, + 0x41, 0x75, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xad, 0x01, 0x0a, + 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x2c, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0x4e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x48, 0x12, 0x46, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x9e, 0x01, 0x0a, + 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x2a, 0x3f, 0x2f, 0x75, + 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa7, 0x01, + 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2b, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, + 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4d, 0x2a, 0x4b, 0x2f, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var file_lorawan_stack_api_oauth_services_proto_goTypes = []interface{}{ + (*ListOAuthClientAuthorizationsRequest)(nil), // 0: ttn.lorawan.v3.ListOAuthClientAuthorizationsRequest + (*ListOAuthAccessTokensRequest)(nil), // 1: ttn.lorawan.v3.ListOAuthAccessTokensRequest + (*OAuthClientAuthorizationIdentifiers)(nil), // 2: ttn.lorawan.v3.OAuthClientAuthorizationIdentifiers + (*OAuthAccessTokenIdentifiers)(nil), // 3: ttn.lorawan.v3.OAuthAccessTokenIdentifiers + (*OAuthClientAuthorizations)(nil), // 4: ttn.lorawan.v3.OAuthClientAuthorizations + (*OAuthAccessTokens)(nil), // 5: ttn.lorawan.v3.OAuthAccessTokens + (*emptypb.Empty)(nil), // 6: google.protobuf.Empty +} +var file_lorawan_stack_api_oauth_services_proto_depIdxs = []int32{ + 0, // 0: ttn.lorawan.v3.OAuthAuthorizationRegistry.List:input_type -> ttn.lorawan.v3.ListOAuthClientAuthorizationsRequest + 1, // 1: ttn.lorawan.v3.OAuthAuthorizationRegistry.ListTokens:input_type -> ttn.lorawan.v3.ListOAuthAccessTokensRequest + 2, // 2: ttn.lorawan.v3.OAuthAuthorizationRegistry.Delete:input_type -> ttn.lorawan.v3.OAuthClientAuthorizationIdentifiers + 3, // 3: ttn.lorawan.v3.OAuthAuthorizationRegistry.DeleteToken:input_type -> ttn.lorawan.v3.OAuthAccessTokenIdentifiers + 4, // 4: ttn.lorawan.v3.OAuthAuthorizationRegistry.List:output_type -> ttn.lorawan.v3.OAuthClientAuthorizations + 5, // 5: ttn.lorawan.v3.OAuthAuthorizationRegistry.ListTokens:output_type -> ttn.lorawan.v3.OAuthAccessTokens + 6, // 6: ttn.lorawan.v3.OAuthAuthorizationRegistry.Delete:output_type -> google.protobuf.Empty + 6, // 7: ttn.lorawan.v3.OAuthAuthorizationRegistry.DeleteToken:output_type -> google.protobuf.Empty + 4, // [4:8] is the sub-list for method output_type + 0, // [0:4] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_oauth_services_proto_init() } +func file_lorawan_stack_api_oauth_services_proto_init() { + if File_lorawan_stack_api_oauth_services_proto != nil { + return + } + file_lorawan_stack_api_oauth_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_oauth_services_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/oauth_services.proto", + GoTypes: file_lorawan_stack_api_oauth_services_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_oauth_services_proto_depIdxs, + }.Build() + File_lorawan_stack_api_oauth_services_proto = out.File + file_lorawan_stack_api_oauth_services_proto_rawDesc = nil + file_lorawan_stack_api_oauth_services_proto_goTypes = nil + file_lorawan_stack_api_oauth_services_proto_depIdxs = nil } diff --git a/pkg/ttnpb/oauth_services.pb.gw.go b/pkg/ttnpb/oauth_services.pb.gw.go index 29500476d9..7411cf8a86 100644 --- a/pkg/ttnpb/oauth_services.pb.gw.go +++ b/pkg/ttnpb/oauth_services.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join var ( @@ -54,7 +52,6 @@ func request_OAuthAuthorizationRegistry_List_0(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -88,7 +85,6 @@ func local_request_OAuthAuthorizationRegistry_List_0(ctx context.Context, marsha } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -126,7 +122,6 @@ func request_OAuthAuthorizationRegistry_ListTokens_0(ctx context.Context, marsha } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -137,7 +132,6 @@ func request_OAuthAuthorizationRegistry_ListTokens_0(ctx context.Context, marsha } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -171,7 +165,6 @@ func local_request_OAuthAuthorizationRegistry_ListTokens_0(ctx context.Context, } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -182,7 +175,6 @@ func local_request_OAuthAuthorizationRegistry_ListTokens_0(ctx context.Context, } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -220,7 +212,6 @@ func request_OAuthAuthorizationRegistry_Delete_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -231,7 +222,6 @@ func request_OAuthAuthorizationRegistry_Delete_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -265,7 +255,6 @@ func local_request_OAuthAuthorizationRegistry_Delete_0(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -276,7 +265,6 @@ func local_request_OAuthAuthorizationRegistry_Delete_0(ctx context.Context, mars } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -314,7 +302,6 @@ func request_OAuthAuthorizationRegistry_DeleteToken_0(ctx context.Context, marsh } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -325,7 +312,6 @@ func request_OAuthAuthorizationRegistry_DeleteToken_0(ctx context.Context, marsh } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -336,7 +322,6 @@ func request_OAuthAuthorizationRegistry_DeleteToken_0(ctx context.Context, marsh } protoReq.Id, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } @@ -370,7 +355,6 @@ func local_request_OAuthAuthorizationRegistry_DeleteToken_0(ctx context.Context, } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -381,7 +365,6 @@ func local_request_OAuthAuthorizationRegistry_DeleteToken_0(ctx context.Context, } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -392,7 +375,6 @@ func local_request_OAuthAuthorizationRegistry_DeleteToken_0(ctx context.Context, } protoReq.Id, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } @@ -421,20 +403,22 @@ func RegisterOAuthAuthorizationRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OAuthAuthorizationRegistry/List", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/authorizations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OAuthAuthorizationRegistry_List_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OAuthAuthorizationRegistry_List_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OAuthAuthorizationRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OAuthAuthorizationRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -444,20 +428,22 @@ func RegisterOAuthAuthorizationRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OAuthAuthorizationRegistry/ListTokens", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/authorizations/{client_ids.client_id}/tokens")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OAuthAuthorizationRegistry_ListTokens_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OAuthAuthorizationRegistry_ListTokens_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OAuthAuthorizationRegistry_ListTokens_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OAuthAuthorizationRegistry_ListTokens_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -467,20 +453,22 @@ func RegisterOAuthAuthorizationRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OAuthAuthorizationRegistry/Delete", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/authorizations/{client_ids.client_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OAuthAuthorizationRegistry_Delete_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OAuthAuthorizationRegistry_Delete_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OAuthAuthorizationRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OAuthAuthorizationRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -490,20 +478,22 @@ func RegisterOAuthAuthorizationRegistryHandlerServer(ctx context.Context, mux *r var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OAuthAuthorizationRegistry/DeleteToken", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/authorizations/{client_ids.client_id}/tokens/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OAuthAuthorizationRegistry_DeleteToken_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OAuthAuthorizationRegistry_DeleteToken_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OAuthAuthorizationRegistry_DeleteToken_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OAuthAuthorizationRegistry_DeleteToken_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -552,19 +542,21 @@ func RegisterOAuthAuthorizationRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OAuthAuthorizationRegistry/List", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/authorizations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OAuthAuthorizationRegistry_List_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OAuthAuthorizationRegistry_List_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OAuthAuthorizationRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OAuthAuthorizationRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -572,19 +564,21 @@ func RegisterOAuthAuthorizationRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OAuthAuthorizationRegistry/ListTokens", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/authorizations/{client_ids.client_id}/tokens")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OAuthAuthorizationRegistry_ListTokens_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OAuthAuthorizationRegistry_ListTokens_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OAuthAuthorizationRegistry_ListTokens_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OAuthAuthorizationRegistry_ListTokens_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -592,19 +586,21 @@ func RegisterOAuthAuthorizationRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OAuthAuthorizationRegistry/Delete", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/authorizations/{client_ids.client_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OAuthAuthorizationRegistry_Delete_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OAuthAuthorizationRegistry_Delete_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OAuthAuthorizationRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OAuthAuthorizationRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -612,19 +608,21 @@ func RegisterOAuthAuthorizationRegistryHandlerClient(ctx context.Context, mux *r ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OAuthAuthorizationRegistry/DeleteToken", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/authorizations/{client_ids.client_id}/tokens/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OAuthAuthorizationRegistry_DeleteToken_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OAuthAuthorizationRegistry_DeleteToken_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OAuthAuthorizationRegistry_DeleteToken_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OAuthAuthorizationRegistry_DeleteToken_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -632,13 +630,13 @@ func RegisterOAuthAuthorizationRegistryHandlerClient(ctx context.Context, mux *r } var ( - pattern_OAuthAuthorizationRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_ids.user_id", "authorizations"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OAuthAuthorizationRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_ids.user_id", "authorizations"}, "")) - pattern_OAuthAuthorizationRegistry_ListTokens_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"users", "user_ids.user_id", "authorizations", "client_ids.client_id", "tokens"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OAuthAuthorizationRegistry_ListTokens_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"users", "user_ids.user_id", "authorizations", "client_ids.client_id", "tokens"}, "")) - pattern_OAuthAuthorizationRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"users", "user_ids.user_id", "authorizations", "client_ids.client_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OAuthAuthorizationRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"users", "user_ids.user_id", "authorizations", "client_ids.client_id"}, "")) - pattern_OAuthAuthorizationRegistry_DeleteToken_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"users", "user_ids.user_id", "authorizations", "client_ids.client_id", "tokens", "id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OAuthAuthorizationRegistry_DeleteToken_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"users", "user_ids.user_id", "authorizations", "client_ids.client_id", "tokens", "id"}, "")) ) var ( diff --git a/pkg/ttnpb/oauth_services.pb.validate.go b/pkg/ttnpb/oauth_services.pb.validate.go index 49896d268f..90a1820015 100644 --- a/pkg/ttnpb/oauth_services.pb.validate.go +++ b/pkg/ttnpb/oauth_services.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,8 +29,5 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) - -// define the regex for a UUID once up-front -var _oauth_services_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") diff --git a/pkg/ttnpb/oauth_services_grpc.pb.go b/pkg/ttnpb/oauth_services_grpc.pb.go new file mode 100644 index 0000000000..60e9f0dba1 --- /dev/null +++ b/pkg/ttnpb/oauth_services_grpc.pb.go @@ -0,0 +1,223 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/oauth_services.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// OAuthAuthorizationRegistryClient is the client API for OAuthAuthorizationRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type OAuthAuthorizationRegistryClient interface { + // List OAuth clients that are authorized by the user. + List(ctx context.Context, in *ListOAuthClientAuthorizationsRequest, opts ...grpc.CallOption) (*OAuthClientAuthorizations, error) + // List OAuth access tokens issued to the OAuth client on behalf of the user. + ListTokens(ctx context.Context, in *ListOAuthAccessTokensRequest, opts ...grpc.CallOption) (*OAuthAccessTokens, error) + // Delete (de-authorize) an OAuth client for the user. + Delete(ctx context.Context, in *OAuthClientAuthorizationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Delete (invalidate) an OAuth access token. + DeleteToken(ctx context.Context, in *OAuthAccessTokenIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type oAuthAuthorizationRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewOAuthAuthorizationRegistryClient(cc grpc.ClientConnInterface) OAuthAuthorizationRegistryClient { + return &oAuthAuthorizationRegistryClient{cc} +} + +func (c *oAuthAuthorizationRegistryClient) List(ctx context.Context, in *ListOAuthClientAuthorizationsRequest, opts ...grpc.CallOption) (*OAuthClientAuthorizations, error) { + out := new(OAuthClientAuthorizations) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OAuthAuthorizationRegistry/List", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *oAuthAuthorizationRegistryClient) ListTokens(ctx context.Context, in *ListOAuthAccessTokensRequest, opts ...grpc.CallOption) (*OAuthAccessTokens, error) { + out := new(OAuthAccessTokens) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OAuthAuthorizationRegistry/ListTokens", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *oAuthAuthorizationRegistryClient) Delete(ctx context.Context, in *OAuthClientAuthorizationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OAuthAuthorizationRegistry/Delete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *oAuthAuthorizationRegistryClient) DeleteToken(ctx context.Context, in *OAuthAccessTokenIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OAuthAuthorizationRegistry/DeleteToken", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// OAuthAuthorizationRegistryServer is the server API for OAuthAuthorizationRegistry service. +// All implementations must embed UnimplementedOAuthAuthorizationRegistryServer +// for forward compatibility +type OAuthAuthorizationRegistryServer interface { + // List OAuth clients that are authorized by the user. + List(context.Context, *ListOAuthClientAuthorizationsRequest) (*OAuthClientAuthorizations, error) + // List OAuth access tokens issued to the OAuth client on behalf of the user. + ListTokens(context.Context, *ListOAuthAccessTokensRequest) (*OAuthAccessTokens, error) + // Delete (de-authorize) an OAuth client for the user. + Delete(context.Context, *OAuthClientAuthorizationIdentifiers) (*emptypb.Empty, error) + // Delete (invalidate) an OAuth access token. + DeleteToken(context.Context, *OAuthAccessTokenIdentifiers) (*emptypb.Empty, error) + mustEmbedUnimplementedOAuthAuthorizationRegistryServer() +} + +// UnimplementedOAuthAuthorizationRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedOAuthAuthorizationRegistryServer struct { +} + +func (UnimplementedOAuthAuthorizationRegistryServer) List(context.Context, *ListOAuthClientAuthorizationsRequest) (*OAuthClientAuthorizations, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedOAuthAuthorizationRegistryServer) ListTokens(context.Context, *ListOAuthAccessTokensRequest) (*OAuthAccessTokens, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListTokens not implemented") +} +func (UnimplementedOAuthAuthorizationRegistryServer) Delete(context.Context, *OAuthClientAuthorizationIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedOAuthAuthorizationRegistryServer) DeleteToken(context.Context, *OAuthAccessTokenIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteToken not implemented") +} +func (UnimplementedOAuthAuthorizationRegistryServer) mustEmbedUnimplementedOAuthAuthorizationRegistryServer() { +} + +// UnsafeOAuthAuthorizationRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to OAuthAuthorizationRegistryServer will +// result in compilation errors. +type UnsafeOAuthAuthorizationRegistryServer interface { + mustEmbedUnimplementedOAuthAuthorizationRegistryServer() +} + +func RegisterOAuthAuthorizationRegistryServer(s grpc.ServiceRegistrar, srv OAuthAuthorizationRegistryServer) { + s.RegisterService(&OAuthAuthorizationRegistry_ServiceDesc, srv) +} + +func _OAuthAuthorizationRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListOAuthClientAuthorizationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OAuthAuthorizationRegistryServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OAuthAuthorizationRegistry/List", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OAuthAuthorizationRegistryServer).List(ctx, req.(*ListOAuthClientAuthorizationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OAuthAuthorizationRegistry_ListTokens_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListOAuthAccessTokensRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OAuthAuthorizationRegistryServer).ListTokens(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OAuthAuthorizationRegistry/ListTokens", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OAuthAuthorizationRegistryServer).ListTokens(ctx, req.(*ListOAuthAccessTokensRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OAuthAuthorizationRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(OAuthClientAuthorizationIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OAuthAuthorizationRegistryServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OAuthAuthorizationRegistry/Delete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OAuthAuthorizationRegistryServer).Delete(ctx, req.(*OAuthClientAuthorizationIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _OAuthAuthorizationRegistry_DeleteToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(OAuthAccessTokenIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OAuthAuthorizationRegistryServer).DeleteToken(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OAuthAuthorizationRegistry/DeleteToken", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OAuthAuthorizationRegistryServer).DeleteToken(ctx, req.(*OAuthAccessTokenIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// OAuthAuthorizationRegistry_ServiceDesc is the grpc.ServiceDesc for OAuthAuthorizationRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var OAuthAuthorizationRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.OAuthAuthorizationRegistry", + HandlerType: (*OAuthAuthorizationRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "List", + Handler: _OAuthAuthorizationRegistry_List_Handler, + }, + { + MethodName: "ListTokens", + Handler: _OAuthAuthorizationRegistry_ListTokens_Handler, + }, + { + MethodName: "Delete", + Handler: _OAuthAuthorizationRegistry_Delete_Handler, + }, + { + MethodName: "DeleteToken", + Handler: _OAuthAuthorizationRegistry_DeleteToken_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/oauth_services.proto", +} diff --git a/pkg/ttnpb/organization.pb.go b/pkg/ttnpb/organization.pb.go index cde927079b..529ad5e028 100644 --- a/pkg/ttnpb/organization.pb.go +++ b/pkg/ttnpb/organization.pb.go @@ -1,40 +1,57 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/organization.proto package ttnpb import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type Organization struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The identifiers of the organization. These are public and can be seen by any authenticated user in the network. Ids *OrganizationIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` // When the organization was created. This information is public and can be seen by any authenticated user in the network. - CreatedAt *types.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // When the organization was last updated. This information is public and can be seen by any authenticated user in the network. - UpdatedAt *types.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // When the organization was deleted. This information is public and can be seen by any authenticated user in the network. - DeletedAt *types.Timestamp `protobuf:"bytes,8,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` + DeletedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` // The name of the organization. This information is public and can be seen by any authenticated user in the network. Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` // A description for the organization. @@ -43,195 +60,224 @@ type Organization struct { Attributes map[string]string `protobuf:"bytes,6,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Contact information for this organization. Typically used to indicate who to contact with security/billing questions about the organization. // This field is deprecated. Use administrative_contact and technical_contact instead. - ContactInfo []*ContactInfo `protobuf:"bytes,7,rep,name=contact_info,json=contactInfo,proto3" json:"contact_info,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Do not use. + ContactInfo []*ContactInfo `protobuf:"bytes,7,rep,name=contact_info,json=contactInfo,proto3" json:"contact_info,omitempty"` AdministrativeContact *OrganizationOrUserIdentifiers `protobuf:"bytes,9,opt,name=administrative_contact,json=administrativeContact,proto3" json:"administrative_contact,omitempty"` TechnicalContact *OrganizationOrUserIdentifiers `protobuf:"bytes,10,opt,name=technical_contact,json=technicalContact,proto3" json:"technical_contact,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Organization) Reset() { *m = Organization{} } -func (m *Organization) String() string { return proto.CompactTextString(m) } -func (*Organization) ProtoMessage() {} -func (*Organization) Descriptor() ([]byte, []int) { - return fileDescriptor_312da2e2e650bd3b, []int{0} -} -func (m *Organization) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Organization.Unmarshal(m, b) -} -func (m *Organization) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Organization.Marshal(b, m, deterministic) -} -func (m *Organization) XXX_Merge(src proto.Message) { - xxx_messageInfo_Organization.Merge(m, src) +func (x *Organization) Reset() { + *x = Organization{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Organization) XXX_Size() int { - return xxx_messageInfo_Organization.Size(m) + +func (x *Organization) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Organization) XXX_DiscardUnknown() { - xxx_messageInfo_Organization.DiscardUnknown(m) + +func (*Organization) ProtoMessage() {} + +func (x *Organization) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Organization proto.InternalMessageInfo +// Deprecated: Use Organization.ProtoReflect.Descriptor instead. +func (*Organization) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_organization_proto_rawDescGZIP(), []int{0} +} -func (m *Organization) GetIds() *OrganizationIdentifiers { - if m != nil { - return m.Ids +func (x *Organization) GetIds() *OrganizationIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *Organization) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *Organization) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *Organization) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *Organization) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *Organization) GetDeletedAt() *types.Timestamp { - if m != nil { - return m.DeletedAt +func (x *Organization) GetDeletedAt() *timestamppb.Timestamp { + if x != nil { + return x.DeletedAt } return nil } -func (m *Organization) GetName() string { - if m != nil { - return m.Name +func (x *Organization) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *Organization) GetDescription() string { - if m != nil { - return m.Description +func (x *Organization) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Organization) GetAttributes() map[string]string { - if m != nil { - return m.Attributes +func (x *Organization) GetAttributes() map[string]string { + if x != nil { + return x.Attributes } return nil } // Deprecated: Do not use. -func (m *Organization) GetContactInfo() []*ContactInfo { - if m != nil { - return m.ContactInfo +func (x *Organization) GetContactInfo() []*ContactInfo { + if x != nil { + return x.ContactInfo } return nil } -func (m *Organization) GetAdministrativeContact() *OrganizationOrUserIdentifiers { - if m != nil { - return m.AdministrativeContact +func (x *Organization) GetAdministrativeContact() *OrganizationOrUserIdentifiers { + if x != nil { + return x.AdministrativeContact } return nil } -func (m *Organization) GetTechnicalContact() *OrganizationOrUserIdentifiers { - if m != nil { - return m.TechnicalContact +func (x *Organization) GetTechnicalContact() *OrganizationOrUserIdentifiers { + if x != nil { + return x.TechnicalContact } return nil } type Organizations struct { - Organizations []*Organization `protobuf:"bytes,1,rep,name=organizations,proto3" json:"organizations,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Organizations) Reset() { *m = Organizations{} } -func (m *Organizations) String() string { return proto.CompactTextString(m) } -func (*Organizations) ProtoMessage() {} -func (*Organizations) Descriptor() ([]byte, []int) { - return fileDescriptor_312da2e2e650bd3b, []int{1} + Organizations []*Organization `protobuf:"bytes,1,rep,name=organizations,proto3" json:"organizations,omitempty"` } -func (m *Organizations) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Organizations.Unmarshal(m, b) -} -func (m *Organizations) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Organizations.Marshal(b, m, deterministic) -} -func (m *Organizations) XXX_Merge(src proto.Message) { - xxx_messageInfo_Organizations.Merge(m, src) + +func (x *Organizations) Reset() { + *x = Organizations{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Organizations) XXX_Size() int { - return xxx_messageInfo_Organizations.Size(m) + +func (x *Organizations) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Organizations) XXX_DiscardUnknown() { - xxx_messageInfo_Organizations.DiscardUnknown(m) + +func (*Organizations) ProtoMessage() {} + +func (x *Organizations) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Organizations proto.InternalMessageInfo +// Deprecated: Use Organizations.ProtoReflect.Descriptor instead. +func (*Organizations) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_organization_proto_rawDescGZIP(), []int{1} +} -func (m *Organizations) GetOrganizations() []*Organization { - if m != nil { - return m.Organizations +func (x *Organizations) GetOrganizations() []*Organization { + if x != nil { + return x.Organizations } return nil } type GetOrganizationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + OrganizationIds *OrganizationIdentifiers `protobuf:"bytes,1,opt,name=organization_ids,json=organizationIds,proto3" json:"organization_ids,omitempty"` // The names of the organization fields that should be returned. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *GetOrganizationRequest) Reset() { *m = GetOrganizationRequest{} } -func (m *GetOrganizationRequest) String() string { return proto.CompactTextString(m) } -func (*GetOrganizationRequest) ProtoMessage() {} -func (*GetOrganizationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_312da2e2e650bd3b, []int{2} -} -func (m *GetOrganizationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetOrganizationRequest.Unmarshal(m, b) -} -func (m *GetOrganizationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetOrganizationRequest.Marshal(b, m, deterministic) -} -func (m *GetOrganizationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetOrganizationRequest.Merge(m, src) +func (x *GetOrganizationRequest) Reset() { + *x = GetOrganizationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetOrganizationRequest) XXX_Size() int { - return xxx_messageInfo_GetOrganizationRequest.Size(m) + +func (x *GetOrganizationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetOrganizationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetOrganizationRequest.DiscardUnknown(m) + +func (*GetOrganizationRequest) ProtoMessage() {} + +func (x *GetOrganizationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetOrganizationRequest proto.InternalMessageInfo +// Deprecated: Use GetOrganizationRequest.ProtoReflect.Descriptor instead. +func (*GetOrganizationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_organization_proto_rawDescGZIP(), []int{2} +} -func (m *GetOrganizationRequest) GetOrganizationIds() *OrganizationIdentifiers { - if m != nil { - return m.OrganizationIds +func (x *GetOrganizationRequest) GetOrganizationIds() *OrganizationIdentifiers { + if x != nil { + return x.OrganizationIds } return nil } -func (m *GetOrganizationRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *GetOrganizationRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type ListOrganizationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // By default we list all organizations the caller has rights on. // Set the user to instead list the organizations // where the user or organization is collaborator on. @@ -239,7 +285,7 @@ type ListOrganizationsRequest struct { // other organizations. Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,1,opt,name=collaborator,proto3" json:"collaborator,omitempty"` // The names of the organization fields that should be returned. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. Order string `protobuf:"bytes,3,opt,name=order,proto3" json:"order,omitempty"` @@ -248,175 +294,202 @@ type ListOrganizationsRequest struct { // Page number for pagination. 0 is interpreted as 1. Page uint32 `protobuf:"varint,5,opt,name=page,proto3" json:"page,omitempty"` // Only return recently deleted organizations. - Deleted bool `protobuf:"varint,6,opt,name=deleted,proto3" json:"deleted,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Deleted bool `protobuf:"varint,6,opt,name=deleted,proto3" json:"deleted,omitempty"` } -func (m *ListOrganizationsRequest) Reset() { *m = ListOrganizationsRequest{} } -func (m *ListOrganizationsRequest) String() string { return proto.CompactTextString(m) } -func (*ListOrganizationsRequest) ProtoMessage() {} -func (*ListOrganizationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_312da2e2e650bd3b, []int{3} -} -func (m *ListOrganizationsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListOrganizationsRequest.Unmarshal(m, b) -} -func (m *ListOrganizationsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListOrganizationsRequest.Marshal(b, m, deterministic) -} -func (m *ListOrganizationsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListOrganizationsRequest.Merge(m, src) +func (x *ListOrganizationsRequest) Reset() { + *x = ListOrganizationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListOrganizationsRequest) XXX_Size() int { - return xxx_messageInfo_ListOrganizationsRequest.Size(m) + +func (x *ListOrganizationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListOrganizationsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListOrganizationsRequest.DiscardUnknown(m) + +func (*ListOrganizationsRequest) ProtoMessage() {} + +func (x *ListOrganizationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListOrganizationsRequest proto.InternalMessageInfo +// Deprecated: Use ListOrganizationsRequest.ProtoReflect.Descriptor instead. +func (*ListOrganizationsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_organization_proto_rawDescGZIP(), []int{3} +} -func (m *ListOrganizationsRequest) GetCollaborator() *OrganizationOrUserIdentifiers { - if m != nil { - return m.Collaborator +func (x *ListOrganizationsRequest) GetCollaborator() *OrganizationOrUserIdentifiers { + if x != nil { + return x.Collaborator } return nil } -func (m *ListOrganizationsRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *ListOrganizationsRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *ListOrganizationsRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListOrganizationsRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *ListOrganizationsRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListOrganizationsRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListOrganizationsRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListOrganizationsRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *ListOrganizationsRequest) GetDeleted() bool { - if m != nil { - return m.Deleted +func (x *ListOrganizationsRequest) GetDeleted() bool { + if x != nil { + return x.Deleted } return false } type CreateOrganizationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Organization *Organization `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` // Collaborator to grant all rights on the newly created application. // NOTE: It is currently not possible to have organizations collaborating on // other organizations. - Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` } -func (m *CreateOrganizationRequest) Reset() { *m = CreateOrganizationRequest{} } -func (m *CreateOrganizationRequest) String() string { return proto.CompactTextString(m) } -func (*CreateOrganizationRequest) ProtoMessage() {} -func (*CreateOrganizationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_312da2e2e650bd3b, []int{4} -} -func (m *CreateOrganizationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateOrganizationRequest.Unmarshal(m, b) -} -func (m *CreateOrganizationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateOrganizationRequest.Marshal(b, m, deterministic) -} -func (m *CreateOrganizationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateOrganizationRequest.Merge(m, src) +func (x *CreateOrganizationRequest) Reset() { + *x = CreateOrganizationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateOrganizationRequest) XXX_Size() int { - return xxx_messageInfo_CreateOrganizationRequest.Size(m) + +func (x *CreateOrganizationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateOrganizationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateOrganizationRequest.DiscardUnknown(m) + +func (*CreateOrganizationRequest) ProtoMessage() {} + +func (x *CreateOrganizationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CreateOrganizationRequest proto.InternalMessageInfo +// Deprecated: Use CreateOrganizationRequest.ProtoReflect.Descriptor instead. +func (*CreateOrganizationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_organization_proto_rawDescGZIP(), []int{4} +} -func (m *CreateOrganizationRequest) GetOrganization() *Organization { - if m != nil { - return m.Organization +func (x *CreateOrganizationRequest) GetOrganization() *Organization { + if x != nil { + return x.Organization } return nil } -func (m *CreateOrganizationRequest) GetCollaborator() *OrganizationOrUserIdentifiers { - if m != nil { - return m.Collaborator +func (x *CreateOrganizationRequest) GetCollaborator() *OrganizationOrUserIdentifiers { + if x != nil { + return x.Collaborator } return nil } type UpdateOrganizationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Organization *Organization `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` // The names of the organization fields that should be updated. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *UpdateOrganizationRequest) Reset() { *m = UpdateOrganizationRequest{} } -func (m *UpdateOrganizationRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateOrganizationRequest) ProtoMessage() {} -func (*UpdateOrganizationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_312da2e2e650bd3b, []int{5} -} -func (m *UpdateOrganizationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateOrganizationRequest.Unmarshal(m, b) -} -func (m *UpdateOrganizationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateOrganizationRequest.Marshal(b, m, deterministic) -} -func (m *UpdateOrganizationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateOrganizationRequest.Merge(m, src) +func (x *UpdateOrganizationRequest) Reset() { + *x = UpdateOrganizationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UpdateOrganizationRequest) XXX_Size() int { - return xxx_messageInfo_UpdateOrganizationRequest.Size(m) + +func (x *UpdateOrganizationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UpdateOrganizationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateOrganizationRequest.DiscardUnknown(m) + +func (*UpdateOrganizationRequest) ProtoMessage() {} + +func (x *UpdateOrganizationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UpdateOrganizationRequest proto.InternalMessageInfo +// Deprecated: Use UpdateOrganizationRequest.ProtoReflect.Descriptor instead. +func (*UpdateOrganizationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_organization_proto_rawDescGZIP(), []int{5} +} -func (m *UpdateOrganizationRequest) GetOrganization() *Organization { - if m != nil { - return m.Organization +func (x *UpdateOrganizationRequest) GetOrganization() *Organization { + if x != nil { + return x.Organization } return nil } -func (m *UpdateOrganizationRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *UpdateOrganizationRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type ListOrganizationAPIKeysRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + OrganizationIds *OrganizationIdentifiers `protobuf:"bytes,1,opt,name=organization_ids,json=organizationIds,proto3" json:"organization_ids,omitempty"` // Order the results by this field path. // Default ordering is by ID. Prepend with a minus (-) to reverse the order. @@ -424,229 +497,265 @@ type ListOrganizationAPIKeysRequest struct { // Limit the number of results per page. Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` } -func (m *ListOrganizationAPIKeysRequest) Reset() { *m = ListOrganizationAPIKeysRequest{} } -func (m *ListOrganizationAPIKeysRequest) String() string { return proto.CompactTextString(m) } -func (*ListOrganizationAPIKeysRequest) ProtoMessage() {} -func (*ListOrganizationAPIKeysRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_312da2e2e650bd3b, []int{6} -} -func (m *ListOrganizationAPIKeysRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListOrganizationAPIKeysRequest.Unmarshal(m, b) -} -func (m *ListOrganizationAPIKeysRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListOrganizationAPIKeysRequest.Marshal(b, m, deterministic) -} -func (m *ListOrganizationAPIKeysRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListOrganizationAPIKeysRequest.Merge(m, src) +func (x *ListOrganizationAPIKeysRequest) Reset() { + *x = ListOrganizationAPIKeysRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListOrganizationAPIKeysRequest) XXX_Size() int { - return xxx_messageInfo_ListOrganizationAPIKeysRequest.Size(m) + +func (x *ListOrganizationAPIKeysRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListOrganizationAPIKeysRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListOrganizationAPIKeysRequest.DiscardUnknown(m) + +func (*ListOrganizationAPIKeysRequest) ProtoMessage() {} + +func (x *ListOrganizationAPIKeysRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListOrganizationAPIKeysRequest proto.InternalMessageInfo +// Deprecated: Use ListOrganizationAPIKeysRequest.ProtoReflect.Descriptor instead. +func (*ListOrganizationAPIKeysRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_organization_proto_rawDescGZIP(), []int{6} +} -func (m *ListOrganizationAPIKeysRequest) GetOrganizationIds() *OrganizationIdentifiers { - if m != nil { - return m.OrganizationIds +func (x *ListOrganizationAPIKeysRequest) GetOrganizationIds() *OrganizationIdentifiers { + if x != nil { + return x.OrganizationIds } return nil } -func (m *ListOrganizationAPIKeysRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListOrganizationAPIKeysRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *ListOrganizationAPIKeysRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListOrganizationAPIKeysRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListOrganizationAPIKeysRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListOrganizationAPIKeysRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } type GetOrganizationAPIKeyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + OrganizationIds *OrganizationIdentifiers `protobuf:"bytes,1,opt,name=organization_ids,json=organizationIds,proto3" json:"organization_ids,omitempty"` // Unique public identifier for the API key. - KeyId string `protobuf:"bytes,2,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + KeyId string `protobuf:"bytes,2,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` } -func (m *GetOrganizationAPIKeyRequest) Reset() { *m = GetOrganizationAPIKeyRequest{} } -func (m *GetOrganizationAPIKeyRequest) String() string { return proto.CompactTextString(m) } -func (*GetOrganizationAPIKeyRequest) ProtoMessage() {} -func (*GetOrganizationAPIKeyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_312da2e2e650bd3b, []int{7} -} -func (m *GetOrganizationAPIKeyRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetOrganizationAPIKeyRequest.Unmarshal(m, b) -} -func (m *GetOrganizationAPIKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetOrganizationAPIKeyRequest.Marshal(b, m, deterministic) -} -func (m *GetOrganizationAPIKeyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetOrganizationAPIKeyRequest.Merge(m, src) +func (x *GetOrganizationAPIKeyRequest) Reset() { + *x = GetOrganizationAPIKeyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetOrganizationAPIKeyRequest) XXX_Size() int { - return xxx_messageInfo_GetOrganizationAPIKeyRequest.Size(m) + +func (x *GetOrganizationAPIKeyRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetOrganizationAPIKeyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetOrganizationAPIKeyRequest.DiscardUnknown(m) + +func (*GetOrganizationAPIKeyRequest) ProtoMessage() {} + +func (x *GetOrganizationAPIKeyRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetOrganizationAPIKeyRequest proto.InternalMessageInfo +// Deprecated: Use GetOrganizationAPIKeyRequest.ProtoReflect.Descriptor instead. +func (*GetOrganizationAPIKeyRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_organization_proto_rawDescGZIP(), []int{7} +} -func (m *GetOrganizationAPIKeyRequest) GetOrganizationIds() *OrganizationIdentifiers { - if m != nil { - return m.OrganizationIds +func (x *GetOrganizationAPIKeyRequest) GetOrganizationIds() *OrganizationIdentifiers { + if x != nil { + return x.OrganizationIds } return nil } -func (m *GetOrganizationAPIKeyRequest) GetKeyId() string { - if m != nil { - return m.KeyId +func (x *GetOrganizationAPIKeyRequest) GetKeyId() string { + if x != nil { + return x.KeyId } return "" } type CreateOrganizationAPIKeyRequest struct { - OrganizationIds *OrganizationIdentifiers `protobuf:"bytes,1,opt,name=organization_ids,json=organizationIds,proto3" json:"organization_ids,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Rights []Right `protobuf:"varint,3,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` - ExpiresAt *types.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateOrganizationAPIKeyRequest) Reset() { *m = CreateOrganizationAPIKeyRequest{} } -func (m *CreateOrganizationAPIKeyRequest) String() string { return proto.CompactTextString(m) } -func (*CreateOrganizationAPIKeyRequest) ProtoMessage() {} -func (*CreateOrganizationAPIKeyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_312da2e2e650bd3b, []int{8} -} -func (m *CreateOrganizationAPIKeyRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateOrganizationAPIKeyRequest.Unmarshal(m, b) -} -func (m *CreateOrganizationAPIKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateOrganizationAPIKeyRequest.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OrganizationIds *OrganizationIdentifiers `protobuf:"bytes,1,opt,name=organization_ids,json=organizationIds,proto3" json:"organization_ids,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Rights []Right `protobuf:"varint,3,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` + ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` } -func (m *CreateOrganizationAPIKeyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateOrganizationAPIKeyRequest.Merge(m, src) + +func (x *CreateOrganizationAPIKeyRequest) Reset() { + *x = CreateOrganizationAPIKeyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateOrganizationAPIKeyRequest) XXX_Size() int { - return xxx_messageInfo_CreateOrganizationAPIKeyRequest.Size(m) + +func (x *CreateOrganizationAPIKeyRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateOrganizationAPIKeyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateOrganizationAPIKeyRequest.DiscardUnknown(m) + +func (*CreateOrganizationAPIKeyRequest) ProtoMessage() {} + +func (x *CreateOrganizationAPIKeyRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CreateOrganizationAPIKeyRequest proto.InternalMessageInfo +// Deprecated: Use CreateOrganizationAPIKeyRequest.ProtoReflect.Descriptor instead. +func (*CreateOrganizationAPIKeyRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_organization_proto_rawDescGZIP(), []int{8} +} -func (m *CreateOrganizationAPIKeyRequest) GetOrganizationIds() *OrganizationIdentifiers { - if m != nil { - return m.OrganizationIds +func (x *CreateOrganizationAPIKeyRequest) GetOrganizationIds() *OrganizationIdentifiers { + if x != nil { + return x.OrganizationIds } return nil } -func (m *CreateOrganizationAPIKeyRequest) GetName() string { - if m != nil { - return m.Name +func (x *CreateOrganizationAPIKeyRequest) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *CreateOrganizationAPIKeyRequest) GetRights() []Right { - if m != nil { - return m.Rights +func (x *CreateOrganizationAPIKeyRequest) GetRights() []Right { + if x != nil { + return x.Rights } return nil } -func (m *CreateOrganizationAPIKeyRequest) GetExpiresAt() *types.Timestamp { - if m != nil { - return m.ExpiresAt +func (x *CreateOrganizationAPIKeyRequest) GetExpiresAt() *timestamppb.Timestamp { + if x != nil { + return x.ExpiresAt } return nil } type UpdateOrganizationAPIKeyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + OrganizationIds *OrganizationIdentifiers `protobuf:"bytes,1,opt,name=organization_ids,json=organizationIds,proto3" json:"organization_ids,omitempty"` ApiKey *APIKey `protobuf:"bytes,2,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` // The names of the api key fields that should be updated. - FieldMask *types.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *UpdateOrganizationAPIKeyRequest) Reset() { *m = UpdateOrganizationAPIKeyRequest{} } -func (m *UpdateOrganizationAPIKeyRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateOrganizationAPIKeyRequest) ProtoMessage() {} -func (*UpdateOrganizationAPIKeyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_312da2e2e650bd3b, []int{9} -} -func (m *UpdateOrganizationAPIKeyRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateOrganizationAPIKeyRequest.Unmarshal(m, b) -} -func (m *UpdateOrganizationAPIKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateOrganizationAPIKeyRequest.Marshal(b, m, deterministic) -} -func (m *UpdateOrganizationAPIKeyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateOrganizationAPIKeyRequest.Merge(m, src) +func (x *UpdateOrganizationAPIKeyRequest) Reset() { + *x = UpdateOrganizationAPIKeyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UpdateOrganizationAPIKeyRequest) XXX_Size() int { - return xxx_messageInfo_UpdateOrganizationAPIKeyRequest.Size(m) + +func (x *UpdateOrganizationAPIKeyRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UpdateOrganizationAPIKeyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateOrganizationAPIKeyRequest.DiscardUnknown(m) + +func (*UpdateOrganizationAPIKeyRequest) ProtoMessage() {} + +func (x *UpdateOrganizationAPIKeyRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UpdateOrganizationAPIKeyRequest proto.InternalMessageInfo +// Deprecated: Use UpdateOrganizationAPIKeyRequest.ProtoReflect.Descriptor instead. +func (*UpdateOrganizationAPIKeyRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_organization_proto_rawDescGZIP(), []int{9} +} -func (m *UpdateOrganizationAPIKeyRequest) GetOrganizationIds() *OrganizationIdentifiers { - if m != nil { - return m.OrganizationIds +func (x *UpdateOrganizationAPIKeyRequest) GetOrganizationIds() *OrganizationIdentifiers { + if x != nil { + return x.OrganizationIds } return nil } -func (m *UpdateOrganizationAPIKeyRequest) GetApiKey() *APIKey { - if m != nil { - return m.ApiKey +func (x *UpdateOrganizationAPIKeyRequest) GetApiKey() *APIKey { + if x != nil { + return x.ApiKey } return nil } -func (m *UpdateOrganizationAPIKeyRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *UpdateOrganizationAPIKeyRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type ListOrganizationCollaboratorsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + OrganizationIds *OrganizationIdentifiers `protobuf:"bytes,1,opt,name=organization_ids,json=organizationIds,proto3" json:"organization_ids,omitempty"` // Limit the number of results per page. Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` @@ -654,275 +763,698 @@ type ListOrganizationCollaboratorsRequest struct { Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. - Order string `protobuf:"bytes,4,opt,name=order,proto3" json:"order,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Order string `protobuf:"bytes,4,opt,name=order,proto3" json:"order,omitempty"` } -func (m *ListOrganizationCollaboratorsRequest) Reset() { *m = ListOrganizationCollaboratorsRequest{} } -func (m *ListOrganizationCollaboratorsRequest) String() string { return proto.CompactTextString(m) } -func (*ListOrganizationCollaboratorsRequest) ProtoMessage() {} -func (*ListOrganizationCollaboratorsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_312da2e2e650bd3b, []int{10} -} -func (m *ListOrganizationCollaboratorsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListOrganizationCollaboratorsRequest.Unmarshal(m, b) -} -func (m *ListOrganizationCollaboratorsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListOrganizationCollaboratorsRequest.Marshal(b, m, deterministic) -} -func (m *ListOrganizationCollaboratorsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListOrganizationCollaboratorsRequest.Merge(m, src) +func (x *ListOrganizationCollaboratorsRequest) Reset() { + *x = ListOrganizationCollaboratorsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListOrganizationCollaboratorsRequest) XXX_Size() int { - return xxx_messageInfo_ListOrganizationCollaboratorsRequest.Size(m) + +func (x *ListOrganizationCollaboratorsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListOrganizationCollaboratorsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListOrganizationCollaboratorsRequest.DiscardUnknown(m) + +func (*ListOrganizationCollaboratorsRequest) ProtoMessage() {} + +func (x *ListOrganizationCollaboratorsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListOrganizationCollaboratorsRequest proto.InternalMessageInfo +// Deprecated: Use ListOrganizationCollaboratorsRequest.ProtoReflect.Descriptor instead. +func (*ListOrganizationCollaboratorsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_organization_proto_rawDescGZIP(), []int{10} +} -func (m *ListOrganizationCollaboratorsRequest) GetOrganizationIds() *OrganizationIdentifiers { - if m != nil { - return m.OrganizationIds +func (x *ListOrganizationCollaboratorsRequest) GetOrganizationIds() *OrganizationIdentifiers { + if x != nil { + return x.OrganizationIds } return nil } -func (m *ListOrganizationCollaboratorsRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListOrganizationCollaboratorsRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListOrganizationCollaboratorsRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListOrganizationCollaboratorsRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *ListOrganizationCollaboratorsRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListOrganizationCollaboratorsRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } type GetOrganizationCollaboratorRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + OrganizationIds *OrganizationIdentifiers `protobuf:"bytes,1,opt,name=organization_ids,json=organizationIds,proto3" json:"organization_ids,omitempty"` // NOTE: It is currently not possible to have organizations collaborating on // other organizations. - Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Collaborator *OrganizationOrUserIdentifiers `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` } -func (m *GetOrganizationCollaboratorRequest) Reset() { *m = GetOrganizationCollaboratorRequest{} } -func (m *GetOrganizationCollaboratorRequest) String() string { return proto.CompactTextString(m) } -func (*GetOrganizationCollaboratorRequest) ProtoMessage() {} -func (*GetOrganizationCollaboratorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_312da2e2e650bd3b, []int{11} -} -func (m *GetOrganizationCollaboratorRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetOrganizationCollaboratorRequest.Unmarshal(m, b) -} -func (m *GetOrganizationCollaboratorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetOrganizationCollaboratorRequest.Marshal(b, m, deterministic) -} -func (m *GetOrganizationCollaboratorRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetOrganizationCollaboratorRequest.Merge(m, src) +func (x *GetOrganizationCollaboratorRequest) Reset() { + *x = GetOrganizationCollaboratorRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetOrganizationCollaboratorRequest) XXX_Size() int { - return xxx_messageInfo_GetOrganizationCollaboratorRequest.Size(m) + +func (x *GetOrganizationCollaboratorRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetOrganizationCollaboratorRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetOrganizationCollaboratorRequest.DiscardUnknown(m) + +func (*GetOrganizationCollaboratorRequest) ProtoMessage() {} + +func (x *GetOrganizationCollaboratorRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetOrganizationCollaboratorRequest proto.InternalMessageInfo +// Deprecated: Use GetOrganizationCollaboratorRequest.ProtoReflect.Descriptor instead. +func (*GetOrganizationCollaboratorRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_organization_proto_rawDescGZIP(), []int{11} +} -func (m *GetOrganizationCollaboratorRequest) GetOrganizationIds() *OrganizationIdentifiers { - if m != nil { - return m.OrganizationIds +func (x *GetOrganizationCollaboratorRequest) GetOrganizationIds() *OrganizationIdentifiers { + if x != nil { + return x.OrganizationIds } return nil } -func (m *GetOrganizationCollaboratorRequest) GetCollaborator() *OrganizationOrUserIdentifiers { - if m != nil { - return m.Collaborator +func (x *GetOrganizationCollaboratorRequest) GetCollaborator() *OrganizationOrUserIdentifiers { + if x != nil { + return x.Collaborator } return nil } type SetOrganizationCollaboratorRequest struct { - OrganizationIds *OrganizationIdentifiers `protobuf:"bytes,1,opt,name=organization_ids,json=organizationIds,proto3" json:"organization_ids,omitempty"` - Collaborator *Collaborator `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SetOrganizationCollaboratorRequest) Reset() { *m = SetOrganizationCollaboratorRequest{} } -func (m *SetOrganizationCollaboratorRequest) String() string { return proto.CompactTextString(m) } -func (*SetOrganizationCollaboratorRequest) ProtoMessage() {} -func (*SetOrganizationCollaboratorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_312da2e2e650bd3b, []int{12} -} -func (m *SetOrganizationCollaboratorRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetOrganizationCollaboratorRequest.Unmarshal(m, b) -} -func (m *SetOrganizationCollaboratorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetOrganizationCollaboratorRequest.Marshal(b, m, deterministic) + OrganizationIds *OrganizationIdentifiers `protobuf:"bytes,1,opt,name=organization_ids,json=organizationIds,proto3" json:"organization_ids,omitempty"` + Collaborator *Collaborator `protobuf:"bytes,2,opt,name=collaborator,proto3" json:"collaborator,omitempty"` } -func (m *SetOrganizationCollaboratorRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetOrganizationCollaboratorRequest.Merge(m, src) + +func (x *SetOrganizationCollaboratorRequest) Reset() { + *x = SetOrganizationCollaboratorRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SetOrganizationCollaboratorRequest) XXX_Size() int { - return xxx_messageInfo_SetOrganizationCollaboratorRequest.Size(m) + +func (x *SetOrganizationCollaboratorRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SetOrganizationCollaboratorRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetOrganizationCollaboratorRequest.DiscardUnknown(m) + +func (*SetOrganizationCollaboratorRequest) ProtoMessage() {} + +func (x *SetOrganizationCollaboratorRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_organization_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SetOrganizationCollaboratorRequest proto.InternalMessageInfo +// Deprecated: Use SetOrganizationCollaboratorRequest.ProtoReflect.Descriptor instead. +func (*SetOrganizationCollaboratorRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_organization_proto_rawDescGZIP(), []int{12} +} -func (m *SetOrganizationCollaboratorRequest) GetOrganizationIds() *OrganizationIdentifiers { - if m != nil { - return m.OrganizationIds +func (x *SetOrganizationCollaboratorRequest) GetOrganizationIds() *OrganizationIdentifiers { + if x != nil { + return x.OrganizationIds } return nil } -func (m *SetOrganizationCollaboratorRequest) GetCollaborator() *Collaborator { - if m != nil { - return m.Collaborator +func (x *SetOrganizationCollaboratorRequest) GetCollaborator() *Collaborator { + if x != nil { + return x.Collaborator } return nil } -func init() { - proto.RegisterType((*Organization)(nil), "ttn.lorawan.v3.Organization") - golang_proto.RegisterType((*Organization)(nil), "ttn.lorawan.v3.Organization") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.Organization.AttributesEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.Organization.AttributesEntry") - proto.RegisterType((*Organizations)(nil), "ttn.lorawan.v3.Organizations") - golang_proto.RegisterType((*Organizations)(nil), "ttn.lorawan.v3.Organizations") - proto.RegisterType((*GetOrganizationRequest)(nil), "ttn.lorawan.v3.GetOrganizationRequest") - golang_proto.RegisterType((*GetOrganizationRequest)(nil), "ttn.lorawan.v3.GetOrganizationRequest") - proto.RegisterType((*ListOrganizationsRequest)(nil), "ttn.lorawan.v3.ListOrganizationsRequest") - golang_proto.RegisterType((*ListOrganizationsRequest)(nil), "ttn.lorawan.v3.ListOrganizationsRequest") - proto.RegisterType((*CreateOrganizationRequest)(nil), "ttn.lorawan.v3.CreateOrganizationRequest") - golang_proto.RegisterType((*CreateOrganizationRequest)(nil), "ttn.lorawan.v3.CreateOrganizationRequest") - proto.RegisterType((*UpdateOrganizationRequest)(nil), "ttn.lorawan.v3.UpdateOrganizationRequest") - golang_proto.RegisterType((*UpdateOrganizationRequest)(nil), "ttn.lorawan.v3.UpdateOrganizationRequest") - proto.RegisterType((*ListOrganizationAPIKeysRequest)(nil), "ttn.lorawan.v3.ListOrganizationAPIKeysRequest") - golang_proto.RegisterType((*ListOrganizationAPIKeysRequest)(nil), "ttn.lorawan.v3.ListOrganizationAPIKeysRequest") - proto.RegisterType((*GetOrganizationAPIKeyRequest)(nil), "ttn.lorawan.v3.GetOrganizationAPIKeyRequest") - golang_proto.RegisterType((*GetOrganizationAPIKeyRequest)(nil), "ttn.lorawan.v3.GetOrganizationAPIKeyRequest") - proto.RegisterType((*CreateOrganizationAPIKeyRequest)(nil), "ttn.lorawan.v3.CreateOrganizationAPIKeyRequest") - golang_proto.RegisterType((*CreateOrganizationAPIKeyRequest)(nil), "ttn.lorawan.v3.CreateOrganizationAPIKeyRequest") - proto.RegisterType((*UpdateOrganizationAPIKeyRequest)(nil), "ttn.lorawan.v3.UpdateOrganizationAPIKeyRequest") - golang_proto.RegisterType((*UpdateOrganizationAPIKeyRequest)(nil), "ttn.lorawan.v3.UpdateOrganizationAPIKeyRequest") - proto.RegisterType((*ListOrganizationCollaboratorsRequest)(nil), "ttn.lorawan.v3.ListOrganizationCollaboratorsRequest") - golang_proto.RegisterType((*ListOrganizationCollaboratorsRequest)(nil), "ttn.lorawan.v3.ListOrganizationCollaboratorsRequest") - proto.RegisterType((*GetOrganizationCollaboratorRequest)(nil), "ttn.lorawan.v3.GetOrganizationCollaboratorRequest") - golang_proto.RegisterType((*GetOrganizationCollaboratorRequest)(nil), "ttn.lorawan.v3.GetOrganizationCollaboratorRequest") - proto.RegisterType((*SetOrganizationCollaboratorRequest)(nil), "ttn.lorawan.v3.SetOrganizationCollaboratorRequest") - golang_proto.RegisterType((*SetOrganizationCollaboratorRequest)(nil), "ttn.lorawan.v3.SetOrganizationCollaboratorRequest") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/organization.proto", fileDescriptor_312da2e2e650bd3b) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/organization.proto", fileDescriptor_312da2e2e650bd3b) -} - -var fileDescriptor_312da2e2e650bd3b = []byte{ - // 1259 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xcf, 0x6f, 0xdc, 0xc4, - 0x17, 0xcf, 0x78, 0x7f, 0xcf, 0x66, 0xd3, 0xad, 0xf5, 0x6d, 0xe5, 0xa4, 0x51, 0x9a, 0xaf, 0x89, - 0xc4, 0x52, 0xd5, 0x5e, 0xb4, 0x55, 0x05, 0x8d, 0x84, 0xda, 0x38, 0xfc, 0x50, 0x12, 0xaa, 0x56, - 0xd3, 0xf6, 0x40, 0x7f, 0xb0, 0x9a, 0xd8, 0xb3, 0xce, 0x68, 0xbd, 0xb6, 0x19, 0xcf, 0xa6, 0xdd, - 0x22, 0x2e, 0x70, 0xe3, 0x58, 0x6e, 0x1c, 0xe1, 0xd6, 0x1b, 0xf0, 0x0f, 0x70, 0xe0, 0xc0, 0x09, - 0xf1, 0x1f, 0x70, 0xe0, 0xc2, 0x11, 0x2a, 0x71, 0xd9, 0x13, 0xf2, 0xd8, 0xee, 0xce, 0x3a, 0x69, - 0x68, 0x53, 0x75, 0x39, 0xad, 0x9f, 0xe7, 0xf3, 0x3e, 0xf3, 0xde, 0x9b, 0xcf, 0x7b, 0x9e, 0x85, - 0x6b, 0x5e, 0xc0, 0xf0, 0x7d, 0xec, 0x1b, 0x11, 0xc7, 0x76, 0xbf, 0x8d, 0x43, 0xda, 0x0e, 0x98, - 0x8b, 0x7d, 0xfa, 0x10, 0x73, 0x1a, 0xf8, 0x66, 0xc8, 0x02, 0x1e, 0xa8, 0x0b, 0x9c, 0xfb, 0x66, - 0x8a, 0x34, 0xf7, 0x2f, 0x2c, 0xbd, 0xeb, 0x52, 0xbe, 0x37, 0xdc, 0x35, 0xed, 0x60, 0xd0, 0xbe, - 0xb9, 0x47, 0x6e, 0xee, 0x51, 0xdf, 0x8d, 0xb6, 0x7c, 0x67, 0x18, 0x71, 0x46, 0x49, 0xd4, 0x16, - 0x5e, 0xb6, 0xe1, 0x12, 0xdf, 0x70, 0x03, 0xa3, 0xe7, 0x61, 0x37, 0x6a, 0x63, 0xdf, 0x0f, 0xb8, - 0x20, 0x8d, 0x12, 0xd6, 0xa5, 0x0d, 0x89, 0x85, 0xf8, 0xfb, 0xc1, 0x28, 0x64, 0xc1, 0x83, 0x91, - 0xec, 0xbc, 0x8f, 0x3d, 0xea, 0x60, 0x4e, 0xda, 0x07, 0x1e, 0x52, 0x0a, 0x43, 0xa2, 0x70, 0x03, - 0x37, 0x48, 0x9c, 0x77, 0x87, 0x3d, 0x61, 0x09, 0x43, 0x3c, 0xa5, 0xf0, 0x55, 0x37, 0x08, 0x5c, - 0x8f, 0x4c, 0x50, 0x3d, 0x4a, 0x3c, 0xa7, 0x3b, 0xc0, 0x51, 0x3f, 0x45, 0x9c, 0xcd, 0x23, 0x38, - 0x1d, 0x90, 0x88, 0xe3, 0x41, 0x98, 0x02, 0x0e, 0x29, 0x98, 0x1d, 0xf8, 0x1c, 0xdb, 0xbc, 0x4b, - 0xfd, 0x5e, 0xb6, 0xd1, 0x6b, 0x07, 0x51, 0xd4, 0x21, 0x3e, 0xa7, 0x3d, 0x4a, 0x58, 0x96, 0xff, - 0xca, 0x41, 0x10, 0xa3, 0xee, 0x1e, 0x4f, 0xd7, 0xf5, 0x47, 0x15, 0x38, 0x7f, 0x4d, 0x3a, 0x0c, - 0x75, 0x07, 0x16, 0xa8, 0x13, 0x69, 0x60, 0x15, 0xb4, 0xea, 0x9d, 0xd7, 0xcd, 0xe9, 0x43, 0x31, - 0x65, 0xe8, 0xd6, 0x64, 0x33, 0xab, 0x39, 0xb6, 0x4a, 0x5f, 0x02, 0xa5, 0x09, 0x9e, 0x3c, 0x5e, - 0x2c, 0x56, 0xe7, 0x5a, 0x00, 0xc5, 0x2c, 0xea, 0x26, 0x84, 0x36, 0x23, 0x98, 0x13, 0xa7, 0x8b, - 0xb9, 0xa6, 0x08, 0xce, 0x25, 0x33, 0x49, 0xdf, 0xcc, 0xd2, 0x37, 0x6f, 0x66, 0xe9, 0x5b, 0xd5, - 0xc4, 0xbd, 0x39, 0x87, 0x6a, 0xa9, 0xdf, 0x06, 0x8f, 0x49, 0x86, 0xa1, 0x93, 0x91, 0x14, 0x5e, - 0x84, 0x24, 0xf5, 0x4b, 0x48, 0x1c, 0xe2, 0x91, 0x94, 0xa4, 0xfa, 0x9c, 0x24, 0x20, 0x26, 0x49, - 0xfd, 0x36, 0xb8, 0x7a, 0x06, 0x16, 0x7d, 0x3c, 0x20, 0x5a, 0x71, 0x15, 0xb4, 0x6a, 0x56, 0x65, - 0x6c, 0x15, 0x99, 0xa2, 0x75, 0x90, 0x78, 0xa9, 0x9e, 0x83, 0x75, 0x87, 0x44, 0x36, 0xa3, 0x61, - 0x5c, 0x1c, 0xad, 0x24, 0x30, 0xd5, 0xb1, 0x55, 0x62, 0x05, 0xed, 0xd7, 0x13, 0x48, 0x5e, 0x54, - 0xbf, 0x00, 0x10, 0x62, 0xce, 0x19, 0xdd, 0x1d, 0x72, 0x12, 0x69, 0xe5, 0xd5, 0x42, 0xab, 0xde, - 0x39, 0x7f, 0x54, 0xb1, 0xcd, 0x8d, 0xa7, 0xf0, 0xf7, 0x7c, 0xce, 0x46, 0xd6, 0xc5, 0xb1, 0xd5, - 0xf9, 0x1a, 0xb4, 0x9b, 0x50, 0x5f, 0x63, 0xba, 0xb6, 0xd6, 0x59, 0xf9, 0xf8, 0x0e, 0x36, 0x1e, - 0xbe, 0x69, 0x5c, 0xba, 0xd7, 0xba, 0xbc, 0x7e, 0xc7, 0xb8, 0x77, 0x39, 0x33, 0xdf, 0xf8, 0xb4, - 0x73, 0xfe, 0xb3, 0xb5, 0x73, 0x71, 0x18, 0x3f, 0x03, 0x24, 0x6d, 0xab, 0x6e, 0xc3, 0x79, 0x59, - 0x56, 0x5a, 0x45, 0x84, 0x71, 0x26, 0x1f, 0xc6, 0x66, 0x82, 0xd9, 0xf2, 0x7b, 0x81, 0x05, 0xc7, - 0x56, 0xe9, 0x11, 0x50, 0x9a, 0x50, 0x03, 0xa8, 0x6e, 0x4f, 0x16, 0x54, 0x07, 0x9e, 0xc6, 0xce, - 0x80, 0xfa, 0x34, 0xe2, 0x0c, 0x73, 0xba, 0x4f, 0xba, 0xe9, 0xaa, 0x56, 0x13, 0xb5, 0x36, 0x8e, - 0x4a, 0xee, 0x1a, 0xbb, 0x15, 0x11, 0x26, 0xe9, 0x09, 0x9d, 0x9a, 0x26, 0x4b, 0x43, 0x50, 0x6f, - 0xc3, 0x93, 0x9c, 0xd8, 0x7b, 0x3e, 0xb5, 0xb1, 0xf7, 0x74, 0x03, 0x78, 0x9c, 0x0d, 0x9a, 0x4f, - 0x79, 0x52, 0xee, 0xa5, 0x77, 0xe0, 0x89, 0x5c, 0x8d, 0xd5, 0x26, 0x2c, 0xf4, 0xc9, 0x48, 0xf4, - 0x42, 0x0d, 0xc5, 0x8f, 0xea, 0xff, 0x60, 0x69, 0x1f, 0x7b, 0x43, 0x22, 0xb4, 0x5c, 0x43, 0x89, - 0xb1, 0xae, 0xbc, 0x0d, 0xd6, 0x33, 0xc1, 0x80, 0xed, 0x62, 0xb5, 0xde, 0x9c, 0xdf, 0x2e, 0x56, - 0xe7, 0x9b, 0x8d, 0xed, 0x62, 0xb5, 0xd1, 0x5c, 0x40, 0x27, 0x71, 0x18, 0x7a, 0xd4, 0x16, 0xa1, - 0x74, 0x3d, 0x3a, 0xa0, 0x1c, 0xcd, 0xdb, 0x1e, 0x25, 0x3e, 0x4f, 0xad, 0x86, 0x8b, 0x39, 0xb9, - 0x8f, 0x47, 0x89, 0xa9, 0xdf, 0x80, 0x0d, 0x39, 0xfa, 0x48, 0xb5, 0x60, 0x43, 0x9e, 0x98, 0x71, - 0x7b, 0xc6, 0x47, 0xb5, 0x7c, 0x54, 0xce, 0x68, 0xda, 0x45, 0xff, 0x0e, 0xc0, 0xd3, 0x1f, 0x10, - 0x3e, 0x05, 0x21, 0x9f, 0x0c, 0x49, 0xc4, 0xd5, 0xbb, 0xb0, 0x29, 0x63, 0xbb, 0xc7, 0x18, 0x00, - 0xd5, 0x6c, 0x00, 0xa0, 0x13, 0xc1, 0x14, 0x24, 0x52, 0x2f, 0x41, 0x38, 0x19, 0x81, 0xcf, 0x1c, - 0x02, 0xef, 0xc7, 0x90, 0xab, 0x38, 0xea, 0xa3, 0x5a, 0x2f, 0x7b, 0xd4, 0xff, 0x54, 0xa0, 0xf6, - 0x21, 0x8d, 0xa6, 0x82, 0x8e, 0xb2, 0xa8, 0x3f, 0x8a, 0xe5, 0xeb, 0x79, 0x78, 0x37, 0x60, 0x98, - 0x07, 0x2c, 0x8d, 0xf8, 0xc5, 0x74, 0x60, 0x95, 0x9f, 0x3c, 0x5e, 0x54, 0x5a, 0x00, 0x4d, 0x51, - 0xbd, 0x44, 0xc8, 0x6a, 0x0f, 0x96, 0x02, 0xe6, 0x10, 0x26, 0x06, 0x55, 0xcd, 0xba, 0x3e, 0xb6, - 0xae, 0xb2, 0x1d, 0x34, 0x37, 0x5d, 0x96, 0x2e, 0x75, 0x50, 0xd3, 0xc8, 0xbf, 0x11, 0x73, 0x04, - 0x95, 0x0c, 0xf1, 0x23, 0x0d, 0x4e, 0x54, 0x37, 0x24, 0x23, 0xa1, 0x57, 0x57, 0x60, 0x49, 0x88, - 0x45, 0x0c, 0xa3, 0x86, 0xa8, 0xff, 0xb9, 0x82, 0xf6, 0x47, 0x05, 0x25, 0xaf, 0x55, 0x15, 0x16, - 0x43, 0xec, 0x12, 0x31, 0x87, 0x1a, 0x48, 0x3c, 0xab, 0x1a, 0xac, 0xa4, 0xc3, 0x4c, 0x2b, 0xaf, - 0x82, 0x56, 0x15, 0x65, 0xe6, 0x7a, 0x36, 0x33, 0x81, 0xfe, 0x13, 0x80, 0x8b, 0x9b, 0x62, 0xb7, - 0xc3, 0x94, 0xb2, 0x0d, 0xe7, 0xe5, 0xa8, 0xd3, 0x9a, 0x1f, 0xa9, 0x43, 0x49, 0x1a, 0x53, 0xbe, - 0xea, 0x9d, 0xdc, 0xf9, 0x29, 0xc7, 0x39, 0x3f, 0x89, 0x5c, 0x26, 0xd3, 0xbf, 0x01, 0x70, 0xf1, - 0x96, 0x98, 0xfe, 0xaf, 0x3a, 0x8d, 0x97, 0x90, 0xf7, 0x0f, 0x0a, 0x5c, 0xc9, 0xcb, 0x7b, 0xe3, - 0xfa, 0xd6, 0x0e, 0x19, 0x45, 0xb3, 0x69, 0xcd, 0x61, 0x26, 0xd6, 0xe4, 0x8b, 0xd6, 0x1d, 0x5b, - 0x77, 0xd9, 0x6d, 0x34, 0x87, 0x20, 0x0e, 0x69, 0xb7, 0x4f, 0x46, 0xb1, 0x2a, 0xeb, 0x86, 0x64, - 0x3c, 0x9f, 0x44, 0x21, 0x79, 0x10, 0x52, 0x46, 0xa2, 0x64, 0x41, 0x32, 0xf2, 0xda, 0x55, 0x8e, - 0xd6, 0x6e, 0x61, 0xa2, 0x5d, 0x49, 0xa1, 0x5f, 0x01, 0xb8, 0x9c, 0x1b, 0x64, 0x49, 0xd1, 0x66, - 0x53, 0xb3, 0x53, 0xb0, 0x9c, 0x14, 0x23, 0xfb, 0x06, 0xf4, 0xc9, 0x68, 0xcb, 0xd1, 0xbf, 0x55, - 0xe0, 0xd9, 0x83, 0x7d, 0x33, 0xcb, 0xc0, 0xb2, 0xdb, 0x89, 0x72, 0xd8, 0xed, 0xe4, 0x0a, 0x2c, - 0x27, 0xf7, 0x3e, 0xad, 0xb0, 0x5a, 0x68, 0x2d, 0x74, 0x4e, 0xe5, 0x37, 0x44, 0xf1, 0xaa, 0x75, - 0x72, 0x6c, 0x2d, 0x3c, 0x02, 0xf5, 0x2a, 0xd0, 0x80, 0x5e, 0xfa, 0x5c, 0xec, 0x93, 0xfa, 0xc5, - 0x37, 0xa8, 0xc9, 0x49, 0x0a, 0xc1, 0xfc, 0xcb, 0x0d, 0x6a, 0x6c, 0x95, 0xbe, 0x07, 0xca, 0x15, - 0x80, 0x6a, 0xa9, 0xdf, 0x06, 0xd7, 0xff, 0x06, 0xf0, 0xec, 0xc1, 0xb6, 0x9c, 0x65, 0x95, 0x2e, - 0xc1, 0x4a, 0xaa, 0xe7, 0xb4, 0x57, 0x4f, 0xe7, 0x49, 0x93, 0x68, 0x24, 0x8e, 0x32, 0x0e, 0xe9, - 0x0e, 0x19, 0xe5, 0x3a, 0xbd, 0xf0, 0x22, 0x9d, 0xfe, 0x17, 0x80, 0x6b, 0xf9, 0x4e, 0xdf, 0x94, - 0xe6, 0xd5, 0x8c, 0xfa, 0xfd, 0x18, 0x8d, 0xa7, 0xbe, 0x35, 0x3d, 0x23, 0xfe, 0x3f, 0xb6, 0x56, - 0xd8, 0x32, 0x9a, 0x43, 0x0a, 0x75, 0x50, 0xc1, 0xa0, 0x0e, 0xaa, 0x18, 0x89, 0x42, 0x32, 0xa5, - 0xa4, 0x5d, 0xae, 0xff, 0x06, 0xa0, 0x9e, 0xeb, 0x53, 0x39, 0xe5, 0xd9, 0x64, 0xfc, 0x4a, 0x3f, - 0x32, 0xbf, 0x00, 0xa8, 0xdf, 0xf8, 0xaf, 0x33, 0xdc, 0x3e, 0x34, 0xc3, 0xe5, 0x83, 0xb7, 0xf8, - 0x09, 0xe6, 0x59, 0x09, 0x59, 0x17, 0x7f, 0xfc, 0x7d, 0x05, 0xdc, 0x6e, 0xbb, 0x81, 0xc9, 0xf7, - 0x08, 0x17, 0xff, 0xb8, 0x4d, 0x9f, 0xf0, 0xfb, 0x01, 0xeb, 0xb7, 0xa7, 0xff, 0x48, 0xee, 0x5f, - 0x68, 0x87, 0x7d, 0xb7, 0xcd, 0xb9, 0x1f, 0xee, 0xee, 0x96, 0x85, 0xf8, 0x2f, 0xfc, 0x13, 0x00, - 0x00, 0xff, 0xff, 0x0c, 0xe7, 0xcc, 0x55, 0xe9, 0x0f, 0x00, 0x00, +var File_lorawan_stack_api_organization_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_organization_proto_rawDesc = []byte{ + 0x0a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, + 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, + 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, + 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x92, 0x07, 0x0a, + 0x0c, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, + 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, + 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x52, 0x09, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x83, 0x01, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, + 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, + 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, + 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x64, 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, + 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x52, 0x15, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x5a, 0x0a, 0x11, 0x74, 0x65, + 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x52, 0x10, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, + 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x0d, 0x10, + 0x0e, 0x52, 0x11, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x52, 0x0d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x22, 0x53, 0x0a, 0x0d, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb1, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x5c, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, + 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, + 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xf0, 0x02, 0x0a, 0x18, 0x4c, + 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x06, 0xf2, 0xaa, + 0x19, 0x02, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x66, 0x0a, + 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50, 0xfa, 0x42, + 0x4d, 0x72, 0x4b, 0x52, 0x00, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x52, 0x10, 0x2d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, + 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xc4, 0x01, + 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0c, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x22, 0xa2, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, + 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xb3, 0x02, 0x0a, 0x1e, 0x4c, 0x69, + 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, + 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x10, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x75, 0x0a, 0x05, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x5f, 0xfa, 0x42, 0x5c, 0x72, 0x5a, + 0x52, 0x00, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x0b, + 0x2d, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, + 0x93, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x5c, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x15, + 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x6b, 0x65, 0x79, 0x49, 0x64, 0x22, 0xa3, 0x02, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, + 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x10, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x11, 0xfa, 0x42, 0x0e, + 0x92, 0x01, 0x0b, 0x08, 0x01, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x73, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x40, 0x01, + 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0xf5, 0x01, 0x0a, 0x1f, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x5c, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, + 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x22, 0xf1, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x10, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, + 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x37, + 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xfa, + 0x42, 0x1e, 0x72, 0x1c, 0x52, 0x00, 0x52, 0x02, 0x69, 0x64, 0x52, 0x03, 0x2d, 0x69, 0x64, 0x52, + 0x07, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xdf, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, + 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x5b, 0x0a, 0x0c, + 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xce, 0x01, 0x0a, 0x22, 0x53, 0x65, + 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x5c, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x4a, + 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, + 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_organization_proto_rawDescOnce sync.Once + file_lorawan_stack_api_organization_proto_rawDescData = file_lorawan_stack_api_organization_proto_rawDesc +) + +func file_lorawan_stack_api_organization_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_organization_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_organization_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_organization_proto_rawDescData) + }) + return file_lorawan_stack_api_organization_proto_rawDescData +} + +var file_lorawan_stack_api_organization_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_lorawan_stack_api_organization_proto_goTypes = []interface{}{ + (*Organization)(nil), // 0: ttn.lorawan.v3.Organization + (*Organizations)(nil), // 1: ttn.lorawan.v3.Organizations + (*GetOrganizationRequest)(nil), // 2: ttn.lorawan.v3.GetOrganizationRequest + (*ListOrganizationsRequest)(nil), // 3: ttn.lorawan.v3.ListOrganizationsRequest + (*CreateOrganizationRequest)(nil), // 4: ttn.lorawan.v3.CreateOrganizationRequest + (*UpdateOrganizationRequest)(nil), // 5: ttn.lorawan.v3.UpdateOrganizationRequest + (*ListOrganizationAPIKeysRequest)(nil), // 6: ttn.lorawan.v3.ListOrganizationAPIKeysRequest + (*GetOrganizationAPIKeyRequest)(nil), // 7: ttn.lorawan.v3.GetOrganizationAPIKeyRequest + (*CreateOrganizationAPIKeyRequest)(nil), // 8: ttn.lorawan.v3.CreateOrganizationAPIKeyRequest + (*UpdateOrganizationAPIKeyRequest)(nil), // 9: ttn.lorawan.v3.UpdateOrganizationAPIKeyRequest + (*ListOrganizationCollaboratorsRequest)(nil), // 10: ttn.lorawan.v3.ListOrganizationCollaboratorsRequest + (*GetOrganizationCollaboratorRequest)(nil), // 11: ttn.lorawan.v3.GetOrganizationCollaboratorRequest + (*SetOrganizationCollaboratorRequest)(nil), // 12: ttn.lorawan.v3.SetOrganizationCollaboratorRequest + nil, // 13: ttn.lorawan.v3.Organization.AttributesEntry + (*OrganizationIdentifiers)(nil), // 14: ttn.lorawan.v3.OrganizationIdentifiers + (*timestamppb.Timestamp)(nil), // 15: google.protobuf.Timestamp + (*ContactInfo)(nil), // 16: ttn.lorawan.v3.ContactInfo + (*OrganizationOrUserIdentifiers)(nil), // 17: ttn.lorawan.v3.OrganizationOrUserIdentifiers + (*fieldmaskpb.FieldMask)(nil), // 18: google.protobuf.FieldMask + (Right)(0), // 19: ttn.lorawan.v3.Right + (*APIKey)(nil), // 20: ttn.lorawan.v3.APIKey + (*Collaborator)(nil), // 21: ttn.lorawan.v3.Collaborator +} +var file_lorawan_stack_api_organization_proto_depIdxs = []int32{ + 14, // 0: ttn.lorawan.v3.Organization.ids:type_name -> ttn.lorawan.v3.OrganizationIdentifiers + 15, // 1: ttn.lorawan.v3.Organization.created_at:type_name -> google.protobuf.Timestamp + 15, // 2: ttn.lorawan.v3.Organization.updated_at:type_name -> google.protobuf.Timestamp + 15, // 3: ttn.lorawan.v3.Organization.deleted_at:type_name -> google.protobuf.Timestamp + 13, // 4: ttn.lorawan.v3.Organization.attributes:type_name -> ttn.lorawan.v3.Organization.AttributesEntry + 16, // 5: ttn.lorawan.v3.Organization.contact_info:type_name -> ttn.lorawan.v3.ContactInfo + 17, // 6: ttn.lorawan.v3.Organization.administrative_contact:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 17, // 7: ttn.lorawan.v3.Organization.technical_contact:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 0, // 8: ttn.lorawan.v3.Organizations.organizations:type_name -> ttn.lorawan.v3.Organization + 14, // 9: ttn.lorawan.v3.GetOrganizationRequest.organization_ids:type_name -> ttn.lorawan.v3.OrganizationIdentifiers + 18, // 10: ttn.lorawan.v3.GetOrganizationRequest.field_mask:type_name -> google.protobuf.FieldMask + 17, // 11: ttn.lorawan.v3.ListOrganizationsRequest.collaborator:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 18, // 12: ttn.lorawan.v3.ListOrganizationsRequest.field_mask:type_name -> google.protobuf.FieldMask + 0, // 13: ttn.lorawan.v3.CreateOrganizationRequest.organization:type_name -> ttn.lorawan.v3.Organization + 17, // 14: ttn.lorawan.v3.CreateOrganizationRequest.collaborator:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 0, // 15: ttn.lorawan.v3.UpdateOrganizationRequest.organization:type_name -> ttn.lorawan.v3.Organization + 18, // 16: ttn.lorawan.v3.UpdateOrganizationRequest.field_mask:type_name -> google.protobuf.FieldMask + 14, // 17: ttn.lorawan.v3.ListOrganizationAPIKeysRequest.organization_ids:type_name -> ttn.lorawan.v3.OrganizationIdentifiers + 14, // 18: ttn.lorawan.v3.GetOrganizationAPIKeyRequest.organization_ids:type_name -> ttn.lorawan.v3.OrganizationIdentifiers + 14, // 19: ttn.lorawan.v3.CreateOrganizationAPIKeyRequest.organization_ids:type_name -> ttn.lorawan.v3.OrganizationIdentifiers + 19, // 20: ttn.lorawan.v3.CreateOrganizationAPIKeyRequest.rights:type_name -> ttn.lorawan.v3.Right + 15, // 21: ttn.lorawan.v3.CreateOrganizationAPIKeyRequest.expires_at:type_name -> google.protobuf.Timestamp + 14, // 22: ttn.lorawan.v3.UpdateOrganizationAPIKeyRequest.organization_ids:type_name -> ttn.lorawan.v3.OrganizationIdentifiers + 20, // 23: ttn.lorawan.v3.UpdateOrganizationAPIKeyRequest.api_key:type_name -> ttn.lorawan.v3.APIKey + 18, // 24: ttn.lorawan.v3.UpdateOrganizationAPIKeyRequest.field_mask:type_name -> google.protobuf.FieldMask + 14, // 25: ttn.lorawan.v3.ListOrganizationCollaboratorsRequest.organization_ids:type_name -> ttn.lorawan.v3.OrganizationIdentifiers + 14, // 26: ttn.lorawan.v3.GetOrganizationCollaboratorRequest.organization_ids:type_name -> ttn.lorawan.v3.OrganizationIdentifiers + 17, // 27: ttn.lorawan.v3.GetOrganizationCollaboratorRequest.collaborator:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 14, // 28: ttn.lorawan.v3.SetOrganizationCollaboratorRequest.organization_ids:type_name -> ttn.lorawan.v3.OrganizationIdentifiers + 21, // 29: ttn.lorawan.v3.SetOrganizationCollaboratorRequest.collaborator:type_name -> ttn.lorawan.v3.Collaborator + 30, // [30:30] is the sub-list for method output_type + 30, // [30:30] is the sub-list for method input_type + 30, // [30:30] is the sub-list for extension type_name + 30, // [30:30] is the sub-list for extension extendee + 0, // [0:30] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_organization_proto_init() } +func file_lorawan_stack_api_organization_proto_init() { + if File_lorawan_stack_api_organization_proto != nil { + return + } + file_lorawan_stack_api_contact_info_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_rights_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_organization_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Organization); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_organization_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Organizations); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_organization_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOrganizationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_organization_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListOrganizationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_organization_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateOrganizationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_organization_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateOrganizationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_organization_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListOrganizationAPIKeysRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_organization_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOrganizationAPIKeyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_organization_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateOrganizationAPIKeyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_organization_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateOrganizationAPIKeyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_organization_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListOrganizationCollaboratorsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_organization_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOrganizationCollaboratorRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_organization_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetOrganizationCollaboratorRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_organization_proto_rawDesc, + NumEnums: 0, + NumMessages: 14, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_organization_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_organization_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_organization_proto_msgTypes, + }.Build() + File_lorawan_stack_api_organization_proto = out.File + file_lorawan_stack_api_organization_proto_rawDesc = nil + file_lorawan_stack_api_organization_proto_goTypes = nil + file_lorawan_stack_api_organization_proto_depIdxs = nil } diff --git a/pkg/ttnpb/organization.pb.validate.go b/pkg/ttnpb/organization.pb.validate.go index c889dd3e8d..ec3d1aff3d 100644 --- a/pkg/ttnpb/organization.pb.validate.go +++ b/pkg/ttnpb/organization.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _organization_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on Organization with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. @@ -1165,7 +1162,7 @@ func (m *CreateOrganizationAPIKeyRequest) ValidateFields(paths ...string) error case "expires_at": if t := m.GetExpiresAt(); t != nil { - ts, err := types.TimestampFromProto(t) + ts, err := t.AsTime(), t.CheckValid() if err != nil { return CreateOrganizationAPIKeyRequestValidationError{ field: "expires_at", diff --git a/pkg/ttnpb/organization_flags.pb.go b/pkg/ttnpb/organization_flags.pb.go index 94cf2938ca..cd8b5fff77 100644 --- a/pkg/ttnpb/organization_flags.pb.go +++ b/pkg/ttnpb/organization_flags.pb.go @@ -1,14 +1,14 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/organization.proto package ttnpb import ( flagsplugin "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - gogo "github.com/TheThingsIndustries/protoc-gen-go-flags/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-flags/golang" pflag "github.com/spf13/pflag" ) @@ -165,7 +165,7 @@ func (m *ListOrganizationsRequest) SetFromFlags(flags *pflag.FlagSet, prefix str if val, changed, err := flagsplugin.GetStringSlice(flags, flagsplugin.Prefix("field_mask", prefix)); err != nil { return nil, err } else if changed { - m.FieldMask = gogo.SetFieldMask(val) + m.FieldMask = golang.SetFieldMask(val) paths = append(paths, flagsplugin.Prefix("field_mask", prefix)) } if val, changed, err := flagsplugin.GetString(flags, flagsplugin.Prefix("order", prefix)); err != nil { diff --git a/pkg/ttnpb/organization_json.pb.go b/pkg/ttnpb/organization_json.pb.go index fd8e7da92a..0c7442778e 100644 --- a/pkg/ttnpb/organization_json.pb.go +++ b/pkg/ttnpb/organization_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/organization.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" ) @@ -23,7 +23,7 @@ func (x *Organization) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("ids") // NOTE: OrganizationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Ids) + golang.MarshalMessage(s, x.Ids) } if x.CreatedAt != nil || s.HasField("created_at") { s.WriteMoreIf(&wroteField) @@ -31,7 +31,7 @@ func (x *Organization) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.CreatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.CreatedAt) + golang.MarshalTimestamp(s, x.CreatedAt) } } if x.UpdatedAt != nil || s.HasField("updated_at") { @@ -40,7 +40,7 @@ func (x *Organization) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.UpdatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.UpdatedAt) + golang.MarshalTimestamp(s, x.UpdatedAt) } } if x.DeletedAt != nil || s.HasField("deleted_at") { @@ -49,7 +49,7 @@ func (x *Organization) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.DeletedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.DeletedAt) + golang.MarshalTimestamp(s, x.DeletedAt) } } if x.Name != "" || s.HasField("name") { @@ -89,13 +89,13 @@ func (x *Organization) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("administrative_contact") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.AdministrativeContact) + golang.MarshalMessage(s, x.AdministrativeContact) } if x.TechnicalContact != nil || s.HasField("technical_contact") { s.WriteMoreIf(&wroteField) s.WriteObjectField("technical_contact") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.TechnicalContact) + golang.MarshalMessage(s, x.TechnicalContact) } s.WriteObjectEnd() } @@ -122,7 +122,7 @@ func (x *Organization) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: OrganizationIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Ids = &v case "created_at", "createdAt": s.AddField("created_at") @@ -130,7 +130,7 @@ func (x *Organization) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.CreatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -141,7 +141,7 @@ func (x *Organization) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.UpdatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -152,7 +152,7 @@ func (x *Organization) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.DeletedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -199,7 +199,7 @@ func (x *Organization) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.AdministrativeContact = &v case "technical_contact", "technicalContact": s.AddField("technical_contact") @@ -209,7 +209,7 @@ func (x *Organization) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.TechnicalContact = &v } }) @@ -283,6 +283,178 @@ func (x *Organizations) UnmarshalJSON(b []byte) error { return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) } +// MarshalProtoJSON marshals the GetOrganizationRequest message to JSON. +func (x *GetOrganizationRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.OrganizationIds != nil || s.HasField("organization_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("organization_ids") + // NOTE: OrganizationIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.OrganizationIds) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the GetOrganizationRequest to JSON. +func (x *GetOrganizationRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the GetOrganizationRequest message from JSON. +func (x *GetOrganizationRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "organization_ids", "organizationIds": + s.AddField("organization_ids") + if s.ReadNil() { + x.OrganizationIds = nil + return + } + // NOTE: OrganizationIdentifiers does not seem to implement UnmarshalProtoJSON. + var v OrganizationIdentifiers + golang.UnmarshalMessage(s, &v) + x.OrganizationIds = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the GetOrganizationRequest from JSON. +func (x *GetOrganizationRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the ListOrganizationsRequest message to JSON. +func (x *ListOrganizationsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Collaborator != nil || s.HasField("collaborator") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("collaborator") + // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.Collaborator) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + if x.Order != "" || s.HasField("order") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("order") + s.WriteString(x.Order) + } + if x.Limit != 0 || s.HasField("limit") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("limit") + s.WriteUint32(x.Limit) + } + if x.Page != 0 || s.HasField("page") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("page") + s.WriteUint32(x.Page) + } + if x.Deleted || s.HasField("deleted") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("deleted") + s.WriteBool(x.Deleted) + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the ListOrganizationsRequest to JSON. +func (x *ListOrganizationsRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the ListOrganizationsRequest message from JSON. +func (x *ListOrganizationsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "collaborator": + s.AddField("collaborator") + if s.ReadNil() { + x.Collaborator = nil + return + } + // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. + var v OrganizationOrUserIdentifiers + golang.UnmarshalMessage(s, &v) + x.Collaborator = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + case "order": + s.AddField("order") + x.Order = s.ReadString() + case "limit": + s.AddField("limit") + x.Limit = s.ReadUint32() + case "page": + s.AddField("page") + x.Page = s.ReadUint32() + case "deleted": + s.AddField("deleted") + x.Deleted = s.ReadBool() + } + }) +} + +// UnmarshalJSON unmarshals the ListOrganizationsRequest from JSON. +func (x *ListOrganizationsRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + // MarshalProtoJSON marshals the CreateOrganizationRequest message to JSON. func (x *CreateOrganizationRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x == nil { @@ -300,7 +472,7 @@ func (x *CreateOrganizationRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) s.WriteMoreIf(&wroteField) s.WriteObjectField("collaborator") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Collaborator) + golang.MarshalMessage(s, x.Collaborator) } s.WriteObjectEnd() } @@ -334,7 +506,7 @@ func (x *CreateOrganizationRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalSt } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Collaborator = &v } }) @@ -364,7 +536,7 @@ func (x *UpdateOrganizationRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -397,7 +569,7 @@ func (x *UpdateOrganizationRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalSt x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -423,7 +595,7 @@ func (x *CreateOrganizationAPIKeyRequest) MarshalProtoJSON(s *jsonplugin.Marshal s.WriteMoreIf(&wroteField) s.WriteObjectField("organization_ids") // NOTE: OrganizationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.OrganizationIds) + golang.MarshalMessage(s, x.OrganizationIds) } if x.Name != "" || s.HasField("name") { s.WriteMoreIf(&wroteField) @@ -447,7 +619,7 @@ func (x *CreateOrganizationAPIKeyRequest) MarshalProtoJSON(s *jsonplugin.Marshal if x.ExpiresAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ExpiresAt) + golang.MarshalTimestamp(s, x.ExpiresAt) } } s.WriteObjectEnd() @@ -475,7 +647,7 @@ func (x *CreateOrganizationAPIKeyRequest) UnmarshalProtoJSON(s *jsonplugin.Unmar } // NOTE: OrganizationIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.OrganizationIds = &v case "name": s.AddField("name") @@ -497,7 +669,7 @@ func (x *CreateOrganizationAPIKeyRequest) UnmarshalProtoJSON(s *jsonplugin.Unmar x.ExpiresAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -523,7 +695,7 @@ func (x *UpdateOrganizationAPIKeyRequest) MarshalProtoJSON(s *jsonplugin.Marshal s.WriteMoreIf(&wroteField) s.WriteObjectField("organization_ids") // NOTE: OrganizationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.OrganizationIds) + golang.MarshalMessage(s, x.OrganizationIds) } if x.ApiKey != nil || s.HasField("api_key") { s.WriteMoreIf(&wroteField) @@ -536,7 +708,7 @@ func (x *UpdateOrganizationAPIKeyRequest) MarshalProtoJSON(s *jsonplugin.Marshal if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -564,7 +736,7 @@ func (x *UpdateOrganizationAPIKeyRequest) UnmarshalProtoJSON(s *jsonplugin.Unmar } // NOTE: OrganizationIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.OrganizationIds = &v case "api_key", "apiKey": if s.ReadNil() { @@ -579,7 +751,7 @@ func (x *UpdateOrganizationAPIKeyRequest) UnmarshalProtoJSON(s *jsonplugin.Unmar x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -605,7 +777,7 @@ func (x *SetOrganizationCollaboratorRequest) MarshalProtoJSON(s *jsonplugin.Mars s.WriteMoreIf(&wroteField) s.WriteObjectField("organization_ids") // NOTE: OrganizationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.OrganizationIds) + golang.MarshalMessage(s, x.OrganizationIds) } if x.Collaborator != nil || s.HasField("collaborator") { s.WriteMoreIf(&wroteField) @@ -637,7 +809,7 @@ func (x *SetOrganizationCollaboratorRequest) UnmarshalProtoJSON(s *jsonplugin.Un } // NOTE: OrganizationIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.OrganizationIds = &v case "collaborator": if s.ReadNil() { diff --git a/pkg/ttnpb/organization_services.pb.go b/pkg/ttnpb/organization_services.pb.go index b926089567..d936821fe0 100644 --- a/pkg/ttnpb/organization_services.pb.go +++ b/pkg/ttnpb/organization_services.pb.go @@ -1,781 +1,298 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/organization_services.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + reflect "reflect" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -func init() { - proto.RegisterFile("lorawan-stack/api/organization_services.proto", fileDescriptor_1a990e3af7846fd3) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/organization_services.proto", fileDescriptor_1a990e3af7846fd3) -} - -var fileDescriptor_1a990e3af7846fd3 = []byte{ - // 760 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0xcf, 0x4f, 0x13, 0x41, - 0x14, 0xc7, 0xb3, 0xfe, 0x28, 0x71, 0x24, 0x10, 0x27, 0x46, 0x93, 0x15, 0x89, 0x59, 0x0d, 0x94, - 0xc6, 0xce, 0x28, 0x45, 0x12, 0x08, 0x09, 0xe1, 0x57, 0x2a, 0x42, 0x94, 0x94, 0x78, 0xe1, 0x42, - 0xb6, 0xe5, 0xb1, 0x9d, 0xb4, 0xec, 0xac, 0x33, 0x53, 0xb0, 0x22, 0x1e, 0x3c, 0x78, 0x35, 0xd1, - 0x9b, 0x07, 0x3d, 0x1b, 0x4f, 0xfe, 0x07, 0xfe, 0x0f, 0xc6, 0xa3, 0x07, 0xa3, 0x7f, 0x88, 0xd9, - 0xd9, 0x5d, 0xdd, 0x6d, 0x4b, 0x97, 0x52, 0x6e, 0xdd, 0xd9, 0x37, 0xef, 0xfb, 0x79, 0x6f, 0xe6, - 0x7d, 0xb7, 0x28, 0x5f, 0xe7, 0xc2, 0x3e, 0xb0, 0xdd, 0xbc, 0x54, 0x76, 0xa5, 0x46, 0x6d, 0x8f, - 0x51, 0x2e, 0x1c, 0xdb, 0x65, 0x2f, 0x6c, 0xc5, 0xb8, 0xbb, 0x2d, 0x41, 0xec, 0xb3, 0x0a, 0x48, - 0xe2, 0x09, 0xae, 0x38, 0x1e, 0x52, 0xca, 0x25, 0xe1, 0x16, 0xb2, 0x5f, 0x30, 0xf3, 0x0e, 0x53, - 0xd5, 0x46, 0x99, 0x54, 0xf8, 0x1e, 0x75, 0xb8, 0xc3, 0xa9, 0x0e, 0x2b, 0x37, 0x76, 0xf5, 0x93, - 0x7e, 0xd0, 0xbf, 0x82, 0xed, 0xe6, 0x88, 0xc3, 0xb9, 0x53, 0x07, 0x2d, 0x63, 0xbb, 0x2e, 0x57, - 0x5a, 0x24, 0x4c, 0x6e, 0xde, 0x08, 0xdf, 0xfe, 0xcb, 0x01, 0x7b, 0x9e, 0x6a, 0x86, 0x2f, 0x6f, - 0xb7, 0x83, 0xb2, 0x1d, 0x70, 0x15, 0xdb, 0x65, 0x20, 0xa2, 0x0c, 0x77, 0xba, 0x57, 0x13, 0x46, - 0x8d, 0xb6, 0x47, 0x09, 0xe6, 0x54, 0x55, 0x98, 0x65, 0xf2, 0xc7, 0x00, 0xba, 0xfa, 0x24, 0xb6, - 0xad, 0x04, 0x0e, 0x93, 0x4a, 0x34, 0xf1, 0x3b, 0x03, 0x65, 0x96, 0x04, 0xd8, 0x0a, 0xf0, 0x04, - 0x49, 0x76, 0x82, 0x04, 0xeb, 0xc9, 0x6d, 0xcf, 0x1a, 0x20, 0x95, 0x39, 0xd2, 0x1a, 0x1a, 0x0f, - 0xb2, 0xe6, 0x5f, 0x7f, 0xff, 0xf3, 0xfe, 0xdc, 0x8c, 0x35, 0x45, 0x1b, 0x12, 0x84, 0xa4, 0x87, - 0x15, 0x5e, 0xaf, 0xdb, 0x65, 0x2e, 0x6c, 0xc5, 0x05, 0xf1, 0xd7, 0xb6, 0xd9, 0x8e, 0x8c, 0x7e, - 0x1c, 0x25, 0xea, 0x91, 0xb3, 0x46, 0x0e, 0xbf, 0x31, 0xd0, 0xf9, 0x22, 0x28, 0x3c, 0xd6, 0x2a, - 0x53, 0x04, 0xd5, 0x3b, 0xce, 0x8c, 0xc6, 0x29, 0xe0, 0xfb, 0x49, 0x21, 0x7a, 0x98, 0xb8, 0x15, - 0x3e, 0x51, 0xcb, 0xc2, 0x11, 0xfe, 0x64, 0xa0, 0x0b, 0xeb, 0x4c, 0x2a, 0x9c, 0x6d, 0x55, 0xf0, - 0x57, 0xe3, 0x2a, 0x32, 0x62, 0xb9, 0xd9, 0x8d, 0x45, 0x5a, 0x8f, 0x35, 0xcc, 0x43, 0x3c, 0x94, - 0x84, 0xd9, 0x9a, 0xc6, 0xa7, 0xea, 0x16, 0x7e, 0x6b, 0xa0, 0xcc, 0x53, 0x6f, 0xa7, 0xe3, 0xf9, - 0x05, 0xeb, 0xbd, 0x37, 0x6c, 0x4e, 0x33, 0x4e, 0x9b, 0x5d, 0x1b, 0x46, 0x3a, 0x35, 0xcc, 0x3f, - 0x3c, 0x89, 0x32, 0xcb, 0x50, 0x07, 0x05, 0x78, 0xbc, 0x9b, 0xca, 0xea, 0xff, 0x9b, 0x6e, 0x5e, - 0x23, 0xc1, 0x98, 0x90, 0x68, 0x4c, 0xc8, 0x8a, 0x3f, 0x26, 0x56, 0x56, 0x83, 0x58, 0xb9, 0x5b, - 0x29, 0x27, 0x77, 0x84, 0x5f, 0xa2, 0x81, 0x12, 0x48, 0xc5, 0xc5, 0x19, 0xa8, 0xde, 0xd3, 0xaa, - 0x39, 0x2b, 0x9b, 0xa6, 0x4a, 0x45, 0x28, 0xf9, 0x1c, 0x5d, 0xdc, 0x68, 0x08, 0xe7, 0x0c, 0xb4, - 0x89, 0xd6, 0xce, 0xe6, 0xc6, 0x52, 0xb5, 0x3d, 0x5f, 0x70, 0xf2, 0x17, 0x42, 0x38, 0xae, 0xb1, - 0x50, 0xa9, 0x80, 0x94, 0xf8, 0x15, 0x42, 0xfe, 0x05, 0x2d, 0x69, 0x0b, 0xe8, 0x85, 0xaa, 0x25, - 0x30, 0x48, 0x60, 0x51, 0x4d, 0x35, 0x81, 0xc7, 0xd3, 0x3b, 0x12, 0x28, 0x7e, 0x34, 0xd0, 0x60, - 0xe0, 0x1e, 0x0b, 0x1b, 0xab, 0x6b, 0xd0, 0xc4, 0x34, 0xdd, 0x5b, 0x82, 0xc8, 0xe8, 0x86, 0xb6, - 0xa1, 0x04, 0xaf, 0xad, 0x15, 0x8d, 0x32, 0x6f, 0xcd, 0xf6, 0x3c, 0xcc, 0xbe, 0x29, 0xe6, 0x6b, - 0xd0, 0xd4, 0x0e, 0xf3, 0xc1, 0x40, 0x97, 0xfd, 0x0e, 0x05, 0x59, 0x25, 0x26, 0x69, 0xf3, 0x1d, - 0x06, 0x46, 0x78, 0xd7, 0x3b, 0xe3, 0x49, 0x6b, 0x51, 0xf3, 0xcd, 0xe1, 0x3e, 0xf8, 0xfc, 0xee, - 0x5d, 0x2a, 0x42, 0xc8, 0x86, 0xef, 0xa6, 0x98, 0xe0, 0xc9, 0xfa, 0xb6, 0xa6, 0xb9, 0x56, 0xf0, - 0xd2, 0xe9, 0xb9, 0xe8, 0x61, 0x0d, 0x9a, 0x7a, 0xda, 0xbe, 0x18, 0x68, 0x30, 0x30, 0x97, 0xe3, - 0x8e, 0xb7, 0xdd, 0x7a, 0x4e, 0x86, 0x59, 0xd2, 0x98, 0xeb, 0x66, 0xb1, 0x1f, 0x4c, 0xdb, 0x63, - 0xdb, 0x35, 0x68, 0x92, 0xd0, 0x90, 0x7e, 0x1a, 0x68, 0xb8, 0x08, 0x6a, 0x29, 0x66, 0xab, 0x78, - 0x32, 0xa5, 0xa9, 0xf1, 0xe0, 0x88, 0x79, 0xbc, 0xc3, 0x9e, 0x64, 0x9c, 0xf4, 0xb8, 0x2b, 0xc1, - 0xda, 0xd3, 0x45, 0x38, 0x5b, 0x80, 0x2b, 0xbd, 0x97, 0x11, 0x77, 0x7f, 0xfd, 0x45, 0x48, 0xfb, - 0x20, 0xe0, 0xcf, 0x06, 0x1a, 0xde, 0x4c, 0xab, 0x6f, 0x33, 0xbd, 0xbe, 0xe3, 0x3c, 0xe9, 0x91, - 0x2e, 0x67, 0xd9, 0x9c, 0xef, 0xaf, 0x18, 0x3d, 0x77, 0x5f, 0x0d, 0x74, 0xc5, 0x1f, 0xad, 0xb8, - 0xbe, 0xc4, 0x53, 0x69, 0xd3, 0x97, 0x08, 0x3f, 0xf6, 0x4b, 0x9b, 0x88, 0xb2, 0x8a, 0x1a, 0x7b, - 0x01, 0xf7, 0x8b, 0xbd, 0xf8, 0xe0, 0xdb, 0xef, 0x51, 0x63, 0x8b, 0x3a, 0x9c, 0xa8, 0x2a, 0xa8, - 0x2a, 0x73, 0x1d, 0x49, 0x5c, 0x50, 0x07, 0x5c, 0xd4, 0x68, 0xf2, 0x6f, 0xd7, 0x7e, 0x81, 0x7a, - 0x35, 0x87, 0x2a, 0xe5, 0x7a, 0xe5, 0x72, 0x46, 0xb7, 0xb1, 0xf0, 0x37, 0x00, 0x00, 0xff, 0xff, - 0x1d, 0x3f, 0x3e, 0xdb, 0x8f, 0x0a, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// OrganizationRegistryClient is the client API for OrganizationRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type OrganizationRegistryClient interface { - // Create a new organization. This also sets the given user as - // first collaborator with all possible rights. - Create(ctx context.Context, in *CreateOrganizationRequest, opts ...grpc.CallOption) (*Organization, error) - // Get the organization with the given identifiers, selecting the fields specified - // in the field mask. - // More or less fields may be returned, depending on the rights of the caller. - Get(ctx context.Context, in *GetOrganizationRequest, opts ...grpc.CallOption) (*Organization, error) - // List organizations where the given user or organization is a direct collaborator. - // If no user or organization is given, this returns the organizations the caller - // has access to. - // Similar to Get, this selects the fields given by the field mask. - // More or less fields may be returned, depending on the rights of the caller. - List(ctx context.Context, in *ListOrganizationsRequest, opts ...grpc.CallOption) (*Organizations, error) - // Update the organization, changing the fields specified by the field mask to the provided values. - Update(ctx context.Context, in *UpdateOrganizationRequest, opts ...grpc.CallOption) (*Organization, error) - // Delete the organization. This may not release the organization ID for reuse. - Delete(ctx context.Context, in *OrganizationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) - // Restore a recently deleted organization. - // - // Deployment configuration may specify if, and for how long after deletion, - // entities can be restored. - Restore(ctx context.Context, in *OrganizationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) - // Purge the organization. This will release the organization ID for reuse. - // The user is responsible for clearing data from any (external) integrations - // that may store and expose data by user or organization ID. - Purge(ctx context.Context, in *OrganizationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) -} - -type organizationRegistryClient struct { - cc *grpc.ClientConn -} - -func NewOrganizationRegistryClient(cc *grpc.ClientConn) OrganizationRegistryClient { - return &organizationRegistryClient{cc} -} - -func (c *organizationRegistryClient) Create(ctx context.Context, in *CreateOrganizationRequest, opts ...grpc.CallOption) (*Organization, error) { - out := new(Organization) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationRegistry/Create", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationRegistryClient) Get(ctx context.Context, in *GetOrganizationRequest, opts ...grpc.CallOption) (*Organization, error) { - out := new(Organization) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationRegistry/Get", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationRegistryClient) List(ctx context.Context, in *ListOrganizationsRequest, opts ...grpc.CallOption) (*Organizations, error) { - out := new(Organizations) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationRegistry/List", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationRegistryClient) Update(ctx context.Context, in *UpdateOrganizationRequest, opts ...grpc.CallOption) (*Organization, error) { - out := new(Organization) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationRegistry/Update", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationRegistryClient) Delete(ctx context.Context, in *OrganizationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationRegistry/Delete", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationRegistryClient) Restore(ctx context.Context, in *OrganizationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationRegistry/Restore", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationRegistryClient) Purge(ctx context.Context, in *OrganizationIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationRegistry/Purge", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// OrganizationRegistryServer is the server API for OrganizationRegistry service. -type OrganizationRegistryServer interface { - // Create a new organization. This also sets the given user as - // first collaborator with all possible rights. - Create(context.Context, *CreateOrganizationRequest) (*Organization, error) - // Get the organization with the given identifiers, selecting the fields specified - // in the field mask. - // More or less fields may be returned, depending on the rights of the caller. - Get(context.Context, *GetOrganizationRequest) (*Organization, error) - // List organizations where the given user or organization is a direct collaborator. - // If no user or organization is given, this returns the organizations the caller - // has access to. - // Similar to Get, this selects the fields given by the field mask. - // More or less fields may be returned, depending on the rights of the caller. - List(context.Context, *ListOrganizationsRequest) (*Organizations, error) - // Update the organization, changing the fields specified by the field mask to the provided values. - Update(context.Context, *UpdateOrganizationRequest) (*Organization, error) - // Delete the organization. This may not release the organization ID for reuse. - Delete(context.Context, *OrganizationIdentifiers) (*types.Empty, error) - // Restore a recently deleted organization. - // - // Deployment configuration may specify if, and for how long after deletion, - // entities can be restored. - Restore(context.Context, *OrganizationIdentifiers) (*types.Empty, error) - // Purge the organization. This will release the organization ID for reuse. - // The user is responsible for clearing data from any (external) integrations - // that may store and expose data by user or organization ID. - Purge(context.Context, *OrganizationIdentifiers) (*types.Empty, error) -} - -// UnimplementedOrganizationRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedOrganizationRegistryServer struct { -} - -func (*UnimplementedOrganizationRegistryServer) Create(ctx context.Context, req *CreateOrganizationRequest) (*Organization, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (*UnimplementedOrganizationRegistryServer) Get(ctx context.Context, req *GetOrganizationRequest) (*Organization, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") -} -func (*UnimplementedOrganizationRegistryServer) List(ctx context.Context, req *ListOrganizationsRequest) (*Organizations, error) { - return nil, status.Errorf(codes.Unimplemented, "method List not implemented") -} -func (*UnimplementedOrganizationRegistryServer) Update(ctx context.Context, req *UpdateOrganizationRequest) (*Organization, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") -} -func (*UnimplementedOrganizationRegistryServer) Delete(ctx context.Context, req *OrganizationIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (*UnimplementedOrganizationRegistryServer) Restore(ctx context.Context, req *OrganizationIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Restore not implemented") -} -func (*UnimplementedOrganizationRegistryServer) Purge(ctx context.Context, req *OrganizationIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Purge not implemented") -} - -func RegisterOrganizationRegistryServer(s *grpc.Server, srv OrganizationRegistryServer) { - s.RegisterService(&_OrganizationRegistry_serviceDesc, srv) -} - -func _OrganizationRegistry_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateOrganizationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationRegistryServer).Create(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OrganizationRegistry/Create", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationRegistryServer).Create(ctx, req.(*CreateOrganizationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OrganizationRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetOrganizationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationRegistryServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OrganizationRegistry/Get", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationRegistryServer).Get(ctx, req.(*GetOrganizationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OrganizationRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListOrganizationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationRegistryServer).List(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OrganizationRegistry/List", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationRegistryServer).List(ctx, req.(*ListOrganizationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OrganizationRegistry_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateOrganizationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationRegistryServer).Update(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OrganizationRegistry/Update", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationRegistryServer).Update(ctx, req.(*UpdateOrganizationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OrganizationRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(OrganizationIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationRegistryServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OrganizationRegistry/Delete", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationRegistryServer).Delete(ctx, req.(*OrganizationIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _OrganizationRegistry_Restore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(OrganizationIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationRegistryServer).Restore(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OrganizationRegistry/Restore", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationRegistryServer).Restore(ctx, req.(*OrganizationIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _OrganizationRegistry_Purge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(OrganizationIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationRegistryServer).Purge(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OrganizationRegistry/Purge", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationRegistryServer).Purge(ctx, req.(*OrganizationIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -var _OrganizationRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.OrganizationRegistry", - HandlerType: (*OrganizationRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Create", - Handler: _OrganizationRegistry_Create_Handler, - }, - { - MethodName: "Get", - Handler: _OrganizationRegistry_Get_Handler, - }, - { - MethodName: "List", - Handler: _OrganizationRegistry_List_Handler, - }, - { - MethodName: "Update", - Handler: _OrganizationRegistry_Update_Handler, - }, - { - MethodName: "Delete", - Handler: _OrganizationRegistry_Delete_Handler, - }, - { - MethodName: "Restore", - Handler: _OrganizationRegistry_Restore_Handler, - }, - { - MethodName: "Purge", - Handler: _OrganizationRegistry_Purge_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/organization_services.proto", -} - -// OrganizationAccessClient is the client API for OrganizationAccess service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type OrganizationAccessClient interface { - // List the rights the caller has on this organization. - ListRights(ctx context.Context, in *OrganizationIdentifiers, opts ...grpc.CallOption) (*Rights, error) - // Create an API key scoped to this organization. - // Organization API keys can give access to the organization itself, as well as - // any application, gateway and OAuth client this organization is a collaborator of. - CreateAPIKey(ctx context.Context, in *CreateOrganizationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) - // List the API keys for this organization. - ListAPIKeys(ctx context.Context, in *ListOrganizationAPIKeysRequest, opts ...grpc.CallOption) (*APIKeys, error) - // Get a single API key of this organization. - GetAPIKey(ctx context.Context, in *GetOrganizationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) - // Update the rights of an API key of the organization. - // This method can also be used to delete the API key, by giving it no rights. - // The caller is required to have all assigned or/and removed rights. - UpdateAPIKey(ctx context.Context, in *UpdateOrganizationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) - // Get the rights of a collaborator (member) of the organization. - // Pseudo-rights in the response (such as the "_ALL" right) are not expanded. - GetCollaborator(ctx context.Context, in *GetOrganizationCollaboratorRequest, opts ...grpc.CallOption) (*GetCollaboratorResponse, error) - // Set the rights of a collaborator (member) on the organization. - // Organization collaborators can get access to the organization itself, as well as - // any application, gateway and OAuth client this organization is a collaborator of. - // This method can also be used to delete the collaborator, by giving them no rights. - // The caller is required to have all assigned or/and removed rights. - SetCollaborator(ctx context.Context, in *SetOrganizationCollaboratorRequest, opts ...grpc.CallOption) (*types.Empty, error) - // List the collaborators on this organization. - ListCollaborators(ctx context.Context, in *ListOrganizationCollaboratorsRequest, opts ...grpc.CallOption) (*Collaborators, error) -} - -type organizationAccessClient struct { - cc *grpc.ClientConn -} - -func NewOrganizationAccessClient(cc *grpc.ClientConn) OrganizationAccessClient { - return &organizationAccessClient{cc} -} - -func (c *organizationAccessClient) ListRights(ctx context.Context, in *OrganizationIdentifiers, opts ...grpc.CallOption) (*Rights, error) { - out := new(Rights) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationAccess/ListRights", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationAccessClient) CreateAPIKey(ctx context.Context, in *CreateOrganizationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { - out := new(APIKey) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationAccess/CreateAPIKey", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationAccessClient) ListAPIKeys(ctx context.Context, in *ListOrganizationAPIKeysRequest, opts ...grpc.CallOption) (*APIKeys, error) { - out := new(APIKeys) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationAccess/ListAPIKeys", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationAccessClient) GetAPIKey(ctx context.Context, in *GetOrganizationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { - out := new(APIKey) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationAccess/GetAPIKey", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationAccessClient) UpdateAPIKey(ctx context.Context, in *UpdateOrganizationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { - out := new(APIKey) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationAccess/UpdateAPIKey", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationAccessClient) GetCollaborator(ctx context.Context, in *GetOrganizationCollaboratorRequest, opts ...grpc.CallOption) (*GetCollaboratorResponse, error) { - out := new(GetCollaboratorResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationAccess/GetCollaborator", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationAccessClient) SetCollaborator(ctx context.Context, in *SetOrganizationCollaboratorRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationAccess/SetCollaborator", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationAccessClient) ListCollaborators(ctx context.Context, in *ListOrganizationCollaboratorsRequest, opts ...grpc.CallOption) (*Collaborators, error) { - out := new(Collaborators) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationAccess/ListCollaborators", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// OrganizationAccessServer is the server API for OrganizationAccess service. -type OrganizationAccessServer interface { - // List the rights the caller has on this organization. - ListRights(context.Context, *OrganizationIdentifiers) (*Rights, error) - // Create an API key scoped to this organization. - // Organization API keys can give access to the organization itself, as well as - // any application, gateway and OAuth client this organization is a collaborator of. - CreateAPIKey(context.Context, *CreateOrganizationAPIKeyRequest) (*APIKey, error) - // List the API keys for this organization. - ListAPIKeys(context.Context, *ListOrganizationAPIKeysRequest) (*APIKeys, error) - // Get a single API key of this organization. - GetAPIKey(context.Context, *GetOrganizationAPIKeyRequest) (*APIKey, error) - // Update the rights of an API key of the organization. - // This method can also be used to delete the API key, by giving it no rights. - // The caller is required to have all assigned or/and removed rights. - UpdateAPIKey(context.Context, *UpdateOrganizationAPIKeyRequest) (*APIKey, error) - // Get the rights of a collaborator (member) of the organization. - // Pseudo-rights in the response (such as the "_ALL" right) are not expanded. - GetCollaborator(context.Context, *GetOrganizationCollaboratorRequest) (*GetCollaboratorResponse, error) - // Set the rights of a collaborator (member) on the organization. - // Organization collaborators can get access to the organization itself, as well as - // any application, gateway and OAuth client this organization is a collaborator of. - // This method can also be used to delete the collaborator, by giving them no rights. - // The caller is required to have all assigned or/and removed rights. - SetCollaborator(context.Context, *SetOrganizationCollaboratorRequest) (*types.Empty, error) - // List the collaborators on this organization. - ListCollaborators(context.Context, *ListOrganizationCollaboratorsRequest) (*Collaborators, error) -} - -// UnimplementedOrganizationAccessServer can be embedded to have forward compatible implementations. -type UnimplementedOrganizationAccessServer struct { -} - -func (*UnimplementedOrganizationAccessServer) ListRights(ctx context.Context, req *OrganizationIdentifiers) (*Rights, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListRights not implemented") -} -func (*UnimplementedOrganizationAccessServer) CreateAPIKey(ctx context.Context, req *CreateOrganizationAPIKeyRequest) (*APIKey, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateAPIKey not implemented") -} -func (*UnimplementedOrganizationAccessServer) ListAPIKeys(ctx context.Context, req *ListOrganizationAPIKeysRequest) (*APIKeys, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListAPIKeys not implemented") -} -func (*UnimplementedOrganizationAccessServer) GetAPIKey(ctx context.Context, req *GetOrganizationAPIKeyRequest) (*APIKey, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetAPIKey not implemented") -} -func (*UnimplementedOrganizationAccessServer) UpdateAPIKey(ctx context.Context, req *UpdateOrganizationAPIKeyRequest) (*APIKey, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateAPIKey not implemented") -} -func (*UnimplementedOrganizationAccessServer) GetCollaborator(ctx context.Context, req *GetOrganizationCollaboratorRequest) (*GetCollaboratorResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetCollaborator not implemented") -} -func (*UnimplementedOrganizationAccessServer) SetCollaborator(ctx context.Context, req *SetOrganizationCollaboratorRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method SetCollaborator not implemented") -} -func (*UnimplementedOrganizationAccessServer) ListCollaborators(ctx context.Context, req *ListOrganizationCollaboratorsRequest) (*Collaborators, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListCollaborators not implemented") -} - -func RegisterOrganizationAccessServer(s *grpc.Server, srv OrganizationAccessServer) { - s.RegisterService(&_OrganizationAccess_serviceDesc, srv) -} - -func _OrganizationAccess_ListRights_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(OrganizationIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationAccessServer).ListRights(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OrganizationAccess/ListRights", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationAccessServer).ListRights(ctx, req.(*OrganizationIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _OrganizationAccess_CreateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateOrganizationAPIKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationAccessServer).CreateAPIKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OrganizationAccess/CreateAPIKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationAccessServer).CreateAPIKey(ctx, req.(*CreateOrganizationAPIKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OrganizationAccess_ListAPIKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListOrganizationAPIKeysRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationAccessServer).ListAPIKeys(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OrganizationAccess/ListAPIKeys", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationAccessServer).ListAPIKeys(ctx, req.(*ListOrganizationAPIKeysRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OrganizationAccess_GetAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetOrganizationAPIKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationAccessServer).GetAPIKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OrganizationAccess/GetAPIKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationAccessServer).GetAPIKey(ctx, req.(*GetOrganizationAPIKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OrganizationAccess_UpdateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateOrganizationAPIKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationAccessServer).UpdateAPIKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OrganizationAccess/UpdateAPIKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationAccessServer).UpdateAPIKey(ctx, req.(*UpdateOrganizationAPIKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OrganizationAccess_GetCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetOrganizationCollaboratorRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationAccessServer).GetCollaborator(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OrganizationAccess/GetCollaborator", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationAccessServer).GetCollaborator(ctx, req.(*GetOrganizationCollaboratorRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OrganizationAccess_SetCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetOrganizationCollaboratorRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationAccessServer).SetCollaborator(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OrganizationAccess/SetCollaborator", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationAccessServer).SetCollaborator(ctx, req.(*SetOrganizationCollaboratorRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OrganizationAccess_ListCollaborators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListOrganizationCollaboratorsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationAccessServer).ListCollaborators(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.OrganizationAccess/ListCollaborators", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationAccessServer).ListCollaborators(ctx, req.(*ListOrganizationCollaboratorsRequest)) - } - return interceptor(ctx, in, info, handler) -} +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -var _OrganizationAccess_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.OrganizationAccess", - HandlerType: (*OrganizationAccessServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListRights", - Handler: _OrganizationAccess_ListRights_Handler, - }, - { - MethodName: "CreateAPIKey", - Handler: _OrganizationAccess_CreateAPIKey_Handler, - }, - { - MethodName: "ListAPIKeys", - Handler: _OrganizationAccess_ListAPIKeys_Handler, - }, - { - MethodName: "GetAPIKey", - Handler: _OrganizationAccess_GetAPIKey_Handler, - }, - { - MethodName: "UpdateAPIKey", - Handler: _OrganizationAccess_UpdateAPIKey_Handler, - }, - { - MethodName: "GetCollaborator", - Handler: _OrganizationAccess_GetCollaborator_Handler, - }, - { - MethodName: "SetCollaborator", - Handler: _OrganizationAccess_SetCollaborator_Handler, - }, - { - MethodName: "ListCollaborators", - Handler: _OrganizationAccess_ListCollaborators_Handler, +var File_lorawan_stack_api_organization_services_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_organization_services_proto_rawDesc = []byte{ + 0x0a, 0x2d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, + 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, + 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xd5, 0x07, 0x0a, 0x14, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x92, 0x01, + 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x22, 0x34, 0x2f, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, + 0x01, 0x2a, 0x12, 0x86, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9f, 0x01, 0x0a, 0x04, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x12, 0x0e, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5a, 0x36, 0x12, 0x34, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x8f, 0x01, + 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x1a, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, + 0x73, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x22, 0x2a, 0x20, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x7c, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, + 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x22, 0x28, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x12, 0x78, 0x0a, 0x05, 0x50, 0x75, 0x72, 0x67, 0x65, 0x12, 0x27, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x28, 0x2a, 0x26, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x32, 0xe1, 0x0a, 0x0a, + 0x12, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x12, 0x7e, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x12, 0x9e, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, + 0x49, 0x4b, 0x65, 0x79, 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x45, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x22, 0x3a, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, + 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x9a, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, + 0x4b, 0x65, 0x79, 0x73, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x42, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, + 0x73, 0x12, 0x9e, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, + 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x5f, 0x69, + 0x64, 0x7d, 0x12, 0xab, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, + 0x4b, 0x65, 0x79, 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x52, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x4c, 0x1a, 0x47, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, + 0x2f, 0x7b, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, + 0x12, 0xdd, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x12, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x6d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x67, 0x5a, 0x65, 0x12, 0x63, 0x2f, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x75, 0x73, 0x65, 0x72, + 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, + 0x12, 0xa9, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x12, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x1a, 0x3f, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xb1, 0x01, 0x0a, + 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x73, 0x12, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, + 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x12, + 0x3f, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, + 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, + 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var file_lorawan_stack_api_organization_services_proto_goTypes = []interface{}{ + (*CreateOrganizationRequest)(nil), // 0: ttn.lorawan.v3.CreateOrganizationRequest + (*GetOrganizationRequest)(nil), // 1: ttn.lorawan.v3.GetOrganizationRequest + (*ListOrganizationsRequest)(nil), // 2: ttn.lorawan.v3.ListOrganizationsRequest + (*UpdateOrganizationRequest)(nil), // 3: ttn.lorawan.v3.UpdateOrganizationRequest + (*OrganizationIdentifiers)(nil), // 4: ttn.lorawan.v3.OrganizationIdentifiers + (*CreateOrganizationAPIKeyRequest)(nil), // 5: ttn.lorawan.v3.CreateOrganizationAPIKeyRequest + (*ListOrganizationAPIKeysRequest)(nil), // 6: ttn.lorawan.v3.ListOrganizationAPIKeysRequest + (*GetOrganizationAPIKeyRequest)(nil), // 7: ttn.lorawan.v3.GetOrganizationAPIKeyRequest + (*UpdateOrganizationAPIKeyRequest)(nil), // 8: ttn.lorawan.v3.UpdateOrganizationAPIKeyRequest + (*GetOrganizationCollaboratorRequest)(nil), // 9: ttn.lorawan.v3.GetOrganizationCollaboratorRequest + (*SetOrganizationCollaboratorRequest)(nil), // 10: ttn.lorawan.v3.SetOrganizationCollaboratorRequest + (*ListOrganizationCollaboratorsRequest)(nil), // 11: ttn.lorawan.v3.ListOrganizationCollaboratorsRequest + (*Organization)(nil), // 12: ttn.lorawan.v3.Organization + (*Organizations)(nil), // 13: ttn.lorawan.v3.Organizations + (*emptypb.Empty)(nil), // 14: google.protobuf.Empty + (*Rights)(nil), // 15: ttn.lorawan.v3.Rights + (*APIKey)(nil), // 16: ttn.lorawan.v3.APIKey + (*APIKeys)(nil), // 17: ttn.lorawan.v3.APIKeys + (*GetCollaboratorResponse)(nil), // 18: ttn.lorawan.v3.GetCollaboratorResponse + (*Collaborators)(nil), // 19: ttn.lorawan.v3.Collaborators +} +var file_lorawan_stack_api_organization_services_proto_depIdxs = []int32{ + 0, // 0: ttn.lorawan.v3.OrganizationRegistry.Create:input_type -> ttn.lorawan.v3.CreateOrganizationRequest + 1, // 1: ttn.lorawan.v3.OrganizationRegistry.Get:input_type -> ttn.lorawan.v3.GetOrganizationRequest + 2, // 2: ttn.lorawan.v3.OrganizationRegistry.List:input_type -> ttn.lorawan.v3.ListOrganizationsRequest + 3, // 3: ttn.lorawan.v3.OrganizationRegistry.Update:input_type -> ttn.lorawan.v3.UpdateOrganizationRequest + 4, // 4: ttn.lorawan.v3.OrganizationRegistry.Delete:input_type -> ttn.lorawan.v3.OrganizationIdentifiers + 4, // 5: ttn.lorawan.v3.OrganizationRegistry.Restore:input_type -> ttn.lorawan.v3.OrganizationIdentifiers + 4, // 6: ttn.lorawan.v3.OrganizationRegistry.Purge:input_type -> ttn.lorawan.v3.OrganizationIdentifiers + 4, // 7: ttn.lorawan.v3.OrganizationAccess.ListRights:input_type -> ttn.lorawan.v3.OrganizationIdentifiers + 5, // 8: ttn.lorawan.v3.OrganizationAccess.CreateAPIKey:input_type -> ttn.lorawan.v3.CreateOrganizationAPIKeyRequest + 6, // 9: ttn.lorawan.v3.OrganizationAccess.ListAPIKeys:input_type -> ttn.lorawan.v3.ListOrganizationAPIKeysRequest + 7, // 10: ttn.lorawan.v3.OrganizationAccess.GetAPIKey:input_type -> ttn.lorawan.v3.GetOrganizationAPIKeyRequest + 8, // 11: ttn.lorawan.v3.OrganizationAccess.UpdateAPIKey:input_type -> ttn.lorawan.v3.UpdateOrganizationAPIKeyRequest + 9, // 12: ttn.lorawan.v3.OrganizationAccess.GetCollaborator:input_type -> ttn.lorawan.v3.GetOrganizationCollaboratorRequest + 10, // 13: ttn.lorawan.v3.OrganizationAccess.SetCollaborator:input_type -> ttn.lorawan.v3.SetOrganizationCollaboratorRequest + 11, // 14: ttn.lorawan.v3.OrganizationAccess.ListCollaborators:input_type -> ttn.lorawan.v3.ListOrganizationCollaboratorsRequest + 12, // 15: ttn.lorawan.v3.OrganizationRegistry.Create:output_type -> ttn.lorawan.v3.Organization + 12, // 16: ttn.lorawan.v3.OrganizationRegistry.Get:output_type -> ttn.lorawan.v3.Organization + 13, // 17: ttn.lorawan.v3.OrganizationRegistry.List:output_type -> ttn.lorawan.v3.Organizations + 12, // 18: ttn.lorawan.v3.OrganizationRegistry.Update:output_type -> ttn.lorawan.v3.Organization + 14, // 19: ttn.lorawan.v3.OrganizationRegistry.Delete:output_type -> google.protobuf.Empty + 14, // 20: ttn.lorawan.v3.OrganizationRegistry.Restore:output_type -> google.protobuf.Empty + 14, // 21: ttn.lorawan.v3.OrganizationRegistry.Purge:output_type -> google.protobuf.Empty + 15, // 22: ttn.lorawan.v3.OrganizationAccess.ListRights:output_type -> ttn.lorawan.v3.Rights + 16, // 23: ttn.lorawan.v3.OrganizationAccess.CreateAPIKey:output_type -> ttn.lorawan.v3.APIKey + 17, // 24: ttn.lorawan.v3.OrganizationAccess.ListAPIKeys:output_type -> ttn.lorawan.v3.APIKeys + 16, // 25: ttn.lorawan.v3.OrganizationAccess.GetAPIKey:output_type -> ttn.lorawan.v3.APIKey + 16, // 26: ttn.lorawan.v3.OrganizationAccess.UpdateAPIKey:output_type -> ttn.lorawan.v3.APIKey + 18, // 27: ttn.lorawan.v3.OrganizationAccess.GetCollaborator:output_type -> ttn.lorawan.v3.GetCollaboratorResponse + 14, // 28: ttn.lorawan.v3.OrganizationAccess.SetCollaborator:output_type -> google.protobuf.Empty + 19, // 29: ttn.lorawan.v3.OrganizationAccess.ListCollaborators:output_type -> ttn.lorawan.v3.Collaborators + 15, // [15:30] is the sub-list for method output_type + 0, // [0:15] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_organization_services_proto_init() } +func file_lorawan_stack_api_organization_services_proto_init() { + if File_lorawan_stack_api_organization_services_proto != nil { + return + } + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_organization_proto_init() + file_lorawan_stack_api_rights_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_organization_services_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 2, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/organization_services.proto", + GoTypes: file_lorawan_stack_api_organization_services_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_organization_services_proto_depIdxs, + }.Build() + File_lorawan_stack_api_organization_services_proto = out.File + file_lorawan_stack_api_organization_services_proto_rawDesc = nil + file_lorawan_stack_api_organization_services_proto_goTypes = nil + file_lorawan_stack_api_organization_services_proto_depIdxs = nil } diff --git a/pkg/ttnpb/organization_services.pb.gw.go b/pkg/ttnpb/organization_services.pb.gw.go index e4e4664ff0..f42f3877ee 100644 --- a/pkg/ttnpb/organization_services.pb.gw.go +++ b/pkg/ttnpb/organization_services.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join func request_OrganizationRegistry_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OrganizationRegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -58,7 +56,6 @@ func request_OrganizationRegistry_Create_0(ctx context.Context, marshaler runtim } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -93,7 +90,6 @@ func local_request_OrganizationRegistry_Create_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -124,7 +120,6 @@ func request_OrganizationRegistry_Get_0(ctx context.Context, marshaler runtime.M } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -158,7 +153,6 @@ func local_request_OrganizationRegistry_Get_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -232,7 +226,6 @@ func request_OrganizationRegistry_List_1(ctx context.Context, marshaler runtime. } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -266,7 +259,6 @@ func local_request_OrganizationRegistry_List_1(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -308,7 +300,6 @@ func request_OrganizationRegistry_Update_0(ctx context.Context, marshaler runtim } err = runtime.PopulateFieldFromPath(&protoReq, "organization.ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization.ids.organization_id", err) } @@ -343,7 +334,6 @@ func local_request_OrganizationRegistry_Update_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "organization.ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization.ids.organization_id", err) } @@ -370,7 +360,6 @@ func request_OrganizationRegistry_Delete_0(ctx context.Context, marshaler runtim } protoReq.OrganizationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_id", err) } @@ -397,7 +386,6 @@ func local_request_OrganizationRegistry_Delete_0(ctx context.Context, marshaler } protoReq.OrganizationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_id", err) } @@ -424,7 +412,6 @@ func request_OrganizationRegistry_Restore_0(ctx context.Context, marshaler runti } protoReq.OrganizationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_id", err) } @@ -451,7 +438,6 @@ func local_request_OrganizationRegistry_Restore_0(ctx context.Context, marshaler } protoReq.OrganizationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_id", err) } @@ -478,7 +464,6 @@ func request_OrganizationRegistry_Purge_0(ctx context.Context, marshaler runtime } protoReq.OrganizationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_id", err) } @@ -505,7 +490,6 @@ func local_request_OrganizationRegistry_Purge_0(ctx context.Context, marshaler r } protoReq.OrganizationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_id", err) } @@ -532,7 +516,6 @@ func request_OrganizationAccess_ListRights_0(ctx context.Context, marshaler runt } protoReq.OrganizationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_id", err) } @@ -559,7 +542,6 @@ func local_request_OrganizationAccess_ListRights_0(ctx context.Context, marshale } protoReq.OrganizationId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_id", err) } @@ -594,7 +576,6 @@ func request_OrganizationAccess_CreateAPIKey_0(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -629,7 +610,6 @@ func local_request_OrganizationAccess_CreateAPIKey_0(ctx context.Context, marsha } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -660,7 +640,6 @@ func request_OrganizationAccess_ListAPIKeys_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -694,7 +673,6 @@ func local_request_OrganizationAccess_ListAPIKeys_0(ctx context.Context, marshal } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -732,7 +710,6 @@ func request_OrganizationAccess_GetAPIKey_0(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -743,7 +720,6 @@ func request_OrganizationAccess_GetAPIKey_0(ctx context.Context, marshaler runti } protoReq.KeyId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "key_id", err) } @@ -777,7 +753,6 @@ func local_request_OrganizationAccess_GetAPIKey_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -788,7 +763,6 @@ func local_request_OrganizationAccess_GetAPIKey_0(ctx context.Context, marshaler } protoReq.KeyId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "key_id", err) } @@ -830,7 +804,6 @@ func request_OrganizationAccess_UpdateAPIKey_0(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -841,7 +814,6 @@ func request_OrganizationAccess_UpdateAPIKey_0(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "api_key.id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "api_key.id", err) } @@ -876,7 +848,6 @@ func local_request_OrganizationAccess_UpdateAPIKey_0(ctx context.Context, marsha } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -887,7 +858,6 @@ func local_request_OrganizationAccess_UpdateAPIKey_0(ctx context.Context, marsha } err = runtime.PopulateFieldFromPath(&protoReq, "api_key.id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "api_key.id", err) } @@ -918,7 +888,6 @@ func request_OrganizationAccess_GetCollaborator_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -929,7 +898,6 @@ func request_OrganizationAccess_GetCollaborator_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -963,7 +931,6 @@ func local_request_OrganizationAccess_GetCollaborator_0(ctx context.Context, mar } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -974,7 +941,6 @@ func local_request_OrganizationAccess_GetCollaborator_0(ctx context.Context, mar } err = runtime.PopulateFieldFromPath(&protoReq, "collaborator.user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "collaborator.user_ids.user_id", err) } @@ -1016,7 +982,6 @@ func request_OrganizationAccess_SetCollaborator_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -1051,7 +1016,6 @@ func local_request_OrganizationAccess_SetCollaborator_0(ctx context.Context, mar } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -1082,7 +1046,6 @@ func request_OrganizationAccess_ListCollaborators_0(ctx context.Context, marshal } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -1116,7 +1079,6 @@ func local_request_OrganizationAccess_ListCollaborators_0(ctx context.Context, m } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -1145,20 +1107,22 @@ func RegisterOrganizationRegistryHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationRegistry/Create", runtime.WithHTTPPathPattern("/users/{collaborator.user_ids.user_id}/organizations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OrganizationRegistry_Create_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OrganizationRegistry_Create_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationRegistry_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationRegistry_Create_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1168,20 +1132,22 @@ func RegisterOrganizationRegistryHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationRegistry/Get", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OrganizationRegistry_Get_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OrganizationRegistry_Get_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1191,20 +1157,22 @@ func RegisterOrganizationRegistryHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationRegistry/List", runtime.WithHTTPPathPattern("/organizations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OrganizationRegistry_List_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OrganizationRegistry_List_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1214,20 +1182,22 @@ func RegisterOrganizationRegistryHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationRegistry/List", runtime.WithHTTPPathPattern("/users/{collaborator.user_ids.user_id}/organizations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OrganizationRegistry_List_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OrganizationRegistry_List_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationRegistry_List_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationRegistry_List_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1237,20 +1207,22 @@ func RegisterOrganizationRegistryHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationRegistry/Update", runtime.WithHTTPPathPattern("/organizations/{organization.ids.organization_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OrganizationRegistry_Update_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OrganizationRegistry_Update_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationRegistry_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationRegistry_Update_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1260,20 +1232,22 @@ func RegisterOrganizationRegistryHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationRegistry/Delete", runtime.WithHTTPPathPattern("/organizations/{organization_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OrganizationRegistry_Delete_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OrganizationRegistry_Delete_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1283,20 +1257,22 @@ func RegisterOrganizationRegistryHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationRegistry/Restore", runtime.WithHTTPPathPattern("/organizations/{organization_id}/restore")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OrganizationRegistry_Restore_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OrganizationRegistry_Restore_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationRegistry_Restore_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationRegistry_Restore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1306,20 +1282,22 @@ func RegisterOrganizationRegistryHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationRegistry/Purge", runtime.WithHTTPPathPattern("/organizations/{organization_id}/purge")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OrganizationRegistry_Purge_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OrganizationRegistry_Purge_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationRegistry_Purge_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationRegistry_Purge_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1338,20 +1316,22 @@ func RegisterOrganizationAccessHandlerServer(ctx context.Context, mux *runtime.S var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationAccess/ListRights", runtime.WithHTTPPathPattern("/organizations/{organization_id}/rights")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OrganizationAccess_ListRights_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OrganizationAccess_ListRights_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationAccess_ListRights_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationAccess_ListRights_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1361,20 +1341,22 @@ func RegisterOrganizationAccessHandlerServer(ctx context.Context, mux *runtime.S var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationAccess/CreateAPIKey", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}/api-keys")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OrganizationAccess_CreateAPIKey_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OrganizationAccess_CreateAPIKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationAccess_CreateAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationAccess_CreateAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1384,20 +1366,22 @@ func RegisterOrganizationAccessHandlerServer(ctx context.Context, mux *runtime.S var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationAccess/ListAPIKeys", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}/api-keys")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OrganizationAccess_ListAPIKeys_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OrganizationAccess_ListAPIKeys_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationAccess_ListAPIKeys_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationAccess_ListAPIKeys_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1407,20 +1391,22 @@ func RegisterOrganizationAccessHandlerServer(ctx context.Context, mux *runtime.S var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationAccess/GetAPIKey", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}/api-keys/{key_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OrganizationAccess_GetAPIKey_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OrganizationAccess_GetAPIKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationAccess_GetAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationAccess_GetAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1430,20 +1416,22 @@ func RegisterOrganizationAccessHandlerServer(ctx context.Context, mux *runtime.S var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationAccess/UpdateAPIKey", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}/api-keys/{api_key.id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OrganizationAccess_UpdateAPIKey_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OrganizationAccess_UpdateAPIKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationAccess_UpdateAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationAccess_UpdateAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1453,20 +1441,22 @@ func RegisterOrganizationAccessHandlerServer(ctx context.Context, mux *runtime.S var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationAccess/GetCollaborator", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}/collaborator/user/{collaborator.user_ids.user_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OrganizationAccess_GetCollaborator_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OrganizationAccess_GetCollaborator_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationAccess_GetCollaborator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationAccess_GetCollaborator_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1476,20 +1466,22 @@ func RegisterOrganizationAccessHandlerServer(ctx context.Context, mux *runtime.S var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationAccess/SetCollaborator", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}/collaborators")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OrganizationAccess_SetCollaborator_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OrganizationAccess_SetCollaborator_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationAccess_SetCollaborator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationAccess_SetCollaborator_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1499,20 +1491,22 @@ func RegisterOrganizationAccessHandlerServer(ctx context.Context, mux *runtime.S var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationAccess/ListCollaborators", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}/collaborators")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_OrganizationAccess_ListCollaborators_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_OrganizationAccess_ListCollaborators_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationAccess_ListCollaborators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationAccess_ListCollaborators_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1561,19 +1555,21 @@ func RegisterOrganizationRegistryHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationRegistry/Create", runtime.WithHTTPPathPattern("/users/{collaborator.user_ids.user_id}/organizations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OrganizationRegistry_Create_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OrganizationRegistry_Create_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationRegistry_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationRegistry_Create_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1581,19 +1577,21 @@ func RegisterOrganizationRegistryHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationRegistry/Get", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OrganizationRegistry_Get_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OrganizationRegistry_Get_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1601,19 +1599,21 @@ func RegisterOrganizationRegistryHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationRegistry/List", runtime.WithHTTPPathPattern("/organizations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OrganizationRegistry_List_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OrganizationRegistry_List_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1621,19 +1621,21 @@ func RegisterOrganizationRegistryHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationRegistry/List", runtime.WithHTTPPathPattern("/users/{collaborator.user_ids.user_id}/organizations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OrganizationRegistry_List_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OrganizationRegistry_List_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationRegistry_List_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationRegistry_List_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1641,19 +1643,21 @@ func RegisterOrganizationRegistryHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationRegistry/Update", runtime.WithHTTPPathPattern("/organizations/{organization.ids.organization_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OrganizationRegistry_Update_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OrganizationRegistry_Update_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationRegistry_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationRegistry_Update_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1661,19 +1665,21 @@ func RegisterOrganizationRegistryHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationRegistry/Delete", runtime.WithHTTPPathPattern("/organizations/{organization_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OrganizationRegistry_Delete_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OrganizationRegistry_Delete_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1681,19 +1687,21 @@ func RegisterOrganizationRegistryHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationRegistry/Restore", runtime.WithHTTPPathPattern("/organizations/{organization_id}/restore")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OrganizationRegistry_Restore_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OrganizationRegistry_Restore_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationRegistry_Restore_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationRegistry_Restore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1701,19 +1709,21 @@ func RegisterOrganizationRegistryHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationRegistry/Purge", runtime.WithHTTPPathPattern("/organizations/{organization_id}/purge")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OrganizationRegistry_Purge_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OrganizationRegistry_Purge_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationRegistry_Purge_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationRegistry_Purge_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1721,21 +1731,21 @@ func RegisterOrganizationRegistryHandlerClient(ctx context.Context, mux *runtime } var ( - pattern_OrganizationRegistry_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "collaborator.user_ids.user_id", "organizations"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OrganizationRegistry_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "collaborator.user_ids.user_id", "organizations"}, "")) - pattern_OrganizationRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"organizations", "organization_ids.organization_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OrganizationRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"organizations", "organization_ids.organization_id"}, "")) - pattern_OrganizationRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"organizations"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OrganizationRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"organizations"}, "")) - pattern_OrganizationRegistry_List_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "collaborator.user_ids.user_id", "organizations"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OrganizationRegistry_List_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "collaborator.user_ids.user_id", "organizations"}, "")) - pattern_OrganizationRegistry_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"organizations", "organization.ids.organization_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OrganizationRegistry_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"organizations", "organization.ids.organization_id"}, "")) - pattern_OrganizationRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"organizations", "organization_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OrganizationRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"organizations", "organization_id"}, "")) - pattern_OrganizationRegistry_Restore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "organization_id", "restore"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OrganizationRegistry_Restore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "organization_id", "restore"}, "")) - pattern_OrganizationRegistry_Purge_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "organization_id", "purge"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OrganizationRegistry_Purge_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "organization_id", "purge"}, "")) ) var ( @@ -1798,19 +1808,21 @@ func RegisterOrganizationAccessHandlerClient(ctx context.Context, mux *runtime.S ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationAccess/ListRights", runtime.WithHTTPPathPattern("/organizations/{organization_id}/rights")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OrganizationAccess_ListRights_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OrganizationAccess_ListRights_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationAccess_ListRights_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationAccess_ListRights_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1818,19 +1830,21 @@ func RegisterOrganizationAccessHandlerClient(ctx context.Context, mux *runtime.S ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationAccess/CreateAPIKey", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}/api-keys")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OrganizationAccess_CreateAPIKey_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OrganizationAccess_CreateAPIKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationAccess_CreateAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationAccess_CreateAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1838,19 +1852,21 @@ func RegisterOrganizationAccessHandlerClient(ctx context.Context, mux *runtime.S ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationAccess/ListAPIKeys", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}/api-keys")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OrganizationAccess_ListAPIKeys_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OrganizationAccess_ListAPIKeys_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationAccess_ListAPIKeys_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationAccess_ListAPIKeys_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1858,19 +1874,21 @@ func RegisterOrganizationAccessHandlerClient(ctx context.Context, mux *runtime.S ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationAccess/GetAPIKey", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}/api-keys/{key_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OrganizationAccess_GetAPIKey_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OrganizationAccess_GetAPIKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationAccess_GetAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationAccess_GetAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1878,19 +1896,21 @@ func RegisterOrganizationAccessHandlerClient(ctx context.Context, mux *runtime.S ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationAccess/UpdateAPIKey", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}/api-keys/{api_key.id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OrganizationAccess_UpdateAPIKey_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OrganizationAccess_UpdateAPIKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationAccess_UpdateAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationAccess_UpdateAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1898,19 +1918,21 @@ func RegisterOrganizationAccessHandlerClient(ctx context.Context, mux *runtime.S ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationAccess/GetCollaborator", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}/collaborator/user/{collaborator.user_ids.user_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OrganizationAccess_GetCollaborator_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OrganizationAccess_GetCollaborator_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationAccess_GetCollaborator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationAccess_GetCollaborator_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1918,19 +1940,21 @@ func RegisterOrganizationAccessHandlerClient(ctx context.Context, mux *runtime.S ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationAccess/SetCollaborator", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}/collaborators")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OrganizationAccess_SetCollaborator_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OrganizationAccess_SetCollaborator_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationAccess_SetCollaborator_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationAccess_SetCollaborator_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1938,19 +1962,21 @@ func RegisterOrganizationAccessHandlerClient(ctx context.Context, mux *runtime.S ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.OrganizationAccess/ListCollaborators", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}/collaborators")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OrganizationAccess_ListCollaborators_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_OrganizationAccess_ListCollaborators_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_OrganizationAccess_ListCollaborators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OrganizationAccess_ListCollaborators_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1958,21 +1984,21 @@ func RegisterOrganizationAccessHandlerClient(ctx context.Context, mux *runtime.S } var ( - pattern_OrganizationAccess_ListRights_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "organization_id", "rights"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OrganizationAccess_ListRights_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "organization_id", "rights"}, "")) - pattern_OrganizationAccess_CreateAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "organization_ids.organization_id", "api-keys"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OrganizationAccess_CreateAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "organization_ids.organization_id", "api-keys"}, "")) - pattern_OrganizationAccess_ListAPIKeys_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "organization_ids.organization_id", "api-keys"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OrganizationAccess_ListAPIKeys_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "organization_ids.organization_id", "api-keys"}, "")) - pattern_OrganizationAccess_GetAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"organizations", "organization_ids.organization_id", "api-keys", "key_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OrganizationAccess_GetAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"organizations", "organization_ids.organization_id", "api-keys", "key_id"}, "")) - pattern_OrganizationAccess_UpdateAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"organizations", "organization_ids.organization_id", "api-keys", "api_key.id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OrganizationAccess_UpdateAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"organizations", "organization_ids.organization_id", "api-keys", "api_key.id"}, "")) - pattern_OrganizationAccess_GetCollaborator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"organizations", "organization_ids.organization_id", "collaborator", "user", "collaborator.user_ids.user_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OrganizationAccess_GetCollaborator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"organizations", "organization_ids.organization_id", "collaborator", "user", "collaborator.user_ids.user_id"}, "")) - pattern_OrganizationAccess_SetCollaborator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "organization_ids.organization_id", "collaborators"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OrganizationAccess_SetCollaborator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "organization_ids.organization_id", "collaborators"}, "")) - pattern_OrganizationAccess_ListCollaborators_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "organization_ids.organization_id", "collaborators"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OrganizationAccess_ListCollaborators_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"organizations", "organization_ids.organization_id", "collaborators"}, "")) ) var ( diff --git a/pkg/ttnpb/organization_services.pb.validate.go b/pkg/ttnpb/organization_services.pb.validate.go index 2e3ce898ef..90a1820015 100644 --- a/pkg/ttnpb/organization_services.pb.validate.go +++ b/pkg/ttnpb/organization_services.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,8 +29,5 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) - -// define the regex for a UUID once up-front -var _organization_services_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") diff --git a/pkg/ttnpb/organization_services_grpc.pb.go b/pkg/ttnpb/organization_services_grpc.pb.go new file mode 100644 index 0000000000..2b5ffabbab --- /dev/null +++ b/pkg/ttnpb/organization_services_grpc.pb.go @@ -0,0 +1,732 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/organization_services.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// OrganizationRegistryClient is the client API for OrganizationRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type OrganizationRegistryClient interface { + // Create a new organization. This also sets the given user as + // first collaborator with all possible rights. + Create(ctx context.Context, in *CreateOrganizationRequest, opts ...grpc.CallOption) (*Organization, error) + // Get the organization with the given identifiers, selecting the fields specified + // in the field mask. + // More or less fields may be returned, depending on the rights of the caller. + Get(ctx context.Context, in *GetOrganizationRequest, opts ...grpc.CallOption) (*Organization, error) + // List organizations where the given user or organization is a direct collaborator. + // If no user or organization is given, this returns the organizations the caller + // has access to. + // Similar to Get, this selects the fields given by the field mask. + // More or less fields may be returned, depending on the rights of the caller. + List(ctx context.Context, in *ListOrganizationsRequest, opts ...grpc.CallOption) (*Organizations, error) + // Update the organization, changing the fields specified by the field mask to the provided values. + Update(ctx context.Context, in *UpdateOrganizationRequest, opts ...grpc.CallOption) (*Organization, error) + // Delete the organization. This may not release the organization ID for reuse. + Delete(ctx context.Context, in *OrganizationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Restore a recently deleted organization. + // + // Deployment configuration may specify if, and for how long after deletion, + // entities can be restored. + Restore(ctx context.Context, in *OrganizationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Purge the organization. This will release the organization ID for reuse. + // The user is responsible for clearing data from any (external) integrations + // that may store and expose data by user or organization ID. + Purge(ctx context.Context, in *OrganizationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type organizationRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewOrganizationRegistryClient(cc grpc.ClientConnInterface) OrganizationRegistryClient { + return &organizationRegistryClient{cc} +} + +func (c *organizationRegistryClient) Create(ctx context.Context, in *CreateOrganizationRequest, opts ...grpc.CallOption) (*Organization, error) { + out := new(Organization) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationRegistry/Create", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationRegistryClient) Get(ctx context.Context, in *GetOrganizationRequest, opts ...grpc.CallOption) (*Organization, error) { + out := new(Organization) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationRegistry/Get", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationRegistryClient) List(ctx context.Context, in *ListOrganizationsRequest, opts ...grpc.CallOption) (*Organizations, error) { + out := new(Organizations) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationRegistry/List", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationRegistryClient) Update(ctx context.Context, in *UpdateOrganizationRequest, opts ...grpc.CallOption) (*Organization, error) { + out := new(Organization) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationRegistry/Update", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationRegistryClient) Delete(ctx context.Context, in *OrganizationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationRegistry/Delete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationRegistryClient) Restore(ctx context.Context, in *OrganizationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationRegistry/Restore", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationRegistryClient) Purge(ctx context.Context, in *OrganizationIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationRegistry/Purge", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// OrganizationRegistryServer is the server API for OrganizationRegistry service. +// All implementations must embed UnimplementedOrganizationRegistryServer +// for forward compatibility +type OrganizationRegistryServer interface { + // Create a new organization. This also sets the given user as + // first collaborator with all possible rights. + Create(context.Context, *CreateOrganizationRequest) (*Organization, error) + // Get the organization with the given identifiers, selecting the fields specified + // in the field mask. + // More or less fields may be returned, depending on the rights of the caller. + Get(context.Context, *GetOrganizationRequest) (*Organization, error) + // List organizations where the given user or organization is a direct collaborator. + // If no user or organization is given, this returns the organizations the caller + // has access to. + // Similar to Get, this selects the fields given by the field mask. + // More or less fields may be returned, depending on the rights of the caller. + List(context.Context, *ListOrganizationsRequest) (*Organizations, error) + // Update the organization, changing the fields specified by the field mask to the provided values. + Update(context.Context, *UpdateOrganizationRequest) (*Organization, error) + // Delete the organization. This may not release the organization ID for reuse. + Delete(context.Context, *OrganizationIdentifiers) (*emptypb.Empty, error) + // Restore a recently deleted organization. + // + // Deployment configuration may specify if, and for how long after deletion, + // entities can be restored. + Restore(context.Context, *OrganizationIdentifiers) (*emptypb.Empty, error) + // Purge the organization. This will release the organization ID for reuse. + // The user is responsible for clearing data from any (external) integrations + // that may store and expose data by user or organization ID. + Purge(context.Context, *OrganizationIdentifiers) (*emptypb.Empty, error) + mustEmbedUnimplementedOrganizationRegistryServer() +} + +// UnimplementedOrganizationRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedOrganizationRegistryServer struct { +} + +func (UnimplementedOrganizationRegistryServer) Create(context.Context, *CreateOrganizationRequest) (*Organization, error) { + return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") +} +func (UnimplementedOrganizationRegistryServer) Get(context.Context, *GetOrganizationRequest) (*Organization, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (UnimplementedOrganizationRegistryServer) List(context.Context, *ListOrganizationsRequest) (*Organizations, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedOrganizationRegistryServer) Update(context.Context, *UpdateOrganizationRequest) (*Organization, error) { + return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") +} +func (UnimplementedOrganizationRegistryServer) Delete(context.Context, *OrganizationIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedOrganizationRegistryServer) Restore(context.Context, *OrganizationIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Restore not implemented") +} +func (UnimplementedOrganizationRegistryServer) Purge(context.Context, *OrganizationIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Purge not implemented") +} +func (UnimplementedOrganizationRegistryServer) mustEmbedUnimplementedOrganizationRegistryServer() {} + +// UnsafeOrganizationRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to OrganizationRegistryServer will +// result in compilation errors. +type UnsafeOrganizationRegistryServer interface { + mustEmbedUnimplementedOrganizationRegistryServer() +} + +func RegisterOrganizationRegistryServer(s grpc.ServiceRegistrar, srv OrganizationRegistryServer) { + s.RegisterService(&OrganizationRegistry_ServiceDesc, srv) +} + +func _OrganizationRegistry_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateOrganizationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationRegistryServer).Create(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OrganizationRegistry/Create", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationRegistryServer).Create(ctx, req.(*CreateOrganizationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OrganizationRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetOrganizationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationRegistryServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OrganizationRegistry/Get", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationRegistryServer).Get(ctx, req.(*GetOrganizationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OrganizationRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListOrganizationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationRegistryServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OrganizationRegistry/List", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationRegistryServer).List(ctx, req.(*ListOrganizationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OrganizationRegistry_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateOrganizationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationRegistryServer).Update(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OrganizationRegistry/Update", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationRegistryServer).Update(ctx, req.(*UpdateOrganizationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OrganizationRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(OrganizationIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationRegistryServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OrganizationRegistry/Delete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationRegistryServer).Delete(ctx, req.(*OrganizationIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _OrganizationRegistry_Restore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(OrganizationIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationRegistryServer).Restore(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OrganizationRegistry/Restore", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationRegistryServer).Restore(ctx, req.(*OrganizationIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _OrganizationRegistry_Purge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(OrganizationIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationRegistryServer).Purge(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OrganizationRegistry/Purge", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationRegistryServer).Purge(ctx, req.(*OrganizationIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// OrganizationRegistry_ServiceDesc is the grpc.ServiceDesc for OrganizationRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var OrganizationRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.OrganizationRegistry", + HandlerType: (*OrganizationRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Create", + Handler: _OrganizationRegistry_Create_Handler, + }, + { + MethodName: "Get", + Handler: _OrganizationRegistry_Get_Handler, + }, + { + MethodName: "List", + Handler: _OrganizationRegistry_List_Handler, + }, + { + MethodName: "Update", + Handler: _OrganizationRegistry_Update_Handler, + }, + { + MethodName: "Delete", + Handler: _OrganizationRegistry_Delete_Handler, + }, + { + MethodName: "Restore", + Handler: _OrganizationRegistry_Restore_Handler, + }, + { + MethodName: "Purge", + Handler: _OrganizationRegistry_Purge_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/organization_services.proto", +} + +// OrganizationAccessClient is the client API for OrganizationAccess service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type OrganizationAccessClient interface { + // List the rights the caller has on this organization. + ListRights(ctx context.Context, in *OrganizationIdentifiers, opts ...grpc.CallOption) (*Rights, error) + // Create an API key scoped to this organization. + // Organization API keys can give access to the organization itself, as well as + // any application, gateway and OAuth client this organization is a collaborator of. + CreateAPIKey(ctx context.Context, in *CreateOrganizationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) + // List the API keys for this organization. + ListAPIKeys(ctx context.Context, in *ListOrganizationAPIKeysRequest, opts ...grpc.CallOption) (*APIKeys, error) + // Get a single API key of this organization. + GetAPIKey(ctx context.Context, in *GetOrganizationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) + // Update the rights of an API key of the organization. + // This method can also be used to delete the API key, by giving it no rights. + // The caller is required to have all assigned or/and removed rights. + UpdateAPIKey(ctx context.Context, in *UpdateOrganizationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) + // Get the rights of a collaborator (member) of the organization. + // Pseudo-rights in the response (such as the "_ALL" right) are not expanded. + GetCollaborator(ctx context.Context, in *GetOrganizationCollaboratorRequest, opts ...grpc.CallOption) (*GetCollaboratorResponse, error) + // Set the rights of a collaborator (member) on the organization. + // Organization collaborators can get access to the organization itself, as well as + // any application, gateway and OAuth client this organization is a collaborator of. + // This method can also be used to delete the collaborator, by giving them no rights. + // The caller is required to have all assigned or/and removed rights. + SetCollaborator(ctx context.Context, in *SetOrganizationCollaboratorRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // List the collaborators on this organization. + ListCollaborators(ctx context.Context, in *ListOrganizationCollaboratorsRequest, opts ...grpc.CallOption) (*Collaborators, error) +} + +type organizationAccessClient struct { + cc grpc.ClientConnInterface +} + +func NewOrganizationAccessClient(cc grpc.ClientConnInterface) OrganizationAccessClient { + return &organizationAccessClient{cc} +} + +func (c *organizationAccessClient) ListRights(ctx context.Context, in *OrganizationIdentifiers, opts ...grpc.CallOption) (*Rights, error) { + out := new(Rights) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationAccess/ListRights", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationAccessClient) CreateAPIKey(ctx context.Context, in *CreateOrganizationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { + out := new(APIKey) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationAccess/CreateAPIKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationAccessClient) ListAPIKeys(ctx context.Context, in *ListOrganizationAPIKeysRequest, opts ...grpc.CallOption) (*APIKeys, error) { + out := new(APIKeys) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationAccess/ListAPIKeys", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationAccessClient) GetAPIKey(ctx context.Context, in *GetOrganizationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { + out := new(APIKey) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationAccess/GetAPIKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationAccessClient) UpdateAPIKey(ctx context.Context, in *UpdateOrganizationAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { + out := new(APIKey) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationAccess/UpdateAPIKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationAccessClient) GetCollaborator(ctx context.Context, in *GetOrganizationCollaboratorRequest, opts ...grpc.CallOption) (*GetCollaboratorResponse, error) { + out := new(GetCollaboratorResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationAccess/GetCollaborator", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationAccessClient) SetCollaborator(ctx context.Context, in *SetOrganizationCollaboratorRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationAccess/SetCollaborator", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationAccessClient) ListCollaborators(ctx context.Context, in *ListOrganizationCollaboratorsRequest, opts ...grpc.CallOption) (*Collaborators, error) { + out := new(Collaborators) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.OrganizationAccess/ListCollaborators", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// OrganizationAccessServer is the server API for OrganizationAccess service. +// All implementations must embed UnimplementedOrganizationAccessServer +// for forward compatibility +type OrganizationAccessServer interface { + // List the rights the caller has on this organization. + ListRights(context.Context, *OrganizationIdentifiers) (*Rights, error) + // Create an API key scoped to this organization. + // Organization API keys can give access to the organization itself, as well as + // any application, gateway and OAuth client this organization is a collaborator of. + CreateAPIKey(context.Context, *CreateOrganizationAPIKeyRequest) (*APIKey, error) + // List the API keys for this organization. + ListAPIKeys(context.Context, *ListOrganizationAPIKeysRequest) (*APIKeys, error) + // Get a single API key of this organization. + GetAPIKey(context.Context, *GetOrganizationAPIKeyRequest) (*APIKey, error) + // Update the rights of an API key of the organization. + // This method can also be used to delete the API key, by giving it no rights. + // The caller is required to have all assigned or/and removed rights. + UpdateAPIKey(context.Context, *UpdateOrganizationAPIKeyRequest) (*APIKey, error) + // Get the rights of a collaborator (member) of the organization. + // Pseudo-rights in the response (such as the "_ALL" right) are not expanded. + GetCollaborator(context.Context, *GetOrganizationCollaboratorRequest) (*GetCollaboratorResponse, error) + // Set the rights of a collaborator (member) on the organization. + // Organization collaborators can get access to the organization itself, as well as + // any application, gateway and OAuth client this organization is a collaborator of. + // This method can also be used to delete the collaborator, by giving them no rights. + // The caller is required to have all assigned or/and removed rights. + SetCollaborator(context.Context, *SetOrganizationCollaboratorRequest) (*emptypb.Empty, error) + // List the collaborators on this organization. + ListCollaborators(context.Context, *ListOrganizationCollaboratorsRequest) (*Collaborators, error) + mustEmbedUnimplementedOrganizationAccessServer() +} + +// UnimplementedOrganizationAccessServer must be embedded to have forward compatible implementations. +type UnimplementedOrganizationAccessServer struct { +} + +func (UnimplementedOrganizationAccessServer) ListRights(context.Context, *OrganizationIdentifiers) (*Rights, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListRights not implemented") +} +func (UnimplementedOrganizationAccessServer) CreateAPIKey(context.Context, *CreateOrganizationAPIKeyRequest) (*APIKey, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateAPIKey not implemented") +} +func (UnimplementedOrganizationAccessServer) ListAPIKeys(context.Context, *ListOrganizationAPIKeysRequest) (*APIKeys, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListAPIKeys not implemented") +} +func (UnimplementedOrganizationAccessServer) GetAPIKey(context.Context, *GetOrganizationAPIKeyRequest) (*APIKey, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAPIKey not implemented") +} +func (UnimplementedOrganizationAccessServer) UpdateAPIKey(context.Context, *UpdateOrganizationAPIKeyRequest) (*APIKey, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateAPIKey not implemented") +} +func (UnimplementedOrganizationAccessServer) GetCollaborator(context.Context, *GetOrganizationCollaboratorRequest) (*GetCollaboratorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCollaborator not implemented") +} +func (UnimplementedOrganizationAccessServer) SetCollaborator(context.Context, *SetOrganizationCollaboratorRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetCollaborator not implemented") +} +func (UnimplementedOrganizationAccessServer) ListCollaborators(context.Context, *ListOrganizationCollaboratorsRequest) (*Collaborators, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListCollaborators not implemented") +} +func (UnimplementedOrganizationAccessServer) mustEmbedUnimplementedOrganizationAccessServer() {} + +// UnsafeOrganizationAccessServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to OrganizationAccessServer will +// result in compilation errors. +type UnsafeOrganizationAccessServer interface { + mustEmbedUnimplementedOrganizationAccessServer() +} + +func RegisterOrganizationAccessServer(s grpc.ServiceRegistrar, srv OrganizationAccessServer) { + s.RegisterService(&OrganizationAccess_ServiceDesc, srv) +} + +func _OrganizationAccess_ListRights_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(OrganizationIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationAccessServer).ListRights(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OrganizationAccess/ListRights", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationAccessServer).ListRights(ctx, req.(*OrganizationIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _OrganizationAccess_CreateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateOrganizationAPIKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationAccessServer).CreateAPIKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OrganizationAccess/CreateAPIKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationAccessServer).CreateAPIKey(ctx, req.(*CreateOrganizationAPIKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OrganizationAccess_ListAPIKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListOrganizationAPIKeysRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationAccessServer).ListAPIKeys(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OrganizationAccess/ListAPIKeys", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationAccessServer).ListAPIKeys(ctx, req.(*ListOrganizationAPIKeysRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OrganizationAccess_GetAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetOrganizationAPIKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationAccessServer).GetAPIKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OrganizationAccess/GetAPIKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationAccessServer).GetAPIKey(ctx, req.(*GetOrganizationAPIKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OrganizationAccess_UpdateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateOrganizationAPIKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationAccessServer).UpdateAPIKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OrganizationAccess/UpdateAPIKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationAccessServer).UpdateAPIKey(ctx, req.(*UpdateOrganizationAPIKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OrganizationAccess_GetCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetOrganizationCollaboratorRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationAccessServer).GetCollaborator(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OrganizationAccess/GetCollaborator", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationAccessServer).GetCollaborator(ctx, req.(*GetOrganizationCollaboratorRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OrganizationAccess_SetCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetOrganizationCollaboratorRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationAccessServer).SetCollaborator(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OrganizationAccess/SetCollaborator", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationAccessServer).SetCollaborator(ctx, req.(*SetOrganizationCollaboratorRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OrganizationAccess_ListCollaborators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListOrganizationCollaboratorsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationAccessServer).ListCollaborators(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.OrganizationAccess/ListCollaborators", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationAccessServer).ListCollaborators(ctx, req.(*ListOrganizationCollaboratorsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// OrganizationAccess_ServiceDesc is the grpc.ServiceDesc for OrganizationAccess service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var OrganizationAccess_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.OrganizationAccess", + HandlerType: (*OrganizationAccessServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListRights", + Handler: _OrganizationAccess_ListRights_Handler, + }, + { + MethodName: "CreateAPIKey", + Handler: _OrganizationAccess_CreateAPIKey_Handler, + }, + { + MethodName: "ListAPIKeys", + Handler: _OrganizationAccess_ListAPIKeys_Handler, + }, + { + MethodName: "GetAPIKey", + Handler: _OrganizationAccess_GetAPIKey_Handler, + }, + { + MethodName: "UpdateAPIKey", + Handler: _OrganizationAccess_UpdateAPIKey_Handler, + }, + { + MethodName: "GetCollaborator", + Handler: _OrganizationAccess_GetCollaborator_Handler, + }, + { + MethodName: "SetCollaborator", + Handler: _OrganizationAccess_SetCollaborator_Handler, + }, + { + MethodName: "ListCollaborators", + Handler: _OrganizationAccess_ListCollaborators_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/organization_services.proto", +} diff --git a/pkg/ttnpb/packetbrokeragent.pb.go b/pkg/ttnpb/packetbrokeragent.pb.go index f6cfe50678..26639675b6 100644 --- a/pkg/ttnpb/packetbrokeragent.pb.go +++ b/pkg/ttnpb/packetbrokeragent.pb.go @@ -1,45 +1,63 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2021 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/packetbrokeragent.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + emptypb "google.golang.org/protobuf/types/known/emptypb" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // Gateway respresentation for Packet Broker. // This is a subset and superset of the Gateway message using the same data types and field tags to achieve initial wire compatibility. // There is no (longer) wire compatibility needed; new fields may use any tag. type PacketBrokerGateway struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Ids *PacketBrokerGateway_GatewayIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` // This field is deprecated. Use administrative_contact and technical_contact instead. - ContactInfo []*ContactInfo `protobuf:"bytes,7,rep,name=contact_info,json=contactInfo,proto3" json:"contact_info,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Do not use. + ContactInfo []*ContactInfo `protobuf:"bytes,7,rep,name=contact_info,json=contactInfo,proto3" json:"contact_info,omitempty"` AdministrativeContact *OrganizationOrUserIdentifiers `protobuf:"bytes,10,opt,name=administrative_contact,json=administrativeContact,proto3" json:"administrative_contact,omitempty"` TechnicalContact *OrganizationOrUserIdentifiers `protobuf:"bytes,11,opt,name=technical_contact,json=technicalContact,proto3" json:"technical_contact,omitempty"` Antennas []*GatewayAntenna `protobuf:"bytes,13,rep,name=antennas,proto3" json:"antennas,omitempty"` @@ -50,173 +68,134 @@ type PacketBrokerGateway struct { Online bool `protobuf:"varint,28,opt,name=online,proto3" json:"online,omitempty"` // Received packets rate (number of packets per hour). // This field gets updated when a value is set. - RxRate *types.FloatValue `protobuf:"bytes,29,opt,name=rx_rate,json=rxRate,proto3" json:"rx_rate,omitempty"` + RxRate *wrapperspb.FloatValue `protobuf:"bytes,29,opt,name=rx_rate,json=rxRate,proto3" json:"rx_rate,omitempty"` // Transmitted packets rate (number of packets per hour). // This field gets updated when a value is set. - TxRate *types.FloatValue `protobuf:"bytes,30,opt,name=tx_rate,json=txRate,proto3" json:"tx_rate,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + TxRate *wrapperspb.FloatValue `protobuf:"bytes,30,opt,name=tx_rate,json=txRate,proto3" json:"tx_rate,omitempty"` } -func (m *PacketBrokerGateway) Reset() { *m = PacketBrokerGateway{} } -func (m *PacketBrokerGateway) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerGateway) ProtoMessage() {} -func (*PacketBrokerGateway) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{0} -} -func (m *PacketBrokerGateway) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerGateway.Unmarshal(m, b) -} -func (m *PacketBrokerGateway) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerGateway.Marshal(b, m, deterministic) -} -func (m *PacketBrokerGateway) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerGateway.Merge(m, src) +func (x *PacketBrokerGateway) Reset() { + *x = PacketBrokerGateway{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PacketBrokerGateway) XXX_Size() int { - return xxx_messageInfo_PacketBrokerGateway.Size(m) + +func (x *PacketBrokerGateway) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PacketBrokerGateway) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerGateway.DiscardUnknown(m) + +func (*PacketBrokerGateway) ProtoMessage() {} + +func (x *PacketBrokerGateway) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PacketBrokerGateway proto.InternalMessageInfo +// Deprecated: Use PacketBrokerGateway.ProtoReflect.Descriptor instead. +func (*PacketBrokerGateway) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{0} +} -func (m *PacketBrokerGateway) GetIds() *PacketBrokerGateway_GatewayIdentifiers { - if m != nil { - return m.Ids +func (x *PacketBrokerGateway) GetIds() *PacketBrokerGateway_GatewayIdentifiers { + if x != nil { + return x.Ids } return nil } // Deprecated: Do not use. -func (m *PacketBrokerGateway) GetContactInfo() []*ContactInfo { - if m != nil { - return m.ContactInfo +func (x *PacketBrokerGateway) GetContactInfo() []*ContactInfo { + if x != nil { + return x.ContactInfo } return nil } -func (m *PacketBrokerGateway) GetAdministrativeContact() *OrganizationOrUserIdentifiers { - if m != nil { - return m.AdministrativeContact +func (x *PacketBrokerGateway) GetAdministrativeContact() *OrganizationOrUserIdentifiers { + if x != nil { + return x.AdministrativeContact } return nil } -func (m *PacketBrokerGateway) GetTechnicalContact() *OrganizationOrUserIdentifiers { - if m != nil { - return m.TechnicalContact +func (x *PacketBrokerGateway) GetTechnicalContact() *OrganizationOrUserIdentifiers { + if x != nil { + return x.TechnicalContact } return nil } -func (m *PacketBrokerGateway) GetAntennas() []*GatewayAntenna { - if m != nil { - return m.Antennas +func (x *PacketBrokerGateway) GetAntennas() []*GatewayAntenna { + if x != nil { + return x.Antennas } return nil } -func (m *PacketBrokerGateway) GetStatusPublic() bool { - if m != nil { - return m.StatusPublic +func (x *PacketBrokerGateway) GetStatusPublic() bool { + if x != nil { + return x.StatusPublic } return false } -func (m *PacketBrokerGateway) GetLocationPublic() bool { - if m != nil { - return m.LocationPublic +func (x *PacketBrokerGateway) GetLocationPublic() bool { + if x != nil { + return x.LocationPublic } return false } -func (m *PacketBrokerGateway) GetFrequencyPlanIds() []string { - if m != nil { - return m.FrequencyPlanIds +func (x *PacketBrokerGateway) GetFrequencyPlanIds() []string { + if x != nil { + return x.FrequencyPlanIds } return nil } -func (m *PacketBrokerGateway) GetUpdateLocationFromStatus() bool { - if m != nil { - return m.UpdateLocationFromStatus +func (x *PacketBrokerGateway) GetUpdateLocationFromStatus() bool { + if x != nil { + return x.UpdateLocationFromStatus } return false } -func (m *PacketBrokerGateway) GetOnline() bool { - if m != nil { - return m.Online +func (x *PacketBrokerGateway) GetOnline() bool { + if x != nil { + return x.Online } return false } -func (m *PacketBrokerGateway) GetRxRate() *types.FloatValue { - if m != nil { - return m.RxRate - } - return nil -} - -func (m *PacketBrokerGateway) GetTxRate() *types.FloatValue { - if m != nil { - return m.TxRate +func (x *PacketBrokerGateway) GetRxRate() *wrapperspb.FloatValue { + if x != nil { + return x.RxRate } return nil } -type PacketBrokerGateway_GatewayIdentifiers struct { - GatewayId string `protobuf:"bytes,1,opt,name=gateway_id,json=gatewayId,proto3" json:"gateway_id,omitempty"` - Eui []byte `protobuf:"bytes,2,opt,name=eui,proto3" json:"eui,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *PacketBrokerGateway_GatewayIdentifiers) Reset() { - *m = PacketBrokerGateway_GatewayIdentifiers{} -} -func (m *PacketBrokerGateway_GatewayIdentifiers) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerGateway_GatewayIdentifiers) ProtoMessage() {} -func (*PacketBrokerGateway_GatewayIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{0, 0} -} -func (m *PacketBrokerGateway_GatewayIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerGateway_GatewayIdentifiers.Unmarshal(m, b) -} -func (m *PacketBrokerGateway_GatewayIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerGateway_GatewayIdentifiers.Marshal(b, m, deterministic) -} -func (m *PacketBrokerGateway_GatewayIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerGateway_GatewayIdentifiers.Merge(m, src) -} -func (m *PacketBrokerGateway_GatewayIdentifiers) XXX_Size() int { - return xxx_messageInfo_PacketBrokerGateway_GatewayIdentifiers.Size(m) -} -func (m *PacketBrokerGateway_GatewayIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerGateway_GatewayIdentifiers.DiscardUnknown(m) -} - -var xxx_messageInfo_PacketBrokerGateway_GatewayIdentifiers proto.InternalMessageInfo - -func (m *PacketBrokerGateway_GatewayIdentifiers) GetGatewayId() string { - if m != nil { - return m.GatewayId - } - return "" -} - -func (m *PacketBrokerGateway_GatewayIdentifiers) GetEui() []byte { - if m != nil { - return m.Eui +func (x *PacketBrokerGateway) GetTxRate() *wrapperspb.FloatValue { + if x != nil { + return x.TxRate } return nil } type UpdatePacketBrokerGatewayRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Gateway *PacketBrokerGateway `protobuf:"bytes,1,opt,name=gateway,proto3" json:"gateway,omitempty"` // The names of the gateway fields that are considered for update. // @@ -226,184 +205,220 @@ type UpdatePacketBrokerGatewayRequest struct { // // Location is only updated if location_public is set. If location_public is set and false, the location will be reset. // If location_public is set and true, the first antenna location will be used as gateway location. - FieldMask *types.FieldMask `protobuf:"bytes,5,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,5,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *UpdatePacketBrokerGatewayRequest) Reset() { *m = UpdatePacketBrokerGatewayRequest{} } -func (m *UpdatePacketBrokerGatewayRequest) String() string { return proto.CompactTextString(m) } -func (*UpdatePacketBrokerGatewayRequest) ProtoMessage() {} -func (*UpdatePacketBrokerGatewayRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{1} -} -func (m *UpdatePacketBrokerGatewayRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdatePacketBrokerGatewayRequest.Unmarshal(m, b) -} -func (m *UpdatePacketBrokerGatewayRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdatePacketBrokerGatewayRequest.Marshal(b, m, deterministic) -} -func (m *UpdatePacketBrokerGatewayRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdatePacketBrokerGatewayRequest.Merge(m, src) +func (x *UpdatePacketBrokerGatewayRequest) Reset() { + *x = UpdatePacketBrokerGatewayRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UpdatePacketBrokerGatewayRequest) XXX_Size() int { - return xxx_messageInfo_UpdatePacketBrokerGatewayRequest.Size(m) + +func (x *UpdatePacketBrokerGatewayRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UpdatePacketBrokerGatewayRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdatePacketBrokerGatewayRequest.DiscardUnknown(m) + +func (*UpdatePacketBrokerGatewayRequest) ProtoMessage() {} + +func (x *UpdatePacketBrokerGatewayRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UpdatePacketBrokerGatewayRequest proto.InternalMessageInfo +// Deprecated: Use UpdatePacketBrokerGatewayRequest.ProtoReflect.Descriptor instead. +func (*UpdatePacketBrokerGatewayRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{1} +} -func (m *UpdatePacketBrokerGatewayRequest) GetGateway() *PacketBrokerGateway { - if m != nil { - return m.Gateway +func (x *UpdatePacketBrokerGatewayRequest) GetGateway() *PacketBrokerGateway { + if x != nil { + return x.Gateway } return nil } -func (m *UpdatePacketBrokerGatewayRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *UpdatePacketBrokerGatewayRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type UpdatePacketBrokerGatewayResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Time to live of the online status. - OnlineTtl *types.Duration `protobuf:"bytes,1,opt,name=online_ttl,json=onlineTtl,proto3" json:"online_ttl,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + OnlineTtl *durationpb.Duration `protobuf:"bytes,1,opt,name=online_ttl,json=onlineTtl,proto3" json:"online_ttl,omitempty"` } -func (m *UpdatePacketBrokerGatewayResponse) Reset() { *m = UpdatePacketBrokerGatewayResponse{} } -func (m *UpdatePacketBrokerGatewayResponse) String() string { return proto.CompactTextString(m) } -func (*UpdatePacketBrokerGatewayResponse) ProtoMessage() {} -func (*UpdatePacketBrokerGatewayResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{2} -} -func (m *UpdatePacketBrokerGatewayResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdatePacketBrokerGatewayResponse.Unmarshal(m, b) -} -func (m *UpdatePacketBrokerGatewayResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdatePacketBrokerGatewayResponse.Marshal(b, m, deterministic) -} -func (m *UpdatePacketBrokerGatewayResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdatePacketBrokerGatewayResponse.Merge(m, src) +func (x *UpdatePacketBrokerGatewayResponse) Reset() { + *x = UpdatePacketBrokerGatewayResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UpdatePacketBrokerGatewayResponse) XXX_Size() int { - return xxx_messageInfo_UpdatePacketBrokerGatewayResponse.Size(m) + +func (x *UpdatePacketBrokerGatewayResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UpdatePacketBrokerGatewayResponse) XXX_DiscardUnknown() { - xxx_messageInfo_UpdatePacketBrokerGatewayResponse.DiscardUnknown(m) + +func (*UpdatePacketBrokerGatewayResponse) ProtoMessage() {} + +func (x *UpdatePacketBrokerGatewayResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UpdatePacketBrokerGatewayResponse proto.InternalMessageInfo +// Deprecated: Use UpdatePacketBrokerGatewayResponse.ProtoReflect.Descriptor instead. +func (*UpdatePacketBrokerGatewayResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{2} +} -func (m *UpdatePacketBrokerGatewayResponse) GetOnlineTtl() *types.Duration { - if m != nil { - return m.OnlineTtl +func (x *UpdatePacketBrokerGatewayResponse) GetOnlineTtl() *durationpb.Duration { + if x != nil { + return x.OnlineTtl } return nil } type PacketBrokerNetworkIdentifier struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // LoRa Alliance NetID. NetId uint32 `protobuf:"varint,1,opt,name=net_id,json=netId,proto3" json:"net_id,omitempty"` // Tenant identifier if the registration leases DevAddr blocks from a NetID. - TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` } -func (m *PacketBrokerNetworkIdentifier) Reset() { *m = PacketBrokerNetworkIdentifier{} } -func (m *PacketBrokerNetworkIdentifier) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerNetworkIdentifier) ProtoMessage() {} -func (*PacketBrokerNetworkIdentifier) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{3} -} -func (m *PacketBrokerNetworkIdentifier) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerNetworkIdentifier.Unmarshal(m, b) -} -func (m *PacketBrokerNetworkIdentifier) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerNetworkIdentifier.Marshal(b, m, deterministic) -} -func (m *PacketBrokerNetworkIdentifier) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerNetworkIdentifier.Merge(m, src) +func (x *PacketBrokerNetworkIdentifier) Reset() { + *x = PacketBrokerNetworkIdentifier{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PacketBrokerNetworkIdentifier) XXX_Size() int { - return xxx_messageInfo_PacketBrokerNetworkIdentifier.Size(m) + +func (x *PacketBrokerNetworkIdentifier) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PacketBrokerNetworkIdentifier) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerNetworkIdentifier.DiscardUnknown(m) + +func (*PacketBrokerNetworkIdentifier) ProtoMessage() {} + +func (x *PacketBrokerNetworkIdentifier) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PacketBrokerNetworkIdentifier proto.InternalMessageInfo +// Deprecated: Use PacketBrokerNetworkIdentifier.ProtoReflect.Descriptor instead. +func (*PacketBrokerNetworkIdentifier) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{3} +} -func (m *PacketBrokerNetworkIdentifier) GetNetId() uint32 { - if m != nil { - return m.NetId +func (x *PacketBrokerNetworkIdentifier) GetNetId() uint32 { + if x != nil { + return x.NetId } return 0 } -func (m *PacketBrokerNetworkIdentifier) GetTenantId() string { - if m != nil { - return m.TenantId +func (x *PacketBrokerNetworkIdentifier) GetTenantId() string { + if x != nil { + return x.TenantId } return "" } type PacketBrokerDevAddrBlock struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + DevAddrPrefix *DevAddrPrefix `protobuf:"bytes,1,opt,name=dev_addr_prefix,json=devAddrPrefix,proto3" json:"dev_addr_prefix,omitempty"` HomeNetworkClusterId string `protobuf:"bytes,2,opt,name=home_network_cluster_id,json=homeNetworkClusterId,proto3" json:"home_network_cluster_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *PacketBrokerDevAddrBlock) Reset() { *m = PacketBrokerDevAddrBlock{} } -func (m *PacketBrokerDevAddrBlock) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerDevAddrBlock) ProtoMessage() {} -func (*PacketBrokerDevAddrBlock) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{4} -} -func (m *PacketBrokerDevAddrBlock) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerDevAddrBlock.Unmarshal(m, b) -} -func (m *PacketBrokerDevAddrBlock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerDevAddrBlock.Marshal(b, m, deterministic) -} -func (m *PacketBrokerDevAddrBlock) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerDevAddrBlock.Merge(m, src) +func (x *PacketBrokerDevAddrBlock) Reset() { + *x = PacketBrokerDevAddrBlock{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PacketBrokerDevAddrBlock) XXX_Size() int { - return xxx_messageInfo_PacketBrokerDevAddrBlock.Size(m) + +func (x *PacketBrokerDevAddrBlock) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PacketBrokerDevAddrBlock) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerDevAddrBlock.DiscardUnknown(m) + +func (*PacketBrokerDevAddrBlock) ProtoMessage() {} + +func (x *PacketBrokerDevAddrBlock) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PacketBrokerDevAddrBlock proto.InternalMessageInfo +// Deprecated: Use PacketBrokerDevAddrBlock.ProtoReflect.Descriptor instead. +func (*PacketBrokerDevAddrBlock) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{4} +} -func (m *PacketBrokerDevAddrBlock) GetDevAddrPrefix() *DevAddrPrefix { - if m != nil { - return m.DevAddrPrefix +func (x *PacketBrokerDevAddrBlock) GetDevAddrPrefix() *DevAddrPrefix { + if x != nil { + return x.DevAddrPrefix } return nil } -func (m *PacketBrokerDevAddrBlock) GetHomeNetworkClusterId() string { - if m != nil { - return m.HomeNetworkClusterId +func (x *PacketBrokerDevAddrBlock) GetHomeNetworkClusterId() string { + if x != nil { + return x.HomeNetworkClusterId } return "" } type PacketBrokerNetwork struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Packet Broker network identifier. Id *PacketBrokerNetworkIdentifier `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Name of the network. @@ -412,129 +427,149 @@ type PacketBrokerNetwork struct { DevAddrBlocks []*PacketBrokerDevAddrBlock `protobuf:"bytes,3,rep,name=dev_addr_blocks,json=devAddrBlocks,proto3" json:"dev_addr_blocks,omitempty"` // Contact information. // This field is deprecated. Use administrative_contact and technical_contact instead. - ContactInfo []*ContactInfo `protobuf:"bytes,4,rep,name=contact_info,json=contactInfo,proto3" json:"contact_info,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Do not use. + ContactInfo []*ContactInfo `protobuf:"bytes,4,rep,name=contact_info,json=contactInfo,proto3" json:"contact_info,omitempty"` AdministrativeContact *ContactInfo `protobuf:"bytes,6,opt,name=administrative_contact,json=administrativeContact,proto3" json:"administrative_contact,omitempty"` TechnicalContact *ContactInfo `protobuf:"bytes,7,opt,name=technical_contact,json=technicalContact,proto3" json:"technical_contact,omitempty"` // Whether the network is listed so it can be viewed by other networks. - Listed bool `protobuf:"varint,5,opt,name=listed,proto3" json:"listed,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Listed bool `protobuf:"varint,5,opt,name=listed,proto3" json:"listed,omitempty"` } -func (m *PacketBrokerNetwork) Reset() { *m = PacketBrokerNetwork{} } -func (m *PacketBrokerNetwork) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerNetwork) ProtoMessage() {} -func (*PacketBrokerNetwork) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{5} -} -func (m *PacketBrokerNetwork) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerNetwork.Unmarshal(m, b) -} -func (m *PacketBrokerNetwork) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerNetwork.Marshal(b, m, deterministic) -} -func (m *PacketBrokerNetwork) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerNetwork.Merge(m, src) +func (x *PacketBrokerNetwork) Reset() { + *x = PacketBrokerNetwork{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PacketBrokerNetwork) XXX_Size() int { - return xxx_messageInfo_PacketBrokerNetwork.Size(m) + +func (x *PacketBrokerNetwork) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PacketBrokerNetwork) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerNetwork.DiscardUnknown(m) + +func (*PacketBrokerNetwork) ProtoMessage() {} + +func (x *PacketBrokerNetwork) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PacketBrokerNetwork proto.InternalMessageInfo +// Deprecated: Use PacketBrokerNetwork.ProtoReflect.Descriptor instead. +func (*PacketBrokerNetwork) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{5} +} -func (m *PacketBrokerNetwork) GetId() *PacketBrokerNetworkIdentifier { - if m != nil { - return m.Id +func (x *PacketBrokerNetwork) GetId() *PacketBrokerNetworkIdentifier { + if x != nil { + return x.Id } return nil } -func (m *PacketBrokerNetwork) GetName() string { - if m != nil { - return m.Name +func (x *PacketBrokerNetwork) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *PacketBrokerNetwork) GetDevAddrBlocks() []*PacketBrokerDevAddrBlock { - if m != nil { - return m.DevAddrBlocks +func (x *PacketBrokerNetwork) GetDevAddrBlocks() []*PacketBrokerDevAddrBlock { + if x != nil { + return x.DevAddrBlocks } return nil } // Deprecated: Do not use. -func (m *PacketBrokerNetwork) GetContactInfo() []*ContactInfo { - if m != nil { - return m.ContactInfo +func (x *PacketBrokerNetwork) GetContactInfo() []*ContactInfo { + if x != nil { + return x.ContactInfo } return nil } -func (m *PacketBrokerNetwork) GetAdministrativeContact() *ContactInfo { - if m != nil { - return m.AdministrativeContact +func (x *PacketBrokerNetwork) GetAdministrativeContact() *ContactInfo { + if x != nil { + return x.AdministrativeContact } return nil } -func (m *PacketBrokerNetwork) GetTechnicalContact() *ContactInfo { - if m != nil { - return m.TechnicalContact +func (x *PacketBrokerNetwork) GetTechnicalContact() *ContactInfo { + if x != nil { + return x.TechnicalContact } return nil } -func (m *PacketBrokerNetwork) GetListed() bool { - if m != nil { - return m.Listed +func (x *PacketBrokerNetwork) GetListed() bool { + if x != nil { + return x.Listed } return false } type PacketBrokerNetworks struct { - Networks []*PacketBrokerNetwork `protobuf:"bytes,1,rep,name=networks,proto3" json:"networks,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *PacketBrokerNetworks) Reset() { *m = PacketBrokerNetworks{} } -func (m *PacketBrokerNetworks) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerNetworks) ProtoMessage() {} -func (*PacketBrokerNetworks) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{6} -} -func (m *PacketBrokerNetworks) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerNetworks.Unmarshal(m, b) -} -func (m *PacketBrokerNetworks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerNetworks.Marshal(b, m, deterministic) + Networks []*PacketBrokerNetwork `protobuf:"bytes,1,rep,name=networks,proto3" json:"networks,omitempty"` } -func (m *PacketBrokerNetworks) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerNetworks.Merge(m, src) + +func (x *PacketBrokerNetworks) Reset() { + *x = PacketBrokerNetworks{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PacketBrokerNetworks) XXX_Size() int { - return xxx_messageInfo_PacketBrokerNetworks.Size(m) + +func (x *PacketBrokerNetworks) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PacketBrokerNetworks) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerNetworks.DiscardUnknown(m) + +func (*PacketBrokerNetworks) ProtoMessage() {} + +func (x *PacketBrokerNetworks) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PacketBrokerNetworks proto.InternalMessageInfo +// Deprecated: Use PacketBrokerNetworks.ProtoReflect.Descriptor instead. +func (*PacketBrokerNetworks) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{6} +} -func (m *PacketBrokerNetworks) GetNetworks() []*PacketBrokerNetwork { - if m != nil { - return m.Networks +func (x *PacketBrokerNetworks) GetNetworks() []*PacketBrokerNetwork { + if x != nil { + return x.Networks } return nil } type PacketBrokerInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The current registration, unset if there isn't a registration. Registration *PacketBrokerNetwork `protobuf:"bytes,1,opt,name=registration,proto3" json:"registration,omitempty"` // Whether the server is configured as Forwarder (with gateways). @@ -542,105 +577,123 @@ type PacketBrokerInfo struct { // Whether the server is configured as Home Network (with end devices). HomeNetworkEnabled bool `protobuf:"varint,3,opt,name=home_network_enabled,json=homeNetworkEnabled,proto3" json:"home_network_enabled,omitempty"` // Whether the registration can be changed. - RegisterEnabled bool `protobuf:"varint,4,opt,name=register_enabled,json=registerEnabled,proto3" json:"register_enabled,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + RegisterEnabled bool `protobuf:"varint,4,opt,name=register_enabled,json=registerEnabled,proto3" json:"register_enabled,omitempty"` } -func (m *PacketBrokerInfo) Reset() { *m = PacketBrokerInfo{} } -func (m *PacketBrokerInfo) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerInfo) ProtoMessage() {} -func (*PacketBrokerInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{7} -} -func (m *PacketBrokerInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerInfo.Unmarshal(m, b) -} -func (m *PacketBrokerInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerInfo.Marshal(b, m, deterministic) -} -func (m *PacketBrokerInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerInfo.Merge(m, src) +func (x *PacketBrokerInfo) Reset() { + *x = PacketBrokerInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PacketBrokerInfo) XXX_Size() int { - return xxx_messageInfo_PacketBrokerInfo.Size(m) + +func (x *PacketBrokerInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PacketBrokerInfo) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerInfo.DiscardUnknown(m) + +func (*PacketBrokerInfo) ProtoMessage() {} + +func (x *PacketBrokerInfo) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PacketBrokerInfo proto.InternalMessageInfo +// Deprecated: Use PacketBrokerInfo.ProtoReflect.Descriptor instead. +func (*PacketBrokerInfo) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{7} +} -func (m *PacketBrokerInfo) GetRegistration() *PacketBrokerNetwork { - if m != nil { - return m.Registration +func (x *PacketBrokerInfo) GetRegistration() *PacketBrokerNetwork { + if x != nil { + return x.Registration } return nil } -func (m *PacketBrokerInfo) GetForwarderEnabled() bool { - if m != nil { - return m.ForwarderEnabled +func (x *PacketBrokerInfo) GetForwarderEnabled() bool { + if x != nil { + return x.ForwarderEnabled } return false } -func (m *PacketBrokerInfo) GetHomeNetworkEnabled() bool { - if m != nil { - return m.HomeNetworkEnabled +func (x *PacketBrokerInfo) GetHomeNetworkEnabled() bool { + if x != nil { + return x.HomeNetworkEnabled } return false } -func (m *PacketBrokerInfo) GetRegisterEnabled() bool { - if m != nil { - return m.RegisterEnabled +func (x *PacketBrokerInfo) GetRegisterEnabled() bool { + if x != nil { + return x.RegisterEnabled } return false } type PacketBrokerRegisterRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Whether the network should be listed in Packet Broker. // If unset, the value is taken from the registration settings. - Listed *types.BoolValue `protobuf:"bytes,1,opt,name=listed,proto3" json:"listed,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Listed *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=listed,proto3" json:"listed,omitempty"` } -func (m *PacketBrokerRegisterRequest) Reset() { *m = PacketBrokerRegisterRequest{} } -func (m *PacketBrokerRegisterRequest) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerRegisterRequest) ProtoMessage() {} -func (*PacketBrokerRegisterRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{8} -} -func (m *PacketBrokerRegisterRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerRegisterRequest.Unmarshal(m, b) -} -func (m *PacketBrokerRegisterRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerRegisterRequest.Marshal(b, m, deterministic) -} -func (m *PacketBrokerRegisterRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerRegisterRequest.Merge(m, src) +func (x *PacketBrokerRegisterRequest) Reset() { + *x = PacketBrokerRegisterRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PacketBrokerRegisterRequest) XXX_Size() int { - return xxx_messageInfo_PacketBrokerRegisterRequest.Size(m) + +func (x *PacketBrokerRegisterRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PacketBrokerRegisterRequest) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerRegisterRequest.DiscardUnknown(m) + +func (*PacketBrokerRegisterRequest) ProtoMessage() {} + +func (x *PacketBrokerRegisterRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PacketBrokerRegisterRequest proto.InternalMessageInfo +// Deprecated: Use PacketBrokerRegisterRequest.ProtoReflect.Descriptor instead. +func (*PacketBrokerRegisterRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{8} +} -func (m *PacketBrokerRegisterRequest) GetListed() *types.BoolValue { - if m != nil { - return m.Listed +func (x *PacketBrokerRegisterRequest) GetListed() *wrapperspb.BoolValue { + if x != nil { + return x.Listed } return nil } type PacketBrokerRoutingPolicyUplink struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Forward join-request messages. JoinRequest bool `protobuf:"varint,1,opt,name=join_request,json=joinRequest,proto3" json:"join_request,omitempty"` // Forward uplink messages with FPort of 0. @@ -650,456 +703,524 @@ type PacketBrokerRoutingPolicyUplink struct { // Forward RSSI and SNR. SignalQuality bool `protobuf:"varint,4,opt,name=signal_quality,json=signalQuality,proto3" json:"signal_quality,omitempty"` // Forward gateway location, RSSI, SNR and fine timestamp. - Localization bool `protobuf:"varint,5,opt,name=localization,proto3" json:"localization,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Localization bool `protobuf:"varint,5,opt,name=localization,proto3" json:"localization,omitempty"` } -func (m *PacketBrokerRoutingPolicyUplink) Reset() { *m = PacketBrokerRoutingPolicyUplink{} } -func (m *PacketBrokerRoutingPolicyUplink) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerRoutingPolicyUplink) ProtoMessage() {} -func (*PacketBrokerRoutingPolicyUplink) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{9} -} -func (m *PacketBrokerRoutingPolicyUplink) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerRoutingPolicyUplink.Unmarshal(m, b) -} -func (m *PacketBrokerRoutingPolicyUplink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerRoutingPolicyUplink.Marshal(b, m, deterministic) -} -func (m *PacketBrokerRoutingPolicyUplink) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerRoutingPolicyUplink.Merge(m, src) +func (x *PacketBrokerRoutingPolicyUplink) Reset() { + *x = PacketBrokerRoutingPolicyUplink{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PacketBrokerRoutingPolicyUplink) XXX_Size() int { - return xxx_messageInfo_PacketBrokerRoutingPolicyUplink.Size(m) + +func (x *PacketBrokerRoutingPolicyUplink) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PacketBrokerRoutingPolicyUplink) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerRoutingPolicyUplink.DiscardUnknown(m) + +func (*PacketBrokerRoutingPolicyUplink) ProtoMessage() {} + +func (x *PacketBrokerRoutingPolicyUplink) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PacketBrokerRoutingPolicyUplink proto.InternalMessageInfo +// Deprecated: Use PacketBrokerRoutingPolicyUplink.ProtoReflect.Descriptor instead. +func (*PacketBrokerRoutingPolicyUplink) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{9} +} -func (m *PacketBrokerRoutingPolicyUplink) GetJoinRequest() bool { - if m != nil { - return m.JoinRequest +func (x *PacketBrokerRoutingPolicyUplink) GetJoinRequest() bool { + if x != nil { + return x.JoinRequest } return false } -func (m *PacketBrokerRoutingPolicyUplink) GetMacData() bool { - if m != nil { - return m.MacData +func (x *PacketBrokerRoutingPolicyUplink) GetMacData() bool { + if x != nil { + return x.MacData } return false } -func (m *PacketBrokerRoutingPolicyUplink) GetApplicationData() bool { - if m != nil { - return m.ApplicationData +func (x *PacketBrokerRoutingPolicyUplink) GetApplicationData() bool { + if x != nil { + return x.ApplicationData } return false } -func (m *PacketBrokerRoutingPolicyUplink) GetSignalQuality() bool { - if m != nil { - return m.SignalQuality +func (x *PacketBrokerRoutingPolicyUplink) GetSignalQuality() bool { + if x != nil { + return x.SignalQuality } return false } -func (m *PacketBrokerRoutingPolicyUplink) GetLocalization() bool { - if m != nil { - return m.Localization +func (x *PacketBrokerRoutingPolicyUplink) GetLocalization() bool { + if x != nil { + return x.Localization } return false } type PacketBrokerRoutingPolicyDownlink struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Allow join-accept messages. JoinAccept bool `protobuf:"varint,1,opt,name=join_accept,json=joinAccept,proto3" json:"join_accept,omitempty"` // Allow downlink messages with FPort of 0. MacData bool `protobuf:"varint,2,opt,name=mac_data,json=macData,proto3" json:"mac_data,omitempty"` // Allow downlink messages with FPort between 1 and 255. - ApplicationData bool `protobuf:"varint,3,opt,name=application_data,json=applicationData,proto3" json:"application_data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ApplicationData bool `protobuf:"varint,3,opt,name=application_data,json=applicationData,proto3" json:"application_data,omitempty"` } -func (m *PacketBrokerRoutingPolicyDownlink) Reset() { *m = PacketBrokerRoutingPolicyDownlink{} } -func (m *PacketBrokerRoutingPolicyDownlink) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerRoutingPolicyDownlink) ProtoMessage() {} -func (*PacketBrokerRoutingPolicyDownlink) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{10} -} -func (m *PacketBrokerRoutingPolicyDownlink) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerRoutingPolicyDownlink.Unmarshal(m, b) -} -func (m *PacketBrokerRoutingPolicyDownlink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerRoutingPolicyDownlink.Marshal(b, m, deterministic) -} -func (m *PacketBrokerRoutingPolicyDownlink) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerRoutingPolicyDownlink.Merge(m, src) +func (x *PacketBrokerRoutingPolicyDownlink) Reset() { + *x = PacketBrokerRoutingPolicyDownlink{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PacketBrokerRoutingPolicyDownlink) XXX_Size() int { - return xxx_messageInfo_PacketBrokerRoutingPolicyDownlink.Size(m) + +func (x *PacketBrokerRoutingPolicyDownlink) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PacketBrokerRoutingPolicyDownlink) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerRoutingPolicyDownlink.DiscardUnknown(m) + +func (*PacketBrokerRoutingPolicyDownlink) ProtoMessage() {} + +func (x *PacketBrokerRoutingPolicyDownlink) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PacketBrokerRoutingPolicyDownlink proto.InternalMessageInfo +// Deprecated: Use PacketBrokerRoutingPolicyDownlink.ProtoReflect.Descriptor instead. +func (*PacketBrokerRoutingPolicyDownlink) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{10} +} -func (m *PacketBrokerRoutingPolicyDownlink) GetJoinAccept() bool { - if m != nil { - return m.JoinAccept +func (x *PacketBrokerRoutingPolicyDownlink) GetJoinAccept() bool { + if x != nil { + return x.JoinAccept } return false } -func (m *PacketBrokerRoutingPolicyDownlink) GetMacData() bool { - if m != nil { - return m.MacData +func (x *PacketBrokerRoutingPolicyDownlink) GetMacData() bool { + if x != nil { + return x.MacData } return false } -func (m *PacketBrokerRoutingPolicyDownlink) GetApplicationData() bool { - if m != nil { - return m.ApplicationData +func (x *PacketBrokerRoutingPolicyDownlink) GetApplicationData() bool { + if x != nil { + return x.ApplicationData } return false } type PacketBrokerDefaultRoutingPolicy struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Timestamp when the policy got last updated. - UpdatedAt *types.Timestamp `protobuf:"bytes,1,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // Uplink policy. Uplink *PacketBrokerRoutingPolicyUplink `protobuf:"bytes,2,opt,name=uplink,proto3" json:"uplink,omitempty"` // Downlink policy. - Downlink *PacketBrokerRoutingPolicyDownlink `protobuf:"bytes,3,opt,name=downlink,proto3" json:"downlink,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Downlink *PacketBrokerRoutingPolicyDownlink `protobuf:"bytes,3,opt,name=downlink,proto3" json:"downlink,omitempty"` } -func (m *PacketBrokerDefaultRoutingPolicy) Reset() { *m = PacketBrokerDefaultRoutingPolicy{} } -func (m *PacketBrokerDefaultRoutingPolicy) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerDefaultRoutingPolicy) ProtoMessage() {} -func (*PacketBrokerDefaultRoutingPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{11} -} -func (m *PacketBrokerDefaultRoutingPolicy) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerDefaultRoutingPolicy.Unmarshal(m, b) -} -func (m *PacketBrokerDefaultRoutingPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerDefaultRoutingPolicy.Marshal(b, m, deterministic) -} -func (m *PacketBrokerDefaultRoutingPolicy) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerDefaultRoutingPolicy.Merge(m, src) +func (x *PacketBrokerDefaultRoutingPolicy) Reset() { + *x = PacketBrokerDefaultRoutingPolicy{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PacketBrokerDefaultRoutingPolicy) XXX_Size() int { - return xxx_messageInfo_PacketBrokerDefaultRoutingPolicy.Size(m) + +func (x *PacketBrokerDefaultRoutingPolicy) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PacketBrokerDefaultRoutingPolicy) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerDefaultRoutingPolicy.DiscardUnknown(m) + +func (*PacketBrokerDefaultRoutingPolicy) ProtoMessage() {} + +func (x *PacketBrokerDefaultRoutingPolicy) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PacketBrokerDefaultRoutingPolicy proto.InternalMessageInfo +// Deprecated: Use PacketBrokerDefaultRoutingPolicy.ProtoReflect.Descriptor instead. +func (*PacketBrokerDefaultRoutingPolicy) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{11} +} -func (m *PacketBrokerDefaultRoutingPolicy) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *PacketBrokerDefaultRoutingPolicy) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *PacketBrokerDefaultRoutingPolicy) GetUplink() *PacketBrokerRoutingPolicyUplink { - if m != nil { - return m.Uplink +func (x *PacketBrokerDefaultRoutingPolicy) GetUplink() *PacketBrokerRoutingPolicyUplink { + if x != nil { + return x.Uplink } return nil } -func (m *PacketBrokerDefaultRoutingPolicy) GetDownlink() *PacketBrokerRoutingPolicyDownlink { - if m != nil { - return m.Downlink +func (x *PacketBrokerDefaultRoutingPolicy) GetDownlink() *PacketBrokerRoutingPolicyDownlink { + if x != nil { + return x.Downlink } return nil } type PacketBrokerRoutingPolicy struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Packet Broker identifier of the Forwarder. ForwarderId *PacketBrokerNetworkIdentifier `protobuf:"bytes,1,opt,name=forwarder_id,json=forwarderId,proto3" json:"forwarder_id,omitempty"` // Packet Broker identifier of the Home Network. HomeNetworkId *PacketBrokerNetworkIdentifier `protobuf:"bytes,2,opt,name=home_network_id,json=homeNetworkId,proto3" json:"home_network_id,omitempty"` // Timestamp when the policy got last updated. - UpdatedAt *types.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // Uplink policy. Uplink *PacketBrokerRoutingPolicyUplink `protobuf:"bytes,4,opt,name=uplink,proto3" json:"uplink,omitempty"` // Downlink policy. - Downlink *PacketBrokerRoutingPolicyDownlink `protobuf:"bytes,5,opt,name=downlink,proto3" json:"downlink,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Downlink *PacketBrokerRoutingPolicyDownlink `protobuf:"bytes,5,opt,name=downlink,proto3" json:"downlink,omitempty"` } -func (m *PacketBrokerRoutingPolicy) Reset() { *m = PacketBrokerRoutingPolicy{} } -func (m *PacketBrokerRoutingPolicy) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerRoutingPolicy) ProtoMessage() {} -func (*PacketBrokerRoutingPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{12} -} -func (m *PacketBrokerRoutingPolicy) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerRoutingPolicy.Unmarshal(m, b) -} -func (m *PacketBrokerRoutingPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerRoutingPolicy.Marshal(b, m, deterministic) -} -func (m *PacketBrokerRoutingPolicy) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerRoutingPolicy.Merge(m, src) +func (x *PacketBrokerRoutingPolicy) Reset() { + *x = PacketBrokerRoutingPolicy{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PacketBrokerRoutingPolicy) XXX_Size() int { - return xxx_messageInfo_PacketBrokerRoutingPolicy.Size(m) + +func (x *PacketBrokerRoutingPolicy) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PacketBrokerRoutingPolicy) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerRoutingPolicy.DiscardUnknown(m) + +func (*PacketBrokerRoutingPolicy) ProtoMessage() {} + +func (x *PacketBrokerRoutingPolicy) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PacketBrokerRoutingPolicy proto.InternalMessageInfo +// Deprecated: Use PacketBrokerRoutingPolicy.ProtoReflect.Descriptor instead. +func (*PacketBrokerRoutingPolicy) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{12} +} -func (m *PacketBrokerRoutingPolicy) GetForwarderId() *PacketBrokerNetworkIdentifier { - if m != nil { - return m.ForwarderId +func (x *PacketBrokerRoutingPolicy) GetForwarderId() *PacketBrokerNetworkIdentifier { + if x != nil { + return x.ForwarderId } return nil } -func (m *PacketBrokerRoutingPolicy) GetHomeNetworkId() *PacketBrokerNetworkIdentifier { - if m != nil { - return m.HomeNetworkId +func (x *PacketBrokerRoutingPolicy) GetHomeNetworkId() *PacketBrokerNetworkIdentifier { + if x != nil { + return x.HomeNetworkId } return nil } -func (m *PacketBrokerRoutingPolicy) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *PacketBrokerRoutingPolicy) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *PacketBrokerRoutingPolicy) GetUplink() *PacketBrokerRoutingPolicyUplink { - if m != nil { - return m.Uplink +func (x *PacketBrokerRoutingPolicy) GetUplink() *PacketBrokerRoutingPolicyUplink { + if x != nil { + return x.Uplink } return nil } -func (m *PacketBrokerRoutingPolicy) GetDownlink() *PacketBrokerRoutingPolicyDownlink { - if m != nil { - return m.Downlink +func (x *PacketBrokerRoutingPolicy) GetDownlink() *PacketBrokerRoutingPolicyDownlink { + if x != nil { + return x.Downlink } return nil } type SetPacketBrokerDefaultRoutingPolicyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Uplink policy. Uplink *PacketBrokerRoutingPolicyUplink `protobuf:"bytes,1,opt,name=uplink,proto3" json:"uplink,omitempty"` // Downlink policy. - Downlink *PacketBrokerRoutingPolicyDownlink `protobuf:"bytes,2,opt,name=downlink,proto3" json:"downlink,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Downlink *PacketBrokerRoutingPolicyDownlink `protobuf:"bytes,2,opt,name=downlink,proto3" json:"downlink,omitempty"` } -func (m *SetPacketBrokerDefaultRoutingPolicyRequest) Reset() { - *m = SetPacketBrokerDefaultRoutingPolicyRequest{} +func (x *SetPacketBrokerDefaultRoutingPolicyRequest) Reset() { + *x = SetPacketBrokerDefaultRoutingPolicyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SetPacketBrokerDefaultRoutingPolicyRequest) String() string { - return proto.CompactTextString(m) + +func (x *SetPacketBrokerDefaultRoutingPolicyRequest) String() string { + return protoimpl.X.MessageStringOf(x) } + func (*SetPacketBrokerDefaultRoutingPolicyRequest) ProtoMessage() {} -func (*SetPacketBrokerDefaultRoutingPolicyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{13} -} -func (m *SetPacketBrokerDefaultRoutingPolicyRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetPacketBrokerDefaultRoutingPolicyRequest.Unmarshal(m, b) -} -func (m *SetPacketBrokerDefaultRoutingPolicyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetPacketBrokerDefaultRoutingPolicyRequest.Marshal(b, m, deterministic) -} -func (m *SetPacketBrokerDefaultRoutingPolicyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetPacketBrokerDefaultRoutingPolicyRequest.Merge(m, src) -} -func (m *SetPacketBrokerDefaultRoutingPolicyRequest) XXX_Size() int { - return xxx_messageInfo_SetPacketBrokerDefaultRoutingPolicyRequest.Size(m) -} -func (m *SetPacketBrokerDefaultRoutingPolicyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetPacketBrokerDefaultRoutingPolicyRequest.DiscardUnknown(m) + +func (x *SetPacketBrokerDefaultRoutingPolicyRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SetPacketBrokerDefaultRoutingPolicyRequest proto.InternalMessageInfo +// Deprecated: Use SetPacketBrokerDefaultRoutingPolicyRequest.ProtoReflect.Descriptor instead. +func (*SetPacketBrokerDefaultRoutingPolicyRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{13} +} -func (m *SetPacketBrokerDefaultRoutingPolicyRequest) GetUplink() *PacketBrokerRoutingPolicyUplink { - if m != nil { - return m.Uplink +func (x *SetPacketBrokerDefaultRoutingPolicyRequest) GetUplink() *PacketBrokerRoutingPolicyUplink { + if x != nil { + return x.Uplink } return nil } -func (m *SetPacketBrokerDefaultRoutingPolicyRequest) GetDownlink() *PacketBrokerRoutingPolicyDownlink { - if m != nil { - return m.Downlink +func (x *SetPacketBrokerDefaultRoutingPolicyRequest) GetDownlink() *PacketBrokerRoutingPolicyDownlink { + if x != nil { + return x.Downlink } return nil } type ListHomeNetworkRoutingPoliciesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Limit the number of results per page. Limit uint32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Page uint32 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` } -func (m *ListHomeNetworkRoutingPoliciesRequest) Reset() { *m = ListHomeNetworkRoutingPoliciesRequest{} } -func (m *ListHomeNetworkRoutingPoliciesRequest) String() string { return proto.CompactTextString(m) } -func (*ListHomeNetworkRoutingPoliciesRequest) ProtoMessage() {} -func (*ListHomeNetworkRoutingPoliciesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{14} -} -func (m *ListHomeNetworkRoutingPoliciesRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListHomeNetworkRoutingPoliciesRequest.Unmarshal(m, b) -} -func (m *ListHomeNetworkRoutingPoliciesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListHomeNetworkRoutingPoliciesRequest.Marshal(b, m, deterministic) -} -func (m *ListHomeNetworkRoutingPoliciesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListHomeNetworkRoutingPoliciesRequest.Merge(m, src) +func (x *ListHomeNetworkRoutingPoliciesRequest) Reset() { + *x = ListHomeNetworkRoutingPoliciesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListHomeNetworkRoutingPoliciesRequest) XXX_Size() int { - return xxx_messageInfo_ListHomeNetworkRoutingPoliciesRequest.Size(m) + +func (x *ListHomeNetworkRoutingPoliciesRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListHomeNetworkRoutingPoliciesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListHomeNetworkRoutingPoliciesRequest.DiscardUnknown(m) + +func (*ListHomeNetworkRoutingPoliciesRequest) ProtoMessage() {} + +func (x *ListHomeNetworkRoutingPoliciesRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListHomeNetworkRoutingPoliciesRequest proto.InternalMessageInfo +// Deprecated: Use ListHomeNetworkRoutingPoliciesRequest.ProtoReflect.Descriptor instead. +func (*ListHomeNetworkRoutingPoliciesRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{14} +} -func (m *ListHomeNetworkRoutingPoliciesRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListHomeNetworkRoutingPoliciesRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListHomeNetworkRoutingPoliciesRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListHomeNetworkRoutingPoliciesRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } type PacketBrokerRoutingPolicies struct { - Policies []*PacketBrokerRoutingPolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *PacketBrokerRoutingPolicies) Reset() { *m = PacketBrokerRoutingPolicies{} } -func (m *PacketBrokerRoutingPolicies) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerRoutingPolicies) ProtoMessage() {} -func (*PacketBrokerRoutingPolicies) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{15} -} -func (m *PacketBrokerRoutingPolicies) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerRoutingPolicies.Unmarshal(m, b) -} -func (m *PacketBrokerRoutingPolicies) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerRoutingPolicies.Marshal(b, m, deterministic) + Policies []*PacketBrokerRoutingPolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"` } -func (m *PacketBrokerRoutingPolicies) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerRoutingPolicies.Merge(m, src) + +func (x *PacketBrokerRoutingPolicies) Reset() { + *x = PacketBrokerRoutingPolicies{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PacketBrokerRoutingPolicies) XXX_Size() int { - return xxx_messageInfo_PacketBrokerRoutingPolicies.Size(m) + +func (x *PacketBrokerRoutingPolicies) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PacketBrokerRoutingPolicies) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerRoutingPolicies.DiscardUnknown(m) + +func (*PacketBrokerRoutingPolicies) ProtoMessage() {} + +func (x *PacketBrokerRoutingPolicies) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PacketBrokerRoutingPolicies proto.InternalMessageInfo +// Deprecated: Use PacketBrokerRoutingPolicies.ProtoReflect.Descriptor instead. +func (*PacketBrokerRoutingPolicies) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{15} +} -func (m *PacketBrokerRoutingPolicies) GetPolicies() []*PacketBrokerRoutingPolicy { - if m != nil { - return m.Policies +func (x *PacketBrokerRoutingPolicies) GetPolicies() []*PacketBrokerRoutingPolicy { + if x != nil { + return x.Policies } return nil } type SetPacketBrokerRoutingPolicyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Packet Broker identifier of the Home Network. HomeNetworkId *PacketBrokerNetworkIdentifier `protobuf:"bytes,1,opt,name=home_network_id,json=homeNetworkId,proto3" json:"home_network_id,omitempty"` // Uplink policy. Uplink *PacketBrokerRoutingPolicyUplink `protobuf:"bytes,2,opt,name=uplink,proto3" json:"uplink,omitempty"` // Downlink policy. - Downlink *PacketBrokerRoutingPolicyDownlink `protobuf:"bytes,3,opt,name=downlink,proto3" json:"downlink,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Downlink *PacketBrokerRoutingPolicyDownlink `protobuf:"bytes,3,opt,name=downlink,proto3" json:"downlink,omitempty"` } -func (m *SetPacketBrokerRoutingPolicyRequest) Reset() { *m = SetPacketBrokerRoutingPolicyRequest{} } -func (m *SetPacketBrokerRoutingPolicyRequest) String() string { return proto.CompactTextString(m) } -func (*SetPacketBrokerRoutingPolicyRequest) ProtoMessage() {} -func (*SetPacketBrokerRoutingPolicyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{16} -} -func (m *SetPacketBrokerRoutingPolicyRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetPacketBrokerRoutingPolicyRequest.Unmarshal(m, b) -} -func (m *SetPacketBrokerRoutingPolicyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetPacketBrokerRoutingPolicyRequest.Marshal(b, m, deterministic) -} -func (m *SetPacketBrokerRoutingPolicyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetPacketBrokerRoutingPolicyRequest.Merge(m, src) +func (x *SetPacketBrokerRoutingPolicyRequest) Reset() { + *x = SetPacketBrokerRoutingPolicyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SetPacketBrokerRoutingPolicyRequest) XXX_Size() int { - return xxx_messageInfo_SetPacketBrokerRoutingPolicyRequest.Size(m) + +func (x *SetPacketBrokerRoutingPolicyRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SetPacketBrokerRoutingPolicyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetPacketBrokerRoutingPolicyRequest.DiscardUnknown(m) + +func (*SetPacketBrokerRoutingPolicyRequest) ProtoMessage() {} + +func (x *SetPacketBrokerRoutingPolicyRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SetPacketBrokerRoutingPolicyRequest proto.InternalMessageInfo +// Deprecated: Use SetPacketBrokerRoutingPolicyRequest.ProtoReflect.Descriptor instead. +func (*SetPacketBrokerRoutingPolicyRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{16} +} -func (m *SetPacketBrokerRoutingPolicyRequest) GetHomeNetworkId() *PacketBrokerNetworkIdentifier { - if m != nil { - return m.HomeNetworkId +func (x *SetPacketBrokerRoutingPolicyRequest) GetHomeNetworkId() *PacketBrokerNetworkIdentifier { + if x != nil { + return x.HomeNetworkId } return nil } -func (m *SetPacketBrokerRoutingPolicyRequest) GetUplink() *PacketBrokerRoutingPolicyUplink { - if m != nil { - return m.Uplink +func (x *SetPacketBrokerRoutingPolicyRequest) GetUplink() *PacketBrokerRoutingPolicyUplink { + if x != nil { + return x.Uplink } return nil } -func (m *SetPacketBrokerRoutingPolicyRequest) GetDownlink() *PacketBrokerRoutingPolicyDownlink { - if m != nil { - return m.Downlink +func (x *SetPacketBrokerRoutingPolicyRequest) GetDownlink() *PacketBrokerRoutingPolicyDownlink { + if x != nil { + return x.Downlink } return nil } type PacketBrokerGatewayVisibility struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Show location. Location bool `protobuf:"varint,1,opt,name=location,proto3" json:"location,omitempty"` // Show antenna placement (indoor/outdoor). @@ -1115,182 +1236,205 @@ type PacketBrokerGatewayVisibility struct { // Show frequency plan. FrequencyPlan bool `protobuf:"varint,8,opt,name=frequency_plan,json=frequencyPlan,proto3" json:"frequency_plan,omitempty"` // Show receive and transmission packet rates. - PacketRates bool `protobuf:"varint,9,opt,name=packet_rates,json=packetRates,proto3" json:"packet_rates,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + PacketRates bool `protobuf:"varint,9,opt,name=packet_rates,json=packetRates,proto3" json:"packet_rates,omitempty"` } -func (m *PacketBrokerGatewayVisibility) Reset() { *m = PacketBrokerGatewayVisibility{} } -func (m *PacketBrokerGatewayVisibility) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerGatewayVisibility) ProtoMessage() {} -func (*PacketBrokerGatewayVisibility) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{17} -} -func (m *PacketBrokerGatewayVisibility) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerGatewayVisibility.Unmarshal(m, b) -} -func (m *PacketBrokerGatewayVisibility) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerGatewayVisibility.Marshal(b, m, deterministic) -} -func (m *PacketBrokerGatewayVisibility) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerGatewayVisibility.Merge(m, src) +func (x *PacketBrokerGatewayVisibility) Reset() { + *x = PacketBrokerGatewayVisibility{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PacketBrokerGatewayVisibility) XXX_Size() int { - return xxx_messageInfo_PacketBrokerGatewayVisibility.Size(m) + +func (x *PacketBrokerGatewayVisibility) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *PacketBrokerGatewayVisibility) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerGatewayVisibility.DiscardUnknown(m) + +func (*PacketBrokerGatewayVisibility) ProtoMessage() {} + +func (x *PacketBrokerGatewayVisibility) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_PacketBrokerGatewayVisibility proto.InternalMessageInfo +// Deprecated: Use PacketBrokerGatewayVisibility.ProtoReflect.Descriptor instead. +func (*PacketBrokerGatewayVisibility) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{17} +} -func (m *PacketBrokerGatewayVisibility) GetLocation() bool { - if m != nil { - return m.Location +func (x *PacketBrokerGatewayVisibility) GetLocation() bool { + if x != nil { + return x.Location } return false } -func (m *PacketBrokerGatewayVisibility) GetAntennaPlacement() bool { - if m != nil { - return m.AntennaPlacement +func (x *PacketBrokerGatewayVisibility) GetAntennaPlacement() bool { + if x != nil { + return x.AntennaPlacement } return false } -func (m *PacketBrokerGatewayVisibility) GetAntennaCount() bool { - if m != nil { - return m.AntennaCount +func (x *PacketBrokerGatewayVisibility) GetAntennaCount() bool { + if x != nil { + return x.AntennaCount } return false } -func (m *PacketBrokerGatewayVisibility) GetFineTimestamps() bool { - if m != nil { - return m.FineTimestamps +func (x *PacketBrokerGatewayVisibility) GetFineTimestamps() bool { + if x != nil { + return x.FineTimestamps } return false } -func (m *PacketBrokerGatewayVisibility) GetContactInfo() bool { - if m != nil { - return m.ContactInfo +func (x *PacketBrokerGatewayVisibility) GetContactInfo() bool { + if x != nil { + return x.ContactInfo } return false } -func (m *PacketBrokerGatewayVisibility) GetStatus() bool { - if m != nil { - return m.Status +func (x *PacketBrokerGatewayVisibility) GetStatus() bool { + if x != nil { + return x.Status } return false } -func (m *PacketBrokerGatewayVisibility) GetFrequencyPlan() bool { - if m != nil { - return m.FrequencyPlan +func (x *PacketBrokerGatewayVisibility) GetFrequencyPlan() bool { + if x != nil { + return x.FrequencyPlan } return false } -func (m *PacketBrokerGatewayVisibility) GetPacketRates() bool { - if m != nil { - return m.PacketRates +func (x *PacketBrokerGatewayVisibility) GetPacketRates() bool { + if x != nil { + return x.PacketRates } return false } type PacketBrokerDefaultGatewayVisibility struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Timestamp when the policy got last updated. - UpdatedAt *types.Timestamp `protobuf:"bytes,1,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Visibility *PacketBrokerGatewayVisibility `protobuf:"bytes,2,opt,name=visibility,proto3" json:"visibility,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Visibility *PacketBrokerGatewayVisibility `protobuf:"bytes,2,opt,name=visibility,proto3" json:"visibility,omitempty"` } -func (m *PacketBrokerDefaultGatewayVisibility) Reset() { *m = PacketBrokerDefaultGatewayVisibility{} } -func (m *PacketBrokerDefaultGatewayVisibility) String() string { return proto.CompactTextString(m) } -func (*PacketBrokerDefaultGatewayVisibility) ProtoMessage() {} -func (*PacketBrokerDefaultGatewayVisibility) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{18} -} -func (m *PacketBrokerDefaultGatewayVisibility) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PacketBrokerDefaultGatewayVisibility.Unmarshal(m, b) -} -func (m *PacketBrokerDefaultGatewayVisibility) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PacketBrokerDefaultGatewayVisibility.Marshal(b, m, deterministic) -} -func (m *PacketBrokerDefaultGatewayVisibility) XXX_Merge(src proto.Message) { - xxx_messageInfo_PacketBrokerDefaultGatewayVisibility.Merge(m, src) -} -func (m *PacketBrokerDefaultGatewayVisibility) XXX_Size() int { - return xxx_messageInfo_PacketBrokerDefaultGatewayVisibility.Size(m) +func (x *PacketBrokerDefaultGatewayVisibility) Reset() { + *x = PacketBrokerDefaultGatewayVisibility{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *PacketBrokerDefaultGatewayVisibility) XXX_DiscardUnknown() { - xxx_messageInfo_PacketBrokerDefaultGatewayVisibility.DiscardUnknown(m) + +func (x *PacketBrokerDefaultGatewayVisibility) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_PacketBrokerDefaultGatewayVisibility proto.InternalMessageInfo +func (*PacketBrokerDefaultGatewayVisibility) ProtoMessage() {} -func (m *PacketBrokerDefaultGatewayVisibility) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *PacketBrokerDefaultGatewayVisibility) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PacketBrokerDefaultGatewayVisibility.ProtoReflect.Descriptor instead. +func (*PacketBrokerDefaultGatewayVisibility) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{18} +} + +func (x *PacketBrokerDefaultGatewayVisibility) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *PacketBrokerDefaultGatewayVisibility) GetVisibility() *PacketBrokerGatewayVisibility { - if m != nil { - return m.Visibility +func (x *PacketBrokerDefaultGatewayVisibility) GetVisibility() *PacketBrokerGatewayVisibility { + if x != nil { + return x.Visibility } return nil } type SetPacketBrokerDefaultGatewayVisibilityRequest struct { - Visibility *PacketBrokerGatewayVisibility `protobuf:"bytes,1,opt,name=visibility,proto3" json:"visibility,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Visibility *PacketBrokerGatewayVisibility `protobuf:"bytes,1,opt,name=visibility,proto3" json:"visibility,omitempty"` } -func (m *SetPacketBrokerDefaultGatewayVisibilityRequest) Reset() { - *m = SetPacketBrokerDefaultGatewayVisibilityRequest{} +func (x *SetPacketBrokerDefaultGatewayVisibilityRequest) Reset() { + *x = SetPacketBrokerDefaultGatewayVisibilityRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SetPacketBrokerDefaultGatewayVisibilityRequest) String() string { - return proto.CompactTextString(m) + +func (x *SetPacketBrokerDefaultGatewayVisibilityRequest) String() string { + return protoimpl.X.MessageStringOf(x) } + func (*SetPacketBrokerDefaultGatewayVisibilityRequest) ProtoMessage() {} -func (*SetPacketBrokerDefaultGatewayVisibilityRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{19} -} -func (m *SetPacketBrokerDefaultGatewayVisibilityRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetPacketBrokerDefaultGatewayVisibilityRequest.Unmarshal(m, b) -} -func (m *SetPacketBrokerDefaultGatewayVisibilityRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetPacketBrokerDefaultGatewayVisibilityRequest.Marshal(b, m, deterministic) -} -func (m *SetPacketBrokerDefaultGatewayVisibilityRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetPacketBrokerDefaultGatewayVisibilityRequest.Merge(m, src) -} -func (m *SetPacketBrokerDefaultGatewayVisibilityRequest) XXX_Size() int { - return xxx_messageInfo_SetPacketBrokerDefaultGatewayVisibilityRequest.Size(m) -} -func (m *SetPacketBrokerDefaultGatewayVisibilityRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetPacketBrokerDefaultGatewayVisibilityRequest.DiscardUnknown(m) + +func (x *SetPacketBrokerDefaultGatewayVisibilityRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SetPacketBrokerDefaultGatewayVisibilityRequest proto.InternalMessageInfo +// Deprecated: Use SetPacketBrokerDefaultGatewayVisibilityRequest.ProtoReflect.Descriptor instead. +func (*SetPacketBrokerDefaultGatewayVisibilityRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{19} +} -func (m *SetPacketBrokerDefaultGatewayVisibilityRequest) GetVisibility() *PacketBrokerGatewayVisibility { - if m != nil { - return m.Visibility +func (x *SetPacketBrokerDefaultGatewayVisibilityRequest) GetVisibility() *PacketBrokerGatewayVisibility { + if x != nil { + return x.Visibility } return nil } type ListPacketBrokerNetworksRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Limit the number of results per page. Limit uint32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` // Page number for pagination. 0 is interpreted as 1. @@ -1300,72 +1444,81 @@ type ListPacketBrokerNetworksRequest struct { // Filter by tenant ID. TenantIdContains string `protobuf:"bytes,4,opt,name=tenant_id_contains,json=tenantIdContains,proto3" json:"tenant_id_contains,omitempty"` // Filter by name. - NameContains string `protobuf:"bytes,5,opt,name=name_contains,json=nameContains,proto3" json:"name_contains,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + NameContains string `protobuf:"bytes,5,opt,name=name_contains,json=nameContains,proto3" json:"name_contains,omitempty"` } -func (m *ListPacketBrokerNetworksRequest) Reset() { *m = ListPacketBrokerNetworksRequest{} } -func (m *ListPacketBrokerNetworksRequest) String() string { return proto.CompactTextString(m) } -func (*ListPacketBrokerNetworksRequest) ProtoMessage() {} -func (*ListPacketBrokerNetworksRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{20} -} -func (m *ListPacketBrokerNetworksRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListPacketBrokerNetworksRequest.Unmarshal(m, b) -} -func (m *ListPacketBrokerNetworksRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListPacketBrokerNetworksRequest.Marshal(b, m, deterministic) -} -func (m *ListPacketBrokerNetworksRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListPacketBrokerNetworksRequest.Merge(m, src) +func (x *ListPacketBrokerNetworksRequest) Reset() { + *x = ListPacketBrokerNetworksRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListPacketBrokerNetworksRequest) XXX_Size() int { - return xxx_messageInfo_ListPacketBrokerNetworksRequest.Size(m) + +func (x *ListPacketBrokerNetworksRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListPacketBrokerNetworksRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListPacketBrokerNetworksRequest.DiscardUnknown(m) + +func (*ListPacketBrokerNetworksRequest) ProtoMessage() {} + +func (x *ListPacketBrokerNetworksRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListPacketBrokerNetworksRequest proto.InternalMessageInfo +// Deprecated: Use ListPacketBrokerNetworksRequest.ProtoReflect.Descriptor instead. +func (*ListPacketBrokerNetworksRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{20} +} -func (m *ListPacketBrokerNetworksRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListPacketBrokerNetworksRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListPacketBrokerNetworksRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListPacketBrokerNetworksRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *ListPacketBrokerNetworksRequest) GetWithRoutingPolicy() bool { - if m != nil { - return m.WithRoutingPolicy +func (x *ListPacketBrokerNetworksRequest) GetWithRoutingPolicy() bool { + if x != nil { + return x.WithRoutingPolicy } return false } -func (m *ListPacketBrokerNetworksRequest) GetTenantIdContains() string { - if m != nil { - return m.TenantIdContains +func (x *ListPacketBrokerNetworksRequest) GetTenantIdContains() string { + if x != nil { + return x.TenantIdContains } return "" } -func (m *ListPacketBrokerNetworksRequest) GetNameContains() string { - if m != nil { - return m.NameContains +func (x *ListPacketBrokerNetworksRequest) GetNameContains() string { + if x != nil { + return x.NameContains } return "" } type ListPacketBrokerHomeNetworksRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Limit the number of results per page. Limit uint32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` // Page number for pagination. 0 is interpreted as 1. @@ -1373,1228 +1526,1233 @@ type ListPacketBrokerHomeNetworksRequest struct { // Filter by tenant ID. TenantIdContains string `protobuf:"bytes,3,opt,name=tenant_id_contains,json=tenantIdContains,proto3" json:"tenant_id_contains,omitempty"` // Filter by name. - NameContains string `protobuf:"bytes,4,opt,name=name_contains,json=nameContains,proto3" json:"name_contains,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + NameContains string `protobuf:"bytes,4,opt,name=name_contains,json=nameContains,proto3" json:"name_contains,omitempty"` } -func (m *ListPacketBrokerHomeNetworksRequest) Reset() { *m = ListPacketBrokerHomeNetworksRequest{} } -func (m *ListPacketBrokerHomeNetworksRequest) String() string { return proto.CompactTextString(m) } -func (*ListPacketBrokerHomeNetworksRequest) ProtoMessage() {} -func (*ListPacketBrokerHomeNetworksRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{21} -} -func (m *ListPacketBrokerHomeNetworksRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListPacketBrokerHomeNetworksRequest.Unmarshal(m, b) -} -func (m *ListPacketBrokerHomeNetworksRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListPacketBrokerHomeNetworksRequest.Marshal(b, m, deterministic) -} -func (m *ListPacketBrokerHomeNetworksRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListPacketBrokerHomeNetworksRequest.Merge(m, src) +func (x *ListPacketBrokerHomeNetworksRequest) Reset() { + *x = ListPacketBrokerHomeNetworksRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListPacketBrokerHomeNetworksRequest) XXX_Size() int { - return xxx_messageInfo_ListPacketBrokerHomeNetworksRequest.Size(m) + +func (x *ListPacketBrokerHomeNetworksRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListPacketBrokerHomeNetworksRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListPacketBrokerHomeNetworksRequest.DiscardUnknown(m) + +func (*ListPacketBrokerHomeNetworksRequest) ProtoMessage() {} + +func (x *ListPacketBrokerHomeNetworksRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListPacketBrokerHomeNetworksRequest proto.InternalMessageInfo +// Deprecated: Use ListPacketBrokerHomeNetworksRequest.ProtoReflect.Descriptor instead. +func (*ListPacketBrokerHomeNetworksRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{21} +} -func (m *ListPacketBrokerHomeNetworksRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListPacketBrokerHomeNetworksRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListPacketBrokerHomeNetworksRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListPacketBrokerHomeNetworksRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *ListPacketBrokerHomeNetworksRequest) GetTenantIdContains() string { - if m != nil { - return m.TenantIdContains +func (x *ListPacketBrokerHomeNetworksRequest) GetTenantIdContains() string { + if x != nil { + return x.TenantIdContains } return "" } -func (m *ListPacketBrokerHomeNetworksRequest) GetNameContains() string { - if m != nil { - return m.NameContains +func (x *ListPacketBrokerHomeNetworksRequest) GetNameContains() string { + if x != nil { + return x.NameContains } return "" } type ListForwarderRoutingPoliciesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Packet Broker identifier of the Home Network. HomeNetworkId *PacketBrokerNetworkIdentifier `protobuf:"bytes,1,opt,name=home_network_id,json=homeNetworkId,proto3" json:"home_network_id,omitempty"` // Limit the number of results per page. Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ListForwarderRoutingPoliciesRequest) Reset() { *m = ListForwarderRoutingPoliciesRequest{} } -func (m *ListForwarderRoutingPoliciesRequest) String() string { return proto.CompactTextString(m) } -func (*ListForwarderRoutingPoliciesRequest) ProtoMessage() {} -func (*ListForwarderRoutingPoliciesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_1a44242dc5cd678e, []int{22} -} -func (m *ListForwarderRoutingPoliciesRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListForwarderRoutingPoliciesRequest.Unmarshal(m, b) -} -func (m *ListForwarderRoutingPoliciesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListForwarderRoutingPoliciesRequest.Marshal(b, m, deterministic) -} -func (m *ListForwarderRoutingPoliciesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListForwarderRoutingPoliciesRequest.Merge(m, src) -} -func (m *ListForwarderRoutingPoliciesRequest) XXX_Size() int { - return xxx_messageInfo_ListForwarderRoutingPoliciesRequest.Size(m) -} -func (m *ListForwarderRoutingPoliciesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListForwarderRoutingPoliciesRequest.DiscardUnknown(m) + Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` } -var xxx_messageInfo_ListForwarderRoutingPoliciesRequest proto.InternalMessageInfo - -func (m *ListForwarderRoutingPoliciesRequest) GetHomeNetworkId() *PacketBrokerNetworkIdentifier { - if m != nil { - return m.HomeNetworkId +func (x *ListForwarderRoutingPoliciesRequest) Reset() { + *x = ListForwarderRoutingPoliciesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (m *ListForwarderRoutingPoliciesRequest) GetLimit() uint32 { - if m != nil { - return m.Limit - } - return 0 +func (x *ListForwarderRoutingPoliciesRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListForwarderRoutingPoliciesRequest) GetPage() uint32 { - if m != nil { - return m.Page - } - return 0 -} - -func init() { - proto.RegisterType((*PacketBrokerGateway)(nil), "ttn.lorawan.v3.PacketBrokerGateway") - golang_proto.RegisterType((*PacketBrokerGateway)(nil), "ttn.lorawan.v3.PacketBrokerGateway") - proto.RegisterType((*PacketBrokerGateway_GatewayIdentifiers)(nil), "ttn.lorawan.v3.PacketBrokerGateway.GatewayIdentifiers") - golang_proto.RegisterType((*PacketBrokerGateway_GatewayIdentifiers)(nil), "ttn.lorawan.v3.PacketBrokerGateway.GatewayIdentifiers") - proto.RegisterType((*UpdatePacketBrokerGatewayRequest)(nil), "ttn.lorawan.v3.UpdatePacketBrokerGatewayRequest") - golang_proto.RegisterType((*UpdatePacketBrokerGatewayRequest)(nil), "ttn.lorawan.v3.UpdatePacketBrokerGatewayRequest") - proto.RegisterType((*UpdatePacketBrokerGatewayResponse)(nil), "ttn.lorawan.v3.UpdatePacketBrokerGatewayResponse") - golang_proto.RegisterType((*UpdatePacketBrokerGatewayResponse)(nil), "ttn.lorawan.v3.UpdatePacketBrokerGatewayResponse") - proto.RegisterType((*PacketBrokerNetworkIdentifier)(nil), "ttn.lorawan.v3.PacketBrokerNetworkIdentifier") - golang_proto.RegisterType((*PacketBrokerNetworkIdentifier)(nil), "ttn.lorawan.v3.PacketBrokerNetworkIdentifier") - proto.RegisterType((*PacketBrokerDevAddrBlock)(nil), "ttn.lorawan.v3.PacketBrokerDevAddrBlock") - golang_proto.RegisterType((*PacketBrokerDevAddrBlock)(nil), "ttn.lorawan.v3.PacketBrokerDevAddrBlock") - proto.RegisterType((*PacketBrokerNetwork)(nil), "ttn.lorawan.v3.PacketBrokerNetwork") - golang_proto.RegisterType((*PacketBrokerNetwork)(nil), "ttn.lorawan.v3.PacketBrokerNetwork") - proto.RegisterType((*PacketBrokerNetworks)(nil), "ttn.lorawan.v3.PacketBrokerNetworks") - golang_proto.RegisterType((*PacketBrokerNetworks)(nil), "ttn.lorawan.v3.PacketBrokerNetworks") - proto.RegisterType((*PacketBrokerInfo)(nil), "ttn.lorawan.v3.PacketBrokerInfo") - golang_proto.RegisterType((*PacketBrokerInfo)(nil), "ttn.lorawan.v3.PacketBrokerInfo") - proto.RegisterType((*PacketBrokerRegisterRequest)(nil), "ttn.lorawan.v3.PacketBrokerRegisterRequest") - golang_proto.RegisterType((*PacketBrokerRegisterRequest)(nil), "ttn.lorawan.v3.PacketBrokerRegisterRequest") - proto.RegisterType((*PacketBrokerRoutingPolicyUplink)(nil), "ttn.lorawan.v3.PacketBrokerRoutingPolicyUplink") - golang_proto.RegisterType((*PacketBrokerRoutingPolicyUplink)(nil), "ttn.lorawan.v3.PacketBrokerRoutingPolicyUplink") - proto.RegisterType((*PacketBrokerRoutingPolicyDownlink)(nil), "ttn.lorawan.v3.PacketBrokerRoutingPolicyDownlink") - golang_proto.RegisterType((*PacketBrokerRoutingPolicyDownlink)(nil), "ttn.lorawan.v3.PacketBrokerRoutingPolicyDownlink") - proto.RegisterType((*PacketBrokerDefaultRoutingPolicy)(nil), "ttn.lorawan.v3.PacketBrokerDefaultRoutingPolicy") - golang_proto.RegisterType((*PacketBrokerDefaultRoutingPolicy)(nil), "ttn.lorawan.v3.PacketBrokerDefaultRoutingPolicy") - proto.RegisterType((*PacketBrokerRoutingPolicy)(nil), "ttn.lorawan.v3.PacketBrokerRoutingPolicy") - golang_proto.RegisterType((*PacketBrokerRoutingPolicy)(nil), "ttn.lorawan.v3.PacketBrokerRoutingPolicy") - proto.RegisterType((*SetPacketBrokerDefaultRoutingPolicyRequest)(nil), "ttn.lorawan.v3.SetPacketBrokerDefaultRoutingPolicyRequest") - golang_proto.RegisterType((*SetPacketBrokerDefaultRoutingPolicyRequest)(nil), "ttn.lorawan.v3.SetPacketBrokerDefaultRoutingPolicyRequest") - proto.RegisterType((*ListHomeNetworkRoutingPoliciesRequest)(nil), "ttn.lorawan.v3.ListHomeNetworkRoutingPoliciesRequest") - golang_proto.RegisterType((*ListHomeNetworkRoutingPoliciesRequest)(nil), "ttn.lorawan.v3.ListHomeNetworkRoutingPoliciesRequest") - proto.RegisterType((*PacketBrokerRoutingPolicies)(nil), "ttn.lorawan.v3.PacketBrokerRoutingPolicies") - golang_proto.RegisterType((*PacketBrokerRoutingPolicies)(nil), "ttn.lorawan.v3.PacketBrokerRoutingPolicies") - proto.RegisterType((*SetPacketBrokerRoutingPolicyRequest)(nil), "ttn.lorawan.v3.SetPacketBrokerRoutingPolicyRequest") - golang_proto.RegisterType((*SetPacketBrokerRoutingPolicyRequest)(nil), "ttn.lorawan.v3.SetPacketBrokerRoutingPolicyRequest") - proto.RegisterType((*PacketBrokerGatewayVisibility)(nil), "ttn.lorawan.v3.PacketBrokerGatewayVisibility") - golang_proto.RegisterType((*PacketBrokerGatewayVisibility)(nil), "ttn.lorawan.v3.PacketBrokerGatewayVisibility") - proto.RegisterType((*PacketBrokerDefaultGatewayVisibility)(nil), "ttn.lorawan.v3.PacketBrokerDefaultGatewayVisibility") - golang_proto.RegisterType((*PacketBrokerDefaultGatewayVisibility)(nil), "ttn.lorawan.v3.PacketBrokerDefaultGatewayVisibility") - proto.RegisterType((*SetPacketBrokerDefaultGatewayVisibilityRequest)(nil), "ttn.lorawan.v3.SetPacketBrokerDefaultGatewayVisibilityRequest") - golang_proto.RegisterType((*SetPacketBrokerDefaultGatewayVisibilityRequest)(nil), "ttn.lorawan.v3.SetPacketBrokerDefaultGatewayVisibilityRequest") - proto.RegisterType((*ListPacketBrokerNetworksRequest)(nil), "ttn.lorawan.v3.ListPacketBrokerNetworksRequest") - golang_proto.RegisterType((*ListPacketBrokerNetworksRequest)(nil), "ttn.lorawan.v3.ListPacketBrokerNetworksRequest") - proto.RegisterType((*ListPacketBrokerHomeNetworksRequest)(nil), "ttn.lorawan.v3.ListPacketBrokerHomeNetworksRequest") - golang_proto.RegisterType((*ListPacketBrokerHomeNetworksRequest)(nil), "ttn.lorawan.v3.ListPacketBrokerHomeNetworksRequest") - proto.RegisterType((*ListForwarderRoutingPoliciesRequest)(nil), "ttn.lorawan.v3.ListForwarderRoutingPoliciesRequest") - golang_proto.RegisterType((*ListForwarderRoutingPoliciesRequest)(nil), "ttn.lorawan.v3.ListForwarderRoutingPoliciesRequest") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/packetbrokeragent.proto", fileDescriptor_1a44242dc5cd678e) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/packetbrokeragent.proto", fileDescriptor_1a44242dc5cd678e) -} - -var fileDescriptor_1a44242dc5cd678e = []byte{ - // 2634 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x4d, 0x6c, 0x1b, 0xc7, - 0xf5, 0xff, 0x2f, 0xa9, 0x0f, 0xea, 0x49, 0x94, 0xe4, 0x89, 0xac, 0x3f, 0x45, 0xc5, 0x92, 0xbc, - 0x92, 0x12, 0x59, 0x8e, 0x48, 0x85, 0xb6, 0x9b, 0xc4, 0x68, 0xea, 0x8a, 0x92, 0x2c, 0xcb, 0x88, - 0x12, 0x79, 0x65, 0xd9, 0x81, 0x0d, 0x67, 0x3b, 0xe2, 0x0e, 0xa9, 0xb5, 0x96, 0xb3, 0x9b, 0xdd, - 0xa1, 0x64, 0xd9, 0x31, 0x0a, 0x04, 0xbd, 0x24, 0x47, 0xb7, 0x68, 0x8b, 0xf6, 0x50, 0xc0, 0x87, - 0xb4, 0xc9, 0xa5, 0x3d, 0x14, 0x3d, 0x15, 0x45, 0x2f, 0x45, 0x51, 0xa0, 0xa7, 0x16, 0x05, 0xda, - 0x73, 0x5b, 0xa0, 0xc8, 0x31, 0x40, 0x2f, 0x3a, 0x15, 0x3b, 0x3b, 0x4b, 0xee, 0x72, 0x49, 0x8a, - 0x94, 0x9c, 0x93, 0xb8, 0x33, 0xef, 0xbd, 0xf9, 0xbd, 0x8f, 0x79, 0x1f, 0x23, 0xb8, 0x60, 0x98, - 0x36, 0x3e, 0xc0, 0x74, 0xc1, 0x61, 0xb8, 0xb0, 0x97, 0xc5, 0x96, 0x9e, 0xb5, 0x70, 0x61, 0x8f, - 0xb0, 0x1d, 0xdb, 0xdc, 0x23, 0x36, 0x2e, 0x11, 0xca, 0x32, 0x96, 0x6d, 0x32, 0x13, 0x0d, 0x32, - 0x46, 0x33, 0x82, 0x3c, 0xb3, 0x7f, 0x29, 0xbd, 0x52, 0xd2, 0xd9, 0x6e, 0x65, 0x27, 0x53, 0x30, - 0xcb, 0xd9, 0xdb, 0xbb, 0xe4, 0xf6, 0xae, 0x4e, 0x4b, 0xce, 0x3a, 0xd5, 0x2a, 0x0e, 0xb3, 0x75, - 0xe2, 0x64, 0x39, 0x57, 0x61, 0xa1, 0x44, 0xe8, 0x42, 0xc9, 0x5c, 0x28, 0x1a, 0xb8, 0xe4, 0x64, - 0x31, 0xa5, 0x26, 0xc3, 0x4c, 0x37, 0xa9, 0xe3, 0x49, 0x4d, 0x2f, 0x05, 0xa4, 0x10, 0xba, 0x6f, - 0x1e, 0x5a, 0xb6, 0xf9, 0xe8, 0x30, 0xc8, 0xbc, 0x8f, 0x0d, 0x5d, 0xc3, 0x8c, 0x64, 0x23, 0x3f, - 0x84, 0x88, 0xe5, 0x8e, 0x80, 0x3c, 0x74, 0x4c, 0xda, 0x00, 0xc7, 0x42, 0x40, 0x48, 0xc9, 0x2c, - 0x99, 0x1e, 0xd7, 0x4e, 0xa5, 0xc8, 0xbf, 0xf8, 0x07, 0xff, 0x25, 0xc8, 0x5f, 0x2e, 0x99, 0x66, - 0xc9, 0x20, 0xdc, 0x60, 0x51, 0x61, 0x13, 0x62, 0xb7, 0x2a, 0x43, 0xab, 0xd8, 0x9c, 0x40, 0xec, - 0x8f, 0xd7, 0xef, 0x93, 0xb2, 0xc5, 0x0e, 0xc5, 0xe6, 0x54, 0xfd, 0x66, 0x51, 0x27, 0x86, 0xa6, - 0x96, 0xb1, 0xb3, 0x27, 0x28, 0x26, 0xeb, 0x29, 0x98, 0x5e, 0x26, 0x0e, 0xc3, 0x65, 0xab, 0xd9, - 0xf9, 0x07, 0x36, 0xb6, 0x2c, 0x62, 0xfb, 0xf8, 0x66, 0xa2, 0x5e, 0x2f, 0x98, 0x94, 0xe1, 0x02, - 0x53, 0x75, 0x5a, 0xf4, 0x75, 0x9c, 0x8c, 0x52, 0x95, 0x30, 0x23, 0x07, 0xd8, 0x47, 0x2a, 0x47, - 0x09, 0x08, 0xd5, 0x54, 0x8d, 0xec, 0xeb, 0x05, 0xdf, 0x39, 0xd3, 0x51, 0x1a, 0x5d, 0x23, 0x94, - 0xe9, 0x45, 0xbd, 0x86, 0x67, 0x2a, 0x4a, 0x54, 0x26, 0x8e, 0x83, 0x4b, 0xc4, 0xa7, 0xc8, 0x04, - 0x9c, 0x68, 0x5a, 0x84, 0x62, 0x4b, 0xdf, 0xcf, 0x65, 0x4d, 0x8b, 0x5b, 0x3d, 0xea, 0x01, 0xf9, - 0x37, 0x09, 0x78, 0x69, 0x93, 0x07, 0x72, 0x9e, 0x07, 0xf2, 0x9a, 0x07, 0x1c, 0x29, 0x10, 0xd7, - 0x35, 0x27, 0x25, 0x4d, 0x49, 0x73, 0xfd, 0xb9, 0x6f, 0x64, 0xc2, 0x21, 0x9d, 0x69, 0xc0, 0x91, - 0x11, 0x7f, 0xd7, 0x6b, 0xa0, 0xf3, 0x89, 0xa3, 0x7c, 0xf7, 0xa7, 0x52, 0x6c, 0x58, 0x52, 0x5c, - 0x61, 0xe8, 0x26, 0x0c, 0x04, 0xad, 0x97, 0xea, 0x9d, 0x8a, 0xcf, 0xf5, 0xe7, 0xc6, 0xeb, 0x85, - 0x2f, 0x7b, 0x34, 0xeb, 0xb4, 0x68, 0xe6, 0xe1, 0x28, 0xdf, 0xfd, 0x4c, 0x8a, 0x0d, 0x43, 0x4a, - 0x52, 0xfa, 0x0b, 0xb5, 0x0d, 0xa4, 0xc1, 0x28, 0xd6, 0xca, 0x3a, 0xd5, 0x1d, 0xe6, 0x46, 0xcc, - 0x3e, 0x51, 0xc5, 0x6e, 0x0a, 0x38, 0xe4, 0x85, 0x7a, 0xa9, 0xef, 0xd9, 0x25, 0x4c, 0xf5, 0xc7, - 0x5c, 0xf9, 0xf7, 0xec, 0x6d, 0x87, 0xd8, 0x01, 0xa4, 0xca, 0xd9, 0xb0, 0x30, 0x01, 0x01, 0xdd, - 0x83, 0x33, 0x8c, 0x14, 0x76, 0xa9, 0x5e, 0xc0, 0x46, 0xf5, 0x80, 0xfe, 0x93, 0x1c, 0x30, 0x5c, - 0x95, 0xe3, 0xcb, 0x5e, 0x81, 0x04, 0xa6, 0x8c, 0x50, 0x8a, 0x9d, 0x54, 0x92, 0x5b, 0x62, 0xa2, - 0x5e, 0xa4, 0x30, 0xe9, 0x92, 0x47, 0xc6, 0xcd, 0xe9, 0x1a, 0x23, 0xa1, 0x54, 0x39, 0xd1, 0x34, - 0x24, 0x1d, 0x86, 0x59, 0xc5, 0x51, 0xad, 0xca, 0x8e, 0xa1, 0x17, 0x52, 0x83, 0x53, 0xd2, 0x5c, - 0x42, 0x19, 0xf0, 0x16, 0x37, 0xf9, 0x1a, 0x7a, 0x15, 0x86, 0x0c, 0xb3, 0xc0, 0x91, 0xf9, 0x64, - 0x43, 0x9c, 0x6c, 0xd0, 0x5f, 0x16, 0x84, 0xdf, 0x04, 0x54, 0xb4, 0xc9, 0x87, 0x15, 0x42, 0x0b, - 0x87, 0xaa, 0x65, 0x60, 0xaa, 0xba, 0x41, 0x30, 0x32, 0x15, 0x9f, 0xeb, 0xcb, 0x0f, 0x1e, 0xe5, - 0xfb, 0x9f, 0x49, 0x89, 0xe1, 0x84, 0xdc, 0x65, 0xc7, 0x52, 0xdf, 0x56, 0x86, 0xab, 0x94, 0x9b, - 0x06, 0xa6, 0xeb, 0x9a, 0x83, 0xde, 0x86, 0xf1, 0x8a, 0xe5, 0xe6, 0x1b, 0xb5, 0x7a, 0x5a, 0xd1, - 0x36, 0xcb, 0xaa, 0x87, 0x25, 0x75, 0x96, 0x1f, 0x99, 0xf2, 0x48, 0xde, 0x11, 0x14, 0xd7, 0x6d, - 0xb3, 0xbc, 0xc5, 0xf7, 0xd1, 0x28, 0xf4, 0x98, 0xd4, 0xd0, 0x29, 0x49, 0xbd, 0xcc, 0x29, 0xc5, - 0x17, 0xba, 0x0c, 0xbd, 0xf6, 0x23, 0xd5, 0xc6, 0x8c, 0xa4, 0xce, 0x71, 0xd3, 0x8f, 0x67, 0xbc, - 0x6b, 0x9b, 0xf1, 0xaf, 0x6d, 0xe6, 0xba, 0x61, 0x62, 0x76, 0x07, 0x1b, 0x15, 0xa2, 0xf4, 0xd8, - 0x8f, 0x14, 0xcc, 0x38, 0x17, 0x13, 0x5c, 0x13, 0x6d, 0x70, 0x31, 0xce, 0x95, 0xfe, 0x79, 0x0c, - 0x50, 0x34, 0x90, 0xd1, 0x1a, 0x80, 0xb8, 0xd1, 0xaa, 0xae, 0xf1, 0x4b, 0xd1, 0x97, 0x9f, 0x3b, - 0xca, 0xcf, 0xda, 0xd3, 0xa9, 0x99, 0xdc, 0xe4, 0x07, 0xf7, 0xf1, 0xc2, 0xe3, 0xc5, 0x85, 0xb7, - 0x1e, 0xcc, 0x5d, 0xbb, 0x7a, 0x5f, 0x5d, 0x78, 0x70, 0xcd, 0xff, 0xbe, 0xf0, 0x24, 0xf7, 0xda, - 0xd3, 0x19, 0xa5, 0xaf, 0xe4, 0x4b, 0x44, 0x7f, 0x94, 0x20, 0x4e, 0x2a, 0x7a, 0x2a, 0x36, 0x25, - 0xcd, 0x0d, 0xe4, 0x7f, 0x2d, 0x3d, 0x5b, 0x3a, 0x7f, 0x13, 0xc9, 0x6f, 0x2c, 0xe6, 0x2f, 0xad, - 0x5c, 0x79, 0x63, 0x75, 0x65, 0x71, 0x71, 0x71, 0x29, 0xbf, 0xbc, 0x22, 0xff, 0x24, 0x26, 0xf5, - 0x3e, 0x8f, 0xf5, 0xb8, 0x79, 0x99, 0x96, 0x8e, 0xf2, 0x3d, 0x8f, 0xbb, 0x76, 0x13, 0x96, 0xf4, - 0xe5, 0x17, 0x63, 0x1f, 0x4b, 0x70, 0xad, 0x64, 0x66, 0xd8, 0x2e, 0x61, 0x3c, 0x7b, 0x67, 0x28, - 0x61, 0x07, 0xa6, 0xbd, 0x97, 0x0d, 0x27, 0x86, 0xfd, 0x4b, 0x59, 0x6b, 0xaf, 0x94, 0x65, 0x87, - 0x16, 0x71, 0x32, 0x1b, 0xd8, 0x76, 0x76, 0xb1, 0x71, 0x63, 0xf5, 0xfd, 0xfc, 0x21, 0x23, 0x0e, - 0xea, 0x58, 0xc0, 0x36, 0x2d, 0x7b, 0x22, 0xde, 0xe4, 0x02, 0x14, 0x57, 0x03, 0xf9, 0x33, 0x09, - 0xa6, 0xb6, 0xb9, 0x2b, 0x1b, 0x24, 0x03, 0xc5, 0x8d, 0x0c, 0x87, 0xa1, 0x35, 0xe8, 0x15, 0xba, - 0x8b, 0x4c, 0x32, 0xdd, 0x46, 0x26, 0x09, 0xa4, 0x0d, 0x9f, 0x1b, 0xbd, 0x05, 0x50, 0xcb, 0xee, - 0xa9, 0x6e, 0x2e, 0x2b, 0x1d, 0x75, 0xa8, 0x4b, 0xb2, 0x81, 0x9d, 0x3d, 0xa5, 0xaf, 0xe8, 0xff, - 0x94, 0x1f, 0xc0, 0xf9, 0x16, 0x38, 0x1d, 0xcb, 0xa4, 0x0e, 0x41, 0x6f, 0x02, 0x78, 0xd1, 0xa6, - 0x32, 0x66, 0x08, 0xac, 0x63, 0x11, 0xf9, 0x2b, 0xa2, 0x3a, 0x29, 0x7d, 0x1e, 0xf1, 0x6d, 0x66, - 0xc8, 0xdf, 0x85, 0x73, 0x41, 0xc1, 0xef, 0x7a, 0xe6, 0xac, 0x05, 0x0f, 0x3a, 0x0b, 0x3d, 0x94, - 0x30, 0x3f, 0x6e, 0x92, 0x4a, 0x37, 0x25, 0x6c, 0x5d, 0x43, 0x6b, 0xd0, 0xc7, 0x08, 0xc5, 0x94, - 0xef, 0xc4, 0x78, 0x44, 0xcd, 0x1f, 0xe5, 0x5f, 0xb5, 0x67, 0x53, 0x33, 0xb9, 0xf3, 0xa1, 0x88, - 0x8a, 0x04, 0xd4, 0x47, 0x1f, 0xcc, 0x28, 0x09, 0x8f, 0x79, 0x5d, 0x93, 0x7f, 0x2c, 0x41, 0x2a, - 0x88, 0x60, 0x85, 0xec, 0x2f, 0x69, 0x9a, 0x9d, 0x37, 0xcc, 0xc2, 0x1e, 0x5a, 0x85, 0x21, 0x8d, - 0xec, 0xab, 0x58, 0xd3, 0x6c, 0xd5, 0xb2, 0x49, 0x51, 0x7f, 0x24, 0x94, 0x3b, 0x57, 0xef, 0x08, - 0xc1, 0xb6, 0xc9, 0x89, 0x94, 0xa4, 0x16, 0xfc, 0x44, 0x57, 0xe0, 0xff, 0x77, 0xcd, 0x32, 0x51, - 0x45, 0xb0, 0xa8, 0x05, 0xa3, 0xe2, 0x30, 0x62, 0x57, 0xa1, 0x2b, 0x23, 0xee, 0xb6, 0xd0, 0x7d, - 0xd9, 0xdb, 0x5c, 0xd7, 0xe4, 0xdf, 0xc6, 0xc3, 0xc5, 0x45, 0x10, 0xa0, 0xb7, 0x21, 0x26, 0xcc, - 0xd1, 0x20, 0x8f, 0xb6, 0xb4, 0xa6, 0x12, 0xd3, 0x35, 0x84, 0xa0, 0x8b, 0xe2, 0x32, 0x11, 0x47, - 0xf3, 0xdf, 0x68, 0x33, 0xa0, 0xe8, 0x8e, 0xab, 0xba, 0x93, 0x8a, 0xf3, 0xa4, 0x3a, 0xd7, 0x4a, - 0x7e, 0xd0, 0x56, 0x55, 0x9d, 0xf9, 0x57, 0xb4, 0x5a, 0x75, 0x9d, 0xa2, 0x5a, 0x29, 0x4d, 0xab, - 0x55, 0x8f, 0xc8, 0x4d, 0xcd, 0xa5, 0x36, 0xab, 0x4d, 0x37, 0x1a, 0xd5, 0xa6, 0xde, 0xe3, 0xc5, - 0x45, 0x2b, 0xd1, 0x28, 0xf4, 0x18, 0xba, 0xc3, 0x88, 0xc6, 0x2f, 0x56, 0x42, 0x11, 0x5f, 0xf2, - 0x5d, 0x18, 0x69, 0xe0, 0x0c, 0x07, 0x5d, 0x83, 0x84, 0x08, 0x04, 0xb7, 0x41, 0x88, 0x1f, 0x77, - 0xad, 0x05, 0x9f, 0x52, 0x65, 0x92, 0xff, 0x2d, 0xc1, 0x70, 0x90, 0x82, 0xdb, 0x68, 0x0d, 0x06, - 0x6c, 0x52, 0x12, 0x6a, 0x9a, 0xb4, 0x9d, 0x84, 0xe1, 0x4b, 0x0e, 0x31, 0xa2, 0x8b, 0x70, 0xa6, - 0x68, 0xda, 0x07, 0xd8, 0xd6, 0x88, 0xad, 0x12, 0x8a, 0x77, 0x0c, 0xe2, 0x85, 0x69, 0x42, 0x19, - 0xae, 0x6e, 0xac, 0x7a, 0xeb, 0x68, 0x11, 0x46, 0x42, 0x91, 0xed, 0xd3, 0xc7, 0x39, 0x3d, 0x0a, - 0x84, 0xb5, 0xcf, 0x71, 0x01, 0x86, 0xbd, 0xe3, 0x02, 0xd2, 0xbb, 0x38, 0xf5, 0x90, 0xbf, 0x2e, - 0x48, 0xe5, 0xfb, 0x30, 0x1e, 0x84, 0xab, 0x88, 0x6d, 0x3f, 0x3b, 0xe6, 0xaa, 0x76, 0x97, 0x9a, - 0x24, 0xb4, 0xbc, 0x69, 0x1a, 0xa2, 0x40, 0x79, 0x94, 0x57, 0x13, 0x5f, 0x7d, 0x31, 0xd6, 0x95, - 0xf8, 0xbf, 0x61, 0x49, 0xfe, 0x9b, 0x04, 0x93, 0x21, 0xe9, 0x66, 0x85, 0xe9, 0xb4, 0xb4, 0x69, - 0x1a, 0x7a, 0xe1, 0x70, 0xdb, 0x32, 0x74, 0xba, 0x87, 0xce, 0xc3, 0xc0, 0x43, 0x53, 0xa7, 0xaa, - 0xed, 0x9d, 0xc8, 0xcf, 0x49, 0x28, 0xfd, 0xee, 0x9a, 0x0f, 0x62, 0x0c, 0x12, 0x65, 0x5c, 0x50, - 0x35, 0xcc, 0xb0, 0x30, 0x52, 0x6f, 0x19, 0x17, 0x56, 0x30, 0xc3, 0xae, 0xa6, 0xd8, 0xb2, 0x0c, - 0x5d, 0xd4, 0x72, 0x4e, 0xe2, 0xd9, 0x65, 0x28, 0xb0, 0xce, 0x49, 0x67, 0x61, 0xd0, 0xd1, 0x4b, - 0x14, 0x1b, 0xea, 0x87, 0x15, 0x6c, 0xe8, 0xec, 0x50, 0x98, 0x24, 0xe9, 0xad, 0xde, 0xf2, 0x16, - 0x91, 0x0c, 0x03, 0x6e, 0x6b, 0x60, 0x88, 0x36, 0x49, 0xc4, 0x5b, 0x68, 0x4d, 0xfe, 0x54, 0x82, - 0xf3, 0x4d, 0xf5, 0x5a, 0x31, 0x0f, 0x28, 0xd7, 0x6c, 0x12, 0xb8, 0x16, 0x2a, 0x2e, 0x14, 0x88, - 0xe5, 0x2b, 0x06, 0xee, 0xd2, 0x12, 0x5f, 0x79, 0x31, 0x7a, 0xc9, 0xff, 0x95, 0x60, 0x2a, 0x9c, - 0x30, 0x8a, 0xb8, 0x62, 0xb0, 0x10, 0x26, 0xb7, 0x38, 0x79, 0x4d, 0x8d, 0xa6, 0x62, 0xd6, 0xd4, - 0x97, 0xb7, 0xfd, 0xd9, 0x43, 0xe9, 0x13, 0xd4, 0x4b, 0x6e, 0x81, 0xec, 0xa9, 0x70, 0x57, 0x71, - 0x8c, 0xfd, 0xb9, 0x6c, 0xab, 0x70, 0x6f, 0xe0, 0x61, 0x45, 0xb0, 0xa3, 0x0d, 0x48, 0x68, 0xc2, - 0x36, 0x5c, 0x97, 0xfe, 0xdc, 0xeb, 0x6d, 0x8b, 0xf2, 0x8d, 0xaa, 0x54, 0x45, 0xc8, 0x3f, 0x8a, - 0xc3, 0x58, 0x53, 0x7a, 0xb4, 0x09, 0x03, 0xb5, 0x1b, 0x76, 0xd2, 0x4c, 0xde, 0x5f, 0x15, 0xb1, - 0xae, 0xa1, 0x6d, 0x18, 0x0a, 0x5d, 0x43, 0x51, 0x58, 0x3a, 0x16, 0x9a, 0x0c, 0x5c, 0xd8, 0x75, - 0xad, 0xce, 0x33, 0xf1, 0x93, 0x79, 0xa6, 0xeb, 0xc5, 0x79, 0xa6, 0xfb, 0xf4, 0x9e, 0xf9, 0xbb, - 0x04, 0xf3, 0x5b, 0x84, 0x1d, 0x17, 0x94, 0xfe, 0xf5, 0xbe, 0x55, 0x55, 0x43, 0x3a, 0x91, 0x1a, - 0x81, 0x66, 0xcc, 0x57, 0xe8, 0x6e, 0x40, 0xa1, 0xd8, 0x09, 0x15, 0x0a, 0x88, 0xad, 0xa9, 0x76, - 0x1f, 0x66, 0xdf, 0xd1, 0x1d, 0x76, 0xa3, 0xe6, 0xc2, 0x20, 0xaf, 0x4e, 0x1c, 0x5f, 0xa9, 0x09, - 0xe8, 0x36, 0xf4, 0xb2, 0xee, 0xdd, 0xb5, 0x24, 0x97, 0x35, 0x1f, 0x4f, 0xfd, 0xa7, 0x57, 0xf1, - 0x96, 0xdd, 0x06, 0xc1, 0xc2, 0x25, 0xaf, 0x41, 0x48, 0x2a, 0xfc, 0xb7, 0xac, 0xd5, 0xe5, 0xe2, - 0xb0, 0x64, 0xb4, 0x0a, 0x09, 0x4b, 0xfc, 0x16, 0x35, 0xed, 0x42, 0xdb, 0x4a, 0x29, 0x55, 0x56, - 0xf9, 0x17, 0x31, 0x98, 0xae, 0xf3, 0x4e, 0x43, 0xb7, 0x34, 0x88, 0x77, 0xe9, 0x05, 0xc4, 0xfb, - 0xad, 0x53, 0xa6, 0x93, 0x63, 0xbc, 0x1d, 0x7f, 0x91, 0xde, 0xfe, 0x43, 0x2c, 0xdc, 0x39, 0x8b, - 0x96, 0xfc, 0x8e, 0xee, 0xe8, 0x3b, 0x3a, 0xaf, 0x16, 0x69, 0x48, 0xf8, 0x83, 0xa4, 0x48, 0xf0, - 0xd5, 0x6f, 0xb7, 0xc8, 0x8b, 0x19, 0xd8, 0x9d, 0x53, 0x0b, 0xa4, 0x4c, 0x28, 0xf3, 0x8b, 0xbc, - 0xd8, 0xd8, 0xf4, 0xd7, 0xdd, 0x21, 0xd9, 0x27, 0x2e, 0x98, 0x15, 0xca, 0x44, 0xb6, 0x1f, 0x10, - 0x8b, 0xcb, 0xee, 0x9a, 0x3b, 0x24, 0x17, 0xf9, 0x00, 0xe0, 0x67, 0x03, 0x47, 0xd4, 0xb0, 0x41, - 0x77, 0xb9, 0x9a, 0x23, 0x1c, 0xb7, 0xa8, 0x86, 0x1a, 0x43, 0xaf, 0x88, 0x85, 0xfa, 0xbd, 0x51, - 0xe8, 0x11, 0x43, 0x6f, 0x8f, 0xd7, 0x51, 0x79, 0x5f, 0x6e, 0x99, 0x0c, 0xcf, 0xd7, 0xa9, 0x84, - 0x57, 0x26, 0x43, 0xb3, 0xb4, 0x7b, 0x82, 0xf7, 0xb8, 0xc8, 0xe7, 0x57, 0x27, 0xd5, 0xe7, 0x9d, - 0xe0, 0xad, 0xb9, 0x73, 0xaa, 0x13, 0xe8, 0x03, 0x7e, 0x25, 0xc1, 0x4c, 0x83, 0x6c, 0x10, 0x35, - 0xe7, 0x29, 0xca, 0xd4, 0x06, 0xc0, 0x7e, 0x55, 0x50, 0x3b, 0x99, 0x39, 0x72, 0xba, 0x12, 0x10, - 0x20, 0x7f, 0x22, 0x41, 0xa6, 0x71, 0x0e, 0x8b, 0xf2, 0x89, 0x0b, 0x73, 0x37, 0x84, 0x40, 0x3a, - 0x01, 0x82, 0x40, 0x10, 0x06, 0xb1, 0x7c, 0x29, 0xc1, 0xa4, 0x9b, 0x75, 0x1a, 0x75, 0xba, 0xa7, - 0xc8, 0x37, 0x28, 0x03, 0x2f, 0x1d, 0xe8, 0x6c, 0x57, 0xb5, 0xbd, 0x0b, 0xa1, 0xf2, 0x14, 0x71, - 0x28, 0x22, 0xef, 0x8c, 0xbb, 0x15, 0xae, 0xa9, 0x57, 0x00, 0x55, 0xe7, 0x41, 0xaf, 0x9d, 0xd7, - 0xa9, 0x17, 0x81, 0x7d, 0xf9, 0xde, 0xa3, 0x7c, 0x97, 0x1d, 0x4b, 0x69, 0x6e, 0xef, 0xee, 0x4d, - 0x7d, 0xcb, 0x82, 0x00, 0xbd, 0x06, 0x49, 0x77, 0xfe, 0xa9, 0x71, 0x74, 0x87, 0x39, 0x06, 0xdc, - 0x5d, 0x9f, 0x5a, 0xfe, 0x9d, 0x04, 0xd3, 0xf5, 0xca, 0x06, 0xd2, 0xed, 0xa9, 0x14, 0x6e, 0xac, - 0x40, 0xbc, 0x63, 0x05, 0xba, 0x5a, 0x29, 0xf0, 0x99, 0x50, 0xe0, 0xba, 0xdf, 0x3b, 0x34, 0xa9, - 0x10, 0x5f, 0x53, 0x7e, 0x1d, 0xf1, 0xed, 0xe2, 0x29, 0x5e, 0x67, 0x8d, 0x78, 0xcd, 0x1a, 0xb9, - 0x3f, 0x4b, 0xd0, 0xbd, 0xe6, 0x6c, 0xee, 0x60, 0xb4, 0x01, 0x49, 0xfe, 0xba, 0xe6, 0xec, 0x8a, - 0xa6, 0x7c, 0xa6, 0xc9, 0x33, 0x9f, 0xb7, 0xbd, 0xe1, 0xbd, 0xe7, 0xa6, 0x47, 0x23, 0x37, 0x73, - 0xb5, 0x6c, 0xb1, 0x43, 0xc4, 0x20, 0xe9, 0x3d, 0x67, 0xf8, 0x2f, 0xb5, 0x8b, 0xf5, 0xe2, 0x8e, - 0x7b, 0x95, 0x49, 0xbf, 0xde, 0x01, 0x87, 0xf7, 0x3e, 0x92, 0xdb, 0x82, 0xee, 0x77, 0xb9, 0x36, - 0x37, 0x61, 0x48, 0x68, 0x53, 0x6b, 0xc5, 0x23, 0x4f, 0x09, 0x62, 0xe7, 0x18, 0x55, 0x72, 0x3f, - 0x1b, 0x85, 0xb8, 0x2b, 0xf3, 0x0e, 0xf4, 0xae, 0x11, 0x91, 0x38, 0x1b, 0x93, 0xa6, 0xa7, 0x5a, - 0xb9, 0xcd, 0xe5, 0x94, 0xcf, 0x7c, 0xfc, 0xd7, 0x7f, 0x7d, 0x3f, 0xd6, 0x8f, 0xfa, 0xb2, 0xd6, - 0x0e, 0xce, 0xba, 0x89, 0x19, 0x3d, 0x93, 0x20, 0xe1, 0xcf, 0x5c, 0xe8, 0x62, 0xcb, 0xaa, 0x15, - 0x9e, 0xcc, 0xd2, 0xed, 0x4c, 0x9d, 0xf2, 0x65, 0x7e, 0x62, 0x26, 0x7d, 0x86, 0x9f, 0x18, 0x1c, - 0x41, 0xaf, 0x4a, 0xf3, 0xf7, 0x46, 0xe5, 0x86, 0xeb, 0x6e, 0x22, 0x5b, 0x21, 0xfe, 0xa0, 0xd8, - 0x54, 0xdf, 0x26, 0xeb, 0xf2, 0x18, 0x3f, 0xf3, 0xa5, 0xf9, 0xa8, 0x6c, 0xf4, 0x53, 0x09, 0xe4, - 0x35, 0x12, 0xec, 0x9e, 0x1a, 0x0e, 0x2b, 0xcd, 0x4e, 0x5c, 0x6c, 0xfd, 0x4e, 0x12, 0x95, 0x24, - 0x5f, 0xe4, 0x58, 0x66, 0xd1, 0x34, 0xc7, 0xe2, 0x5e, 0x94, 0x05, 0x7f, 0xc2, 0xcf, 0xfa, 0x0d, - 0x51, 0x56, 0xf3, 0x38, 0xd1, 0x5f, 0x24, 0x90, 0xb7, 0x8e, 0x47, 0x77, 0xb5, 0x1e, 0x45, 0xfb, - 0xad, 0x6e, 0x53, 0x9b, 0xbd, 0xcf, 0x71, 0x2a, 0xe9, 0x76, 0x70, 0xba, 0x9e, 0x9b, 0x93, 0xdb, - 0xa4, 0x44, 0xdf, 0x93, 0x60, 0x76, 0x85, 0x18, 0x84, 0x91, 0x93, 0x5a, 0xbd, 0x19, 0x66, 0x61, - 0xdb, 0xf9, 0xb6, 0x6c, 0xfb, 0xb9, 0x04, 0x13, 0xad, 0x1b, 0x67, 0x74, 0xa5, 0xde, 0xae, 0x6d, - 0x35, 0xda, 0xe9, 0x8b, 0xed, 0xb6, 0x7a, 0x6e, 0xef, 0x3b, 0xcd, 0x31, 0x9f, 0x43, 0xe3, 0x2d, - 0x30, 0xa3, 0x7f, 0x48, 0x30, 0x1e, 0x8e, 0xd2, 0xb0, 0xa1, 0x3a, 0xcb, 0xcf, 0xe9, 0xf6, 0x9b, - 0x74, 0xf9, 0x3b, 0x1c, 0xde, 0x3d, 0x34, 0xd3, 0xca, 0xa4, 0x4f, 0xbc, 0xa7, 0xda, 0xa7, 0xf7, - 0x72, 0x68, 0xb1, 0x1d, 0xba, 0xec, 0x93, 0x6a, 0xcd, 0x7b, 0x8a, 0x7e, 0x18, 0x87, 0xf1, 0xad, - 0x16, 0xba, 0x5d, 0x3a, 0x26, 0xb8, 0x3b, 0x8a, 0xea, 0xcf, 0x63, 0x5c, 0x9f, 0xe7, 0xb1, 0xf4, - 0xe5, 0x96, 0x40, 0xeb, 0xca, 0x60, 0x46, 0x00, 0x77, 0x03, 0xfd, 0x2d, 0xf9, 0xc4, 0xac, 0xdb, - 0xe9, 0xcd, 0x93, 0xb0, 0x46, 0x37, 0x6a, 0xe6, 0xe3, 0x62, 0xe5, 0xaf, 0x43, 0x2c, 0xfa, 0x93, - 0x04, 0x13, 0x91, 0x7b, 0x7a, 0xaa, 0xb8, 0x6b, 0xe6, 0x15, 0x11, 0x64, 0xf3, 0x6d, 0x06, 0xd9, - 0x7c, 0xe7, 0x41, 0xf6, 0x4b, 0x09, 0x5e, 0x69, 0x98, 0xe6, 0xa3, 0x0d, 0x7f, 0xb3, 0xa4, 0x73, - 0xb9, 0x8d, 0x54, 0x1f, 0x91, 0x26, 0xbf, 0xc1, 0x55, 0x7b, 0x1d, 0x65, 0x1b, 0x40, 0x16, 0xff, - 0xa6, 0x59, 0xa8, 0xf6, 0xd5, 0xc1, 0xf4, 0xf4, 0x95, 0x04, 0xaf, 0x6c, 0xb5, 0x87, 0xf8, 0x5b, - 0xed, 0xa5, 0xff, 0x66, 0x53, 0x42, 0x53, 0xb7, 0x58, 0x1c, 0xfb, 0xc3, 0x74, 0xa7, 0xd8, 0xdd, - 0x98, 0xbc, 0x2c, 0x9f, 0x80, 0x0b, 0xfd, 0x40, 0x82, 0x0b, 0xcd, 0x4a, 0x43, 0xfb, 0x9e, 0x6a, - 0xa6, 0x8f, 0xf0, 0xc5, 0x7c, 0xc7, 0xbe, 0xf8, 0x08, 0x06, 0xdc, 0xcc, 0x5f, 0x7d, 0xca, 0xcf, - 0x36, 0xaa, 0x0b, 0x2d, 0x46, 0xa1, 0xf4, 0x4c, 0x1b, 0xf7, 0xc4, 0x91, 0xcf, 0x72, 0x7c, 0x43, - 0x28, 0xc9, 0xf1, 0xf9, 0xd0, 0xd0, 0x27, 0x12, 0x0c, 0xd7, 0x15, 0x1e, 0x27, 0x9a, 0x15, 0xdb, - 0x18, 0x50, 0xda, 0x84, 0x91, 0xe6, 0x30, 0x46, 0x10, 0x8a, 0x9a, 0x09, 0x3d, 0x97, 0xe0, 0xe5, - 0x56, 0x93, 0x44, 0x63, 0x5c, 0xc7, 0xcc, 0x1d, 0x9d, 0x15, 0xcc, 0x29, 0x0e, 0x2f, 0x8d, 0x52, - 0x1c, 0x5e, 0xf5, 0x39, 0xb4, 0x96, 0x01, 0xf2, 0x57, 0x7e, 0xff, 0xcf, 0x09, 0xe9, 0x5e, 0xb6, - 0x83, 0x7f, 0xd8, 0x32, 0x6a, 0xed, 0xec, 0xf4, 0xf0, 0x70, 0xb9, 0xf4, 0xbf, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x6a, 0x8f, 0x85, 0xf0, 0xb5, 0x24, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// GsPbaClient is the client API for GsPba service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type GsPbaClient interface { - PublishUplink(ctx context.Context, in *GatewayUplinkMessage, opts ...grpc.CallOption) (*types.Empty, error) - // Update the gateway, changing the fields specified by the field mask to the provided values. - // To mark a gateway as online, call this rpc setting online to true, include status_public in field_mask and - // keep calling this rpc before the returned online_ttl passes to keep the gateway online. - UpdateGateway(ctx context.Context, in *UpdatePacketBrokerGatewayRequest, opts ...grpc.CallOption) (*UpdatePacketBrokerGatewayResponse, error) -} - -type gsPbaClient struct { - cc *grpc.ClientConn -} - -func NewGsPbaClient(cc *grpc.ClientConn) GsPbaClient { - return &gsPbaClient{cc} -} - -func (c *gsPbaClient) PublishUplink(ctx context.Context, in *GatewayUplinkMessage, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GsPba/PublishUplink", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gsPbaClient) UpdateGateway(ctx context.Context, in *UpdatePacketBrokerGatewayRequest, opts ...grpc.CallOption) (*UpdatePacketBrokerGatewayResponse, error) { - out := new(UpdatePacketBrokerGatewayResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GsPba/UpdateGateway", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// GsPbaServer is the server API for GsPba service. -type GsPbaServer interface { - PublishUplink(context.Context, *GatewayUplinkMessage) (*types.Empty, error) - // Update the gateway, changing the fields specified by the field mask to the provided values. - // To mark a gateway as online, call this rpc setting online to true, include status_public in field_mask and - // keep calling this rpc before the returned online_ttl passes to keep the gateway online. - UpdateGateway(context.Context, *UpdatePacketBrokerGatewayRequest) (*UpdatePacketBrokerGatewayResponse, error) -} - -// UnimplementedGsPbaServer can be embedded to have forward compatible implementations. -type UnimplementedGsPbaServer struct { -} - -func (*UnimplementedGsPbaServer) PublishUplink(ctx context.Context, req *GatewayUplinkMessage) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method PublishUplink not implemented") -} -func (*UnimplementedGsPbaServer) UpdateGateway(ctx context.Context, req *UpdatePacketBrokerGatewayRequest) (*UpdatePacketBrokerGatewayResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateGateway not implemented") -} - -func RegisterGsPbaServer(s *grpc.Server, srv GsPbaServer) { - s.RegisterService(&_GsPba_serviceDesc, srv) -} - -func _GsPba_PublishUplink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GatewayUplinkMessage) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GsPbaServer).PublishUplink(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GsPba/PublishUplink", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GsPbaServer).PublishUplink(ctx, req.(*GatewayUplinkMessage)) - } - return interceptor(ctx, in, info, handler) -} - -func _GsPba_UpdateGateway_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdatePacketBrokerGatewayRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GsPbaServer).UpdateGateway(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.GsPba/UpdateGateway", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GsPbaServer).UpdateGateway(ctx, req.(*UpdatePacketBrokerGatewayRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _GsPba_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.GsPba", - HandlerType: (*GsPbaServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "PublishUplink", - Handler: _GsPba_PublishUplink_Handler, - }, - { - MethodName: "UpdateGateway", - Handler: _GsPba_UpdateGateway_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/packetbrokeragent.proto", -} - -// NsPbaClient is the client API for NsPba service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type NsPbaClient interface { - // PublishDownlink instructs the Packet Broker Agent to publish a downlink - // message to Packet Broker Router. - PublishDownlink(ctx context.Context, in *DownlinkMessage, opts ...grpc.CallOption) (*types.Empty, error) -} - -type nsPbaClient struct { - cc *grpc.ClientConn -} - -func NewNsPbaClient(cc *grpc.ClientConn) NsPbaClient { - return &nsPbaClient{cc} -} - -func (c *nsPbaClient) PublishDownlink(ctx context.Context, in *DownlinkMessage, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsPba/PublishDownlink", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// NsPbaServer is the server API for NsPba service. -type NsPbaServer interface { - // PublishDownlink instructs the Packet Broker Agent to publish a downlink - // message to Packet Broker Router. - PublishDownlink(context.Context, *DownlinkMessage) (*types.Empty, error) -} - -// UnimplementedNsPbaServer can be embedded to have forward compatible implementations. -type UnimplementedNsPbaServer struct { -} - -func (*UnimplementedNsPbaServer) PublishDownlink(ctx context.Context, req *DownlinkMessage) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method PublishDownlink not implemented") -} - -func RegisterNsPbaServer(s *grpc.Server, srv NsPbaServer) { - s.RegisterService(&_NsPba_serviceDesc, srv) -} - -func _NsPba_PublishDownlink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DownlinkMessage) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NsPbaServer).PublishDownlink(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.NsPba/PublishDownlink", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NsPbaServer).PublishDownlink(ctx, req.(*DownlinkMessage)) - } - return interceptor(ctx, in, info, handler) -} - -var _NsPba_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.NsPba", - HandlerType: (*NsPbaServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "PublishDownlink", - Handler: _NsPba_PublishDownlink_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/packetbrokeragent.proto", -} - -// PbaClient is the client API for Pba service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type PbaClient interface { - // Get information about the Packet Broker registration. - // Viewing Packet Packet information requires administrative access. - GetInfo(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*PacketBrokerInfo, error) - // Register with Packet Broker. If no registration exists, it will be created. Any existing registration will be updated. - // Registration settings not in the request message are taken from Packet Broker Agent configuration and caller context. - // Packet Broker registration requires administrative access. - // Packet Broker registration is only supported for tenants and requires Packet Broker Agent to be configured with - // NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this rpc is enabled. - Register(ctx context.Context, in *PacketBrokerRegisterRequest, opts ...grpc.CallOption) (*PacketBrokerNetwork, error) - // Deregister from Packet Broker. - // Packet Broker deregistration requires administrative access. - // Packet Broker deregistration is only supported for tenants and requires Packet Broker Agent to be configured with - // NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this rpc is enabled. - Deregister(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) - // Get the default routing policy. - // Getting routing policies requires administrative access. - GetHomeNetworkDefaultRoutingPolicy(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*PacketBrokerDefaultRoutingPolicy, error) - // Set the default routing policy. - // Setting routing policies requires administrative access. - SetHomeNetworkDefaultRoutingPolicy(ctx context.Context, in *SetPacketBrokerDefaultRoutingPolicyRequest, opts ...grpc.CallOption) (*types.Empty, error) - // Deletes the default routing policy. - // Deleting routing policies requires administrative access. - DeleteHomeNetworkDefaultRoutingPolicy(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) - // List the routing policies that Packet Broker Agent as Forwarder configured with Home Networks. - // Listing routing policies requires administrative access. - ListHomeNetworkRoutingPolicies(ctx context.Context, in *ListHomeNetworkRoutingPoliciesRequest, opts ...grpc.CallOption) (*PacketBrokerRoutingPolicies, error) - // Get the routing policy for the given Home Network. - // Getting routing policies requires administrative access. - GetHomeNetworkRoutingPolicy(ctx context.Context, in *PacketBrokerNetworkIdentifier, opts ...grpc.CallOption) (*PacketBrokerRoutingPolicy, error) - // Set the routing policy for the given Home Network. - // Setting routing policies requires administrative access. - SetHomeNetworkRoutingPolicy(ctx context.Context, in *SetPacketBrokerRoutingPolicyRequest, opts ...grpc.CallOption) (*types.Empty, error) - // Delete the routing policy for the given Home Network. - // Deleting routing policies requires administrative access. - DeleteHomeNetworkRoutingPolicy(ctx context.Context, in *PacketBrokerNetworkIdentifier, opts ...grpc.CallOption) (*types.Empty, error) - // Get the default gateway visibility. - // Getting gateway visibilities requires administrative access. - GetHomeNetworkDefaultGatewayVisibility(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*PacketBrokerDefaultGatewayVisibility, error) - // Set the default gateway visibility. - // Setting gateway visibilities requires administrative access. - SetHomeNetworkDefaultGatewayVisibility(ctx context.Context, in *SetPacketBrokerDefaultGatewayVisibilityRequest, opts ...grpc.CallOption) (*types.Empty, error) - // Deletes the default gateway visibility. - // Deleting gateway visibilities requires administrative access. - DeleteHomeNetworkDefaultGatewayVisibility(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) - // List all listed networks. - // Listing networks requires administrative access. - ListNetworks(ctx context.Context, in *ListPacketBrokerNetworksRequest, opts ...grpc.CallOption) (*PacketBrokerNetworks, error) - // List the listed home networks for which routing policies can be configured. - // Listing home networks requires administrative access. - ListHomeNetworks(ctx context.Context, in *ListPacketBrokerHomeNetworksRequest, opts ...grpc.CallOption) (*PacketBrokerNetworks, error) - // List the routing policies that Forwarders configured with Packet Broker Agent as Home Network. - // Listing routing policies requires administrative access. - ListForwarderRoutingPolicies(ctx context.Context, in *ListForwarderRoutingPoliciesRequest, opts ...grpc.CallOption) (*PacketBrokerRoutingPolicies, error) -} - -type pbaClient struct { - cc *grpc.ClientConn -} - -func NewPbaClient(cc *grpc.ClientConn) PbaClient { - return &pbaClient{cc} -} - -func (c *pbaClient) GetInfo(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*PacketBrokerInfo, error) { - out := new(PacketBrokerInfo) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/GetInfo", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pbaClient) Register(ctx context.Context, in *PacketBrokerRegisterRequest, opts ...grpc.CallOption) (*PacketBrokerNetwork, error) { - out := new(PacketBrokerNetwork) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/Register", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pbaClient) Deregister(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/Deregister", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pbaClient) GetHomeNetworkDefaultRoutingPolicy(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*PacketBrokerDefaultRoutingPolicy, error) { - out := new(PacketBrokerDefaultRoutingPolicy) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/GetHomeNetworkDefaultRoutingPolicy", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pbaClient) SetHomeNetworkDefaultRoutingPolicy(ctx context.Context, in *SetPacketBrokerDefaultRoutingPolicyRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/SetHomeNetworkDefaultRoutingPolicy", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pbaClient) DeleteHomeNetworkDefaultRoutingPolicy(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/DeleteHomeNetworkDefaultRoutingPolicy", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} +func (*ListForwarderRoutingPoliciesRequest) ProtoMessage() {} -func (c *pbaClient) ListHomeNetworkRoutingPolicies(ctx context.Context, in *ListHomeNetworkRoutingPoliciesRequest, opts ...grpc.CallOption) (*PacketBrokerRoutingPolicies, error) { - out := new(PacketBrokerRoutingPolicies) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/ListHomeNetworkRoutingPolicies", in, out, opts...) - if err != nil { - return nil, err +func (x *ListForwarderRoutingPoliciesRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return out, nil + return mi.MessageOf(x) } -func (c *pbaClient) GetHomeNetworkRoutingPolicy(ctx context.Context, in *PacketBrokerNetworkIdentifier, opts ...grpc.CallOption) (*PacketBrokerRoutingPolicy, error) { - out := new(PacketBrokerRoutingPolicy) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/GetHomeNetworkRoutingPolicy", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pbaClient) SetHomeNetworkRoutingPolicy(ctx context.Context, in *SetPacketBrokerRoutingPolicyRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/SetHomeNetworkRoutingPolicy", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pbaClient) DeleteHomeNetworkRoutingPolicy(ctx context.Context, in *PacketBrokerNetworkIdentifier, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/DeleteHomeNetworkRoutingPolicy", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pbaClient) GetHomeNetworkDefaultGatewayVisibility(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*PacketBrokerDefaultGatewayVisibility, error) { - out := new(PacketBrokerDefaultGatewayVisibility) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/GetHomeNetworkDefaultGatewayVisibility", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pbaClient) SetHomeNetworkDefaultGatewayVisibility(ctx context.Context, in *SetPacketBrokerDefaultGatewayVisibilityRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/SetHomeNetworkDefaultGatewayVisibility", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pbaClient) DeleteHomeNetworkDefaultGatewayVisibility(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/DeleteHomeNetworkDefaultGatewayVisibility", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pbaClient) ListNetworks(ctx context.Context, in *ListPacketBrokerNetworksRequest, opts ...grpc.CallOption) (*PacketBrokerNetworks, error) { - out := new(PacketBrokerNetworks) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/ListNetworks", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pbaClient) ListHomeNetworks(ctx context.Context, in *ListPacketBrokerHomeNetworksRequest, opts ...grpc.CallOption) (*PacketBrokerNetworks, error) { - out := new(PacketBrokerNetworks) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/ListHomeNetworks", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pbaClient) ListForwarderRoutingPolicies(ctx context.Context, in *ListForwarderRoutingPoliciesRequest, opts ...grpc.CallOption) (*PacketBrokerRoutingPolicies, error) { - out := new(PacketBrokerRoutingPolicies) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/ListForwarderRoutingPolicies", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// PbaServer is the server API for Pba service. -type PbaServer interface { - // Get information about the Packet Broker registration. - // Viewing Packet Packet information requires administrative access. - GetInfo(context.Context, *types.Empty) (*PacketBrokerInfo, error) - // Register with Packet Broker. If no registration exists, it will be created. Any existing registration will be updated. - // Registration settings not in the request message are taken from Packet Broker Agent configuration and caller context. - // Packet Broker registration requires administrative access. - // Packet Broker registration is only supported for tenants and requires Packet Broker Agent to be configured with - // NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this rpc is enabled. - Register(context.Context, *PacketBrokerRegisterRequest) (*PacketBrokerNetwork, error) - // Deregister from Packet Broker. - // Packet Broker deregistration requires administrative access. - // Packet Broker deregistration is only supported for tenants and requires Packet Broker Agent to be configured with - // NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this rpc is enabled. - Deregister(context.Context, *types.Empty) (*types.Empty, error) - // Get the default routing policy. - // Getting routing policies requires administrative access. - GetHomeNetworkDefaultRoutingPolicy(context.Context, *types.Empty) (*PacketBrokerDefaultRoutingPolicy, error) - // Set the default routing policy. - // Setting routing policies requires administrative access. - SetHomeNetworkDefaultRoutingPolicy(context.Context, *SetPacketBrokerDefaultRoutingPolicyRequest) (*types.Empty, error) - // Deletes the default routing policy. - // Deleting routing policies requires administrative access. - DeleteHomeNetworkDefaultRoutingPolicy(context.Context, *types.Empty) (*types.Empty, error) - // List the routing policies that Packet Broker Agent as Forwarder configured with Home Networks. - // Listing routing policies requires administrative access. - ListHomeNetworkRoutingPolicies(context.Context, *ListHomeNetworkRoutingPoliciesRequest) (*PacketBrokerRoutingPolicies, error) - // Get the routing policy for the given Home Network. - // Getting routing policies requires administrative access. - GetHomeNetworkRoutingPolicy(context.Context, *PacketBrokerNetworkIdentifier) (*PacketBrokerRoutingPolicy, error) - // Set the routing policy for the given Home Network. - // Setting routing policies requires administrative access. - SetHomeNetworkRoutingPolicy(context.Context, *SetPacketBrokerRoutingPolicyRequest) (*types.Empty, error) - // Delete the routing policy for the given Home Network. - // Deleting routing policies requires administrative access. - DeleteHomeNetworkRoutingPolicy(context.Context, *PacketBrokerNetworkIdentifier) (*types.Empty, error) - // Get the default gateway visibility. - // Getting gateway visibilities requires administrative access. - GetHomeNetworkDefaultGatewayVisibility(context.Context, *types.Empty) (*PacketBrokerDefaultGatewayVisibility, error) - // Set the default gateway visibility. - // Setting gateway visibilities requires administrative access. - SetHomeNetworkDefaultGatewayVisibility(context.Context, *SetPacketBrokerDefaultGatewayVisibilityRequest) (*types.Empty, error) - // Deletes the default gateway visibility. - // Deleting gateway visibilities requires administrative access. - DeleteHomeNetworkDefaultGatewayVisibility(context.Context, *types.Empty) (*types.Empty, error) - // List all listed networks. - // Listing networks requires administrative access. - ListNetworks(context.Context, *ListPacketBrokerNetworksRequest) (*PacketBrokerNetworks, error) - // List the listed home networks for which routing policies can be configured. - // Listing home networks requires administrative access. - ListHomeNetworks(context.Context, *ListPacketBrokerHomeNetworksRequest) (*PacketBrokerNetworks, error) - // List the routing policies that Forwarders configured with Packet Broker Agent as Home Network. - // Listing routing policies requires administrative access. - ListForwarderRoutingPolicies(context.Context, *ListForwarderRoutingPoliciesRequest) (*PacketBrokerRoutingPolicies, error) -} - -// UnimplementedPbaServer can be embedded to have forward compatible implementations. -type UnimplementedPbaServer struct { -} - -func (*UnimplementedPbaServer) GetInfo(ctx context.Context, req *types.Empty) (*PacketBrokerInfo, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetInfo not implemented") -} -func (*UnimplementedPbaServer) Register(ctx context.Context, req *PacketBrokerRegisterRequest) (*PacketBrokerNetwork, error) { - return nil, status.Errorf(codes.Unimplemented, "method Register not implemented") -} -func (*UnimplementedPbaServer) Deregister(ctx context.Context, req *types.Empty) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Deregister not implemented") -} -func (*UnimplementedPbaServer) GetHomeNetworkDefaultRoutingPolicy(ctx context.Context, req *types.Empty) (*PacketBrokerDefaultRoutingPolicy, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetHomeNetworkDefaultRoutingPolicy not implemented") -} -func (*UnimplementedPbaServer) SetHomeNetworkDefaultRoutingPolicy(ctx context.Context, req *SetPacketBrokerDefaultRoutingPolicyRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method SetHomeNetworkDefaultRoutingPolicy not implemented") -} -func (*UnimplementedPbaServer) DeleteHomeNetworkDefaultRoutingPolicy(ctx context.Context, req *types.Empty) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteHomeNetworkDefaultRoutingPolicy not implemented") -} -func (*UnimplementedPbaServer) ListHomeNetworkRoutingPolicies(ctx context.Context, req *ListHomeNetworkRoutingPoliciesRequest) (*PacketBrokerRoutingPolicies, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListHomeNetworkRoutingPolicies not implemented") -} -func (*UnimplementedPbaServer) GetHomeNetworkRoutingPolicy(ctx context.Context, req *PacketBrokerNetworkIdentifier) (*PacketBrokerRoutingPolicy, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetHomeNetworkRoutingPolicy not implemented") -} -func (*UnimplementedPbaServer) SetHomeNetworkRoutingPolicy(ctx context.Context, req *SetPacketBrokerRoutingPolicyRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method SetHomeNetworkRoutingPolicy not implemented") -} -func (*UnimplementedPbaServer) DeleteHomeNetworkRoutingPolicy(ctx context.Context, req *PacketBrokerNetworkIdentifier) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteHomeNetworkRoutingPolicy not implemented") -} -func (*UnimplementedPbaServer) GetHomeNetworkDefaultGatewayVisibility(ctx context.Context, req *types.Empty) (*PacketBrokerDefaultGatewayVisibility, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetHomeNetworkDefaultGatewayVisibility not implemented") -} -func (*UnimplementedPbaServer) SetHomeNetworkDefaultGatewayVisibility(ctx context.Context, req *SetPacketBrokerDefaultGatewayVisibilityRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method SetHomeNetworkDefaultGatewayVisibility not implemented") -} -func (*UnimplementedPbaServer) DeleteHomeNetworkDefaultGatewayVisibility(ctx context.Context, req *types.Empty) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteHomeNetworkDefaultGatewayVisibility not implemented") -} -func (*UnimplementedPbaServer) ListNetworks(ctx context.Context, req *ListPacketBrokerNetworksRequest) (*PacketBrokerNetworks, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListNetworks not implemented") -} -func (*UnimplementedPbaServer) ListHomeNetworks(ctx context.Context, req *ListPacketBrokerHomeNetworksRequest) (*PacketBrokerNetworks, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListHomeNetworks not implemented") -} -func (*UnimplementedPbaServer) ListForwarderRoutingPolicies(ctx context.Context, req *ListForwarderRoutingPoliciesRequest) (*PacketBrokerRoutingPolicies, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListForwarderRoutingPolicies not implemented") -} - -func RegisterPbaServer(s *grpc.Server, srv PbaServer) { - s.RegisterService(&_Pba_serviceDesc, srv) -} - -func _Pba_GetInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PbaServer).GetInfo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Pba/GetInfo", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PbaServer).GetInfo(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) -} - -func _Pba_Register_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PacketBrokerRegisterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PbaServer).Register(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Pba/Register", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PbaServer).Register(ctx, req.(*PacketBrokerRegisterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Pba_Deregister_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PbaServer).Deregister(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Pba/Deregister", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PbaServer).Deregister(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) +// Deprecated: Use ListForwarderRoutingPoliciesRequest.ProtoReflect.Descriptor instead. +func (*ListForwarderRoutingPoliciesRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{22} } -func _Pba_GetHomeNetworkDefaultRoutingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PbaServer).GetHomeNetworkDefaultRoutingPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Pba/GetHomeNetworkDefaultRoutingPolicy", +func (x *ListForwarderRoutingPoliciesRequest) GetHomeNetworkId() *PacketBrokerNetworkIdentifier { + if x != nil { + return x.HomeNetworkId } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PbaServer).GetHomeNetworkDefaultRoutingPolicy(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) + return nil } -func _Pba_SetHomeNetworkDefaultRoutingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetPacketBrokerDefaultRoutingPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PbaServer).SetHomeNetworkDefaultRoutingPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Pba/SetHomeNetworkDefaultRoutingPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PbaServer).SetHomeNetworkDefaultRoutingPolicy(ctx, req.(*SetPacketBrokerDefaultRoutingPolicyRequest)) +func (x *ListForwarderRoutingPoliciesRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } - return interceptor(ctx, in, info, handler) + return 0 } -func _Pba_DeleteHomeNetworkDefaultRoutingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PbaServer).DeleteHomeNetworkDefaultRoutingPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Pba/DeleteHomeNetworkDefaultRoutingPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PbaServer).DeleteHomeNetworkDefaultRoutingPolicy(ctx, req.(*types.Empty)) +func (x *ListForwarderRoutingPoliciesRequest) GetPage() uint32 { + if x != nil { + return x.Page } - return interceptor(ctx, in, info, handler) + return 0 } -func _Pba_ListHomeNetworkRoutingPolicies_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListHomeNetworkRoutingPoliciesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PbaServer).ListHomeNetworkRoutingPolicies(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Pba/ListHomeNetworkRoutingPolicies", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PbaServer).ListHomeNetworkRoutingPolicies(ctx, req.(*ListHomeNetworkRoutingPoliciesRequest)) - } - return interceptor(ctx, in, info, handler) -} +type PacketBrokerGateway_GatewayIdentifiers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func _Pba_GetHomeNetworkRoutingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PacketBrokerNetworkIdentifier) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PbaServer).GetHomeNetworkRoutingPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Pba/GetHomeNetworkRoutingPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PbaServer).GetHomeNetworkRoutingPolicy(ctx, req.(*PacketBrokerNetworkIdentifier)) - } - return interceptor(ctx, in, info, handler) + GatewayId string `protobuf:"bytes,1,opt,name=gateway_id,json=gatewayId,proto3" json:"gateway_id,omitempty"` + Eui []byte `protobuf:"bytes,2,opt,name=eui,proto3" json:"eui,omitempty"` } -func _Pba_SetHomeNetworkRoutingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetPacketBrokerRoutingPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PbaServer).SetHomeNetworkRoutingPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Pba/SetHomeNetworkRoutingPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PbaServer).SetHomeNetworkRoutingPolicy(ctx, req.(*SetPacketBrokerRoutingPolicyRequest)) +func (x *PacketBrokerGateway_GatewayIdentifiers) Reset() { + *x = PacketBrokerGateway_GatewayIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return interceptor(ctx, in, info, handler) } -func _Pba_DeleteHomeNetworkRoutingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PacketBrokerNetworkIdentifier) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PbaServer).DeleteHomeNetworkRoutingPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Pba/DeleteHomeNetworkRoutingPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PbaServer).DeleteHomeNetworkRoutingPolicy(ctx, req.(*PacketBrokerNetworkIdentifier)) - } - return interceptor(ctx, in, info, handler) +func (x *PacketBrokerGateway_GatewayIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func _Pba_GetHomeNetworkDefaultGatewayVisibility_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PbaServer).GetHomeNetworkDefaultGatewayVisibility(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Pba/GetHomeNetworkDefaultGatewayVisibility", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PbaServer).GetHomeNetworkDefaultGatewayVisibility(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) -} +func (*PacketBrokerGateway_GatewayIdentifiers) ProtoMessage() {} -func _Pba_SetHomeNetworkDefaultGatewayVisibility_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetPacketBrokerDefaultGatewayVisibilityRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PbaServer).SetHomeNetworkDefaultGatewayVisibility(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Pba/SetHomeNetworkDefaultGatewayVisibility", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PbaServer).SetHomeNetworkDefaultGatewayVisibility(ctx, req.(*SetPacketBrokerDefaultGatewayVisibilityRequest)) +func (x *PacketBrokerGateway_GatewayIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return interceptor(ctx, in, info, handler) + return mi.MessageOf(x) } -func _Pba_DeleteHomeNetworkDefaultGatewayVisibility_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PbaServer).DeleteHomeNetworkDefaultGatewayVisibility(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Pba/DeleteHomeNetworkDefaultGatewayVisibility", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PbaServer).DeleteHomeNetworkDefaultGatewayVisibility(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) +// Deprecated: Use PacketBrokerGateway_GatewayIdentifiers.ProtoReflect.Descriptor instead. +func (*PacketBrokerGateway_GatewayIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP(), []int{0, 0} } -func _Pba_ListNetworks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListPacketBrokerNetworksRequest) - if err := dec(in); err != nil { - return nil, err +func (x *PacketBrokerGateway_GatewayIdentifiers) GetGatewayId() string { + if x != nil { + return x.GatewayId } - if interceptor == nil { - return srv.(PbaServer).ListNetworks(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Pba/ListNetworks", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PbaServer).ListNetworks(ctx, req.(*ListPacketBrokerNetworksRequest)) - } - return interceptor(ctx, in, info, handler) + return "" } -func _Pba_ListHomeNetworks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListPacketBrokerHomeNetworksRequest) - if err := dec(in); err != nil { - return nil, err +func (x *PacketBrokerGateway_GatewayIdentifiers) GetEui() []byte { + if x != nil { + return x.Eui } - if interceptor == nil { - return srv.(PbaServer).ListHomeNetworks(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Pba/ListHomeNetworks", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PbaServer).ListHomeNetworks(ctx, req.(*ListPacketBrokerHomeNetworksRequest)) - } - return interceptor(ctx, in, info, handler) + return nil } -func _Pba_ListForwarderRoutingPolicies_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListForwarderRoutingPoliciesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PbaServer).ListForwarderRoutingPolicies(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.Pba/ListForwarderRoutingPolicies", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PbaServer).ListForwarderRoutingPolicies(ctx, req.(*ListForwarderRoutingPoliciesRequest)) - } - return interceptor(ctx, in, info, handler) -} +var File_lorawan_stack_api_packetbrokeragent_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_packetbrokeragent_proto_rawDesc = []byte{ + 0x0a, 0x29, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x44, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, + 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, + 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, + 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb6, 0x08, 0x0a, 0x13, 0x50, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x12, 0x52, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x03, 0x69, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, + 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x92, 0x01, + 0x02, 0x10, 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x64, 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, + 0x15, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x5a, 0x0a, 0x11, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, + 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x52, 0x10, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x73, 0x18, 0x0d, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, + 0x65, 0x6e, 0x6e, 0x61, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x08, 0x52, 0x08, + 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x27, 0x0a, + 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x3c, 0x0a, 0x12, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x14, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x10, 0x08, 0x22, 0x04, 0x72, 0x02, + 0x18, 0x40, 0x52, 0x10, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, + 0x6e, 0x49, 0x64, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x1c, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x72, + 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x78, 0x52, 0x61, 0x74, + 0x65, 0x12, 0x34, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x1e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x06, 0x74, 0x78, 0x52, 0x61, 0x74, 0x65, 0x1a, 0xa7, 0x02, 0x0a, 0x12, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x47, + 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x28, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x18, 0x24, 0x32, 0x1f, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x5f, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x09, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0xc7, 0x01, 0x0a, 0x03, 0x65, 0x75, 0x69, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, + 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, + 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, + 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, + 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, + 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x65, 0x75, + 0x69, 0x22, 0xa6, 0x01, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, + 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, + 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, + 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x5d, 0x0a, 0x21, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x38, 0x0a, 0x0a, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, + 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x54, 0x74, 0x6c, 0x22, 0x7f, 0x0a, 0x1d, 0x50, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x65, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6e, 0x65, 0x74, 0x49, + 0x64, 0x12, 0x47, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, + 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, 0x24, + 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x18, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x76, 0x41, 0x64, + 0x64, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x45, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, + 0x0d, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x35, + 0x0a, 0x17, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x14, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0xbc, 0x03, 0x0a, 0x13, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x3d, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x50, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x52, 0x0d, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, + 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, + 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x52, + 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x15, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x12, 0x48, 0x0a, 0x11, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x74, 0x65, 0x63, 0x68, + 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x69, + 0x73, 0x74, 0x65, 0x64, 0x22, 0x57, 0x0a, 0x14, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, + 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x3f, 0x0a, 0x08, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x52, 0x08, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0xe5, 0x01, + 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x47, 0x0a, 0x0c, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x0c, 0x72, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x66, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, + 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x68, 0x6f, 0x6d, 0x65, + 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x5b, 0x0a, 0x1b, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, + 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x06, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, + 0x10, 0x01, 0x22, 0xd5, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, + 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6a, 0x6f, + 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x63, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d, 0x61, 0x63, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x51, + 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x21, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, + 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x12, 0x1f, 0x0a, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, + 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x63, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x10, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0xf5, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, + 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x39, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x47, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, + 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, + 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, + 0x12, 0x4d, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, + 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x22, + 0x97, 0x03, 0x0a, 0x19, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, + 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x50, 0x0a, + 0x0c, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, + 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x55, 0x0a, 0x0f, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0d, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x47, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, + 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x55, 0x70, 0x6c, 0x69, + 0x6e, 0x6b, 0x52, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x4d, 0x0a, 0x08, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, + 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, + 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0xd8, 0x01, 0x0a, 0x2a, 0x53, 0x65, + 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, + 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x57, 0x0a, 0x08, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, + 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0x5b, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6d, 0x65, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x22, 0x64, 0x0a, 0x1b, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, + 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, + 0x12, 0x45, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, + 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0xa8, 0x02, 0x0a, 0x23, 0x53, 0x65, 0x74, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, + 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x55, 0x0a, 0x0f, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0d, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, + 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x57, 0x0a, 0x08, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x22, 0xc5, 0x02, 0x0a, 0x1d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, + 0x6b, 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x5f, 0x70, 0x6c, 0x61, 0x63, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x61, 0x6e, 0x74, + 0x65, 0x6e, 0x6e, 0x61, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, + 0x0d, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x66, 0x69, 0x6e, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, + 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x21, 0x0a, + 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x73, + 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xb0, 0x01, 0x0a, 0x24, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4d, + 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x89, 0x01, + 0x0a, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, + 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, + 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x57, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, + 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x76, + 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0xea, 0x01, 0x0a, 0x1f, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, + 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, + 0x77, 0x69, 0x74, 0x68, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x12, 0x35, 0x0a, 0x12, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x10, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x22, 0xbe, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x48, 0x6f, 0x6d, 0x65, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, + 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x12, 0x35, 0x0a, 0x12, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x10, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, + 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, + 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, + 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x55, 0x0a, 0x0f, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0d, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x32, 0xcc, 0x01, 0x0a, 0x05, 0x47, 0x73, 0x50, 0x62, 0x61, 0x12, 0x4d, 0x0a, 0x0d, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x24, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x74, 0x0a, 0x0d, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x30, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, + 0x53, 0x0a, 0x05, 0x4e, 0x73, 0x50, 0x62, 0x61, 0x12, 0x4a, 0x0a, 0x0f, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x1f, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x32, 0x9f, 0x16, 0x0a, 0x03, 0x50, 0x62, 0x61, 0x12, 0x56, 0x0a, 0x07, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, + 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x70, 0x62, 0x61, 0x2f, + 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x92, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x1a, 0x11, 0x2f, 0x70, 0x62, + 0x61, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x01, + 0x2a, 0x5a, 0x16, 0x22, 0x11, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x01, 0x2a, 0x12, 0x57, 0x0a, 0x0a, 0x44, 0x65, 0x72, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x2a, + 0x11, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x9b, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x1a, 0x30, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x70, 0x62, + 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x12, 0xd2, 0x01, 0x0a, 0x22, 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, + 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, + 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x58, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x52, 0x1a, 0x23, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, + 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x01, 0x2a, 0x5a, 0x28, 0x22, 0x23, 0x2f, + 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x84, 0x01, 0x0a, 0x25, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, + 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x2a, 0x23, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, + 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x69, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0xa9, 0x01, 0x0a, + 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, + 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, + 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x69, 0x65, 0x73, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x70, 0x62, + 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0xd9, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, + 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x6f, 0x75, 0x74, 0x69, + 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x1a, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, + 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x22, 0x60, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5a, 0x12, 0x24, 0x2f, 0x70, 0x62, 0x61, + 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, + 0x5a, 0x32, 0x12, 0x30, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, + 0x7b, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x96, 0x03, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x12, 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, + 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0xa9, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa2, 0x02, 0x1a, 0x34, 0x2f, 0x70, 0x62, + 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x39, 0x22, 0x34, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, + 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, + 0x55, 0x1a, 0x50, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, + 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x2e, + 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x55, 0x22, 0x50, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, + 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, + 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x2e, + 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xc9, 0x01, + 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x60, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5a, 0x2a, + 0x24, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x65, + 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x5a, 0x32, 0x2a, 0x30, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, + 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x74, + 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xaf, 0x01, 0x0a, 0x26, 0x47, 0x65, + 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x34, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x70, 0x62, 0x61, + 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x69, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0xf2, 0x01, 0x0a, 0x26, + 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x70, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6a, 0x1a, 0x2f, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, + 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x01, 0x2a, 0x5a, 0x34, 0x22, 0x2f, 0x2f, 0x70, + 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, + 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x01, 0x2a, + 0x12, 0x94, 0x01, 0x0a, 0x29, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6d, 0x65, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x37, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, + 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x7c, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0x15, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, + 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x33, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x48, 0x6f, 0x6d, 0x65, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, + 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x73, 0x12, 0xa2, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, + 0x65, 0x73, 0x12, 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, + 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, + 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x69, 0x65, 0x73, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x70, + 0x62, 0x61, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_packetbrokeragent_proto_rawDescOnce sync.Once + file_lorawan_stack_api_packetbrokeragent_proto_rawDescData = file_lorawan_stack_api_packetbrokeragent_proto_rawDesc +) -var _Pba_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.Pba", - HandlerType: (*PbaServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetInfo", - Handler: _Pba_GetInfo_Handler, - }, - { - MethodName: "Register", - Handler: _Pba_Register_Handler, - }, - { - MethodName: "Deregister", - Handler: _Pba_Deregister_Handler, - }, - { - MethodName: "GetHomeNetworkDefaultRoutingPolicy", - Handler: _Pba_GetHomeNetworkDefaultRoutingPolicy_Handler, - }, - { - MethodName: "SetHomeNetworkDefaultRoutingPolicy", - Handler: _Pba_SetHomeNetworkDefaultRoutingPolicy_Handler, - }, - { - MethodName: "DeleteHomeNetworkDefaultRoutingPolicy", - Handler: _Pba_DeleteHomeNetworkDefaultRoutingPolicy_Handler, - }, - { - MethodName: "ListHomeNetworkRoutingPolicies", - Handler: _Pba_ListHomeNetworkRoutingPolicies_Handler, - }, - { - MethodName: "GetHomeNetworkRoutingPolicy", - Handler: _Pba_GetHomeNetworkRoutingPolicy_Handler, - }, - { - MethodName: "SetHomeNetworkRoutingPolicy", - Handler: _Pba_SetHomeNetworkRoutingPolicy_Handler, - }, - { - MethodName: "DeleteHomeNetworkRoutingPolicy", - Handler: _Pba_DeleteHomeNetworkRoutingPolicy_Handler, - }, - { - MethodName: "GetHomeNetworkDefaultGatewayVisibility", - Handler: _Pba_GetHomeNetworkDefaultGatewayVisibility_Handler, - }, - { - MethodName: "SetHomeNetworkDefaultGatewayVisibility", - Handler: _Pba_SetHomeNetworkDefaultGatewayVisibility_Handler, - }, - { - MethodName: "DeleteHomeNetworkDefaultGatewayVisibility", - Handler: _Pba_DeleteHomeNetworkDefaultGatewayVisibility_Handler, - }, - { - MethodName: "ListNetworks", - Handler: _Pba_ListNetworks_Handler, - }, - { - MethodName: "ListHomeNetworks", - Handler: _Pba_ListHomeNetworks_Handler, - }, - { - MethodName: "ListForwarderRoutingPolicies", - Handler: _Pba_ListForwarderRoutingPolicies_Handler, +func file_lorawan_stack_api_packetbrokeragent_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_packetbrokeragent_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_packetbrokeragent_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_packetbrokeragent_proto_rawDescData) + }) + return file_lorawan_stack_api_packetbrokeragent_proto_rawDescData +} + +var file_lorawan_stack_api_packetbrokeragent_proto_msgTypes = make([]protoimpl.MessageInfo, 24) +var file_lorawan_stack_api_packetbrokeragent_proto_goTypes = []interface{}{ + (*PacketBrokerGateway)(nil), // 0: ttn.lorawan.v3.PacketBrokerGateway + (*UpdatePacketBrokerGatewayRequest)(nil), // 1: ttn.lorawan.v3.UpdatePacketBrokerGatewayRequest + (*UpdatePacketBrokerGatewayResponse)(nil), // 2: ttn.lorawan.v3.UpdatePacketBrokerGatewayResponse + (*PacketBrokerNetworkIdentifier)(nil), // 3: ttn.lorawan.v3.PacketBrokerNetworkIdentifier + (*PacketBrokerDevAddrBlock)(nil), // 4: ttn.lorawan.v3.PacketBrokerDevAddrBlock + (*PacketBrokerNetwork)(nil), // 5: ttn.lorawan.v3.PacketBrokerNetwork + (*PacketBrokerNetworks)(nil), // 6: ttn.lorawan.v3.PacketBrokerNetworks + (*PacketBrokerInfo)(nil), // 7: ttn.lorawan.v3.PacketBrokerInfo + (*PacketBrokerRegisterRequest)(nil), // 8: ttn.lorawan.v3.PacketBrokerRegisterRequest + (*PacketBrokerRoutingPolicyUplink)(nil), // 9: ttn.lorawan.v3.PacketBrokerRoutingPolicyUplink + (*PacketBrokerRoutingPolicyDownlink)(nil), // 10: ttn.lorawan.v3.PacketBrokerRoutingPolicyDownlink + (*PacketBrokerDefaultRoutingPolicy)(nil), // 11: ttn.lorawan.v3.PacketBrokerDefaultRoutingPolicy + (*PacketBrokerRoutingPolicy)(nil), // 12: ttn.lorawan.v3.PacketBrokerRoutingPolicy + (*SetPacketBrokerDefaultRoutingPolicyRequest)(nil), // 13: ttn.lorawan.v3.SetPacketBrokerDefaultRoutingPolicyRequest + (*ListHomeNetworkRoutingPoliciesRequest)(nil), // 14: ttn.lorawan.v3.ListHomeNetworkRoutingPoliciesRequest + (*PacketBrokerRoutingPolicies)(nil), // 15: ttn.lorawan.v3.PacketBrokerRoutingPolicies + (*SetPacketBrokerRoutingPolicyRequest)(nil), // 16: ttn.lorawan.v3.SetPacketBrokerRoutingPolicyRequest + (*PacketBrokerGatewayVisibility)(nil), // 17: ttn.lorawan.v3.PacketBrokerGatewayVisibility + (*PacketBrokerDefaultGatewayVisibility)(nil), // 18: ttn.lorawan.v3.PacketBrokerDefaultGatewayVisibility + (*SetPacketBrokerDefaultGatewayVisibilityRequest)(nil), // 19: ttn.lorawan.v3.SetPacketBrokerDefaultGatewayVisibilityRequest + (*ListPacketBrokerNetworksRequest)(nil), // 20: ttn.lorawan.v3.ListPacketBrokerNetworksRequest + (*ListPacketBrokerHomeNetworksRequest)(nil), // 21: ttn.lorawan.v3.ListPacketBrokerHomeNetworksRequest + (*ListForwarderRoutingPoliciesRequest)(nil), // 22: ttn.lorawan.v3.ListForwarderRoutingPoliciesRequest + (*PacketBrokerGateway_GatewayIdentifiers)(nil), // 23: ttn.lorawan.v3.PacketBrokerGateway.GatewayIdentifiers + (*ContactInfo)(nil), // 24: ttn.lorawan.v3.ContactInfo + (*OrganizationOrUserIdentifiers)(nil), // 25: ttn.lorawan.v3.OrganizationOrUserIdentifiers + (*GatewayAntenna)(nil), // 26: ttn.lorawan.v3.GatewayAntenna + (*wrapperspb.FloatValue)(nil), // 27: google.protobuf.FloatValue + (*fieldmaskpb.FieldMask)(nil), // 28: google.protobuf.FieldMask + (*durationpb.Duration)(nil), // 29: google.protobuf.Duration + (*DevAddrPrefix)(nil), // 30: ttn.lorawan.v3.DevAddrPrefix + (*wrapperspb.BoolValue)(nil), // 31: google.protobuf.BoolValue + (*timestamppb.Timestamp)(nil), // 32: google.protobuf.Timestamp + (*GatewayUplinkMessage)(nil), // 33: ttn.lorawan.v3.GatewayUplinkMessage + (*DownlinkMessage)(nil), // 34: ttn.lorawan.v3.DownlinkMessage + (*emptypb.Empty)(nil), // 35: google.protobuf.Empty +} +var file_lorawan_stack_api_packetbrokeragent_proto_depIdxs = []int32{ + 23, // 0: ttn.lorawan.v3.PacketBrokerGateway.ids:type_name -> ttn.lorawan.v3.PacketBrokerGateway.GatewayIdentifiers + 24, // 1: ttn.lorawan.v3.PacketBrokerGateway.contact_info:type_name -> ttn.lorawan.v3.ContactInfo + 25, // 2: ttn.lorawan.v3.PacketBrokerGateway.administrative_contact:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 25, // 3: ttn.lorawan.v3.PacketBrokerGateway.technical_contact:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 26, // 4: ttn.lorawan.v3.PacketBrokerGateway.antennas:type_name -> ttn.lorawan.v3.GatewayAntenna + 27, // 5: ttn.lorawan.v3.PacketBrokerGateway.rx_rate:type_name -> google.protobuf.FloatValue + 27, // 6: ttn.lorawan.v3.PacketBrokerGateway.tx_rate:type_name -> google.protobuf.FloatValue + 0, // 7: ttn.lorawan.v3.UpdatePacketBrokerGatewayRequest.gateway:type_name -> ttn.lorawan.v3.PacketBrokerGateway + 28, // 8: ttn.lorawan.v3.UpdatePacketBrokerGatewayRequest.field_mask:type_name -> google.protobuf.FieldMask + 29, // 9: ttn.lorawan.v3.UpdatePacketBrokerGatewayResponse.online_ttl:type_name -> google.protobuf.Duration + 30, // 10: ttn.lorawan.v3.PacketBrokerDevAddrBlock.dev_addr_prefix:type_name -> ttn.lorawan.v3.DevAddrPrefix + 3, // 11: ttn.lorawan.v3.PacketBrokerNetwork.id:type_name -> ttn.lorawan.v3.PacketBrokerNetworkIdentifier + 4, // 12: ttn.lorawan.v3.PacketBrokerNetwork.dev_addr_blocks:type_name -> ttn.lorawan.v3.PacketBrokerDevAddrBlock + 24, // 13: ttn.lorawan.v3.PacketBrokerNetwork.contact_info:type_name -> ttn.lorawan.v3.ContactInfo + 24, // 14: ttn.lorawan.v3.PacketBrokerNetwork.administrative_contact:type_name -> ttn.lorawan.v3.ContactInfo + 24, // 15: ttn.lorawan.v3.PacketBrokerNetwork.technical_contact:type_name -> ttn.lorawan.v3.ContactInfo + 5, // 16: ttn.lorawan.v3.PacketBrokerNetworks.networks:type_name -> ttn.lorawan.v3.PacketBrokerNetwork + 5, // 17: ttn.lorawan.v3.PacketBrokerInfo.registration:type_name -> ttn.lorawan.v3.PacketBrokerNetwork + 31, // 18: ttn.lorawan.v3.PacketBrokerRegisterRequest.listed:type_name -> google.protobuf.BoolValue + 32, // 19: ttn.lorawan.v3.PacketBrokerDefaultRoutingPolicy.updated_at:type_name -> google.protobuf.Timestamp + 9, // 20: ttn.lorawan.v3.PacketBrokerDefaultRoutingPolicy.uplink:type_name -> ttn.lorawan.v3.PacketBrokerRoutingPolicyUplink + 10, // 21: ttn.lorawan.v3.PacketBrokerDefaultRoutingPolicy.downlink:type_name -> ttn.lorawan.v3.PacketBrokerRoutingPolicyDownlink + 3, // 22: ttn.lorawan.v3.PacketBrokerRoutingPolicy.forwarder_id:type_name -> ttn.lorawan.v3.PacketBrokerNetworkIdentifier + 3, // 23: ttn.lorawan.v3.PacketBrokerRoutingPolicy.home_network_id:type_name -> ttn.lorawan.v3.PacketBrokerNetworkIdentifier + 32, // 24: ttn.lorawan.v3.PacketBrokerRoutingPolicy.updated_at:type_name -> google.protobuf.Timestamp + 9, // 25: ttn.lorawan.v3.PacketBrokerRoutingPolicy.uplink:type_name -> ttn.lorawan.v3.PacketBrokerRoutingPolicyUplink + 10, // 26: ttn.lorawan.v3.PacketBrokerRoutingPolicy.downlink:type_name -> ttn.lorawan.v3.PacketBrokerRoutingPolicyDownlink + 9, // 27: ttn.lorawan.v3.SetPacketBrokerDefaultRoutingPolicyRequest.uplink:type_name -> ttn.lorawan.v3.PacketBrokerRoutingPolicyUplink + 10, // 28: ttn.lorawan.v3.SetPacketBrokerDefaultRoutingPolicyRequest.downlink:type_name -> ttn.lorawan.v3.PacketBrokerRoutingPolicyDownlink + 12, // 29: ttn.lorawan.v3.PacketBrokerRoutingPolicies.policies:type_name -> ttn.lorawan.v3.PacketBrokerRoutingPolicy + 3, // 30: ttn.lorawan.v3.SetPacketBrokerRoutingPolicyRequest.home_network_id:type_name -> ttn.lorawan.v3.PacketBrokerNetworkIdentifier + 9, // 31: ttn.lorawan.v3.SetPacketBrokerRoutingPolicyRequest.uplink:type_name -> ttn.lorawan.v3.PacketBrokerRoutingPolicyUplink + 10, // 32: ttn.lorawan.v3.SetPacketBrokerRoutingPolicyRequest.downlink:type_name -> ttn.lorawan.v3.PacketBrokerRoutingPolicyDownlink + 32, // 33: ttn.lorawan.v3.PacketBrokerDefaultGatewayVisibility.updated_at:type_name -> google.protobuf.Timestamp + 17, // 34: ttn.lorawan.v3.PacketBrokerDefaultGatewayVisibility.visibility:type_name -> ttn.lorawan.v3.PacketBrokerGatewayVisibility + 17, // 35: ttn.lorawan.v3.SetPacketBrokerDefaultGatewayVisibilityRequest.visibility:type_name -> ttn.lorawan.v3.PacketBrokerGatewayVisibility + 3, // 36: ttn.lorawan.v3.ListForwarderRoutingPoliciesRequest.home_network_id:type_name -> ttn.lorawan.v3.PacketBrokerNetworkIdentifier + 33, // 37: ttn.lorawan.v3.GsPba.PublishUplink:input_type -> ttn.lorawan.v3.GatewayUplinkMessage + 1, // 38: ttn.lorawan.v3.GsPba.UpdateGateway:input_type -> ttn.lorawan.v3.UpdatePacketBrokerGatewayRequest + 34, // 39: ttn.lorawan.v3.NsPba.PublishDownlink:input_type -> ttn.lorawan.v3.DownlinkMessage + 35, // 40: ttn.lorawan.v3.Pba.GetInfo:input_type -> google.protobuf.Empty + 8, // 41: ttn.lorawan.v3.Pba.Register:input_type -> ttn.lorawan.v3.PacketBrokerRegisterRequest + 35, // 42: ttn.lorawan.v3.Pba.Deregister:input_type -> google.protobuf.Empty + 35, // 43: ttn.lorawan.v3.Pba.GetHomeNetworkDefaultRoutingPolicy:input_type -> google.protobuf.Empty + 13, // 44: ttn.lorawan.v3.Pba.SetHomeNetworkDefaultRoutingPolicy:input_type -> ttn.lorawan.v3.SetPacketBrokerDefaultRoutingPolicyRequest + 35, // 45: ttn.lorawan.v3.Pba.DeleteHomeNetworkDefaultRoutingPolicy:input_type -> google.protobuf.Empty + 14, // 46: ttn.lorawan.v3.Pba.ListHomeNetworkRoutingPolicies:input_type -> ttn.lorawan.v3.ListHomeNetworkRoutingPoliciesRequest + 3, // 47: ttn.lorawan.v3.Pba.GetHomeNetworkRoutingPolicy:input_type -> ttn.lorawan.v3.PacketBrokerNetworkIdentifier + 16, // 48: ttn.lorawan.v3.Pba.SetHomeNetworkRoutingPolicy:input_type -> ttn.lorawan.v3.SetPacketBrokerRoutingPolicyRequest + 3, // 49: ttn.lorawan.v3.Pba.DeleteHomeNetworkRoutingPolicy:input_type -> ttn.lorawan.v3.PacketBrokerNetworkIdentifier + 35, // 50: ttn.lorawan.v3.Pba.GetHomeNetworkDefaultGatewayVisibility:input_type -> google.protobuf.Empty + 19, // 51: ttn.lorawan.v3.Pba.SetHomeNetworkDefaultGatewayVisibility:input_type -> ttn.lorawan.v3.SetPacketBrokerDefaultGatewayVisibilityRequest + 35, // 52: ttn.lorawan.v3.Pba.DeleteHomeNetworkDefaultGatewayVisibility:input_type -> google.protobuf.Empty + 20, // 53: ttn.lorawan.v3.Pba.ListNetworks:input_type -> ttn.lorawan.v3.ListPacketBrokerNetworksRequest + 21, // 54: ttn.lorawan.v3.Pba.ListHomeNetworks:input_type -> ttn.lorawan.v3.ListPacketBrokerHomeNetworksRequest + 22, // 55: ttn.lorawan.v3.Pba.ListForwarderRoutingPolicies:input_type -> ttn.lorawan.v3.ListForwarderRoutingPoliciesRequest + 35, // 56: ttn.lorawan.v3.GsPba.PublishUplink:output_type -> google.protobuf.Empty + 2, // 57: ttn.lorawan.v3.GsPba.UpdateGateway:output_type -> ttn.lorawan.v3.UpdatePacketBrokerGatewayResponse + 35, // 58: ttn.lorawan.v3.NsPba.PublishDownlink:output_type -> google.protobuf.Empty + 7, // 59: ttn.lorawan.v3.Pba.GetInfo:output_type -> ttn.lorawan.v3.PacketBrokerInfo + 5, // 60: ttn.lorawan.v3.Pba.Register:output_type -> ttn.lorawan.v3.PacketBrokerNetwork + 35, // 61: ttn.lorawan.v3.Pba.Deregister:output_type -> google.protobuf.Empty + 11, // 62: ttn.lorawan.v3.Pba.GetHomeNetworkDefaultRoutingPolicy:output_type -> ttn.lorawan.v3.PacketBrokerDefaultRoutingPolicy + 35, // 63: ttn.lorawan.v3.Pba.SetHomeNetworkDefaultRoutingPolicy:output_type -> google.protobuf.Empty + 35, // 64: ttn.lorawan.v3.Pba.DeleteHomeNetworkDefaultRoutingPolicy:output_type -> google.protobuf.Empty + 15, // 65: ttn.lorawan.v3.Pba.ListHomeNetworkRoutingPolicies:output_type -> ttn.lorawan.v3.PacketBrokerRoutingPolicies + 12, // 66: ttn.lorawan.v3.Pba.GetHomeNetworkRoutingPolicy:output_type -> ttn.lorawan.v3.PacketBrokerRoutingPolicy + 35, // 67: ttn.lorawan.v3.Pba.SetHomeNetworkRoutingPolicy:output_type -> google.protobuf.Empty + 35, // 68: ttn.lorawan.v3.Pba.DeleteHomeNetworkRoutingPolicy:output_type -> google.protobuf.Empty + 18, // 69: ttn.lorawan.v3.Pba.GetHomeNetworkDefaultGatewayVisibility:output_type -> ttn.lorawan.v3.PacketBrokerDefaultGatewayVisibility + 35, // 70: ttn.lorawan.v3.Pba.SetHomeNetworkDefaultGatewayVisibility:output_type -> google.protobuf.Empty + 35, // 71: ttn.lorawan.v3.Pba.DeleteHomeNetworkDefaultGatewayVisibility:output_type -> google.protobuf.Empty + 6, // 72: ttn.lorawan.v3.Pba.ListNetworks:output_type -> ttn.lorawan.v3.PacketBrokerNetworks + 6, // 73: ttn.lorawan.v3.Pba.ListHomeNetworks:output_type -> ttn.lorawan.v3.PacketBrokerNetworks + 15, // 74: ttn.lorawan.v3.Pba.ListForwarderRoutingPolicies:output_type -> ttn.lorawan.v3.PacketBrokerRoutingPolicies + 56, // [56:75] is the sub-list for method output_type + 37, // [37:56] is the sub-list for method input_type + 37, // [37:37] is the sub-list for extension type_name + 37, // [37:37] is the sub-list for extension extendee + 0, // [0:37] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_packetbrokeragent_proto_init() } +func file_lorawan_stack_api_packetbrokeragent_proto_init() { + if File_lorawan_stack_api_packetbrokeragent_proto != nil { + return + } + file_lorawan_stack_api_contact_info_proto_init() + file_lorawan_stack_api_gateway_proto_init() + file_lorawan_stack_api_end_device_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_messages_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerGateway); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdatePacketBrokerGatewayRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdatePacketBrokerGatewayResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerNetworkIdentifier); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerDevAddrBlock); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerNetwork); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerNetworks); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerRegisterRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerRoutingPolicyUplink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerRoutingPolicyDownlink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerDefaultRoutingPolicy); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerRoutingPolicy); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetPacketBrokerDefaultRoutingPolicyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListHomeNetworkRoutingPoliciesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerRoutingPolicies); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetPacketBrokerRoutingPolicyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerGatewayVisibility); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerDefaultGatewayVisibility); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetPacketBrokerDefaultGatewayVisibilityRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListPacketBrokerNetworksRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListPacketBrokerHomeNetworksRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListForwarderRoutingPoliciesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_packetbrokeragent_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PacketBrokerGateway_GatewayIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_packetbrokeragent_proto_rawDesc, + NumEnums: 0, + NumMessages: 24, + NumExtensions: 0, + NumServices: 3, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/packetbrokeragent.proto", + GoTypes: file_lorawan_stack_api_packetbrokeragent_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_packetbrokeragent_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_packetbrokeragent_proto_msgTypes, + }.Build() + File_lorawan_stack_api_packetbrokeragent_proto = out.File + file_lorawan_stack_api_packetbrokeragent_proto_rawDesc = nil + file_lorawan_stack_api_packetbrokeragent_proto_goTypes = nil + file_lorawan_stack_api_packetbrokeragent_proto_depIdxs = nil } diff --git a/pkg/ttnpb/packetbrokeragent.pb.gw.go b/pkg/ttnpb/packetbrokeragent.pb.gw.go index a16577c681..8f73e73100 100644 --- a/pkg/ttnpb/packetbrokeragent.pb.gw.go +++ b/pkg/ttnpb/packetbrokeragent.pb.gw.go @@ -13,16 +13,15 @@ import ( "io" "net/http" - "github.com/gogo/protobuf/types" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/emptypb" ) // Suppress "imported and not used" errors @@ -31,11 +30,10 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join func request_Pba_GetInfo_0(ctx context.Context, marshaler runtime.Marshaler, client PbaClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := client.GetInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -44,7 +42,7 @@ func request_Pba_GetInfo_0(ctx context.Context, marshaler runtime.Marshaler, cli } func local_request_Pba_GetInfo_0(ctx context.Context, marshaler runtime.Marshaler, server PbaServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := server.GetInfo(ctx, &protoReq) @@ -121,7 +119,7 @@ func local_request_Pba_Register_1(ctx context.Context, marshaler runtime.Marshal } func request_Pba_Deregister_0(ctx context.Context, marshaler runtime.Marshaler, client PbaClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := client.Deregister(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -130,7 +128,7 @@ func request_Pba_Deregister_0(ctx context.Context, marshaler runtime.Marshaler, } func local_request_Pba_Deregister_0(ctx context.Context, marshaler runtime.Marshaler, server PbaServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := server.Deregister(ctx, &protoReq) @@ -139,7 +137,7 @@ func local_request_Pba_Deregister_0(ctx context.Context, marshaler runtime.Marsh } func request_Pba_GetHomeNetworkDefaultRoutingPolicy_0(ctx context.Context, marshaler runtime.Marshaler, client PbaClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := client.GetHomeNetworkDefaultRoutingPolicy(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -148,7 +146,7 @@ func request_Pba_GetHomeNetworkDefaultRoutingPolicy_0(ctx context.Context, marsh } func local_request_Pba_GetHomeNetworkDefaultRoutingPolicy_0(ctx context.Context, marshaler runtime.Marshaler, server PbaServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := server.GetHomeNetworkDefaultRoutingPolicy(ctx, &protoReq) @@ -225,7 +223,7 @@ func local_request_Pba_SetHomeNetworkDefaultRoutingPolicy_1(ctx context.Context, } func request_Pba_DeleteHomeNetworkDefaultRoutingPolicy_0(ctx context.Context, marshaler runtime.Marshaler, client PbaClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := client.DeleteHomeNetworkDefaultRoutingPolicy(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -234,7 +232,7 @@ func request_Pba_DeleteHomeNetworkDefaultRoutingPolicy_0(ctx context.Context, ma } func local_request_Pba_DeleteHomeNetworkDefaultRoutingPolicy_0(ctx context.Context, marshaler runtime.Marshaler, server PbaServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := server.DeleteHomeNetworkDefaultRoutingPolicy(ctx, &protoReq) @@ -299,7 +297,6 @@ func request_Pba_GetHomeNetworkRoutingPolicy_0(ctx context.Context, marshaler ru } protoReq.NetId, err = runtime.Uint32(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "net_id", err) } @@ -333,7 +330,6 @@ func local_request_Pba_GetHomeNetworkRoutingPolicy_0(ctx context.Context, marsha } protoReq.NetId, err = runtime.Uint32(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "net_id", err) } @@ -367,7 +363,6 @@ func request_Pba_GetHomeNetworkRoutingPolicy_1(ctx context.Context, marshaler ru } protoReq.NetId, err = runtime.Uint32(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "net_id", err) } @@ -378,7 +373,6 @@ func request_Pba_GetHomeNetworkRoutingPolicy_1(ctx context.Context, marshaler ru } protoReq.TenantId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tenant_id", err) } @@ -405,7 +399,6 @@ func local_request_Pba_GetHomeNetworkRoutingPolicy_1(ctx context.Context, marsha } protoReq.NetId, err = runtime.Uint32(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "net_id", err) } @@ -416,7 +409,6 @@ func local_request_Pba_GetHomeNetworkRoutingPolicy_1(ctx context.Context, marsha } protoReq.TenantId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tenant_id", err) } @@ -451,7 +443,6 @@ func request_Pba_SetHomeNetworkRoutingPolicy_0(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "home_network_id.net_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "home_network_id.net_id", err) } @@ -486,7 +477,6 @@ func local_request_Pba_SetHomeNetworkRoutingPolicy_0(ctx context.Context, marsha } err = runtime.PopulateFieldFromPath(&protoReq, "home_network_id.net_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "home_network_id.net_id", err) } @@ -521,7 +511,6 @@ func request_Pba_SetHomeNetworkRoutingPolicy_1(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "home_network_id.net_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "home_network_id.net_id", err) } @@ -556,7 +545,6 @@ func local_request_Pba_SetHomeNetworkRoutingPolicy_1(ctx context.Context, marsha } err = runtime.PopulateFieldFromPath(&protoReq, "home_network_id.net_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "home_network_id.net_id", err) } @@ -591,7 +579,6 @@ func request_Pba_SetHomeNetworkRoutingPolicy_2(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "home_network_id.net_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "home_network_id.net_id", err) } @@ -602,7 +589,6 @@ func request_Pba_SetHomeNetworkRoutingPolicy_2(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "home_network_id.tenant_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "home_network_id.tenant_id", err) } @@ -637,7 +623,6 @@ func local_request_Pba_SetHomeNetworkRoutingPolicy_2(ctx context.Context, marsha } err = runtime.PopulateFieldFromPath(&protoReq, "home_network_id.net_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "home_network_id.net_id", err) } @@ -648,7 +633,6 @@ func local_request_Pba_SetHomeNetworkRoutingPolicy_2(ctx context.Context, marsha } err = runtime.PopulateFieldFromPath(&protoReq, "home_network_id.tenant_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "home_network_id.tenant_id", err) } @@ -683,7 +667,6 @@ func request_Pba_SetHomeNetworkRoutingPolicy_3(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "home_network_id.net_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "home_network_id.net_id", err) } @@ -694,7 +677,6 @@ func request_Pba_SetHomeNetworkRoutingPolicy_3(ctx context.Context, marshaler ru } err = runtime.PopulateFieldFromPath(&protoReq, "home_network_id.tenant_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "home_network_id.tenant_id", err) } @@ -729,7 +711,6 @@ func local_request_Pba_SetHomeNetworkRoutingPolicy_3(ctx context.Context, marsha } err = runtime.PopulateFieldFromPath(&protoReq, "home_network_id.net_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "home_network_id.net_id", err) } @@ -740,7 +721,6 @@ func local_request_Pba_SetHomeNetworkRoutingPolicy_3(ctx context.Context, marsha } err = runtime.PopulateFieldFromPath(&protoReq, "home_network_id.tenant_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "home_network_id.tenant_id", err) } @@ -771,7 +751,6 @@ func request_Pba_DeleteHomeNetworkRoutingPolicy_0(ctx context.Context, marshaler } protoReq.NetId, err = runtime.Uint32(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "net_id", err) } @@ -805,7 +784,6 @@ func local_request_Pba_DeleteHomeNetworkRoutingPolicy_0(ctx context.Context, mar } protoReq.NetId, err = runtime.Uint32(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "net_id", err) } @@ -839,7 +817,6 @@ func request_Pba_DeleteHomeNetworkRoutingPolicy_1(ctx context.Context, marshaler } protoReq.NetId, err = runtime.Uint32(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "net_id", err) } @@ -850,7 +827,6 @@ func request_Pba_DeleteHomeNetworkRoutingPolicy_1(ctx context.Context, marshaler } protoReq.TenantId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tenant_id", err) } @@ -877,7 +853,6 @@ func local_request_Pba_DeleteHomeNetworkRoutingPolicy_1(ctx context.Context, mar } protoReq.NetId, err = runtime.Uint32(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "net_id", err) } @@ -888,7 +863,6 @@ func local_request_Pba_DeleteHomeNetworkRoutingPolicy_1(ctx context.Context, mar } protoReq.TenantId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "tenant_id", err) } @@ -899,7 +873,7 @@ func local_request_Pba_DeleteHomeNetworkRoutingPolicy_1(ctx context.Context, mar } func request_Pba_GetHomeNetworkDefaultGatewayVisibility_0(ctx context.Context, marshaler runtime.Marshaler, client PbaClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := client.GetHomeNetworkDefaultGatewayVisibility(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -908,7 +882,7 @@ func request_Pba_GetHomeNetworkDefaultGatewayVisibility_0(ctx context.Context, m } func local_request_Pba_GetHomeNetworkDefaultGatewayVisibility_0(ctx context.Context, marshaler runtime.Marshaler, server PbaServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := server.GetHomeNetworkDefaultGatewayVisibility(ctx, &protoReq) @@ -985,7 +959,7 @@ func local_request_Pba_SetHomeNetworkDefaultGatewayVisibility_1(ctx context.Cont } func request_Pba_DeleteHomeNetworkDefaultGatewayVisibility_0(ctx context.Context, marshaler runtime.Marshaler, client PbaClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := client.DeleteHomeNetworkDefaultGatewayVisibility(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -994,7 +968,7 @@ func request_Pba_DeleteHomeNetworkDefaultGatewayVisibility_0(ctx context.Context } func local_request_Pba_DeleteHomeNetworkDefaultGatewayVisibility_0(ctx context.Context, marshaler runtime.Marshaler, server PbaServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := server.DeleteHomeNetworkDefaultGatewayVisibility(ctx, &protoReq) @@ -1122,20 +1096,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/GetInfo", runtime.WithHTTPPathPattern("/pba/info")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_GetInfo_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_GetInfo_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_GetInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_GetInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1145,20 +1121,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/Register", runtime.WithHTTPPathPattern("/pba/registration")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_Register_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_Register_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_Register_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_Register_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1168,20 +1146,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/Register", runtime.WithHTTPPathPattern("/pba/registration")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_Register_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_Register_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_Register_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_Register_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1191,20 +1171,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/Deregister", runtime.WithHTTPPathPattern("/pba/registration")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_Deregister_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_Deregister_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_Deregister_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_Deregister_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1214,20 +1196,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/GetHomeNetworkDefaultRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/default")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_GetHomeNetworkDefaultRoutingPolicy_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_GetHomeNetworkDefaultRoutingPolicy_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_GetHomeNetworkDefaultRoutingPolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_GetHomeNetworkDefaultRoutingPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1237,20 +1221,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/SetHomeNetworkDefaultRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/default")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_SetHomeNetworkDefaultRoutingPolicy_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_SetHomeNetworkDefaultRoutingPolicy_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_SetHomeNetworkDefaultRoutingPolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_SetHomeNetworkDefaultRoutingPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1260,20 +1246,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/SetHomeNetworkDefaultRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/default")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_SetHomeNetworkDefaultRoutingPolicy_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_SetHomeNetworkDefaultRoutingPolicy_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_SetHomeNetworkDefaultRoutingPolicy_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_SetHomeNetworkDefaultRoutingPolicy_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1283,20 +1271,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/DeleteHomeNetworkDefaultRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/default")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_DeleteHomeNetworkDefaultRoutingPolicy_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_DeleteHomeNetworkDefaultRoutingPolicy_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_DeleteHomeNetworkDefaultRoutingPolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_DeleteHomeNetworkDefaultRoutingPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1306,20 +1296,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/ListHomeNetworkRoutingPolicies", runtime.WithHTTPPathPattern("/pba/home-networks/policies")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_ListHomeNetworkRoutingPolicies_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_ListHomeNetworkRoutingPolicies_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_ListHomeNetworkRoutingPolicies_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_ListHomeNetworkRoutingPolicies_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1329,20 +1321,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/GetHomeNetworkRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/{net_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_GetHomeNetworkRoutingPolicy_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_GetHomeNetworkRoutingPolicy_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_GetHomeNetworkRoutingPolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_GetHomeNetworkRoutingPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1352,20 +1346,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/GetHomeNetworkRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/{net_id}/{tenant_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_GetHomeNetworkRoutingPolicy_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_GetHomeNetworkRoutingPolicy_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_GetHomeNetworkRoutingPolicy_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_GetHomeNetworkRoutingPolicy_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1375,20 +1371,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/SetHomeNetworkRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/{home_network_id.net_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_SetHomeNetworkRoutingPolicy_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_SetHomeNetworkRoutingPolicy_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_SetHomeNetworkRoutingPolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_SetHomeNetworkRoutingPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1398,20 +1396,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/SetHomeNetworkRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/{home_network_id.net_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_SetHomeNetworkRoutingPolicy_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_SetHomeNetworkRoutingPolicy_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_SetHomeNetworkRoutingPolicy_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_SetHomeNetworkRoutingPolicy_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1421,20 +1421,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/SetHomeNetworkRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/{home_network_id.net_id}/{home_network_id.tenant_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_SetHomeNetworkRoutingPolicy_2(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_SetHomeNetworkRoutingPolicy_2(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_SetHomeNetworkRoutingPolicy_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_SetHomeNetworkRoutingPolicy_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1444,20 +1446,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/SetHomeNetworkRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/{home_network_id.net_id}/{home_network_id.tenant_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_SetHomeNetworkRoutingPolicy_3(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_SetHomeNetworkRoutingPolicy_3(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_SetHomeNetworkRoutingPolicy_3(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_SetHomeNetworkRoutingPolicy_3(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1467,20 +1471,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/DeleteHomeNetworkRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/{net_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_DeleteHomeNetworkRoutingPolicy_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_DeleteHomeNetworkRoutingPolicy_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_DeleteHomeNetworkRoutingPolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_DeleteHomeNetworkRoutingPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1490,20 +1496,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/DeleteHomeNetworkRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/{net_id}/{tenant_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_DeleteHomeNetworkRoutingPolicy_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_DeleteHomeNetworkRoutingPolicy_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_DeleteHomeNetworkRoutingPolicy_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_DeleteHomeNetworkRoutingPolicy_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1513,20 +1521,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/GetHomeNetworkDefaultGatewayVisibility", runtime.WithHTTPPathPattern("/pba/home-networks/gateway-visibilities/default")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_GetHomeNetworkDefaultGatewayVisibility_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_GetHomeNetworkDefaultGatewayVisibility_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_GetHomeNetworkDefaultGatewayVisibility_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_GetHomeNetworkDefaultGatewayVisibility_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1536,20 +1546,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/SetHomeNetworkDefaultGatewayVisibility", runtime.WithHTTPPathPattern("/pba/home-networks/gateway-visibilities/default")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_SetHomeNetworkDefaultGatewayVisibility_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_SetHomeNetworkDefaultGatewayVisibility_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_SetHomeNetworkDefaultGatewayVisibility_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_SetHomeNetworkDefaultGatewayVisibility_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1559,20 +1571,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/SetHomeNetworkDefaultGatewayVisibility", runtime.WithHTTPPathPattern("/pba/home-networks/gateway-visibilities/default")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_SetHomeNetworkDefaultGatewayVisibility_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_SetHomeNetworkDefaultGatewayVisibility_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_SetHomeNetworkDefaultGatewayVisibility_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_SetHomeNetworkDefaultGatewayVisibility_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1582,20 +1596,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/DeleteHomeNetworkDefaultGatewayVisibility", runtime.WithHTTPPathPattern("/pba/home-networks/gateway-visibilities/default")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_DeleteHomeNetworkDefaultGatewayVisibility_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_DeleteHomeNetworkDefaultGatewayVisibility_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_DeleteHomeNetworkDefaultGatewayVisibility_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_DeleteHomeNetworkDefaultGatewayVisibility_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1605,20 +1621,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/ListNetworks", runtime.WithHTTPPathPattern("/pba/networks")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_ListNetworks_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_ListNetworks_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_ListNetworks_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_ListNetworks_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1628,20 +1646,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/ListHomeNetworks", runtime.WithHTTPPathPattern("/pba/home-networks")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_ListHomeNetworks_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_ListHomeNetworks_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_ListHomeNetworks_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_ListHomeNetworks_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1651,20 +1671,22 @@ func RegisterPbaHandlerServer(ctx context.Context, mux *runtime.ServeMux, server var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/ListForwarderRoutingPolicies", runtime.WithHTTPPathPattern("/pba/forwarders/policies")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Pba_ListForwarderRoutingPolicies_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Pba_ListForwarderRoutingPolicies_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_ListForwarderRoutingPolicies_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_ListForwarderRoutingPolicies_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1713,19 +1735,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/GetInfo", runtime.WithHTTPPathPattern("/pba/info")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_GetInfo_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_GetInfo_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_GetInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_GetInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1733,19 +1757,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/Register", runtime.WithHTTPPathPattern("/pba/registration")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_Register_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_Register_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_Register_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_Register_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1753,19 +1779,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/Register", runtime.WithHTTPPathPattern("/pba/registration")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_Register_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_Register_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_Register_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_Register_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1773,19 +1801,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/Deregister", runtime.WithHTTPPathPattern("/pba/registration")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_Deregister_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_Deregister_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_Deregister_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_Deregister_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1793,19 +1823,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/GetHomeNetworkDefaultRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/default")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_GetHomeNetworkDefaultRoutingPolicy_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_GetHomeNetworkDefaultRoutingPolicy_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_GetHomeNetworkDefaultRoutingPolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_GetHomeNetworkDefaultRoutingPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1813,19 +1845,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/SetHomeNetworkDefaultRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/default")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_SetHomeNetworkDefaultRoutingPolicy_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_SetHomeNetworkDefaultRoutingPolicy_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_SetHomeNetworkDefaultRoutingPolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_SetHomeNetworkDefaultRoutingPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1833,19 +1867,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/SetHomeNetworkDefaultRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/default")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_SetHomeNetworkDefaultRoutingPolicy_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_SetHomeNetworkDefaultRoutingPolicy_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_SetHomeNetworkDefaultRoutingPolicy_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_SetHomeNetworkDefaultRoutingPolicy_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1853,19 +1889,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/DeleteHomeNetworkDefaultRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/default")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_DeleteHomeNetworkDefaultRoutingPolicy_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_DeleteHomeNetworkDefaultRoutingPolicy_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_DeleteHomeNetworkDefaultRoutingPolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_DeleteHomeNetworkDefaultRoutingPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1873,19 +1911,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/ListHomeNetworkRoutingPolicies", runtime.WithHTTPPathPattern("/pba/home-networks/policies")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_ListHomeNetworkRoutingPolicies_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_ListHomeNetworkRoutingPolicies_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_ListHomeNetworkRoutingPolicies_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_ListHomeNetworkRoutingPolicies_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1893,19 +1933,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/GetHomeNetworkRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/{net_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_GetHomeNetworkRoutingPolicy_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_GetHomeNetworkRoutingPolicy_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_GetHomeNetworkRoutingPolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_GetHomeNetworkRoutingPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1913,19 +1955,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/GetHomeNetworkRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/{net_id}/{tenant_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_GetHomeNetworkRoutingPolicy_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_GetHomeNetworkRoutingPolicy_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_GetHomeNetworkRoutingPolicy_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_GetHomeNetworkRoutingPolicy_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1933,19 +1977,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/SetHomeNetworkRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/{home_network_id.net_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_SetHomeNetworkRoutingPolicy_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_SetHomeNetworkRoutingPolicy_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_SetHomeNetworkRoutingPolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_SetHomeNetworkRoutingPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1953,19 +1999,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/SetHomeNetworkRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/{home_network_id.net_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_SetHomeNetworkRoutingPolicy_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_SetHomeNetworkRoutingPolicy_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_SetHomeNetworkRoutingPolicy_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_SetHomeNetworkRoutingPolicy_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1973,19 +2021,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/SetHomeNetworkRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/{home_network_id.net_id}/{home_network_id.tenant_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_SetHomeNetworkRoutingPolicy_2(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_SetHomeNetworkRoutingPolicy_2(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_SetHomeNetworkRoutingPolicy_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_SetHomeNetworkRoutingPolicy_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1993,19 +2043,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/SetHomeNetworkRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/{home_network_id.net_id}/{home_network_id.tenant_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_SetHomeNetworkRoutingPolicy_3(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_SetHomeNetworkRoutingPolicy_3(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_SetHomeNetworkRoutingPolicy_3(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_SetHomeNetworkRoutingPolicy_3(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2013,19 +2065,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/DeleteHomeNetworkRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/{net_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_DeleteHomeNetworkRoutingPolicy_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_DeleteHomeNetworkRoutingPolicy_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_DeleteHomeNetworkRoutingPolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_DeleteHomeNetworkRoutingPolicy_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2033,19 +2087,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/DeleteHomeNetworkRoutingPolicy", runtime.WithHTTPPathPattern("/pba/home-networks/policies/{net_id}/{tenant_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_DeleteHomeNetworkRoutingPolicy_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_DeleteHomeNetworkRoutingPolicy_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_DeleteHomeNetworkRoutingPolicy_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_DeleteHomeNetworkRoutingPolicy_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2053,19 +2109,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/GetHomeNetworkDefaultGatewayVisibility", runtime.WithHTTPPathPattern("/pba/home-networks/gateway-visibilities/default")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_GetHomeNetworkDefaultGatewayVisibility_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_GetHomeNetworkDefaultGatewayVisibility_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_GetHomeNetworkDefaultGatewayVisibility_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_GetHomeNetworkDefaultGatewayVisibility_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2073,19 +2131,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/SetHomeNetworkDefaultGatewayVisibility", runtime.WithHTTPPathPattern("/pba/home-networks/gateway-visibilities/default")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_SetHomeNetworkDefaultGatewayVisibility_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_SetHomeNetworkDefaultGatewayVisibility_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_SetHomeNetworkDefaultGatewayVisibility_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_SetHomeNetworkDefaultGatewayVisibility_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2093,19 +2153,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/SetHomeNetworkDefaultGatewayVisibility", runtime.WithHTTPPathPattern("/pba/home-networks/gateway-visibilities/default")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_SetHomeNetworkDefaultGatewayVisibility_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_SetHomeNetworkDefaultGatewayVisibility_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_SetHomeNetworkDefaultGatewayVisibility_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_SetHomeNetworkDefaultGatewayVisibility_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2113,19 +2175,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/DeleteHomeNetworkDefaultGatewayVisibility", runtime.WithHTTPPathPattern("/pba/home-networks/gateway-visibilities/default")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_DeleteHomeNetworkDefaultGatewayVisibility_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_DeleteHomeNetworkDefaultGatewayVisibility_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_DeleteHomeNetworkDefaultGatewayVisibility_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_DeleteHomeNetworkDefaultGatewayVisibility_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2133,19 +2197,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/ListNetworks", runtime.WithHTTPPathPattern("/pba/networks")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_ListNetworks_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_ListNetworks_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_ListNetworks_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_ListNetworks_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2153,19 +2219,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/ListHomeNetworks", runtime.WithHTTPPathPattern("/pba/home-networks")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_ListHomeNetworks_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_ListHomeNetworks_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_ListHomeNetworks_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_ListHomeNetworks_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2173,19 +2241,21 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.Pba/ListForwarderRoutingPolicies", runtime.WithHTTPPathPattern("/pba/forwarders/policies")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Pba_ListForwarderRoutingPolicies_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_Pba_ListForwarderRoutingPolicies_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_Pba_ListForwarderRoutingPolicies_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Pba_ListForwarderRoutingPolicies_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2193,53 +2263,53 @@ func RegisterPbaHandlerClient(ctx context.Context, mux *runtime.ServeMux, client } var ( - pattern_Pba_GetInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"pba", "info"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_GetInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"pba", "info"}, "")) - pattern_Pba_Register_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"pba", "registration"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_Register_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"pba", "registration"}, "")) - pattern_Pba_Register_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"pba", "registration"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_Register_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"pba", "registration"}, "")) - pattern_Pba_Deregister_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"pba", "registration"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_Deregister_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"pba", "registration"}, "")) - pattern_Pba_GetHomeNetworkDefaultRoutingPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pba", "home-networks", "policies", "default"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_GetHomeNetworkDefaultRoutingPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pba", "home-networks", "policies", "default"}, "")) - pattern_Pba_SetHomeNetworkDefaultRoutingPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pba", "home-networks", "policies", "default"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_SetHomeNetworkDefaultRoutingPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pba", "home-networks", "policies", "default"}, "")) - pattern_Pba_SetHomeNetworkDefaultRoutingPolicy_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pba", "home-networks", "policies", "default"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_SetHomeNetworkDefaultRoutingPolicy_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pba", "home-networks", "policies", "default"}, "")) - pattern_Pba_DeleteHomeNetworkDefaultRoutingPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pba", "home-networks", "policies", "default"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_DeleteHomeNetworkDefaultRoutingPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pba", "home-networks", "policies", "default"}, "")) - pattern_Pba_ListHomeNetworkRoutingPolicies_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"pba", "home-networks", "policies"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_ListHomeNetworkRoutingPolicies_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"pba", "home-networks", "policies"}, "")) - pattern_Pba_GetHomeNetworkRoutingPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pba", "home-networks", "policies", "net_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_GetHomeNetworkRoutingPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pba", "home-networks", "policies", "net_id"}, "")) - pattern_Pba_GetHomeNetworkRoutingPolicy_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"pba", "home-networks", "policies", "net_id", "tenant_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_GetHomeNetworkRoutingPolicy_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"pba", "home-networks", "policies", "net_id", "tenant_id"}, "")) - pattern_Pba_SetHomeNetworkRoutingPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pba", "home-networks", "policies", "home_network_id.net_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_SetHomeNetworkRoutingPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pba", "home-networks", "policies", "home_network_id.net_id"}, "")) - pattern_Pba_SetHomeNetworkRoutingPolicy_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pba", "home-networks", "policies", "home_network_id.net_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_SetHomeNetworkRoutingPolicy_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pba", "home-networks", "policies", "home_network_id.net_id"}, "")) - pattern_Pba_SetHomeNetworkRoutingPolicy_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"pba", "home-networks", "policies", "home_network_id.net_id", "home_network_id.tenant_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_SetHomeNetworkRoutingPolicy_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"pba", "home-networks", "policies", "home_network_id.net_id", "home_network_id.tenant_id"}, "")) - pattern_Pba_SetHomeNetworkRoutingPolicy_3 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"pba", "home-networks", "policies", "home_network_id.net_id", "home_network_id.tenant_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_SetHomeNetworkRoutingPolicy_3 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"pba", "home-networks", "policies", "home_network_id.net_id", "home_network_id.tenant_id"}, "")) - pattern_Pba_DeleteHomeNetworkRoutingPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pba", "home-networks", "policies", "net_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_DeleteHomeNetworkRoutingPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pba", "home-networks", "policies", "net_id"}, "")) - pattern_Pba_DeleteHomeNetworkRoutingPolicy_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"pba", "home-networks", "policies", "net_id", "tenant_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_DeleteHomeNetworkRoutingPolicy_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4}, []string{"pba", "home-networks", "policies", "net_id", "tenant_id"}, "")) - pattern_Pba_GetHomeNetworkDefaultGatewayVisibility_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pba", "home-networks", "gateway-visibilities", "default"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_GetHomeNetworkDefaultGatewayVisibility_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pba", "home-networks", "gateway-visibilities", "default"}, "")) - pattern_Pba_SetHomeNetworkDefaultGatewayVisibility_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pba", "home-networks", "gateway-visibilities", "default"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_SetHomeNetworkDefaultGatewayVisibility_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pba", "home-networks", "gateway-visibilities", "default"}, "")) - pattern_Pba_SetHomeNetworkDefaultGatewayVisibility_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pba", "home-networks", "gateway-visibilities", "default"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_SetHomeNetworkDefaultGatewayVisibility_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pba", "home-networks", "gateway-visibilities", "default"}, "")) - pattern_Pba_DeleteHomeNetworkDefaultGatewayVisibility_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pba", "home-networks", "gateway-visibilities", "default"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_DeleteHomeNetworkDefaultGatewayVisibility_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"pba", "home-networks", "gateway-visibilities", "default"}, "")) - pattern_Pba_ListNetworks_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"pba", "networks"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_ListNetworks_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"pba", "networks"}, "")) - pattern_Pba_ListHomeNetworks_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"pba", "home-networks"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_ListHomeNetworks_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"pba", "home-networks"}, "")) - pattern_Pba_ListForwarderRoutingPolicies_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"pba", "forwarders", "policies"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Pba_ListForwarderRoutingPolicies_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"pba", "forwarders", "policies"}, "")) ) var ( diff --git a/pkg/ttnpb/packetbrokeragent.pb.validate.go b/pkg/ttnpb/packetbrokeragent.pb.validate.go index bf1897a79c..e38b371913 100644 --- a/pkg/ttnpb/packetbrokeragent.pb.validate.go +++ b/pkg/ttnpb/packetbrokeragent.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _packetbrokeragent_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on PacketBrokerGateway with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/packetbrokeragent_flags.pb.go b/pkg/ttnpb/packetbrokeragent_flags.pb.go index 80c57ba7b5..d774e4eb9e 100644 --- a/pkg/ttnpb/packetbrokeragent_flags.pb.go +++ b/pkg/ttnpb/packetbrokeragent_flags.pb.go @@ -1,15 +1,15 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/packetbrokeragent.proto package ttnpb import ( flagsplugin "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - types "github.com/gogo/protobuf/types" pflag "github.com/spf13/pflag" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) // AddSetFlagsForPacketBrokerRegisterRequest adds flags to select fields in PacketBrokerRegisterRequest. @@ -22,7 +22,7 @@ func (m *PacketBrokerRegisterRequest) SetFromFlags(flags *pflag.FlagSet, prefix if val, changed, err := flagsplugin.GetBool(flags, flagsplugin.Prefix("listed", prefix)); err != nil { return nil, err } else if changed { - m.Listed = &types.BoolValue{Value: val} + m.Listed = &wrapperspb.BoolValue{Value: val} paths = append(paths, flagsplugin.Prefix("listed", prefix)) } return paths, nil diff --git a/pkg/ttnpb/packetbrokeragent_grpc.pb.go b/pkg/ttnpb/packetbrokeragent_grpc.pb.go new file mode 100644 index 0000000000..d5d6b5f9b4 --- /dev/null +++ b/pkg/ttnpb/packetbrokeragent_grpc.pb.go @@ -0,0 +1,938 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/packetbrokeragent.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// GsPbaClient is the client API for GsPba service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type GsPbaClient interface { + PublishUplink(ctx context.Context, in *GatewayUplinkMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Update the gateway, changing the fields specified by the field mask to the provided values. + // To mark a gateway as online, call this rpc setting online to true, include status_public in field_mask and + // keep calling this rpc before the returned online_ttl passes to keep the gateway online. + UpdateGateway(ctx context.Context, in *UpdatePacketBrokerGatewayRequest, opts ...grpc.CallOption) (*UpdatePacketBrokerGatewayResponse, error) +} + +type gsPbaClient struct { + cc grpc.ClientConnInterface +} + +func NewGsPbaClient(cc grpc.ClientConnInterface) GsPbaClient { + return &gsPbaClient{cc} +} + +func (c *gsPbaClient) PublishUplink(ctx context.Context, in *GatewayUplinkMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GsPba/PublishUplink", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gsPbaClient) UpdateGateway(ctx context.Context, in *UpdatePacketBrokerGatewayRequest, opts ...grpc.CallOption) (*UpdatePacketBrokerGatewayResponse, error) { + out := new(UpdatePacketBrokerGatewayResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.GsPba/UpdateGateway", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// GsPbaServer is the server API for GsPba service. +// All implementations must embed UnimplementedGsPbaServer +// for forward compatibility +type GsPbaServer interface { + PublishUplink(context.Context, *GatewayUplinkMessage) (*emptypb.Empty, error) + // Update the gateway, changing the fields specified by the field mask to the provided values. + // To mark a gateway as online, call this rpc setting online to true, include status_public in field_mask and + // keep calling this rpc before the returned online_ttl passes to keep the gateway online. + UpdateGateway(context.Context, *UpdatePacketBrokerGatewayRequest) (*UpdatePacketBrokerGatewayResponse, error) + mustEmbedUnimplementedGsPbaServer() +} + +// UnimplementedGsPbaServer must be embedded to have forward compatible implementations. +type UnimplementedGsPbaServer struct { +} + +func (UnimplementedGsPbaServer) PublishUplink(context.Context, *GatewayUplinkMessage) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method PublishUplink not implemented") +} +func (UnimplementedGsPbaServer) UpdateGateway(context.Context, *UpdatePacketBrokerGatewayRequest) (*UpdatePacketBrokerGatewayResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateGateway not implemented") +} +func (UnimplementedGsPbaServer) mustEmbedUnimplementedGsPbaServer() {} + +// UnsafeGsPbaServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to GsPbaServer will +// result in compilation errors. +type UnsafeGsPbaServer interface { + mustEmbedUnimplementedGsPbaServer() +} + +func RegisterGsPbaServer(s grpc.ServiceRegistrar, srv GsPbaServer) { + s.RegisterService(&GsPba_ServiceDesc, srv) +} + +func _GsPba_PublishUplink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GatewayUplinkMessage) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GsPbaServer).PublishUplink(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GsPba/PublishUplink", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GsPbaServer).PublishUplink(ctx, req.(*GatewayUplinkMessage)) + } + return interceptor(ctx, in, info, handler) +} + +func _GsPba_UpdateGateway_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdatePacketBrokerGatewayRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GsPbaServer).UpdateGateway(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.GsPba/UpdateGateway", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GsPbaServer).UpdateGateway(ctx, req.(*UpdatePacketBrokerGatewayRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// GsPba_ServiceDesc is the grpc.ServiceDesc for GsPba service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var GsPba_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.GsPba", + HandlerType: (*GsPbaServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "PublishUplink", + Handler: _GsPba_PublishUplink_Handler, + }, + { + MethodName: "UpdateGateway", + Handler: _GsPba_UpdateGateway_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/packetbrokeragent.proto", +} + +// NsPbaClient is the client API for NsPba service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type NsPbaClient interface { + // PublishDownlink instructs the Packet Broker Agent to publish a downlink + // message to Packet Broker Router. + PublishDownlink(ctx context.Context, in *DownlinkMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type nsPbaClient struct { + cc grpc.ClientConnInterface +} + +func NewNsPbaClient(cc grpc.ClientConnInterface) NsPbaClient { + return &nsPbaClient{cc} +} + +func (c *nsPbaClient) PublishDownlink(ctx context.Context, in *DownlinkMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.NsPba/PublishDownlink", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// NsPbaServer is the server API for NsPba service. +// All implementations must embed UnimplementedNsPbaServer +// for forward compatibility +type NsPbaServer interface { + // PublishDownlink instructs the Packet Broker Agent to publish a downlink + // message to Packet Broker Router. + PublishDownlink(context.Context, *DownlinkMessage) (*emptypb.Empty, error) + mustEmbedUnimplementedNsPbaServer() +} + +// UnimplementedNsPbaServer must be embedded to have forward compatible implementations. +type UnimplementedNsPbaServer struct { +} + +func (UnimplementedNsPbaServer) PublishDownlink(context.Context, *DownlinkMessage) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method PublishDownlink not implemented") +} +func (UnimplementedNsPbaServer) mustEmbedUnimplementedNsPbaServer() {} + +// UnsafeNsPbaServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to NsPbaServer will +// result in compilation errors. +type UnsafeNsPbaServer interface { + mustEmbedUnimplementedNsPbaServer() +} + +func RegisterNsPbaServer(s grpc.ServiceRegistrar, srv NsPbaServer) { + s.RegisterService(&NsPba_ServiceDesc, srv) +} + +func _NsPba_PublishDownlink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DownlinkMessage) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NsPbaServer).PublishDownlink(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.NsPba/PublishDownlink", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NsPbaServer).PublishDownlink(ctx, req.(*DownlinkMessage)) + } + return interceptor(ctx, in, info, handler) +} + +// NsPba_ServiceDesc is the grpc.ServiceDesc for NsPba service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var NsPba_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.NsPba", + HandlerType: (*NsPbaServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "PublishDownlink", + Handler: _NsPba_PublishDownlink_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/packetbrokeragent.proto", +} + +// PbaClient is the client API for Pba service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type PbaClient interface { + // Get information about the Packet Broker registration. + // Viewing Packet Packet information requires administrative access. + GetInfo(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*PacketBrokerInfo, error) + // Register with Packet Broker. If no registration exists, it will be created. Any existing registration will be updated. + // Registration settings not in the request message are taken from Packet Broker Agent configuration and caller context. + // Packet Broker registration requires administrative access. + // Packet Broker registration is only supported for tenants and requires Packet Broker Agent to be configured with + // NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this rpc is enabled. + Register(ctx context.Context, in *PacketBrokerRegisterRequest, opts ...grpc.CallOption) (*PacketBrokerNetwork, error) + // Deregister from Packet Broker. + // Packet Broker deregistration requires administrative access. + // Packet Broker deregistration is only supported for tenants and requires Packet Broker Agent to be configured with + // NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this rpc is enabled. + Deregister(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Get the default routing policy. + // Getting routing policies requires administrative access. + GetHomeNetworkDefaultRoutingPolicy(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*PacketBrokerDefaultRoutingPolicy, error) + // Set the default routing policy. + // Setting routing policies requires administrative access. + SetHomeNetworkDefaultRoutingPolicy(ctx context.Context, in *SetPacketBrokerDefaultRoutingPolicyRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Deletes the default routing policy. + // Deleting routing policies requires administrative access. + DeleteHomeNetworkDefaultRoutingPolicy(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) + // List the routing policies that Packet Broker Agent as Forwarder configured with Home Networks. + // Listing routing policies requires administrative access. + ListHomeNetworkRoutingPolicies(ctx context.Context, in *ListHomeNetworkRoutingPoliciesRequest, opts ...grpc.CallOption) (*PacketBrokerRoutingPolicies, error) + // Get the routing policy for the given Home Network. + // Getting routing policies requires administrative access. + GetHomeNetworkRoutingPolicy(ctx context.Context, in *PacketBrokerNetworkIdentifier, opts ...grpc.CallOption) (*PacketBrokerRoutingPolicy, error) + // Set the routing policy for the given Home Network. + // Setting routing policies requires administrative access. + SetHomeNetworkRoutingPolicy(ctx context.Context, in *SetPacketBrokerRoutingPolicyRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Delete the routing policy for the given Home Network. + // Deleting routing policies requires administrative access. + DeleteHomeNetworkRoutingPolicy(ctx context.Context, in *PacketBrokerNetworkIdentifier, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Get the default gateway visibility. + // Getting gateway visibilities requires administrative access. + GetHomeNetworkDefaultGatewayVisibility(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*PacketBrokerDefaultGatewayVisibility, error) + // Set the default gateway visibility. + // Setting gateway visibilities requires administrative access. + SetHomeNetworkDefaultGatewayVisibility(ctx context.Context, in *SetPacketBrokerDefaultGatewayVisibilityRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Deletes the default gateway visibility. + // Deleting gateway visibilities requires administrative access. + DeleteHomeNetworkDefaultGatewayVisibility(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) + // List all listed networks. + // Listing networks requires administrative access. + ListNetworks(ctx context.Context, in *ListPacketBrokerNetworksRequest, opts ...grpc.CallOption) (*PacketBrokerNetworks, error) + // List the listed home networks for which routing policies can be configured. + // Listing home networks requires administrative access. + ListHomeNetworks(ctx context.Context, in *ListPacketBrokerHomeNetworksRequest, opts ...grpc.CallOption) (*PacketBrokerNetworks, error) + // List the routing policies that Forwarders configured with Packet Broker Agent as Home Network. + // Listing routing policies requires administrative access. + ListForwarderRoutingPolicies(ctx context.Context, in *ListForwarderRoutingPoliciesRequest, opts ...grpc.CallOption) (*PacketBrokerRoutingPolicies, error) +} + +type pbaClient struct { + cc grpc.ClientConnInterface +} + +func NewPbaClient(cc grpc.ClientConnInterface) PbaClient { + return &pbaClient{cc} +} + +func (c *pbaClient) GetInfo(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*PacketBrokerInfo, error) { + out := new(PacketBrokerInfo) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/GetInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pbaClient) Register(ctx context.Context, in *PacketBrokerRegisterRequest, opts ...grpc.CallOption) (*PacketBrokerNetwork, error) { + out := new(PacketBrokerNetwork) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/Register", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pbaClient) Deregister(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/Deregister", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pbaClient) GetHomeNetworkDefaultRoutingPolicy(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*PacketBrokerDefaultRoutingPolicy, error) { + out := new(PacketBrokerDefaultRoutingPolicy) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/GetHomeNetworkDefaultRoutingPolicy", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pbaClient) SetHomeNetworkDefaultRoutingPolicy(ctx context.Context, in *SetPacketBrokerDefaultRoutingPolicyRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/SetHomeNetworkDefaultRoutingPolicy", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pbaClient) DeleteHomeNetworkDefaultRoutingPolicy(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/DeleteHomeNetworkDefaultRoutingPolicy", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pbaClient) ListHomeNetworkRoutingPolicies(ctx context.Context, in *ListHomeNetworkRoutingPoliciesRequest, opts ...grpc.CallOption) (*PacketBrokerRoutingPolicies, error) { + out := new(PacketBrokerRoutingPolicies) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/ListHomeNetworkRoutingPolicies", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pbaClient) GetHomeNetworkRoutingPolicy(ctx context.Context, in *PacketBrokerNetworkIdentifier, opts ...grpc.CallOption) (*PacketBrokerRoutingPolicy, error) { + out := new(PacketBrokerRoutingPolicy) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/GetHomeNetworkRoutingPolicy", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pbaClient) SetHomeNetworkRoutingPolicy(ctx context.Context, in *SetPacketBrokerRoutingPolicyRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/SetHomeNetworkRoutingPolicy", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pbaClient) DeleteHomeNetworkRoutingPolicy(ctx context.Context, in *PacketBrokerNetworkIdentifier, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/DeleteHomeNetworkRoutingPolicy", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pbaClient) GetHomeNetworkDefaultGatewayVisibility(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*PacketBrokerDefaultGatewayVisibility, error) { + out := new(PacketBrokerDefaultGatewayVisibility) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/GetHomeNetworkDefaultGatewayVisibility", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pbaClient) SetHomeNetworkDefaultGatewayVisibility(ctx context.Context, in *SetPacketBrokerDefaultGatewayVisibilityRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/SetHomeNetworkDefaultGatewayVisibility", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pbaClient) DeleteHomeNetworkDefaultGatewayVisibility(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/DeleteHomeNetworkDefaultGatewayVisibility", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pbaClient) ListNetworks(ctx context.Context, in *ListPacketBrokerNetworksRequest, opts ...grpc.CallOption) (*PacketBrokerNetworks, error) { + out := new(PacketBrokerNetworks) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/ListNetworks", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pbaClient) ListHomeNetworks(ctx context.Context, in *ListPacketBrokerHomeNetworksRequest, opts ...grpc.CallOption) (*PacketBrokerNetworks, error) { + out := new(PacketBrokerNetworks) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/ListHomeNetworks", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *pbaClient) ListForwarderRoutingPolicies(ctx context.Context, in *ListForwarderRoutingPoliciesRequest, opts ...grpc.CallOption) (*PacketBrokerRoutingPolicies, error) { + out := new(PacketBrokerRoutingPolicies) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.Pba/ListForwarderRoutingPolicies", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// PbaServer is the server API for Pba service. +// All implementations must embed UnimplementedPbaServer +// for forward compatibility +type PbaServer interface { + // Get information about the Packet Broker registration. + // Viewing Packet Packet information requires administrative access. + GetInfo(context.Context, *emptypb.Empty) (*PacketBrokerInfo, error) + // Register with Packet Broker. If no registration exists, it will be created. Any existing registration will be updated. + // Registration settings not in the request message are taken from Packet Broker Agent configuration and caller context. + // Packet Broker registration requires administrative access. + // Packet Broker registration is only supported for tenants and requires Packet Broker Agent to be configured with + // NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this rpc is enabled. + Register(context.Context, *PacketBrokerRegisterRequest) (*PacketBrokerNetwork, error) + // Deregister from Packet Broker. + // Packet Broker deregistration requires administrative access. + // Packet Broker deregistration is only supported for tenants and requires Packet Broker Agent to be configured with + // NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this rpc is enabled. + Deregister(context.Context, *emptypb.Empty) (*emptypb.Empty, error) + // Get the default routing policy. + // Getting routing policies requires administrative access. + GetHomeNetworkDefaultRoutingPolicy(context.Context, *emptypb.Empty) (*PacketBrokerDefaultRoutingPolicy, error) + // Set the default routing policy. + // Setting routing policies requires administrative access. + SetHomeNetworkDefaultRoutingPolicy(context.Context, *SetPacketBrokerDefaultRoutingPolicyRequest) (*emptypb.Empty, error) + // Deletes the default routing policy. + // Deleting routing policies requires administrative access. + DeleteHomeNetworkDefaultRoutingPolicy(context.Context, *emptypb.Empty) (*emptypb.Empty, error) + // List the routing policies that Packet Broker Agent as Forwarder configured with Home Networks. + // Listing routing policies requires administrative access. + ListHomeNetworkRoutingPolicies(context.Context, *ListHomeNetworkRoutingPoliciesRequest) (*PacketBrokerRoutingPolicies, error) + // Get the routing policy for the given Home Network. + // Getting routing policies requires administrative access. + GetHomeNetworkRoutingPolicy(context.Context, *PacketBrokerNetworkIdentifier) (*PacketBrokerRoutingPolicy, error) + // Set the routing policy for the given Home Network. + // Setting routing policies requires administrative access. + SetHomeNetworkRoutingPolicy(context.Context, *SetPacketBrokerRoutingPolicyRequest) (*emptypb.Empty, error) + // Delete the routing policy for the given Home Network. + // Deleting routing policies requires administrative access. + DeleteHomeNetworkRoutingPolicy(context.Context, *PacketBrokerNetworkIdentifier) (*emptypb.Empty, error) + // Get the default gateway visibility. + // Getting gateway visibilities requires administrative access. + GetHomeNetworkDefaultGatewayVisibility(context.Context, *emptypb.Empty) (*PacketBrokerDefaultGatewayVisibility, error) + // Set the default gateway visibility. + // Setting gateway visibilities requires administrative access. + SetHomeNetworkDefaultGatewayVisibility(context.Context, *SetPacketBrokerDefaultGatewayVisibilityRequest) (*emptypb.Empty, error) + // Deletes the default gateway visibility. + // Deleting gateway visibilities requires administrative access. + DeleteHomeNetworkDefaultGatewayVisibility(context.Context, *emptypb.Empty) (*emptypb.Empty, error) + // List all listed networks. + // Listing networks requires administrative access. + ListNetworks(context.Context, *ListPacketBrokerNetworksRequest) (*PacketBrokerNetworks, error) + // List the listed home networks for which routing policies can be configured. + // Listing home networks requires administrative access. + ListHomeNetworks(context.Context, *ListPacketBrokerHomeNetworksRequest) (*PacketBrokerNetworks, error) + // List the routing policies that Forwarders configured with Packet Broker Agent as Home Network. + // Listing routing policies requires administrative access. + ListForwarderRoutingPolicies(context.Context, *ListForwarderRoutingPoliciesRequest) (*PacketBrokerRoutingPolicies, error) + mustEmbedUnimplementedPbaServer() +} + +// UnimplementedPbaServer must be embedded to have forward compatible implementations. +type UnimplementedPbaServer struct { +} + +func (UnimplementedPbaServer) GetInfo(context.Context, *emptypb.Empty) (*PacketBrokerInfo, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetInfo not implemented") +} +func (UnimplementedPbaServer) Register(context.Context, *PacketBrokerRegisterRequest) (*PacketBrokerNetwork, error) { + return nil, status.Errorf(codes.Unimplemented, "method Register not implemented") +} +func (UnimplementedPbaServer) Deregister(context.Context, *emptypb.Empty) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Deregister not implemented") +} +func (UnimplementedPbaServer) GetHomeNetworkDefaultRoutingPolicy(context.Context, *emptypb.Empty) (*PacketBrokerDefaultRoutingPolicy, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetHomeNetworkDefaultRoutingPolicy not implemented") +} +func (UnimplementedPbaServer) SetHomeNetworkDefaultRoutingPolicy(context.Context, *SetPacketBrokerDefaultRoutingPolicyRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetHomeNetworkDefaultRoutingPolicy not implemented") +} +func (UnimplementedPbaServer) DeleteHomeNetworkDefaultRoutingPolicy(context.Context, *emptypb.Empty) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteHomeNetworkDefaultRoutingPolicy not implemented") +} +func (UnimplementedPbaServer) ListHomeNetworkRoutingPolicies(context.Context, *ListHomeNetworkRoutingPoliciesRequest) (*PacketBrokerRoutingPolicies, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListHomeNetworkRoutingPolicies not implemented") +} +func (UnimplementedPbaServer) GetHomeNetworkRoutingPolicy(context.Context, *PacketBrokerNetworkIdentifier) (*PacketBrokerRoutingPolicy, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetHomeNetworkRoutingPolicy not implemented") +} +func (UnimplementedPbaServer) SetHomeNetworkRoutingPolicy(context.Context, *SetPacketBrokerRoutingPolicyRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetHomeNetworkRoutingPolicy not implemented") +} +func (UnimplementedPbaServer) DeleteHomeNetworkRoutingPolicy(context.Context, *PacketBrokerNetworkIdentifier) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteHomeNetworkRoutingPolicy not implemented") +} +func (UnimplementedPbaServer) GetHomeNetworkDefaultGatewayVisibility(context.Context, *emptypb.Empty) (*PacketBrokerDefaultGatewayVisibility, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetHomeNetworkDefaultGatewayVisibility not implemented") +} +func (UnimplementedPbaServer) SetHomeNetworkDefaultGatewayVisibility(context.Context, *SetPacketBrokerDefaultGatewayVisibilityRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetHomeNetworkDefaultGatewayVisibility not implemented") +} +func (UnimplementedPbaServer) DeleteHomeNetworkDefaultGatewayVisibility(context.Context, *emptypb.Empty) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteHomeNetworkDefaultGatewayVisibility not implemented") +} +func (UnimplementedPbaServer) ListNetworks(context.Context, *ListPacketBrokerNetworksRequest) (*PacketBrokerNetworks, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListNetworks not implemented") +} +func (UnimplementedPbaServer) ListHomeNetworks(context.Context, *ListPacketBrokerHomeNetworksRequest) (*PacketBrokerNetworks, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListHomeNetworks not implemented") +} +func (UnimplementedPbaServer) ListForwarderRoutingPolicies(context.Context, *ListForwarderRoutingPoliciesRequest) (*PacketBrokerRoutingPolicies, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListForwarderRoutingPolicies not implemented") +} +func (UnimplementedPbaServer) mustEmbedUnimplementedPbaServer() {} + +// UnsafePbaServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to PbaServer will +// result in compilation errors. +type UnsafePbaServer interface { + mustEmbedUnimplementedPbaServer() +} + +func RegisterPbaServer(s grpc.ServiceRegistrar, srv PbaServer) { + s.RegisterService(&Pba_ServiceDesc, srv) +} + +func _Pba_GetInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PbaServer).GetInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Pba/GetInfo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PbaServer).GetInfo(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Pba_Register_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PacketBrokerRegisterRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PbaServer).Register(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Pba/Register", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PbaServer).Register(ctx, req.(*PacketBrokerRegisterRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Pba_Deregister_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PbaServer).Deregister(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Pba/Deregister", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PbaServer).Deregister(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Pba_GetHomeNetworkDefaultRoutingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PbaServer).GetHomeNetworkDefaultRoutingPolicy(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Pba/GetHomeNetworkDefaultRoutingPolicy", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PbaServer).GetHomeNetworkDefaultRoutingPolicy(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Pba_SetHomeNetworkDefaultRoutingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetPacketBrokerDefaultRoutingPolicyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PbaServer).SetHomeNetworkDefaultRoutingPolicy(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Pba/SetHomeNetworkDefaultRoutingPolicy", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PbaServer).SetHomeNetworkDefaultRoutingPolicy(ctx, req.(*SetPacketBrokerDefaultRoutingPolicyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Pba_DeleteHomeNetworkDefaultRoutingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PbaServer).DeleteHomeNetworkDefaultRoutingPolicy(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Pba/DeleteHomeNetworkDefaultRoutingPolicy", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PbaServer).DeleteHomeNetworkDefaultRoutingPolicy(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Pba_ListHomeNetworkRoutingPolicies_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListHomeNetworkRoutingPoliciesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PbaServer).ListHomeNetworkRoutingPolicies(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Pba/ListHomeNetworkRoutingPolicies", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PbaServer).ListHomeNetworkRoutingPolicies(ctx, req.(*ListHomeNetworkRoutingPoliciesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Pba_GetHomeNetworkRoutingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PacketBrokerNetworkIdentifier) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PbaServer).GetHomeNetworkRoutingPolicy(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Pba/GetHomeNetworkRoutingPolicy", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PbaServer).GetHomeNetworkRoutingPolicy(ctx, req.(*PacketBrokerNetworkIdentifier)) + } + return interceptor(ctx, in, info, handler) +} + +func _Pba_SetHomeNetworkRoutingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetPacketBrokerRoutingPolicyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PbaServer).SetHomeNetworkRoutingPolicy(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Pba/SetHomeNetworkRoutingPolicy", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PbaServer).SetHomeNetworkRoutingPolicy(ctx, req.(*SetPacketBrokerRoutingPolicyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Pba_DeleteHomeNetworkRoutingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PacketBrokerNetworkIdentifier) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PbaServer).DeleteHomeNetworkRoutingPolicy(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Pba/DeleteHomeNetworkRoutingPolicy", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PbaServer).DeleteHomeNetworkRoutingPolicy(ctx, req.(*PacketBrokerNetworkIdentifier)) + } + return interceptor(ctx, in, info, handler) +} + +func _Pba_GetHomeNetworkDefaultGatewayVisibility_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PbaServer).GetHomeNetworkDefaultGatewayVisibility(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Pba/GetHomeNetworkDefaultGatewayVisibility", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PbaServer).GetHomeNetworkDefaultGatewayVisibility(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Pba_SetHomeNetworkDefaultGatewayVisibility_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetPacketBrokerDefaultGatewayVisibilityRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PbaServer).SetHomeNetworkDefaultGatewayVisibility(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Pba/SetHomeNetworkDefaultGatewayVisibility", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PbaServer).SetHomeNetworkDefaultGatewayVisibility(ctx, req.(*SetPacketBrokerDefaultGatewayVisibilityRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Pba_DeleteHomeNetworkDefaultGatewayVisibility_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PbaServer).DeleteHomeNetworkDefaultGatewayVisibility(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Pba/DeleteHomeNetworkDefaultGatewayVisibility", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PbaServer).DeleteHomeNetworkDefaultGatewayVisibility(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Pba_ListNetworks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListPacketBrokerNetworksRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PbaServer).ListNetworks(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Pba/ListNetworks", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PbaServer).ListNetworks(ctx, req.(*ListPacketBrokerNetworksRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Pba_ListHomeNetworks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListPacketBrokerHomeNetworksRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PbaServer).ListHomeNetworks(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Pba/ListHomeNetworks", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PbaServer).ListHomeNetworks(ctx, req.(*ListPacketBrokerHomeNetworksRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Pba_ListForwarderRoutingPolicies_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListForwarderRoutingPoliciesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PbaServer).ListForwarderRoutingPolicies(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.Pba/ListForwarderRoutingPolicies", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PbaServer).ListForwarderRoutingPolicies(ctx, req.(*ListForwarderRoutingPoliciesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Pba_ServiceDesc is the grpc.ServiceDesc for Pba service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Pba_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.Pba", + HandlerType: (*PbaServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetInfo", + Handler: _Pba_GetInfo_Handler, + }, + { + MethodName: "Register", + Handler: _Pba_Register_Handler, + }, + { + MethodName: "Deregister", + Handler: _Pba_Deregister_Handler, + }, + { + MethodName: "GetHomeNetworkDefaultRoutingPolicy", + Handler: _Pba_GetHomeNetworkDefaultRoutingPolicy_Handler, + }, + { + MethodName: "SetHomeNetworkDefaultRoutingPolicy", + Handler: _Pba_SetHomeNetworkDefaultRoutingPolicy_Handler, + }, + { + MethodName: "DeleteHomeNetworkDefaultRoutingPolicy", + Handler: _Pba_DeleteHomeNetworkDefaultRoutingPolicy_Handler, + }, + { + MethodName: "ListHomeNetworkRoutingPolicies", + Handler: _Pba_ListHomeNetworkRoutingPolicies_Handler, + }, + { + MethodName: "GetHomeNetworkRoutingPolicy", + Handler: _Pba_GetHomeNetworkRoutingPolicy_Handler, + }, + { + MethodName: "SetHomeNetworkRoutingPolicy", + Handler: _Pba_SetHomeNetworkRoutingPolicy_Handler, + }, + { + MethodName: "DeleteHomeNetworkRoutingPolicy", + Handler: _Pba_DeleteHomeNetworkRoutingPolicy_Handler, + }, + { + MethodName: "GetHomeNetworkDefaultGatewayVisibility", + Handler: _Pba_GetHomeNetworkDefaultGatewayVisibility_Handler, + }, + { + MethodName: "SetHomeNetworkDefaultGatewayVisibility", + Handler: _Pba_SetHomeNetworkDefaultGatewayVisibility_Handler, + }, + { + MethodName: "DeleteHomeNetworkDefaultGatewayVisibility", + Handler: _Pba_DeleteHomeNetworkDefaultGatewayVisibility_Handler, + }, + { + MethodName: "ListNetworks", + Handler: _Pba_ListNetworks_Handler, + }, + { + MethodName: "ListHomeNetworks", + Handler: _Pba_ListHomeNetworks_Handler, + }, + { + MethodName: "ListForwarderRoutingPolicies", + Handler: _Pba_ListForwarderRoutingPolicies_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/packetbrokeragent.proto", +} diff --git a/pkg/ttnpb/packetbrokeragent_json.pb.go b/pkg/ttnpb/packetbrokeragent_json.pb.go index 169e0a96a8..cbee2d8d36 100644 --- a/pkg/ttnpb/packetbrokeragent_json.pb.go +++ b/pkg/ttnpb/packetbrokeragent_json.pb.go @@ -1,16 +1,16 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/packetbrokeragent.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" - types1 "github.com/gogo/protobuf/types" types "go.thethings.network/lorawan-stack/v3/pkg/types" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) // MarshalProtoJSON marshals the PacketBrokerGateway_GatewayIdentifiers message to JSON. @@ -91,13 +91,13 @@ func (x *PacketBrokerGateway) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("administrative_contact") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.AdministrativeContact) + golang.MarshalMessage(s, x.AdministrativeContact) } if x.TechnicalContact != nil || s.HasField("technical_contact") { s.WriteMoreIf(&wroteField) s.WriteObjectField("technical_contact") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.TechnicalContact) + golang.MarshalMessage(s, x.TechnicalContact) } if len(x.Antennas) > 0 || s.HasField("antennas") { s.WriteMoreIf(&wroteField) @@ -203,7 +203,7 @@ func (x *PacketBrokerGateway) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.AdministrativeContact = &v case "technical_contact", "technicalContact": s.AddField("technical_contact") @@ -213,7 +213,7 @@ func (x *PacketBrokerGateway) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.TechnicalContact = &v case "antennas": s.AddField("antennas") @@ -262,7 +262,7 @@ func (x *PacketBrokerGateway) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { if s.Err() != nil { return } - x.RxRate = &types1.FloatValue{Value: v} + x.RxRate = &wrapperspb.FloatValue{Value: v} case "tx_rate", "txRate": s.AddField("tx_rate") if s.ReadNil() { @@ -273,7 +273,7 @@ func (x *PacketBrokerGateway) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { if s.Err() != nil { return } - x.TxRate = &types1.FloatValue{Value: v} + x.TxRate = &wrapperspb.FloatValue{Value: v} } }) } @@ -302,7 +302,7 @@ func (x *UpdatePacketBrokerGatewayRequest) MarshalProtoJSON(s *jsonplugin.Marsha if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -335,7 +335,7 @@ func (x *UpdatePacketBrokerGatewayRequest) UnmarshalProtoJSON(s *jsonplugin.Unma x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -415,7 +415,7 @@ func (x *PacketBrokerNetwork) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("id") // NOTE: PacketBrokerNetworkIdentifier does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Id) + golang.MarshalMessage(s, x.Id) } if x.Name != "" || s.HasField("name") { s.WriteMoreIf(&wroteField) @@ -484,7 +484,7 @@ func (x *PacketBrokerNetwork) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: PacketBrokerNetworkIdentifier does not seem to implement UnmarshalProtoJSON. var v PacketBrokerNetworkIdentifier - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Id = &v case "name": s.AddField("name") diff --git a/pkg/ttnpb/picture.pb.go b/pkg/ttnpb/picture.pb.go index cd1c8177a3..ba19a27413 100644 --- a/pkg/ttnpb/picture.pb.go +++ b/pkg/ttnpb/picture.pb.go @@ -1,164 +1,270 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/picture.proto package ttnpb import ( - fmt "fmt" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - golang_proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type Picture struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Embedded picture. // Omitted if there are external URLs available (in sizes). Embedded *Picture_Embedded `protobuf:"bytes,1,opt,name=embedded,proto3" json:"embedded,omitempty"` // URLs of the picture for different sizes, if available on a CDN. - Sizes map[uint32]string `protobuf:"bytes,2,rep,name=sizes,proto3" json:"sizes,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Sizes map[uint32]string `protobuf:"bytes,2,rep,name=sizes,proto3" json:"sizes,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *Picture) Reset() { *m = Picture{} } -func (m *Picture) String() string { return proto.CompactTextString(m) } -func (*Picture) ProtoMessage() {} -func (*Picture) Descriptor() ([]byte, []int) { - return fileDescriptor_e379f581972557c1, []int{0} -} -func (m *Picture) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Picture.Unmarshal(m, b) -} -func (m *Picture) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Picture.Marshal(b, m, deterministic) -} -func (m *Picture) XXX_Merge(src proto.Message) { - xxx_messageInfo_Picture.Merge(m, src) +func (x *Picture) Reset() { + *x = Picture{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_picture_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Picture) XXX_Size() int { - return xxx_messageInfo_Picture.Size(m) + +func (x *Picture) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Picture) XXX_DiscardUnknown() { - xxx_messageInfo_Picture.DiscardUnknown(m) + +func (*Picture) ProtoMessage() {} + +func (x *Picture) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_picture_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Picture proto.InternalMessageInfo +// Deprecated: Use Picture.ProtoReflect.Descriptor instead. +func (*Picture) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_picture_proto_rawDescGZIP(), []int{0} +} -func (m *Picture) GetEmbedded() *Picture_Embedded { - if m != nil { - return m.Embedded +func (x *Picture) GetEmbedded() *Picture_Embedded { + if x != nil { + return x.Embedded } return nil } -func (m *Picture) GetSizes() map[uint32]string { - if m != nil { - return m.Sizes +func (x *Picture) GetSizes() map[uint32]string { + if x != nil { + return x.Sizes } return nil } type Picture_Embedded struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // MIME type of the picture. MimeType string `protobuf:"bytes,1,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"` // Picture data. A data URI can be constructed as follows: // `data:;base64,`. - Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` } -func (m *Picture_Embedded) Reset() { *m = Picture_Embedded{} } -func (m *Picture_Embedded) String() string { return proto.CompactTextString(m) } -func (*Picture_Embedded) ProtoMessage() {} -func (*Picture_Embedded) Descriptor() ([]byte, []int) { - return fileDescriptor_e379f581972557c1, []int{0, 0} -} -func (m *Picture_Embedded) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Picture_Embedded.Unmarshal(m, b) -} -func (m *Picture_Embedded) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Picture_Embedded.Marshal(b, m, deterministic) -} -func (m *Picture_Embedded) XXX_Merge(src proto.Message) { - xxx_messageInfo_Picture_Embedded.Merge(m, src) +func (x *Picture_Embedded) Reset() { + *x = Picture_Embedded{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_picture_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Picture_Embedded) XXX_Size() int { - return xxx_messageInfo_Picture_Embedded.Size(m) + +func (x *Picture_Embedded) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Picture_Embedded) XXX_DiscardUnknown() { - xxx_messageInfo_Picture_Embedded.DiscardUnknown(m) + +func (*Picture_Embedded) ProtoMessage() {} + +func (x *Picture_Embedded) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_picture_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Picture_Embedded proto.InternalMessageInfo +// Deprecated: Use Picture_Embedded.ProtoReflect.Descriptor instead. +func (*Picture_Embedded) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_picture_proto_rawDescGZIP(), []int{0, 0} +} -func (m *Picture_Embedded) GetMimeType() string { - if m != nil { - return m.MimeType +func (x *Picture_Embedded) GetMimeType() string { + if x != nil { + return x.MimeType } return "" } -func (m *Picture_Embedded) GetData() []byte { - if m != nil { - return m.Data +func (x *Picture_Embedded) GetData() []byte { + if x != nil { + return x.Data } return nil } -func init() { - proto.RegisterType((*Picture)(nil), "ttn.lorawan.v3.Picture") - golang_proto.RegisterType((*Picture)(nil), "ttn.lorawan.v3.Picture") - proto.RegisterMapType((map[uint32]string)(nil), "ttn.lorawan.v3.Picture.SizesEntry") - golang_proto.RegisterMapType((map[uint32]string)(nil), "ttn.lorawan.v3.Picture.SizesEntry") - proto.RegisterType((*Picture_Embedded)(nil), "ttn.lorawan.v3.Picture.Embedded") - golang_proto.RegisterType((*Picture_Embedded)(nil), "ttn.lorawan.v3.Picture.Embedded") -} - -func init() { proto.RegisterFile("lorawan-stack/api/picture.proto", fileDescriptor_e379f581972557c1) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/picture.proto", fileDescriptor_e379f581972557c1) -} - -var fileDescriptor_e379f581972557c1 = []byte{ - // 363 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0x3f, 0x6b, 0xe3, 0x30, - 0x00, 0xc5, 0x91, 0x13, 0x9f, 0x13, 0xe5, 0x72, 0x1c, 0xe6, 0x06, 0xe3, 0x21, 0x67, 0xc2, 0x0d, - 0xe1, 0xc0, 0x12, 0x24, 0x1c, 0x84, 0xa3, 0x4b, 0x0d, 0xa1, 0x6b, 0x70, 0x3b, 0x75, 0x29, 0xb2, - 0xad, 0x3a, 0xc6, 0xb1, 0x24, 0x64, 0xd9, 0xa9, 0x33, 0xe5, 0x23, 0x74, 0x2e, 0xfd, 0x30, 0xfd, - 0x2e, 0xfd, 0x16, 0x99, 0x4a, 0xe4, 0xf4, 0x4f, 0x28, 0xdd, 0xde, 0xb3, 0x7f, 0xef, 0xe9, 0x21, - 0xc1, 0xdf, 0x6b, 0x2e, 0xc9, 0x86, 0x30, 0xbf, 0x54, 0x24, 0xce, 0x31, 0x11, 0x19, 0x16, 0x59, - 0xac, 0x2a, 0x49, 0x91, 0x90, 0x5c, 0x71, 0xfb, 0x87, 0x52, 0x0c, 0x1d, 0x21, 0x54, 0xcf, 0xdc, - 0xf3, 0x34, 0x53, 0xab, 0x2a, 0x42, 0x31, 0x2f, 0x30, 0x65, 0x35, 0x6f, 0x84, 0xe4, 0x77, 0x0d, - 0xd6, 0x70, 0xec, 0xa7, 0x94, 0xf9, 0x35, 0x59, 0x67, 0x09, 0x51, 0x14, 0x7f, 0x12, 0x6d, 0xa5, - 0xeb, 0x7f, 0xa8, 0x48, 0x79, 0xca, 0xdb, 0x70, 0x54, 0xdd, 0x6a, 0xa7, 0x8d, 0x56, 0x2d, 0x3e, - 0x7e, 0x34, 0xa0, 0xb5, 0x6c, 0x37, 0xd9, 0x67, 0xb0, 0x47, 0x8b, 0x88, 0x26, 0x09, 0x4d, 0x1c, - 0xe0, 0x81, 0xc9, 0x60, 0xea, 0xa1, 0xd3, 0x81, 0xe8, 0x88, 0xa2, 0xc5, 0x91, 0x0b, 0xdf, 0x12, - 0xf6, 0x05, 0x34, 0xcb, 0x6c, 0x4b, 0x4b, 0xc7, 0xf0, 0x3a, 0x93, 0xc1, 0x74, 0xfc, 0x55, 0xf4, - 0xf2, 0x00, 0x2d, 0x98, 0x92, 0x4d, 0x30, 0xdc, 0x07, 0xf0, 0x01, 0x58, 0x7f, 0x4d, 0xd9, 0xb9, - 0x07, 0x20, 0x6c, 0xf3, 0xee, 0x12, 0xf6, 0x5e, 0xeb, 0xed, 0x3f, 0xb0, 0x5f, 0x64, 0x05, 0xbd, - 0x51, 0x8d, 0xa0, 0x7a, 0x53, 0x3f, 0xb0, 0xf6, 0x41, 0x57, 0x1a, 0x8e, 0x17, 0xf6, 0x0e, 0x7f, - 0xae, 0x1a, 0x41, 0xed, 0x11, 0xec, 0x26, 0x44, 0x11, 0xc7, 0xf0, 0xc0, 0xe4, 0x7b, 0x00, 0xf7, - 0x81, 0xb5, 0x35, 0x9d, 0xdd, 0x6e, 0xd7, 0x0d, 0xf5, 0x77, 0x77, 0x0e, 0xe1, 0xfb, 0xa9, 0xf6, - 0x4f, 0xd8, 0xc9, 0x69, 0xa3, 0xdb, 0x86, 0xe1, 0x41, 0xda, 0xbf, 0xa0, 0x59, 0x93, 0x75, 0x45, - 0x75, 0x41, 0x3f, 0x6c, 0xcd, 0x7f, 0x63, 0x0e, 0x82, 0x7f, 0x4f, 0xcf, 0x23, 0x70, 0x8d, 0x53, - 0x8e, 0xd4, 0x8a, 0xaa, 0x55, 0xc6, 0xd2, 0x12, 0x31, 0xaa, 0x36, 0x5c, 0xe6, 0xf8, 0xf4, 0x71, - 0xeb, 0x19, 0x16, 0x79, 0x8a, 0x95, 0x62, 0x22, 0x8a, 0xbe, 0xe9, 0xcb, 0x9d, 0xbd, 0x04, 0x00, - 0x00, 0xff, 0xff, 0x82, 0xd5, 0x1e, 0xfa, 0x01, 0x02, 0x00, 0x00, +var File_lorawan_stack_api_picture_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_picture_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, + 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, + 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, + 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x9c, 0x02, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, + 0x3c, 0x0a, 0x08, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, + 0x64, 0x65, 0x64, 0x52, 0x08, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x12, 0x47, 0x0a, + 0x05, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, + 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x9a, 0x01, 0x07, 0x2a, 0x05, 0x72, 0x03, 0x90, 0x01, 0x01, 0x52, + 0x05, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x1a, 0x50, 0x0a, 0x08, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, + 0x65, 0x64, 0x12, 0x24, 0x0a, 0x09, 0x6d, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x20, 0x52, 0x08, + 0x6d, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x7a, 0x05, 0x18, 0x80, 0x80, + 0x80, 0x04, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x38, 0x0a, 0x0a, 0x53, 0x69, 0x7a, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_lorawan_stack_api_picture_proto_rawDescOnce sync.Once + file_lorawan_stack_api_picture_proto_rawDescData = file_lorawan_stack_api_picture_proto_rawDesc +) + +func file_lorawan_stack_api_picture_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_picture_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_picture_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_picture_proto_rawDescData) + }) + return file_lorawan_stack_api_picture_proto_rawDescData +} + +var file_lorawan_stack_api_picture_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_lorawan_stack_api_picture_proto_goTypes = []interface{}{ + (*Picture)(nil), // 0: ttn.lorawan.v3.Picture + (*Picture_Embedded)(nil), // 1: ttn.lorawan.v3.Picture.Embedded + nil, // 2: ttn.lorawan.v3.Picture.SizesEntry +} +var file_lorawan_stack_api_picture_proto_depIdxs = []int32{ + 1, // 0: ttn.lorawan.v3.Picture.embedded:type_name -> ttn.lorawan.v3.Picture.Embedded + 2, // 1: ttn.lorawan.v3.Picture.sizes:type_name -> ttn.lorawan.v3.Picture.SizesEntry + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_picture_proto_init() } +func file_lorawan_stack_api_picture_proto_init() { + if File_lorawan_stack_api_picture_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_picture_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Picture); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_picture_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Picture_Embedded); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_picture_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_picture_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_picture_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_picture_proto_msgTypes, + }.Build() + File_lorawan_stack_api_picture_proto = out.File + file_lorawan_stack_api_picture_proto_rawDesc = nil + file_lorawan_stack_api_picture_proto_goTypes = nil + file_lorawan_stack_api_picture_proto_depIdxs = nil } diff --git a/pkg/ttnpb/picture.pb.validate.go b/pkg/ttnpb/picture.pb.validate.go index e54431e660..5a7d3d18c5 100644 --- a/pkg/ttnpb/picture.pb.validate.go +++ b/pkg/ttnpb/picture.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _picture_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on Picture with the rules defined in // the proto definition for this message. If any rules are violated, an error // is returned. diff --git a/pkg/ttnpb/qrcodegenerator.pb.go b/pkg/ttnpb/qrcodegenerator.pb.go index ffd2b8f281..0a0250649c 100644 --- a/pkg/ttnpb/qrcodegenerator.pb.go +++ b/pkg/ttnpb/qrcodegenerator.pb.go @@ -1,690 +1,802 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/qrcodegenerator.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type QRCodeFormat struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` // The entity fields required to generate the QR code. - FieldMask *types.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *QRCodeFormat) Reset() { *m = QRCodeFormat{} } -func (m *QRCodeFormat) String() string { return proto.CompactTextString(m) } -func (*QRCodeFormat) ProtoMessage() {} -func (*QRCodeFormat) Descriptor() ([]byte, []int) { - return fileDescriptor_f400aed11530ba72, []int{0} -} -func (m *QRCodeFormat) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_QRCodeFormat.Unmarshal(m, b) -} -func (m *QRCodeFormat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_QRCodeFormat.Marshal(b, m, deterministic) -} -func (m *QRCodeFormat) XXX_Merge(src proto.Message) { - xxx_messageInfo_QRCodeFormat.Merge(m, src) +func (x *QRCodeFormat) Reset() { + *x = QRCodeFormat{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *QRCodeFormat) XXX_Size() int { - return xxx_messageInfo_QRCodeFormat.Size(m) + +func (x *QRCodeFormat) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *QRCodeFormat) XXX_DiscardUnknown() { - xxx_messageInfo_QRCodeFormat.DiscardUnknown(m) + +func (*QRCodeFormat) ProtoMessage() {} + +func (x *QRCodeFormat) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_QRCodeFormat proto.InternalMessageInfo +// Deprecated: Use QRCodeFormat.ProtoReflect.Descriptor instead. +func (*QRCodeFormat) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_qrcodegenerator_proto_rawDescGZIP(), []int{0} +} -func (m *QRCodeFormat) GetName() string { - if m != nil { - return m.Name +func (x *QRCodeFormat) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *QRCodeFormat) GetDescription() string { - if m != nil { - return m.Description +func (x *QRCodeFormat) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *QRCodeFormat) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *QRCodeFormat) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type QRCodeFormats struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Available formats. The map key is the format identifier. - Formats map[string]*QRCodeFormat `protobuf:"bytes,1,rep,name=formats,proto3" json:"formats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Formats map[string]*QRCodeFormat `protobuf:"bytes,1,rep,name=formats,proto3" json:"formats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *QRCodeFormats) Reset() { *m = QRCodeFormats{} } -func (m *QRCodeFormats) String() string { return proto.CompactTextString(m) } -func (*QRCodeFormats) ProtoMessage() {} -func (*QRCodeFormats) Descriptor() ([]byte, []int) { - return fileDescriptor_f400aed11530ba72, []int{1} -} -func (m *QRCodeFormats) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_QRCodeFormats.Unmarshal(m, b) -} -func (m *QRCodeFormats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_QRCodeFormats.Marshal(b, m, deterministic) -} -func (m *QRCodeFormats) XXX_Merge(src proto.Message) { - xxx_messageInfo_QRCodeFormats.Merge(m, src) +func (x *QRCodeFormats) Reset() { + *x = QRCodeFormats{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *QRCodeFormats) XXX_Size() int { - return xxx_messageInfo_QRCodeFormats.Size(m) + +func (x *QRCodeFormats) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *QRCodeFormats) XXX_DiscardUnknown() { - xxx_messageInfo_QRCodeFormats.DiscardUnknown(m) + +func (*QRCodeFormats) ProtoMessage() {} + +func (x *QRCodeFormats) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_QRCodeFormats proto.InternalMessageInfo +// Deprecated: Use QRCodeFormats.ProtoReflect.Descriptor instead. +func (*QRCodeFormats) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_qrcodegenerator_proto_rawDescGZIP(), []int{1} +} -func (m *QRCodeFormats) GetFormats() map[string]*QRCodeFormat { - if m != nil { - return m.Formats +func (x *QRCodeFormats) GetFormats() map[string]*QRCodeFormat { + if x != nil { + return x.Formats } return nil } type GetQRCodeFormatRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // QR code format identifier. Enumerate available formats with rpc ListFormats in the EndDeviceQRCodeGenerator service. - FormatId string `protobuf:"bytes,1,opt,name=format_id,json=formatId,proto3" json:"format_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FormatId string `protobuf:"bytes,1,opt,name=format_id,json=formatId,proto3" json:"format_id,omitempty"` } -func (m *GetQRCodeFormatRequest) Reset() { *m = GetQRCodeFormatRequest{} } -func (m *GetQRCodeFormatRequest) String() string { return proto.CompactTextString(m) } -func (*GetQRCodeFormatRequest) ProtoMessage() {} -func (*GetQRCodeFormatRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f400aed11530ba72, []int{2} -} -func (m *GetQRCodeFormatRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetQRCodeFormatRequest.Unmarshal(m, b) -} -func (m *GetQRCodeFormatRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetQRCodeFormatRequest.Marshal(b, m, deterministic) -} -func (m *GetQRCodeFormatRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetQRCodeFormatRequest.Merge(m, src) +func (x *GetQRCodeFormatRequest) Reset() { + *x = GetQRCodeFormatRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetQRCodeFormatRequest) XXX_Size() int { - return xxx_messageInfo_GetQRCodeFormatRequest.Size(m) + +func (x *GetQRCodeFormatRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetQRCodeFormatRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetQRCodeFormatRequest.DiscardUnknown(m) + +func (*GetQRCodeFormatRequest) ProtoMessage() {} + +func (x *GetQRCodeFormatRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetQRCodeFormatRequest proto.InternalMessageInfo +// Deprecated: Use GetQRCodeFormatRequest.ProtoReflect.Descriptor instead. +func (*GetQRCodeFormatRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_qrcodegenerator_proto_rawDescGZIP(), []int{2} +} -func (m *GetQRCodeFormatRequest) GetFormatId() string { - if m != nil { - return m.FormatId +func (x *GetQRCodeFormatRequest) GetFormatId() string { + if x != nil { + return x.FormatId } return "" } type GenerateEndDeviceQRCodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // QR code format identifier. Enumerate available formats with rpc ListFormats in the EndDeviceQRCodeGenerator service. FormatId string `protobuf:"bytes,1,opt,name=format_id,json=formatId,proto3" json:"format_id,omitempty"` // End device to use as input to generate the QR code. EndDevice *EndDevice `protobuf:"bytes,2,opt,name=end_device,json=endDevice,proto3" json:"end_device,omitempty"` // If set, the server will render the QR code image according to these settings. - Image *GenerateEndDeviceQRCodeRequest_Image `protobuf:"bytes,3,opt,name=image,proto3" json:"image,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Image *GenerateEndDeviceQRCodeRequest_Image `protobuf:"bytes,3,opt,name=image,proto3" json:"image,omitempty"` } -func (m *GenerateEndDeviceQRCodeRequest) Reset() { *m = GenerateEndDeviceQRCodeRequest{} } -func (m *GenerateEndDeviceQRCodeRequest) String() string { return proto.CompactTextString(m) } -func (*GenerateEndDeviceQRCodeRequest) ProtoMessage() {} -func (*GenerateEndDeviceQRCodeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f400aed11530ba72, []int{3} -} -func (m *GenerateEndDeviceQRCodeRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GenerateEndDeviceQRCodeRequest.Unmarshal(m, b) -} -func (m *GenerateEndDeviceQRCodeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GenerateEndDeviceQRCodeRequest.Marshal(b, m, deterministic) -} -func (m *GenerateEndDeviceQRCodeRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GenerateEndDeviceQRCodeRequest.Merge(m, src) +func (x *GenerateEndDeviceQRCodeRequest) Reset() { + *x = GenerateEndDeviceQRCodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GenerateEndDeviceQRCodeRequest) XXX_Size() int { - return xxx_messageInfo_GenerateEndDeviceQRCodeRequest.Size(m) + +func (x *GenerateEndDeviceQRCodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GenerateEndDeviceQRCodeRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GenerateEndDeviceQRCodeRequest.DiscardUnknown(m) + +func (*GenerateEndDeviceQRCodeRequest) ProtoMessage() {} + +func (x *GenerateEndDeviceQRCodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GenerateEndDeviceQRCodeRequest proto.InternalMessageInfo +// Deprecated: Use GenerateEndDeviceQRCodeRequest.ProtoReflect.Descriptor instead. +func (*GenerateEndDeviceQRCodeRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_qrcodegenerator_proto_rawDescGZIP(), []int{3} +} -func (m *GenerateEndDeviceQRCodeRequest) GetFormatId() string { - if m != nil { - return m.FormatId +func (x *GenerateEndDeviceQRCodeRequest) GetFormatId() string { + if x != nil { + return x.FormatId } return "" } -func (m *GenerateEndDeviceQRCodeRequest) GetEndDevice() *EndDevice { - if m != nil { - return m.EndDevice +func (x *GenerateEndDeviceQRCodeRequest) GetEndDevice() *EndDevice { + if x != nil { + return x.EndDevice } return nil } -func (m *GenerateEndDeviceQRCodeRequest) GetImage() *GenerateEndDeviceQRCodeRequest_Image { - if m != nil { - return m.Image +func (x *GenerateEndDeviceQRCodeRequest) GetImage() *GenerateEndDeviceQRCodeRequest_Image { + if x != nil { + return x.Image } return nil } -type GenerateEndDeviceQRCodeRequest_Image struct { - // Requested QR code image dimension in pixels. - ImageSize uint32 `protobuf:"varint,1,opt,name=image_size,json=imageSize,proto3" json:"image_size,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +type GenerateQRCodeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GenerateEndDeviceQRCodeRequest_Image) Reset() { *m = GenerateEndDeviceQRCodeRequest_Image{} } -func (m *GenerateEndDeviceQRCodeRequest_Image) String() string { return proto.CompactTextString(m) } -func (*GenerateEndDeviceQRCodeRequest_Image) ProtoMessage() {} -func (*GenerateEndDeviceQRCodeRequest_Image) Descriptor() ([]byte, []int) { - return fileDescriptor_f400aed11530ba72, []int{3, 0} -} -func (m *GenerateEndDeviceQRCodeRequest_Image) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GenerateEndDeviceQRCodeRequest_Image.Unmarshal(m, b) -} -func (m *GenerateEndDeviceQRCodeRequest_Image) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GenerateEndDeviceQRCodeRequest_Image.Marshal(b, m, deterministic) -} -func (m *GenerateEndDeviceQRCodeRequest_Image) XXX_Merge(src proto.Message) { - xxx_messageInfo_GenerateEndDeviceQRCodeRequest_Image.Merge(m, src) + // Text representation of the QR code contents. + Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` + // QR code in PNG format, if requested. + Image *Picture `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"` } -func (m *GenerateEndDeviceQRCodeRequest_Image) XXX_Size() int { - return xxx_messageInfo_GenerateEndDeviceQRCodeRequest_Image.Size(m) + +func (x *GenerateQRCodeResponse) Reset() { + *x = GenerateQRCodeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GenerateEndDeviceQRCodeRequest_Image) XXX_DiscardUnknown() { - xxx_messageInfo_GenerateEndDeviceQRCodeRequest_Image.DiscardUnknown(m) + +func (x *GenerateQRCodeResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_GenerateEndDeviceQRCodeRequest_Image proto.InternalMessageInfo +func (*GenerateQRCodeResponse) ProtoMessage() {} -func (m *GenerateEndDeviceQRCodeRequest_Image) GetImageSize() uint32 { - if m != nil { - return m.ImageSize +func (x *GenerateQRCodeResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -type GenerateQRCodeResponse struct { - // Text representation of the QR code contents. - Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` - // QR code in PNG format, if requested. - Image *Picture `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GenerateQRCodeResponse) Reset() { *m = GenerateQRCodeResponse{} } -func (m *GenerateQRCodeResponse) String() string { return proto.CompactTextString(m) } -func (*GenerateQRCodeResponse) ProtoMessage() {} +// Deprecated: Use GenerateQRCodeResponse.ProtoReflect.Descriptor instead. func (*GenerateQRCodeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f400aed11530ba72, []int{4} -} -func (m *GenerateQRCodeResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GenerateQRCodeResponse.Unmarshal(m, b) -} -func (m *GenerateQRCodeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GenerateQRCodeResponse.Marshal(b, m, deterministic) -} -func (m *GenerateQRCodeResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GenerateQRCodeResponse.Merge(m, src) -} -func (m *GenerateQRCodeResponse) XXX_Size() int { - return xxx_messageInfo_GenerateQRCodeResponse.Size(m) -} -func (m *GenerateQRCodeResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GenerateQRCodeResponse.DiscardUnknown(m) + return file_lorawan_stack_api_qrcodegenerator_proto_rawDescGZIP(), []int{4} } -var xxx_messageInfo_GenerateQRCodeResponse proto.InternalMessageInfo - -func (m *GenerateQRCodeResponse) GetText() string { - if m != nil { - return m.Text +func (x *GenerateQRCodeResponse) GetText() string { + if x != nil { + return x.Text } return "" } -func (m *GenerateQRCodeResponse) GetImage() *Picture { - if m != nil { - return m.Image +func (x *GenerateQRCodeResponse) GetImage() *Picture { + if x != nil { + return x.Image } return nil } type ParseEndDeviceQRCodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // QR code format identifier. // Enumerate available formats with the rpc `ListFormats`. // If this field is not specified, the server will attempt to parse the data with each known format. FormatId string `protobuf:"bytes,1,opt,name=format_id,json=formatId,proto3" json:"format_id,omitempty"` // Raw QR code contents. - QrCode []byte `protobuf:"bytes,2,opt,name=qr_code,json=qrCode,proto3" json:"qr_code,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + QrCode []byte `protobuf:"bytes,2,opt,name=qr_code,json=qrCode,proto3" json:"qr_code,omitempty"` } -func (m *ParseEndDeviceQRCodeRequest) Reset() { *m = ParseEndDeviceQRCodeRequest{} } -func (m *ParseEndDeviceQRCodeRequest) String() string { return proto.CompactTextString(m) } -func (*ParseEndDeviceQRCodeRequest) ProtoMessage() {} -func (*ParseEndDeviceQRCodeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f400aed11530ba72, []int{5} -} -func (m *ParseEndDeviceQRCodeRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ParseEndDeviceQRCodeRequest.Unmarshal(m, b) -} -func (m *ParseEndDeviceQRCodeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ParseEndDeviceQRCodeRequest.Marshal(b, m, deterministic) -} -func (m *ParseEndDeviceQRCodeRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ParseEndDeviceQRCodeRequest.Merge(m, src) -} -func (m *ParseEndDeviceQRCodeRequest) XXX_Size() int { - return xxx_messageInfo_ParseEndDeviceQRCodeRequest.Size(m) -} -func (m *ParseEndDeviceQRCodeRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ParseEndDeviceQRCodeRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ParseEndDeviceQRCodeRequest proto.InternalMessageInfo - -func (m *ParseEndDeviceQRCodeRequest) GetFormatId() string { - if m != nil { - return m.FormatId +func (x *ParseEndDeviceQRCodeRequest) Reset() { + *x = ParseEndDeviceQRCodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (m *ParseEndDeviceQRCodeRequest) GetQrCode() []byte { - if m != nil { - return m.QrCode - } - return nil +func (x *ParseEndDeviceQRCodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -type ParseEndDeviceQRCodeResponse struct { - // Identifier of the format used to successfully parse the QR code data. - FormatId string `protobuf:"bytes,1,opt,name=format_id,json=formatId,proto3" json:"format_id,omitempty"` - EndDeviceTemplate *EndDeviceTemplate `protobuf:"bytes,2,opt,name=end_device_template,json=endDeviceTemplate,proto3" json:"end_device_template,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} +func (*ParseEndDeviceQRCodeRequest) ProtoMessage() {} -func (m *ParseEndDeviceQRCodeResponse) Reset() { *m = ParseEndDeviceQRCodeResponse{} } -func (m *ParseEndDeviceQRCodeResponse) String() string { return proto.CompactTextString(m) } -func (*ParseEndDeviceQRCodeResponse) ProtoMessage() {} -func (*ParseEndDeviceQRCodeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f400aed11530ba72, []int{6} -} -func (m *ParseEndDeviceQRCodeResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ParseEndDeviceQRCodeResponse.Unmarshal(m, b) -} -func (m *ParseEndDeviceQRCodeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ParseEndDeviceQRCodeResponse.Marshal(b, m, deterministic) -} -func (m *ParseEndDeviceQRCodeResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ParseEndDeviceQRCodeResponse.Merge(m, src) -} -func (m *ParseEndDeviceQRCodeResponse) XXX_Size() int { - return xxx_messageInfo_ParseEndDeviceQRCodeResponse.Size(m) -} -func (m *ParseEndDeviceQRCodeResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ParseEndDeviceQRCodeResponse.DiscardUnknown(m) +func (x *ParseEndDeviceQRCodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ParseEndDeviceQRCodeResponse proto.InternalMessageInfo +// Deprecated: Use ParseEndDeviceQRCodeRequest.ProtoReflect.Descriptor instead. +func (*ParseEndDeviceQRCodeRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_qrcodegenerator_proto_rawDescGZIP(), []int{5} +} -func (m *ParseEndDeviceQRCodeResponse) GetFormatId() string { - if m != nil { - return m.FormatId +func (x *ParseEndDeviceQRCodeRequest) GetFormatId() string { + if x != nil { + return x.FormatId } return "" } -func (m *ParseEndDeviceQRCodeResponse) GetEndDeviceTemplate() *EndDeviceTemplate { - if m != nil { - return m.EndDeviceTemplate +func (x *ParseEndDeviceQRCodeRequest) GetQrCode() []byte { + if x != nil { + return x.QrCode } return nil } -func init() { - proto.RegisterType((*QRCodeFormat)(nil), "ttn.lorawan.v3.QRCodeFormat") - golang_proto.RegisterType((*QRCodeFormat)(nil), "ttn.lorawan.v3.QRCodeFormat") - proto.RegisterType((*QRCodeFormats)(nil), "ttn.lorawan.v3.QRCodeFormats") - golang_proto.RegisterType((*QRCodeFormats)(nil), "ttn.lorawan.v3.QRCodeFormats") - proto.RegisterMapType((map[string]*QRCodeFormat)(nil), "ttn.lorawan.v3.QRCodeFormats.FormatsEntry") - golang_proto.RegisterMapType((map[string]*QRCodeFormat)(nil), "ttn.lorawan.v3.QRCodeFormats.FormatsEntry") - proto.RegisterType((*GetQRCodeFormatRequest)(nil), "ttn.lorawan.v3.GetQRCodeFormatRequest") - golang_proto.RegisterType((*GetQRCodeFormatRequest)(nil), "ttn.lorawan.v3.GetQRCodeFormatRequest") - proto.RegisterType((*GenerateEndDeviceQRCodeRequest)(nil), "ttn.lorawan.v3.GenerateEndDeviceQRCodeRequest") - golang_proto.RegisterType((*GenerateEndDeviceQRCodeRequest)(nil), "ttn.lorawan.v3.GenerateEndDeviceQRCodeRequest") - proto.RegisterType((*GenerateEndDeviceQRCodeRequest_Image)(nil), "ttn.lorawan.v3.GenerateEndDeviceQRCodeRequest.Image") - golang_proto.RegisterType((*GenerateEndDeviceQRCodeRequest_Image)(nil), "ttn.lorawan.v3.GenerateEndDeviceQRCodeRequest.Image") - proto.RegisterType((*GenerateQRCodeResponse)(nil), "ttn.lorawan.v3.GenerateQRCodeResponse") - golang_proto.RegisterType((*GenerateQRCodeResponse)(nil), "ttn.lorawan.v3.GenerateQRCodeResponse") - proto.RegisterType((*ParseEndDeviceQRCodeRequest)(nil), "ttn.lorawan.v3.ParseEndDeviceQRCodeRequest") - golang_proto.RegisterType((*ParseEndDeviceQRCodeRequest)(nil), "ttn.lorawan.v3.ParseEndDeviceQRCodeRequest") - proto.RegisterType((*ParseEndDeviceQRCodeResponse)(nil), "ttn.lorawan.v3.ParseEndDeviceQRCodeResponse") - golang_proto.RegisterType((*ParseEndDeviceQRCodeResponse)(nil), "ttn.lorawan.v3.ParseEndDeviceQRCodeResponse") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/qrcodegenerator.proto", fileDescriptor_f400aed11530ba72) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/qrcodegenerator.proto", fileDescriptor_f400aed11530ba72) -} - -var fileDescriptor_f400aed11530ba72 = []byte{ - // 910 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x41, 0x6f, 0x1b, 0x45, - 0x14, 0xd6, 0x38, 0x71, 0x1d, 0x8f, 0x53, 0x14, 0x06, 0x51, 0x96, 0x4d, 0x9a, 0xba, 0x4b, 0x9a, - 0x38, 0x4e, 0x76, 0x17, 0x36, 0x20, 0xd1, 0x5c, 0x2a, 0x96, 0xa6, 0x56, 0x51, 0x91, 0xda, 0x85, - 0x03, 0x6a, 0xd4, 0x58, 0x13, 0xef, 0x64, 0xb3, 0xb2, 0xbd, 0xb3, 0x9e, 0x1d, 0xbb, 0x75, 0x4a, - 0x25, 0x84, 0x38, 0x81, 0xc4, 0x01, 0x6e, 0xfc, 0x04, 0x7e, 0x00, 0x67, 0x8e, 0x9c, 0xb8, 0x70, - 0xe6, 0x04, 0x07, 0x7e, 0x83, 0x4f, 0x68, 0x67, 0x66, 0x13, 0xdb, 0x1b, 0x5b, 0x41, 0xe2, 0xe4, - 0xd9, 0x79, 0xdf, 0xbc, 0xf7, 0xbd, 0xf7, 0xbd, 0xf7, 0x0c, 0xb7, 0x3a, 0x94, 0xe1, 0xe7, 0x38, - 0x32, 0x13, 0x8e, 0x5b, 0x6d, 0x1b, 0xc7, 0xa1, 0xdd, 0x63, 0x2d, 0xea, 0x93, 0x80, 0x44, 0x84, - 0x61, 0x4e, 0x99, 0x15, 0x33, 0xca, 0x29, 0x7a, 0x8d, 0xf3, 0xc8, 0x52, 0x60, 0x6b, 0xb0, 0xa7, - 0x7f, 0x14, 0x84, 0xfc, 0xb4, 0x7f, 0x6c, 0xb5, 0x68, 0xd7, 0x26, 0xd1, 0x80, 0x0e, 0x63, 0x46, - 0x5f, 0x0c, 0x6d, 0x01, 0x6e, 0x99, 0x01, 0x89, 0xcc, 0x01, 0xee, 0x84, 0x3e, 0xe6, 0xc4, 0xce, - 0x1d, 0xa4, 0x4b, 0xdd, 0x1c, 0x73, 0x11, 0xd0, 0x80, 0xca, 0xc7, 0xc7, 0xfd, 0x13, 0xf1, 0x25, - 0x3e, 0xc4, 0x49, 0xc1, 0xd7, 0x02, 0x4a, 0x83, 0x0e, 0x11, 0x1c, 0x71, 0x14, 0x51, 0x8e, 0x79, - 0x48, 0xa3, 0x44, 0x59, 0x57, 0x95, 0xf5, 0xdc, 0x07, 0xe9, 0xc6, 0x7c, 0xa8, 0x8c, 0xd5, 0x69, - 0xe3, 0x49, 0x48, 0x3a, 0x7e, 0xb3, 0x8b, 0x93, 0xb6, 0x42, 0x18, 0xf9, 0x3a, 0x90, 0xc8, 0x6f, - 0xfa, 0x64, 0x10, 0xb6, 0x32, 0xbe, 0xb7, 0xf2, 0x98, 0x38, 0x6c, 0xf1, 0x3e, 0x53, 0x00, 0xe3, - 0x07, 0x00, 0x97, 0x9f, 0x78, 0x1f, 0x53, 0x9f, 0x3c, 0xa0, 0xac, 0x8b, 0x39, 0x5a, 0x85, 0x8b, - 0x11, 0xee, 0x12, 0x0d, 0x54, 0x41, 0xad, 0xec, 0x96, 0x46, 0xee, 0x22, 0x2b, 0x68, 0xbe, 0x27, - 0x2e, 0x51, 0x1d, 0x56, 0x7c, 0x92, 0xb4, 0x58, 0x18, 0xa7, 0x79, 0x68, 0x05, 0x81, 0x59, 0x1a, - 0xb9, 0x45, 0xb6, 0xa0, 0xfd, 0x06, 0xbc, 0x71, 0x23, 0xba, 0x0b, 0xe1, 0x05, 0x65, 0x6d, 0xa1, - 0x0a, 0x6a, 0x15, 0x47, 0xb7, 0x64, 0x56, 0x56, 0x96, 0x95, 0xf5, 0x20, 0x85, 0x7c, 0x8a, 0x93, - 0xb6, 0x57, 0x3e, 0xc9, 0x8e, 0xc6, 0x9f, 0x00, 0x5e, 0x1f, 0x27, 0x95, 0x20, 0x06, 0x4b, 0x27, - 0xf2, 0xa8, 0x81, 0xea, 0x42, 0xad, 0xe2, 0xd4, 0xad, 0x49, 0x71, 0xad, 0x09, 0xbc, 0xa5, 0x7e, - 0x0f, 0x22, 0xce, 0x86, 0xee, 0xee, 0xc8, 0xdd, 0xfe, 0x09, 0x6c, 0x1a, 0x1b, 0xcc, 0xd0, 0x36, - 0x9c, 0xf5, 0xa3, 0x43, 0x6c, 0x9e, 0xbd, 0x6b, 0xde, 0x7d, 0x56, 0xbb, 0xb7, 0x7f, 0x68, 0x3e, - 0xbb, 0x97, 0x7d, 0x6e, 0xbf, 0x74, 0x76, 0x5f, 0x6d, 0x78, 0x59, 0x20, 0xfd, 0x0b, 0xb8, 0x3c, - 0xee, 0x06, 0xad, 0xc0, 0x85, 0x36, 0x19, 0xca, 0xc2, 0x78, 0xe9, 0x11, 0x39, 0xb0, 0x38, 0xc0, - 0x9d, 0x3e, 0x11, 0x85, 0xa8, 0x38, 0x6b, 0xf3, 0x38, 0x79, 0x12, 0xba, 0x5f, 0xf8, 0x10, 0x18, - 0x47, 0xf0, 0x46, 0x83, 0xf0, 0x09, 0x2b, 0xe9, 0xf5, 0x49, 0xc2, 0xd1, 0x7d, 0x58, 0x96, 0xe1, - 0x9b, 0xa1, 0xaf, 0x24, 0xd8, 0x1a, 0xb9, 0x57, 0x23, 0xbe, 0x24, 0x5f, 0x3e, 0xf4, 0x8d, 0x9f, - 0x0b, 0x70, 0xbd, 0x21, 0x87, 0x81, 0x1c, 0x44, 0xfe, 0x7d, 0xd1, 0x11, 0x32, 0xdc, 0xff, 0x1a, - 0x08, 0xb9, 0x10, 0x5e, 0xb4, 0x9c, 0xaa, 0xc2, 0xdb, 0xd3, 0x55, 0x38, 0x67, 0x20, 0x3a, 0xe5, - 0x5b, 0x50, 0x58, 0x01, 0x5e, 0x99, 0x64, 0x97, 0xe8, 0x13, 0x58, 0x0c, 0xbb, 0x38, 0x20, 0xaa, - 0x45, 0xde, 0x9f, 0x7e, 0x3e, 0x3f, 0x11, 0xeb, 0x61, 0xfa, 0xd6, 0x93, 0x2e, 0x74, 0x07, 0x16, - 0xc5, 0x37, 0xda, 0x86, 0x50, 0xdc, 0x34, 0x93, 0xf0, 0x4c, 0xf6, 0xf2, 0x75, 0x17, 0x8e, 0xdc, - 0x52, 0xbd, 0xa8, 0xfd, 0x53, 0xaa, 0x41, 0xaf, 0x2c, 0xac, 0x9f, 0x85, 0x67, 0xc4, 0x38, 0x4c, - 0xc5, 0x90, 0x21, 0x32, 0xcf, 0x49, 0x4c, 0xa3, 0x84, 0x20, 0x04, 0x17, 0x39, 0x79, 0xc1, 0x95, - 0xe2, 0xe2, 0x8c, 0xcc, 0x8c, 0xad, 0x4c, 0xf6, 0xad, 0x69, 0xb6, 0x8f, 0xe5, 0x74, 0x29, 0x42, - 0xc6, 0x77, 0x00, 0xae, 0x3e, 0xc6, 0x2c, 0x99, 0x25, 0x43, 0x23, 0x2f, 0x43, 0x7d, 0xe4, 0x6e, - 0xb1, 0x3b, 0xda, 0x86, 0x73, 0x7b, 0xbe, 0x0c, 0x5f, 0x1e, 0x8d, 0x2b, 0xf1, 0x0e, 0x2c, 0xf5, - 0x58, 0x33, 0xdd, 0x82, 0x82, 0xd9, 0xb2, 0xc8, 0xf6, 0xac, 0xb8, 0x02, 0xb5, 0xaf, 0x96, 0xbc, - 0x6b, 0x3d, 0x96, 0x06, 0x35, 0xbe, 0x07, 0x70, 0xed, 0x72, 0x36, 0x2a, 0xe3, 0xd5, 0x1c, 0x9d, - 0xb1, 0x10, 0x4f, 0xe0, 0x1b, 0x17, 0x62, 0x37, 0x39, 0xe9, 0xc6, 0x1d, 0xcc, 0xb3, 0x42, 0xdc, - 0x9e, 0xa9, 0xfa, 0xe7, 0x0a, 0xe8, 0xbd, 0x4e, 0xa6, 0xaf, 0x9c, 0xdf, 0x17, 0xa1, 0x36, 0xc5, - 0xa5, 0x91, 0x2d, 0x71, 0xf4, 0x0d, 0x80, 0xe5, 0x06, 0xe1, 0x6a, 0x2f, 0x6d, 0xe6, 0xfb, 0xe2, - 0xb2, 0x09, 0xd2, 0xe7, 0x0e, 0xa1, 0xf1, 0xde, 0xd7, 0x7f, 0xfc, 0xfd, 0x63, 0x61, 0x07, 0x6d, - 0xdb, 0x3d, 0x66, 0xa6, 0xd5, 0x4a, 0xd2, 0x9d, 0x69, 0xca, 0x9c, 0x12, 0x5b, 0x8d, 0xbe, 0xfd, - 0xf2, 0xbc, 0x0a, 0xaf, 0x50, 0x1b, 0x56, 0x1e, 0x85, 0x09, 0xcf, 0x36, 0xd1, 0x8d, 0xdc, 0x0a, - 0x3b, 0x48, 0xb7, 0xb6, 0x7e, 0x73, 0xee, 0x42, 0x32, 0xee, 0x88, 0xc0, 0xb7, 0xd0, 0xcd, 0xb9, - 0x81, 0xd3, 0x9c, 0x97, 0xb2, 0x6e, 0x44, 0xd6, 0x7f, 0x1b, 0x05, 0x7d, 0x73, 0x16, 0x7e, 0x52, - 0x65, 0xa3, 0x2a, 0xb8, 0xe8, 0xc6, 0x9b, 0x97, 0x72, 0xd9, 0x07, 0x75, 0xf4, 0x0b, 0x80, 0x45, - 0xd1, 0x28, 0x68, 0x27, 0xd7, 0xe0, 0xb3, 0xbb, 0x59, 0xdf, 0xbd, 0x1a, 0x58, 0xd1, 0xf0, 0x04, - 0x8d, 0x47, 0x86, 0x9e, 0xd1, 0x98, 0xa8, 0x48, 0x9c, 0x3e, 0xdd, 0x07, 0xf5, 0xa7, 0x3b, 0xc6, - 0xe6, 0xa5, 0x80, 0x31, 0x8d, 0xce, 0xc1, 0xee, 0x07, 0xbf, 0xfe, 0xb5, 0x0e, 0x9e, 0xda, 0x01, - 0xb5, 0xf8, 0x29, 0xe1, 0xa7, 0x61, 0x14, 0x24, 0x56, 0x44, 0xf8, 0x73, 0xca, 0xda, 0xf6, 0xe4, - 0x5f, 0xe1, 0x60, 0xcf, 0x8e, 0xdb, 0x81, 0xcd, 0x79, 0x14, 0x1f, 0x1f, 0x5f, 0x13, 0x62, 0xee, - 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x4e, 0x21, 0x59, 0xbe, 0x5b, 0x08, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// EndDeviceQRCodeGeneratorClient is the client API for EndDeviceQRCodeGenerator service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type EndDeviceQRCodeGeneratorClient interface { - // Return the QR code format. - GetFormat(ctx context.Context, in *GetQRCodeFormatRequest, opts ...grpc.CallOption) (*QRCodeFormat, error) - // Returns the supported formats. - ListFormats(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*QRCodeFormats, error) - // Generates a QR code. - Generate(ctx context.Context, in *GenerateEndDeviceQRCodeRequest, opts ...grpc.CallOption) (*GenerateQRCodeResponse, error) - // Parse QR Codes of known formats and return the information contained within. - Parse(ctx context.Context, in *ParseEndDeviceQRCodeRequest, opts ...grpc.CallOption) (*ParseEndDeviceQRCodeResponse, error) +type ParseEndDeviceQRCodeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Identifier of the format used to successfully parse the QR code data. + FormatId string `protobuf:"bytes,1,opt,name=format_id,json=formatId,proto3" json:"format_id,omitempty"` + EndDeviceTemplate *EndDeviceTemplate `protobuf:"bytes,2,opt,name=end_device_template,json=endDeviceTemplate,proto3" json:"end_device_template,omitempty"` } -type endDeviceQRCodeGeneratorClient struct { - cc *grpc.ClientConn +func (x *ParseEndDeviceQRCodeResponse) Reset() { + *x = ParseEndDeviceQRCodeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func NewEndDeviceQRCodeGeneratorClient(cc *grpc.ClientConn) EndDeviceQRCodeGeneratorClient { - return &endDeviceQRCodeGeneratorClient{cc} +func (x *ParseEndDeviceQRCodeResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (c *endDeviceQRCodeGeneratorClient) GetFormat(ctx context.Context, in *GetQRCodeFormatRequest, opts ...grpc.CallOption) (*QRCodeFormat, error) { - out := new(QRCodeFormat) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/GetFormat", in, out, opts...) - if err != nil { - return nil, err +func (*ParseEndDeviceQRCodeResponse) ProtoMessage() {} + +func (x *ParseEndDeviceQRCodeResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return out, nil + return mi.MessageOf(x) } -func (c *endDeviceQRCodeGeneratorClient) ListFormats(ctx context.Context, in *types.Empty, opts ...grpc.CallOption) (*QRCodeFormats, error) { - out := new(QRCodeFormats) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/ListFormats", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// Deprecated: Use ParseEndDeviceQRCodeResponse.ProtoReflect.Descriptor instead. +func (*ParseEndDeviceQRCodeResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_qrcodegenerator_proto_rawDescGZIP(), []int{6} } -func (c *endDeviceQRCodeGeneratorClient) Generate(ctx context.Context, in *GenerateEndDeviceQRCodeRequest, opts ...grpc.CallOption) (*GenerateQRCodeResponse, error) { - out := new(GenerateQRCodeResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/Generate", in, out, opts...) - if err != nil { - return nil, err +func (x *ParseEndDeviceQRCodeResponse) GetFormatId() string { + if x != nil { + return x.FormatId } - return out, nil + return "" } -func (c *endDeviceQRCodeGeneratorClient) Parse(ctx context.Context, in *ParseEndDeviceQRCodeRequest, opts ...grpc.CallOption) (*ParseEndDeviceQRCodeResponse, error) { - out := new(ParseEndDeviceQRCodeResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/Parse", in, out, opts...) - if err != nil { - return nil, err +func (x *ParseEndDeviceQRCodeResponse) GetEndDeviceTemplate() *EndDeviceTemplate { + if x != nil { + return x.EndDeviceTemplate } - return out, nil + return nil } -// EndDeviceQRCodeGeneratorServer is the server API for EndDeviceQRCodeGenerator service. -type EndDeviceQRCodeGeneratorServer interface { - // Return the QR code format. - GetFormat(context.Context, *GetQRCodeFormatRequest) (*QRCodeFormat, error) - // Returns the supported formats. - ListFormats(context.Context, *types.Empty) (*QRCodeFormats, error) - // Generates a QR code. - Generate(context.Context, *GenerateEndDeviceQRCodeRequest) (*GenerateQRCodeResponse, error) - // Parse QR Codes of known formats and return the information contained within. - Parse(context.Context, *ParseEndDeviceQRCodeRequest) (*ParseEndDeviceQRCodeResponse, error) -} +type GenerateEndDeviceQRCodeRequest_Image struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -// UnimplementedEndDeviceQRCodeGeneratorServer can be embedded to have forward compatible implementations. -type UnimplementedEndDeviceQRCodeGeneratorServer struct { + // Requested QR code image dimension in pixels. + ImageSize uint32 `protobuf:"varint,1,opt,name=image_size,json=imageSize,proto3" json:"image_size,omitempty"` } -func (*UnimplementedEndDeviceQRCodeGeneratorServer) GetFormat(ctx context.Context, req *GetQRCodeFormatRequest) (*QRCodeFormat, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetFormat not implemented") -} -func (*UnimplementedEndDeviceQRCodeGeneratorServer) ListFormats(ctx context.Context, req *types.Empty) (*QRCodeFormats, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListFormats not implemented") -} -func (*UnimplementedEndDeviceQRCodeGeneratorServer) Generate(ctx context.Context, req *GenerateEndDeviceQRCodeRequest) (*GenerateQRCodeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Generate not implemented") -} -func (*UnimplementedEndDeviceQRCodeGeneratorServer) Parse(ctx context.Context, req *ParseEndDeviceQRCodeRequest) (*ParseEndDeviceQRCodeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Parse not implemented") +func (x *GenerateEndDeviceQRCodeRequest_Image) Reset() { + *x = GenerateEndDeviceQRCodeRequest_Image{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func RegisterEndDeviceQRCodeGeneratorServer(s *grpc.Server, srv EndDeviceQRCodeGeneratorServer) { - s.RegisterService(&_EndDeviceQRCodeGenerator_serviceDesc, srv) +func (x *GenerateEndDeviceQRCodeRequest_Image) String() string { + return protoimpl.X.MessageStringOf(x) } -func _EndDeviceQRCodeGenerator_GetFormat_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetQRCodeFormatRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceQRCodeGeneratorServer).GetFormat(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/GetFormat", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceQRCodeGeneratorServer).GetFormat(ctx, req.(*GetQRCodeFormatRequest)) - } - return interceptor(ctx, in, info, handler) -} +func (*GenerateEndDeviceQRCodeRequest_Image) ProtoMessage() {} -func _EndDeviceQRCodeGenerator_ListFormats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceQRCodeGeneratorServer).ListFormats(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/ListFormats", +func (x *GenerateEndDeviceQRCodeRequest_Image) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceQRCodeGeneratorServer).ListFormats(ctx, req.(*types.Empty)) - } - return interceptor(ctx, in, info, handler) + return mi.MessageOf(x) } -func _EndDeviceQRCodeGenerator_Generate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GenerateEndDeviceQRCodeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceQRCodeGeneratorServer).Generate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/Generate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceQRCodeGeneratorServer).Generate(ctx, req.(*GenerateEndDeviceQRCodeRequest)) - } - return interceptor(ctx, in, info, handler) +// Deprecated: Use GenerateEndDeviceQRCodeRequest_Image.ProtoReflect.Descriptor instead. +func (*GenerateEndDeviceQRCodeRequest_Image) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_qrcodegenerator_proto_rawDescGZIP(), []int{3, 0} } -func _EndDeviceQRCodeGenerator_Parse_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ParseEndDeviceQRCodeRequest) - if err := dec(in); err != nil { - return nil, err +func (x *GenerateEndDeviceQRCodeRequest_Image) GetImageSize() uint32 { + if x != nil { + return x.ImageSize } - if interceptor == nil { - return srv.(EndDeviceQRCodeGeneratorServer).Parse(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/Parse", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceQRCodeGeneratorServer).Parse(ctx, req.(*ParseEndDeviceQRCodeRequest)) - } - return interceptor(ctx, in, info, handler) + return 0 } -var _EndDeviceQRCodeGenerator_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.EndDeviceQRCodeGenerator", - HandlerType: (*EndDeviceQRCodeGeneratorServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetFormat", - Handler: _EndDeviceQRCodeGenerator_GetFormat_Handler, - }, - { - MethodName: "ListFormats", - Handler: _EndDeviceQRCodeGenerator_ListFormats_Handler, - }, - { - MethodName: "Generate", - Handler: _EndDeviceQRCodeGenerator_Generate_Handler, - }, - { - MethodName: "Parse", - Handler: _EndDeviceQRCodeGenerator_Parse_Handler, +var File_lorawan_stack_api_qrcodegenerator_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_qrcodegenerator_proto_rawDesc = []byte{ + 0x0a, 0x27, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x71, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x92, 0x01, + 0x0a, 0x0c, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1b, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x22, 0xdd, 0x01, 0x0a, 0x0d, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x73, 0x12, 0x72, 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x2c, 0xfa, 0x42, 0x29, 0x9a, 0x01, 0x26, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, + 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, + 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, + 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x1a, 0x58, 0x0a, 0x0c, 0x46, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x51, 0x52, 0x43, 0x6f, 0x64, + 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x5e, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x09, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x49, 0x64, 0x22, 0xaa, 0x02, 0x0a, 0x1e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, + 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, + 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, + 0x24, 0x52, 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0a, 0x65, + 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x4a, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x1a, 0x32, 0x0a, 0x05, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, + 0xe8, 0x07, 0x28, 0x0a, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, + 0x5b, 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2d, 0x0a, + 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, + 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x8b, 0x01, 0x0a, + 0x1b, 0x50, 0x61, 0x72, 0x73, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, + 0x52, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x08, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x07, 0x71, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x7a, 0x05, 0x10, 0x0a, 0x18, + 0x80, 0x08, 0x52, 0x06, 0x71, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x1c, 0x50, + 0x61, 0x72, 0x73, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, 0x43, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x11, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x32, 0xce, 0x04, 0x0a, 0x18, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x84, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x52, 0x43, 0x6f, 0x64, + 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x31, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x71, 0x72, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x2f, + 0x65, 0x6e, 0x64, 0x2d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, + 0x6b, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x73, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, + 0x71, 0x72, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x65, 0x6e, 0x64, 0x2d, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x84, 0x01, 0x0a, + 0x08, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, 0x43, 0x6f, + 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x71, 0x72, 0x2d, 0x63, + 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x65, 0x6e, 0x64, 0x2d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x3a, 0x01, 0x2a, 0x12, 0xb6, 0x01, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x73, 0x65, 0x12, 0x2b, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, + 0x61, 0x72, 0x73, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, 0x43, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x72, 0x73, + 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, + 0x22, 0x1a, 0x2f, 0x71, 0x72, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x2f, 0x65, 0x6e, 0x64, 0x2d, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x3a, 0x01, 0x2a, 0x5a, + 0x2b, 0x22, 0x26, 0x2f, 0x71, 0x72, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x2f, 0x65, 0x6e, 0x64, 0x2d, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x3a, 0x01, 0x2a, 0x42, 0x35, 0x5a, 0x2f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, + 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_qrcodegenerator_proto_rawDescOnce sync.Once + file_lorawan_stack_api_qrcodegenerator_proto_rawDescData = file_lorawan_stack_api_qrcodegenerator_proto_rawDesc +) + +func file_lorawan_stack_api_qrcodegenerator_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_qrcodegenerator_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_qrcodegenerator_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_qrcodegenerator_proto_rawDescData) + }) + return file_lorawan_stack_api_qrcodegenerator_proto_rawDescData +} + +var file_lorawan_stack_api_qrcodegenerator_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_lorawan_stack_api_qrcodegenerator_proto_goTypes = []interface{}{ + (*QRCodeFormat)(nil), // 0: ttn.lorawan.v3.QRCodeFormat + (*QRCodeFormats)(nil), // 1: ttn.lorawan.v3.QRCodeFormats + (*GetQRCodeFormatRequest)(nil), // 2: ttn.lorawan.v3.GetQRCodeFormatRequest + (*GenerateEndDeviceQRCodeRequest)(nil), // 3: ttn.lorawan.v3.GenerateEndDeviceQRCodeRequest + (*GenerateQRCodeResponse)(nil), // 4: ttn.lorawan.v3.GenerateQRCodeResponse + (*ParseEndDeviceQRCodeRequest)(nil), // 5: ttn.lorawan.v3.ParseEndDeviceQRCodeRequest + (*ParseEndDeviceQRCodeResponse)(nil), // 6: ttn.lorawan.v3.ParseEndDeviceQRCodeResponse + nil, // 7: ttn.lorawan.v3.QRCodeFormats.FormatsEntry + (*GenerateEndDeviceQRCodeRequest_Image)(nil), // 8: ttn.lorawan.v3.GenerateEndDeviceQRCodeRequest.Image + (*fieldmaskpb.FieldMask)(nil), // 9: google.protobuf.FieldMask + (*EndDevice)(nil), // 10: ttn.lorawan.v3.EndDevice + (*Picture)(nil), // 11: ttn.lorawan.v3.Picture + (*EndDeviceTemplate)(nil), // 12: ttn.lorawan.v3.EndDeviceTemplate + (*emptypb.Empty)(nil), // 13: google.protobuf.Empty +} +var file_lorawan_stack_api_qrcodegenerator_proto_depIdxs = []int32{ + 9, // 0: ttn.lorawan.v3.QRCodeFormat.field_mask:type_name -> google.protobuf.FieldMask + 7, // 1: ttn.lorawan.v3.QRCodeFormats.formats:type_name -> ttn.lorawan.v3.QRCodeFormats.FormatsEntry + 10, // 2: ttn.lorawan.v3.GenerateEndDeviceQRCodeRequest.end_device:type_name -> ttn.lorawan.v3.EndDevice + 8, // 3: ttn.lorawan.v3.GenerateEndDeviceQRCodeRequest.image:type_name -> ttn.lorawan.v3.GenerateEndDeviceQRCodeRequest.Image + 11, // 4: ttn.lorawan.v3.GenerateQRCodeResponse.image:type_name -> ttn.lorawan.v3.Picture + 12, // 5: ttn.lorawan.v3.ParseEndDeviceQRCodeResponse.end_device_template:type_name -> ttn.lorawan.v3.EndDeviceTemplate + 0, // 6: ttn.lorawan.v3.QRCodeFormats.FormatsEntry.value:type_name -> ttn.lorawan.v3.QRCodeFormat + 2, // 7: ttn.lorawan.v3.EndDeviceQRCodeGenerator.GetFormat:input_type -> ttn.lorawan.v3.GetQRCodeFormatRequest + 13, // 8: ttn.lorawan.v3.EndDeviceQRCodeGenerator.ListFormats:input_type -> google.protobuf.Empty + 3, // 9: ttn.lorawan.v3.EndDeviceQRCodeGenerator.Generate:input_type -> ttn.lorawan.v3.GenerateEndDeviceQRCodeRequest + 5, // 10: ttn.lorawan.v3.EndDeviceQRCodeGenerator.Parse:input_type -> ttn.lorawan.v3.ParseEndDeviceQRCodeRequest + 0, // 11: ttn.lorawan.v3.EndDeviceQRCodeGenerator.GetFormat:output_type -> ttn.lorawan.v3.QRCodeFormat + 1, // 12: ttn.lorawan.v3.EndDeviceQRCodeGenerator.ListFormats:output_type -> ttn.lorawan.v3.QRCodeFormats + 4, // 13: ttn.lorawan.v3.EndDeviceQRCodeGenerator.Generate:output_type -> ttn.lorawan.v3.GenerateQRCodeResponse + 6, // 14: ttn.lorawan.v3.EndDeviceQRCodeGenerator.Parse:output_type -> ttn.lorawan.v3.ParseEndDeviceQRCodeResponse + 11, // [11:15] is the sub-list for method output_type + 7, // [7:11] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_qrcodegenerator_proto_init() } +func file_lorawan_stack_api_qrcodegenerator_proto_init() { + if File_lorawan_stack_api_qrcodegenerator_proto != nil { + return + } + file_lorawan_stack_api_end_device_proto_init() + file_lorawan_stack_api_picture_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QRCodeFormat); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QRCodeFormats); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetQRCodeFormatRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenerateEndDeviceQRCodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenerateQRCodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ParseEndDeviceQRCodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ParseEndDeviceQRCodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_qrcodegenerator_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenerateEndDeviceQRCodeRequest_Image); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_qrcodegenerator_proto_rawDesc, + NumEnums: 0, + NumMessages: 9, + NumExtensions: 0, + NumServices: 1, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/qrcodegenerator.proto", + GoTypes: file_lorawan_stack_api_qrcodegenerator_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_qrcodegenerator_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_qrcodegenerator_proto_msgTypes, + }.Build() + File_lorawan_stack_api_qrcodegenerator_proto = out.File + file_lorawan_stack_api_qrcodegenerator_proto_rawDesc = nil + file_lorawan_stack_api_qrcodegenerator_proto_goTypes = nil + file_lorawan_stack_api_qrcodegenerator_proto_depIdxs = nil } diff --git a/pkg/ttnpb/qrcodegenerator.pb.gw.go b/pkg/ttnpb/qrcodegenerator.pb.gw.go index ecbebc1569..94edb57122 100644 --- a/pkg/ttnpb/qrcodegenerator.pb.gw.go +++ b/pkg/ttnpb/qrcodegenerator.pb.gw.go @@ -13,16 +13,15 @@ import ( "io" "net/http" - "github.com/gogo/protobuf/types" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/emptypb" ) // Suppress "imported and not used" errors @@ -31,7 +30,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join func request_EndDeviceQRCodeGenerator_GetFormat_0(ctx context.Context, marshaler runtime.Marshaler, client EndDeviceQRCodeGeneratorClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -51,7 +49,6 @@ func request_EndDeviceQRCodeGenerator_GetFormat_0(ctx context.Context, marshaler } protoReq.FormatId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "format_id", err) } @@ -78,7 +75,6 @@ func local_request_EndDeviceQRCodeGenerator_GetFormat_0(ctx context.Context, mar } protoReq.FormatId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "format_id", err) } @@ -89,7 +85,7 @@ func local_request_EndDeviceQRCodeGenerator_GetFormat_0(ctx context.Context, mar } func request_EndDeviceQRCodeGenerator_ListFormats_0(ctx context.Context, marshaler runtime.Marshaler, client EndDeviceQRCodeGeneratorClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := client.ListFormats(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -98,7 +94,7 @@ func request_EndDeviceQRCodeGenerator_ListFormats_0(ctx context.Context, marshal } func local_request_EndDeviceQRCodeGenerator_ListFormats_0(ctx context.Context, marshaler runtime.Marshaler, server EndDeviceQRCodeGeneratorServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq types.Empty + var protoReq emptypb.Empty var metadata runtime.ServerMetadata msg, err := server.ListFormats(ctx, &protoReq) @@ -199,7 +195,6 @@ func request_EndDeviceQRCodeGenerator_Parse_1(ctx context.Context, marshaler run } protoReq.FormatId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "format_id", err) } @@ -234,7 +229,6 @@ func local_request_EndDeviceQRCodeGenerator_Parse_1(ctx context.Context, marshal } protoReq.FormatId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "format_id", err) } @@ -256,20 +250,22 @@ func RegisterEndDeviceQRCodeGeneratorHandlerServer(ctx context.Context, mux *run var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/GetFormat", runtime.WithHTTPPathPattern("/qr-codes/end-devices/formats/{format_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceQRCodeGenerator_GetFormat_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceQRCodeGenerator_GetFormat_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceQRCodeGenerator_GetFormat_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceQRCodeGenerator_GetFormat_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -279,20 +275,22 @@ func RegisterEndDeviceQRCodeGeneratorHandlerServer(ctx context.Context, mux *run var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/ListFormats", runtime.WithHTTPPathPattern("/qr-codes/end-devices/formats")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceQRCodeGenerator_ListFormats_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceQRCodeGenerator_ListFormats_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceQRCodeGenerator_ListFormats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceQRCodeGenerator_ListFormats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -302,20 +300,22 @@ func RegisterEndDeviceQRCodeGeneratorHandlerServer(ctx context.Context, mux *run var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/Generate", runtime.WithHTTPPathPattern("/qr-codes/end-devices")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceQRCodeGenerator_Generate_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceQRCodeGenerator_Generate_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceQRCodeGenerator_Generate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceQRCodeGenerator_Generate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -325,20 +325,22 @@ func RegisterEndDeviceQRCodeGeneratorHandlerServer(ctx context.Context, mux *run var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/Parse", runtime.WithHTTPPathPattern("/qr-code/end-devices/parse")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceQRCodeGenerator_Parse_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceQRCodeGenerator_Parse_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceQRCodeGenerator_Parse_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceQRCodeGenerator_Parse_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -348,20 +350,22 @@ func RegisterEndDeviceQRCodeGeneratorHandlerServer(ctx context.Context, mux *run var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/Parse", runtime.WithHTTPPathPattern("/qr-code/end-devices/{format_id}/parse")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceQRCodeGenerator_Parse_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceQRCodeGenerator_Parse_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceQRCodeGenerator_Parse_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceQRCodeGenerator_Parse_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -410,19 +414,21 @@ func RegisterEndDeviceQRCodeGeneratorHandlerClient(ctx context.Context, mux *run ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/GetFormat", runtime.WithHTTPPathPattern("/qr-codes/end-devices/formats/{format_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceQRCodeGenerator_GetFormat_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceQRCodeGenerator_GetFormat_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceQRCodeGenerator_GetFormat_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceQRCodeGenerator_GetFormat_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -430,19 +436,21 @@ func RegisterEndDeviceQRCodeGeneratorHandlerClient(ctx context.Context, mux *run ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/ListFormats", runtime.WithHTTPPathPattern("/qr-codes/end-devices/formats")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceQRCodeGenerator_ListFormats_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceQRCodeGenerator_ListFormats_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceQRCodeGenerator_ListFormats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceQRCodeGenerator_ListFormats_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -450,19 +458,21 @@ func RegisterEndDeviceQRCodeGeneratorHandlerClient(ctx context.Context, mux *run ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/Generate", runtime.WithHTTPPathPattern("/qr-codes/end-devices")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceQRCodeGenerator_Generate_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceQRCodeGenerator_Generate_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceQRCodeGenerator_Generate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceQRCodeGenerator_Generate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -470,19 +480,21 @@ func RegisterEndDeviceQRCodeGeneratorHandlerClient(ctx context.Context, mux *run ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/Parse", runtime.WithHTTPPathPattern("/qr-code/end-devices/parse")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceQRCodeGenerator_Parse_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceQRCodeGenerator_Parse_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceQRCodeGenerator_Parse_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceQRCodeGenerator_Parse_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -490,19 +502,21 @@ func RegisterEndDeviceQRCodeGeneratorHandlerClient(ctx context.Context, mux *run ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/Parse", runtime.WithHTTPPathPattern("/qr-code/end-devices/{format_id}/parse")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceQRCodeGenerator_Parse_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceQRCodeGenerator_Parse_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceQRCodeGenerator_Parse_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceQRCodeGenerator_Parse_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -510,15 +524,15 @@ func RegisterEndDeviceQRCodeGeneratorHandlerClient(ctx context.Context, mux *run } var ( - pattern_EndDeviceQRCodeGenerator_GetFormat_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"qr-codes", "end-devices", "formats", "format_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceQRCodeGenerator_GetFormat_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"qr-codes", "end-devices", "formats", "format_id"}, "")) - pattern_EndDeviceQRCodeGenerator_ListFormats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"qr-codes", "end-devices", "formats"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceQRCodeGenerator_ListFormats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"qr-codes", "end-devices", "formats"}, "")) - pattern_EndDeviceQRCodeGenerator_Generate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"qr-codes", "end-devices"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceQRCodeGenerator_Generate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"qr-codes", "end-devices"}, "")) - pattern_EndDeviceQRCodeGenerator_Parse_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"qr-code", "end-devices", "parse"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceQRCodeGenerator_Parse_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"qr-code", "end-devices", "parse"}, "")) - pattern_EndDeviceQRCodeGenerator_Parse_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"qr-code", "end-devices", "format_id", "parse"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceQRCodeGenerator_Parse_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"qr-code", "end-devices", "format_id", "parse"}, "")) ) var ( diff --git a/pkg/ttnpb/qrcodegenerator.pb.validate.go b/pkg/ttnpb/qrcodegenerator.pb.validate.go index 6e067738b9..2d6bce669e 100644 --- a/pkg/ttnpb/qrcodegenerator.pb.validate.go +++ b/pkg/ttnpb/qrcodegenerator.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _qrcodegenerator_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on QRCodeFormat with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/qrcodegenerator_grpc.pb.go b/pkg/ttnpb/qrcodegenerator_grpc.pb.go new file mode 100644 index 0000000000..bc4a791fd0 --- /dev/null +++ b/pkg/ttnpb/qrcodegenerator_grpc.pb.go @@ -0,0 +1,223 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/qrcodegenerator.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// EndDeviceQRCodeGeneratorClient is the client API for EndDeviceQRCodeGenerator service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type EndDeviceQRCodeGeneratorClient interface { + // Return the QR code format. + GetFormat(ctx context.Context, in *GetQRCodeFormatRequest, opts ...grpc.CallOption) (*QRCodeFormat, error) + // Returns the supported formats. + ListFormats(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*QRCodeFormats, error) + // Generates a QR code. + Generate(ctx context.Context, in *GenerateEndDeviceQRCodeRequest, opts ...grpc.CallOption) (*GenerateQRCodeResponse, error) + // Parse QR Codes of known formats and return the information contained within. + Parse(ctx context.Context, in *ParseEndDeviceQRCodeRequest, opts ...grpc.CallOption) (*ParseEndDeviceQRCodeResponse, error) +} + +type endDeviceQRCodeGeneratorClient struct { + cc grpc.ClientConnInterface +} + +func NewEndDeviceQRCodeGeneratorClient(cc grpc.ClientConnInterface) EndDeviceQRCodeGeneratorClient { + return &endDeviceQRCodeGeneratorClient{cc} +} + +func (c *endDeviceQRCodeGeneratorClient) GetFormat(ctx context.Context, in *GetQRCodeFormatRequest, opts ...grpc.CallOption) (*QRCodeFormat, error) { + out := new(QRCodeFormat) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/GetFormat", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *endDeviceQRCodeGeneratorClient) ListFormats(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*QRCodeFormats, error) { + out := new(QRCodeFormats) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/ListFormats", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *endDeviceQRCodeGeneratorClient) Generate(ctx context.Context, in *GenerateEndDeviceQRCodeRequest, opts ...grpc.CallOption) (*GenerateQRCodeResponse, error) { + out := new(GenerateQRCodeResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/Generate", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *endDeviceQRCodeGeneratorClient) Parse(ctx context.Context, in *ParseEndDeviceQRCodeRequest, opts ...grpc.CallOption) (*ParseEndDeviceQRCodeResponse, error) { + out := new(ParseEndDeviceQRCodeResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/Parse", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// EndDeviceQRCodeGeneratorServer is the server API for EndDeviceQRCodeGenerator service. +// All implementations must embed UnimplementedEndDeviceQRCodeGeneratorServer +// for forward compatibility +type EndDeviceQRCodeGeneratorServer interface { + // Return the QR code format. + GetFormat(context.Context, *GetQRCodeFormatRequest) (*QRCodeFormat, error) + // Returns the supported formats. + ListFormats(context.Context, *emptypb.Empty) (*QRCodeFormats, error) + // Generates a QR code. + Generate(context.Context, *GenerateEndDeviceQRCodeRequest) (*GenerateQRCodeResponse, error) + // Parse QR Codes of known formats and return the information contained within. + Parse(context.Context, *ParseEndDeviceQRCodeRequest) (*ParseEndDeviceQRCodeResponse, error) + mustEmbedUnimplementedEndDeviceQRCodeGeneratorServer() +} + +// UnimplementedEndDeviceQRCodeGeneratorServer must be embedded to have forward compatible implementations. +type UnimplementedEndDeviceQRCodeGeneratorServer struct { +} + +func (UnimplementedEndDeviceQRCodeGeneratorServer) GetFormat(context.Context, *GetQRCodeFormatRequest) (*QRCodeFormat, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetFormat not implemented") +} +func (UnimplementedEndDeviceQRCodeGeneratorServer) ListFormats(context.Context, *emptypb.Empty) (*QRCodeFormats, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListFormats not implemented") +} +func (UnimplementedEndDeviceQRCodeGeneratorServer) Generate(context.Context, *GenerateEndDeviceQRCodeRequest) (*GenerateQRCodeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Generate not implemented") +} +func (UnimplementedEndDeviceQRCodeGeneratorServer) Parse(context.Context, *ParseEndDeviceQRCodeRequest) (*ParseEndDeviceQRCodeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Parse not implemented") +} +func (UnimplementedEndDeviceQRCodeGeneratorServer) mustEmbedUnimplementedEndDeviceQRCodeGeneratorServer() { +} + +// UnsafeEndDeviceQRCodeGeneratorServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to EndDeviceQRCodeGeneratorServer will +// result in compilation errors. +type UnsafeEndDeviceQRCodeGeneratorServer interface { + mustEmbedUnimplementedEndDeviceQRCodeGeneratorServer() +} + +func RegisterEndDeviceQRCodeGeneratorServer(s grpc.ServiceRegistrar, srv EndDeviceQRCodeGeneratorServer) { + s.RegisterService(&EndDeviceQRCodeGenerator_ServiceDesc, srv) +} + +func _EndDeviceQRCodeGenerator_GetFormat_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetQRCodeFormatRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceQRCodeGeneratorServer).GetFormat(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/GetFormat", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceQRCodeGeneratorServer).GetFormat(ctx, req.(*GetQRCodeFormatRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EndDeviceQRCodeGenerator_ListFormats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceQRCodeGeneratorServer).ListFormats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/ListFormats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceQRCodeGeneratorServer).ListFormats(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _EndDeviceQRCodeGenerator_Generate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GenerateEndDeviceQRCodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceQRCodeGeneratorServer).Generate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/Generate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceQRCodeGeneratorServer).Generate(ctx, req.(*GenerateEndDeviceQRCodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EndDeviceQRCodeGenerator_Parse_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ParseEndDeviceQRCodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceQRCodeGeneratorServer).Parse(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceQRCodeGenerator/Parse", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceQRCodeGeneratorServer).Parse(ctx, req.(*ParseEndDeviceQRCodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// EndDeviceQRCodeGenerator_ServiceDesc is the grpc.ServiceDesc for EndDeviceQRCodeGenerator service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var EndDeviceQRCodeGenerator_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.EndDeviceQRCodeGenerator", + HandlerType: (*EndDeviceQRCodeGeneratorServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetFormat", + Handler: _EndDeviceQRCodeGenerator_GetFormat_Handler, + }, + { + MethodName: "ListFormats", + Handler: _EndDeviceQRCodeGenerator_ListFormats_Handler, + }, + { + MethodName: "Generate", + Handler: _EndDeviceQRCodeGenerator_Generate_Handler, + }, + { + MethodName: "Parse", + Handler: _EndDeviceQRCodeGenerator_Parse_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/qrcodegenerator.proto", +} diff --git a/pkg/ttnpb/qrcodegenerator_json.pb.go b/pkg/ttnpb/qrcodegenerator_json.pb.go index be8e24d79e..163f67b075 100644 --- a/pkg/ttnpb/qrcodegenerator_json.pb.go +++ b/pkg/ttnpb/qrcodegenerator_json.pb.go @@ -1,16 +1,86 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/qrcodegenerator.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" ) +// MarshalProtoJSON marshals the QRCodeFormat message to JSON. +func (x *QRCodeFormat) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Name != "" || s.HasField("name") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("name") + s.WriteString(x.Name) + } + if x.Description != "" || s.HasField("description") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("description") + s.WriteString(x.Description) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the QRCodeFormat to JSON. +func (x *QRCodeFormat) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the QRCodeFormat message from JSON. +func (x *QRCodeFormat) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "name": + s.AddField("name") + x.Name = s.ReadString() + case "description": + s.AddField("description") + x.Description = s.ReadString() + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the QRCodeFormat from JSON. +func (x *QRCodeFormat) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + // MarshalProtoJSON marshals the GenerateEndDeviceQRCodeRequest message to JSON. func (x *GenerateEndDeviceQRCodeRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x == nil { @@ -33,7 +103,7 @@ func (x *GenerateEndDeviceQRCodeRequest) MarshalProtoJSON(s *jsonplugin.MarshalS s.WriteMoreIf(&wroteField) s.WriteObjectField("image") // NOTE: GenerateEndDeviceQRCodeRequest_Image does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Image) + golang.MarshalMessage(s, x.Image) } s.WriteObjectEnd() } @@ -70,7 +140,7 @@ func (x *GenerateEndDeviceQRCodeRequest) UnmarshalProtoJSON(s *jsonplugin.Unmars } // NOTE: GenerateEndDeviceQRCodeRequest_Image does not seem to implement UnmarshalProtoJSON. var v GenerateEndDeviceQRCodeRequest_Image - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Image = &v } }) diff --git a/pkg/ttnpb/regional.pb.go b/pkg/ttnpb/regional.pb.go index da12c12b61..0ac7f8fbc7 100644 --- a/pkg/ttnpb/regional.pb.go +++ b/pkg/ttnpb/regional.pb.go @@ -1,383 +1,585 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/regional.proto package ttnpb import ( - fmt "fmt" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type ConcentratorConfig struct { - Channels []*ConcentratorConfig_Channel `protobuf:"bytes,1,rep,name=channels,proto3" json:"channels,omitempty"` - LoraStandardChannel *ConcentratorConfig_LoRaStandardChannel `protobuf:"bytes,2,opt,name=lora_standard_channel,json=loraStandardChannel,proto3" json:"lora_standard_channel,omitempty"` - FskChannel *ConcentratorConfig_FSKChannel `protobuf:"bytes,3,opt,name=fsk_channel,json=fskChannel,proto3" json:"fsk_channel,omitempty"` - Lbt *ConcentratorConfig_LBTConfiguration `protobuf:"bytes,4,opt,name=lbt,proto3" json:"lbt,omitempty"` - PingSlot *ConcentratorConfig_Channel `protobuf:"bytes,5,opt,name=ping_slot,json=pingSlot,proto3" json:"ping_slot,omitempty"` - Radios []*GatewayRadio `protobuf:"bytes,6,rep,name=radios,proto3" json:"radios,omitempty"` - ClockSource uint32 `protobuf:"varint,7,opt,name=clock_source,json=clockSource,proto3" json:"clock_source,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ConcentratorConfig) Reset() { *m = ConcentratorConfig{} } -func (m *ConcentratorConfig) String() string { return proto.CompactTextString(m) } -func (*ConcentratorConfig) ProtoMessage() {} -func (*ConcentratorConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_cfe48e1cbcf8ee88, []int{0} -} -func (m *ConcentratorConfig) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ConcentratorConfig.Unmarshal(m, b) -} -func (m *ConcentratorConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ConcentratorConfig.Marshal(b, m, deterministic) -} -func (m *ConcentratorConfig) XXX_Merge(src proto.Message) { - xxx_messageInfo_ConcentratorConfig.Merge(m, src) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Channels []*ConcentratorConfig_Channel `protobuf:"bytes,1,rep,name=channels,proto3" json:"channels,omitempty"` + LoraStandardChannel *ConcentratorConfig_LoRaStandardChannel `protobuf:"bytes,2,opt,name=lora_standard_channel,json=loraStandardChannel,proto3" json:"lora_standard_channel,omitempty"` + FskChannel *ConcentratorConfig_FSKChannel `protobuf:"bytes,3,opt,name=fsk_channel,json=fskChannel,proto3" json:"fsk_channel,omitempty"` + Lbt *ConcentratorConfig_LBTConfiguration `protobuf:"bytes,4,opt,name=lbt,proto3" json:"lbt,omitempty"` + PingSlot *ConcentratorConfig_Channel `protobuf:"bytes,5,opt,name=ping_slot,json=pingSlot,proto3" json:"ping_slot,omitempty"` + Radios []*GatewayRadio `protobuf:"bytes,6,rep,name=radios,proto3" json:"radios,omitempty"` + ClockSource uint32 `protobuf:"varint,7,opt,name=clock_source,json=clockSource,proto3" json:"clock_source,omitempty"` +} + +func (x *ConcentratorConfig) Reset() { + *x = ConcentratorConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_regional_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ConcentratorConfig) XXX_Size() int { - return xxx_messageInfo_ConcentratorConfig.Size(m) + +func (x *ConcentratorConfig) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ConcentratorConfig) XXX_DiscardUnknown() { - xxx_messageInfo_ConcentratorConfig.DiscardUnknown(m) + +func (*ConcentratorConfig) ProtoMessage() {} + +func (x *ConcentratorConfig) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_regional_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ConcentratorConfig proto.InternalMessageInfo +// Deprecated: Use ConcentratorConfig.ProtoReflect.Descriptor instead. +func (*ConcentratorConfig) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_regional_proto_rawDescGZIP(), []int{0} +} -func (m *ConcentratorConfig) GetChannels() []*ConcentratorConfig_Channel { - if m != nil { - return m.Channels +func (x *ConcentratorConfig) GetChannels() []*ConcentratorConfig_Channel { + if x != nil { + return x.Channels } return nil } -func (m *ConcentratorConfig) GetLoraStandardChannel() *ConcentratorConfig_LoRaStandardChannel { - if m != nil { - return m.LoraStandardChannel +func (x *ConcentratorConfig) GetLoraStandardChannel() *ConcentratorConfig_LoRaStandardChannel { + if x != nil { + return x.LoraStandardChannel } return nil } -func (m *ConcentratorConfig) GetFskChannel() *ConcentratorConfig_FSKChannel { - if m != nil { - return m.FskChannel +func (x *ConcentratorConfig) GetFskChannel() *ConcentratorConfig_FSKChannel { + if x != nil { + return x.FskChannel } return nil } -func (m *ConcentratorConfig) GetLbt() *ConcentratorConfig_LBTConfiguration { - if m != nil { - return m.Lbt +func (x *ConcentratorConfig) GetLbt() *ConcentratorConfig_LBTConfiguration { + if x != nil { + return x.Lbt } return nil } -func (m *ConcentratorConfig) GetPingSlot() *ConcentratorConfig_Channel { - if m != nil { - return m.PingSlot +func (x *ConcentratorConfig) GetPingSlot() *ConcentratorConfig_Channel { + if x != nil { + return x.PingSlot } return nil } -func (m *ConcentratorConfig) GetRadios() []*GatewayRadio { - if m != nil { - return m.Radios +func (x *ConcentratorConfig) GetRadios() []*GatewayRadio { + if x != nil { + return x.Radios } return nil } -func (m *ConcentratorConfig) GetClockSource() uint32 { - if m != nil { - return m.ClockSource +func (x *ConcentratorConfig) GetClockSource() uint32 { + if x != nil { + return x.ClockSource } return 0 } type ConcentratorConfig_Channel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Frequency (Hz). - Frequency uint64 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"` - Radio uint32 `protobuf:"varint,2,opt,name=radio,proto3" json:"radio,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Frequency uint64 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"` + Radio uint32 `protobuf:"varint,2,opt,name=radio,proto3" json:"radio,omitempty"` } -func (m *ConcentratorConfig_Channel) Reset() { *m = ConcentratorConfig_Channel{} } -func (m *ConcentratorConfig_Channel) String() string { return proto.CompactTextString(m) } -func (*ConcentratorConfig_Channel) ProtoMessage() {} -func (*ConcentratorConfig_Channel) Descriptor() ([]byte, []int) { - return fileDescriptor_cfe48e1cbcf8ee88, []int{0, 0} -} -func (m *ConcentratorConfig_Channel) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ConcentratorConfig_Channel.Unmarshal(m, b) -} -func (m *ConcentratorConfig_Channel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ConcentratorConfig_Channel.Marshal(b, m, deterministic) -} -func (m *ConcentratorConfig_Channel) XXX_Merge(src proto.Message) { - xxx_messageInfo_ConcentratorConfig_Channel.Merge(m, src) +func (x *ConcentratorConfig_Channel) Reset() { + *x = ConcentratorConfig_Channel{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_regional_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ConcentratorConfig_Channel) XXX_Size() int { - return xxx_messageInfo_ConcentratorConfig_Channel.Size(m) + +func (x *ConcentratorConfig_Channel) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ConcentratorConfig_Channel) XXX_DiscardUnknown() { - xxx_messageInfo_ConcentratorConfig_Channel.DiscardUnknown(m) + +func (*ConcentratorConfig_Channel) ProtoMessage() {} + +func (x *ConcentratorConfig_Channel) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_regional_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ConcentratorConfig_Channel proto.InternalMessageInfo +// Deprecated: Use ConcentratorConfig_Channel.ProtoReflect.Descriptor instead. +func (*ConcentratorConfig_Channel) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_regional_proto_rawDescGZIP(), []int{0, 0} +} -func (m *ConcentratorConfig_Channel) GetFrequency() uint64 { - if m != nil { - return m.Frequency +func (x *ConcentratorConfig_Channel) GetFrequency() uint64 { + if x != nil { + return x.Frequency } return 0 } -func (m *ConcentratorConfig_Channel) GetRadio() uint32 { - if m != nil { - return m.Radio +func (x *ConcentratorConfig_Channel) GetRadio() uint32 { + if x != nil { + return x.Radio } return 0 } type ConcentratorConfig_LoRaStandardChannel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Frequency (Hz). Frequency uint64 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"` Radio uint32 `protobuf:"varint,2,opt,name=radio,proto3" json:"radio,omitempty"` // Bandwidth (Hz). - Bandwidth uint32 `protobuf:"varint,3,opt,name=bandwidth,proto3" json:"bandwidth,omitempty"` - SpreadingFactor uint32 `protobuf:"varint,4,opt,name=spreading_factor,json=spreadingFactor,proto3" json:"spreading_factor,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Bandwidth uint32 `protobuf:"varint,3,opt,name=bandwidth,proto3" json:"bandwidth,omitempty"` + SpreadingFactor uint32 `protobuf:"varint,4,opt,name=spreading_factor,json=spreadingFactor,proto3" json:"spreading_factor,omitempty"` } -func (m *ConcentratorConfig_LoRaStandardChannel) Reset() { - *m = ConcentratorConfig_LoRaStandardChannel{} -} -func (m *ConcentratorConfig_LoRaStandardChannel) String() string { return proto.CompactTextString(m) } -func (*ConcentratorConfig_LoRaStandardChannel) ProtoMessage() {} -func (*ConcentratorConfig_LoRaStandardChannel) Descriptor() ([]byte, []int) { - return fileDescriptor_cfe48e1cbcf8ee88, []int{0, 1} -} -func (m *ConcentratorConfig_LoRaStandardChannel) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ConcentratorConfig_LoRaStandardChannel.Unmarshal(m, b) -} -func (m *ConcentratorConfig_LoRaStandardChannel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ConcentratorConfig_LoRaStandardChannel.Marshal(b, m, deterministic) -} -func (m *ConcentratorConfig_LoRaStandardChannel) XXX_Merge(src proto.Message) { - xxx_messageInfo_ConcentratorConfig_LoRaStandardChannel.Merge(m, src) +func (x *ConcentratorConfig_LoRaStandardChannel) Reset() { + *x = ConcentratorConfig_LoRaStandardChannel{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_regional_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ConcentratorConfig_LoRaStandardChannel) XXX_Size() int { - return xxx_messageInfo_ConcentratorConfig_LoRaStandardChannel.Size(m) + +func (x *ConcentratorConfig_LoRaStandardChannel) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ConcentratorConfig_LoRaStandardChannel) XXX_DiscardUnknown() { - xxx_messageInfo_ConcentratorConfig_LoRaStandardChannel.DiscardUnknown(m) + +func (*ConcentratorConfig_LoRaStandardChannel) ProtoMessage() {} + +func (x *ConcentratorConfig_LoRaStandardChannel) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_regional_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ConcentratorConfig_LoRaStandardChannel proto.InternalMessageInfo +// Deprecated: Use ConcentratorConfig_LoRaStandardChannel.ProtoReflect.Descriptor instead. +func (*ConcentratorConfig_LoRaStandardChannel) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_regional_proto_rawDescGZIP(), []int{0, 1} +} -func (m *ConcentratorConfig_LoRaStandardChannel) GetFrequency() uint64 { - if m != nil { - return m.Frequency +func (x *ConcentratorConfig_LoRaStandardChannel) GetFrequency() uint64 { + if x != nil { + return x.Frequency } return 0 } -func (m *ConcentratorConfig_LoRaStandardChannel) GetRadio() uint32 { - if m != nil { - return m.Radio +func (x *ConcentratorConfig_LoRaStandardChannel) GetRadio() uint32 { + if x != nil { + return x.Radio } return 0 } -func (m *ConcentratorConfig_LoRaStandardChannel) GetBandwidth() uint32 { - if m != nil { - return m.Bandwidth +func (x *ConcentratorConfig_LoRaStandardChannel) GetBandwidth() uint32 { + if x != nil { + return x.Bandwidth } return 0 } -func (m *ConcentratorConfig_LoRaStandardChannel) GetSpreadingFactor() uint32 { - if m != nil { - return m.SpreadingFactor +func (x *ConcentratorConfig_LoRaStandardChannel) GetSpreadingFactor() uint32 { + if x != nil { + return x.SpreadingFactor } return 0 } type ConcentratorConfig_FSKChannel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Frequency (Hz). - Frequency uint64 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"` - Radio uint32 `protobuf:"varint,2,opt,name=radio,proto3" json:"radio,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Frequency uint64 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"` + Radio uint32 `protobuf:"varint,2,opt,name=radio,proto3" json:"radio,omitempty"` } -func (m *ConcentratorConfig_FSKChannel) Reset() { *m = ConcentratorConfig_FSKChannel{} } -func (m *ConcentratorConfig_FSKChannel) String() string { return proto.CompactTextString(m) } -func (*ConcentratorConfig_FSKChannel) ProtoMessage() {} -func (*ConcentratorConfig_FSKChannel) Descriptor() ([]byte, []int) { - return fileDescriptor_cfe48e1cbcf8ee88, []int{0, 2} -} -func (m *ConcentratorConfig_FSKChannel) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ConcentratorConfig_FSKChannel.Unmarshal(m, b) -} -func (m *ConcentratorConfig_FSKChannel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ConcentratorConfig_FSKChannel.Marshal(b, m, deterministic) -} -func (m *ConcentratorConfig_FSKChannel) XXX_Merge(src proto.Message) { - xxx_messageInfo_ConcentratorConfig_FSKChannel.Merge(m, src) +func (x *ConcentratorConfig_FSKChannel) Reset() { + *x = ConcentratorConfig_FSKChannel{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_regional_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ConcentratorConfig_FSKChannel) XXX_Size() int { - return xxx_messageInfo_ConcentratorConfig_FSKChannel.Size(m) + +func (x *ConcentratorConfig_FSKChannel) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ConcentratorConfig_FSKChannel) XXX_DiscardUnknown() { - xxx_messageInfo_ConcentratorConfig_FSKChannel.DiscardUnknown(m) + +func (*ConcentratorConfig_FSKChannel) ProtoMessage() {} + +func (x *ConcentratorConfig_FSKChannel) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_regional_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ConcentratorConfig_FSKChannel proto.InternalMessageInfo +// Deprecated: Use ConcentratorConfig_FSKChannel.ProtoReflect.Descriptor instead. +func (*ConcentratorConfig_FSKChannel) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_regional_proto_rawDescGZIP(), []int{0, 2} +} -func (m *ConcentratorConfig_FSKChannel) GetFrequency() uint64 { - if m != nil { - return m.Frequency +func (x *ConcentratorConfig_FSKChannel) GetFrequency() uint64 { + if x != nil { + return x.Frequency } return 0 } -func (m *ConcentratorConfig_FSKChannel) GetRadio() uint32 { - if m != nil { - return m.Radio +func (x *ConcentratorConfig_FSKChannel) GetRadio() uint32 { + if x != nil { + return x.Radio } return 0 } type ConcentratorConfig_LBTConfiguration struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Received signal strength (dBm). RssiTarget float32 `protobuf:"fixed32,1,opt,name=rssi_target,json=rssiTarget,proto3" json:"rssi_target,omitempty"` // Received signal strength offset (dBm). - RssiOffset float32 `protobuf:"fixed32,2,opt,name=rssi_offset,json=rssiOffset,proto3" json:"rssi_offset,omitempty"` - ScanTime *types.Duration `protobuf:"bytes,3,opt,name=scan_time,json=scanTime,proto3" json:"scan_time,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + RssiOffset float32 `protobuf:"fixed32,2,opt,name=rssi_offset,json=rssiOffset,proto3" json:"rssi_offset,omitempty"` + ScanTime *durationpb.Duration `protobuf:"bytes,3,opt,name=scan_time,json=scanTime,proto3" json:"scan_time,omitempty"` } -func (m *ConcentratorConfig_LBTConfiguration) Reset() { *m = ConcentratorConfig_LBTConfiguration{} } -func (m *ConcentratorConfig_LBTConfiguration) String() string { return proto.CompactTextString(m) } -func (*ConcentratorConfig_LBTConfiguration) ProtoMessage() {} -func (*ConcentratorConfig_LBTConfiguration) Descriptor() ([]byte, []int) { - return fileDescriptor_cfe48e1cbcf8ee88, []int{0, 3} -} -func (m *ConcentratorConfig_LBTConfiguration) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ConcentratorConfig_LBTConfiguration.Unmarshal(m, b) -} -func (m *ConcentratorConfig_LBTConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ConcentratorConfig_LBTConfiguration.Marshal(b, m, deterministic) -} -func (m *ConcentratorConfig_LBTConfiguration) XXX_Merge(src proto.Message) { - xxx_messageInfo_ConcentratorConfig_LBTConfiguration.Merge(m, src) +func (x *ConcentratorConfig_LBTConfiguration) Reset() { + *x = ConcentratorConfig_LBTConfiguration{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_regional_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ConcentratorConfig_LBTConfiguration) XXX_Size() int { - return xxx_messageInfo_ConcentratorConfig_LBTConfiguration.Size(m) + +func (x *ConcentratorConfig_LBTConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ConcentratorConfig_LBTConfiguration) XXX_DiscardUnknown() { - xxx_messageInfo_ConcentratorConfig_LBTConfiguration.DiscardUnknown(m) + +func (*ConcentratorConfig_LBTConfiguration) ProtoMessage() {} + +func (x *ConcentratorConfig_LBTConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_regional_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ConcentratorConfig_LBTConfiguration proto.InternalMessageInfo +// Deprecated: Use ConcentratorConfig_LBTConfiguration.ProtoReflect.Descriptor instead. +func (*ConcentratorConfig_LBTConfiguration) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_regional_proto_rawDescGZIP(), []int{0, 3} +} -func (m *ConcentratorConfig_LBTConfiguration) GetRssiTarget() float32 { - if m != nil { - return m.RssiTarget +func (x *ConcentratorConfig_LBTConfiguration) GetRssiTarget() float32 { + if x != nil { + return x.RssiTarget } return 0 } -func (m *ConcentratorConfig_LBTConfiguration) GetRssiOffset() float32 { - if m != nil { - return m.RssiOffset +func (x *ConcentratorConfig_LBTConfiguration) GetRssiOffset() float32 { + if x != nil { + return x.RssiOffset } return 0 } -func (m *ConcentratorConfig_LBTConfiguration) GetScanTime() *types.Duration { - if m != nil { - return m.ScanTime +func (x *ConcentratorConfig_LBTConfiguration) GetScanTime() *durationpb.Duration { + if x != nil { + return x.ScanTime } return nil } -func init() { - proto.RegisterType((*ConcentratorConfig)(nil), "ttn.lorawan.v3.ConcentratorConfig") - golang_proto.RegisterType((*ConcentratorConfig)(nil), "ttn.lorawan.v3.ConcentratorConfig") - proto.RegisterType((*ConcentratorConfig_Channel)(nil), "ttn.lorawan.v3.ConcentratorConfig.Channel") - golang_proto.RegisterType((*ConcentratorConfig_Channel)(nil), "ttn.lorawan.v3.ConcentratorConfig.Channel") - proto.RegisterType((*ConcentratorConfig_LoRaStandardChannel)(nil), "ttn.lorawan.v3.ConcentratorConfig.LoRaStandardChannel") - golang_proto.RegisterType((*ConcentratorConfig_LoRaStandardChannel)(nil), "ttn.lorawan.v3.ConcentratorConfig.LoRaStandardChannel") - proto.RegisterType((*ConcentratorConfig_FSKChannel)(nil), "ttn.lorawan.v3.ConcentratorConfig.FSKChannel") - golang_proto.RegisterType((*ConcentratorConfig_FSKChannel)(nil), "ttn.lorawan.v3.ConcentratorConfig.FSKChannel") - proto.RegisterType((*ConcentratorConfig_LBTConfiguration)(nil), "ttn.lorawan.v3.ConcentratorConfig.LBTConfiguration") - golang_proto.RegisterType((*ConcentratorConfig_LBTConfiguration)(nil), "ttn.lorawan.v3.ConcentratorConfig.LBTConfiguration") -} - -func init() { proto.RegisterFile("lorawan-stack/api/regional.proto", fileDescriptor_cfe48e1cbcf8ee88) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/regional.proto", fileDescriptor_cfe48e1cbcf8ee88) -} - -var fileDescriptor_cfe48e1cbcf8ee88 = []byte{ - // 542 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x53, 0xd1, 0x6e, 0xd3, 0x30, - 0x14, 0x55, 0xd6, 0xad, 0x5d, 0x5d, 0x0a, 0x93, 0x07, 0x52, 0xa8, 0xa6, 0xad, 0xf0, 0x54, 0x90, - 0xea, 0x48, 0x2b, 0xec, 0x0d, 0x09, 0xad, 0xd0, 0x3d, 0x80, 0x40, 0x4a, 0xfb, 0xc4, 0x4b, 0xe4, - 0x24, 0x8e, 0x6b, 0x92, 0xda, 0xc1, 0xbe, 0x5d, 0xb5, 0x7f, 0xe0, 0x89, 0x8f, 0xe0, 0x3b, 0xf8, - 0x17, 0x7e, 0x04, 0xc5, 0x49, 0x5a, 0xad, 0xe3, 0xa1, 0xdb, 0x9b, 0x7d, 0x7c, 0xce, 0xb9, 0xd7, - 0x3e, 0xbe, 0xa8, 0x9f, 0x29, 0x4d, 0x57, 0x54, 0x0e, 0x0d, 0xd0, 0x28, 0xf5, 0x68, 0x2e, 0x3c, - 0xcd, 0xb8, 0x50, 0x92, 0x66, 0x24, 0xd7, 0x0a, 0x14, 0x7e, 0x0c, 0x20, 0x49, 0xc5, 0x22, 0xd7, - 0xa3, 0xde, 0x90, 0x0b, 0x98, 0x2f, 0x43, 0x12, 0xa9, 0x85, 0xc7, 0x15, 0x57, 0x9e, 0xa5, 0x85, - 0xcb, 0xc4, 0xee, 0xec, 0xc6, 0xae, 0x4a, 0x79, 0xef, 0x94, 0x2b, 0xc5, 0x33, 0xb6, 0x61, 0xc5, - 0x4b, 0x4d, 0x41, 0x28, 0x59, 0x9d, 0x9f, 0xdd, 0x6d, 0x80, 0x53, 0x60, 0x2b, 0x7a, 0x53, 0x12, - 0x5e, 0xfe, 0x6e, 0x21, 0x3c, 0x56, 0x32, 0x62, 0x12, 0x34, 0x05, 0xa5, 0xc7, 0x4a, 0x26, 0x82, - 0xe3, 0x09, 0x3a, 0x8c, 0xe6, 0x54, 0x4a, 0x96, 0x19, 0xd7, 0xe9, 0x37, 0x06, 0x9d, 0xf3, 0xd7, - 0xe4, 0x76, 0xa7, 0xe4, 0xae, 0x8a, 0x8c, 0x4b, 0x89, 0xbf, 0xd6, 0xe2, 0xef, 0xe8, 0x59, 0x21, - 0x09, 0x0c, 0x50, 0x19, 0x53, 0x1d, 0x07, 0xd5, 0x89, 0xbb, 0xd7, 0x77, 0x06, 0x9d, 0xf3, 0x8b, - 0x1d, 0x4c, 0x3f, 0x2b, 0x9f, 0x4e, 0x2b, 0x79, 0x5d, 0xe0, 0xb8, 0x90, 0x6c, 0x81, 0xf8, 0x0b, - 0xea, 0x24, 0x26, 0x5d, 0x57, 0x68, 0xd8, 0x0a, 0xc3, 0x1d, 0x2a, 0x4c, 0xa6, 0x9f, 0x6a, 0x63, - 0x94, 0x98, 0xb4, 0xf6, 0xfb, 0x88, 0x1a, 0x59, 0x08, 0xee, 0xbe, 0xf5, 0x19, 0xed, 0xd2, 0xe9, - 0xe5, 0xac, 0x5c, 0x55, 0x19, 0xf8, 0x85, 0x1e, 0x5f, 0xa1, 0x76, 0x2e, 0x24, 0x0f, 0x4c, 0xa6, - 0xc0, 0x3d, 0xb0, 0x66, 0xf7, 0x7a, 0xcb, 0x42, 0x3c, 0xcd, 0x14, 0xe0, 0x37, 0xa8, 0xa9, 0x69, - 0x2c, 0x94, 0x71, 0x9b, 0x36, 0x91, 0x93, 0x6d, 0x97, 0xab, 0x32, 0x59, 0xbf, 0x20, 0xf9, 0x15, - 0x17, 0xbf, 0x40, 0x8f, 0xa2, 0x4c, 0x45, 0x69, 0x60, 0xd4, 0x52, 0x47, 0xcc, 0x6d, 0xf5, 0x9d, - 0x41, 0xd7, 0xef, 0x58, 0x6c, 0x6a, 0xa1, 0xde, 0x3b, 0xd4, 0xaa, 0xef, 0x7c, 0x82, 0xda, 0x89, - 0x66, 0x3f, 0x96, 0x4c, 0x46, 0x37, 0xae, 0xd3, 0x77, 0x06, 0xfb, 0xfe, 0x06, 0xc0, 0x4f, 0xd1, - 0x81, 0x75, 0xb5, 0xe9, 0x75, 0xfd, 0x72, 0xd3, 0xfb, 0xe5, 0xa0, 0xe3, 0xff, 0x84, 0xf4, 0x10, - 0xaf, 0x42, 0x13, 0x52, 0x19, 0xaf, 0x44, 0x0c, 0x73, 0x9b, 0x60, 0xd7, 0xdf, 0x00, 0xf8, 0x15, - 0x3a, 0x32, 0xb9, 0x66, 0x34, 0x2e, 0xde, 0x33, 0xa1, 0x11, 0x28, 0x6d, 0xe3, 0xe9, 0xfa, 0x4f, - 0xd6, 0xf8, 0xc4, 0xc2, 0xbd, 0xf7, 0x08, 0x6d, 0x62, 0x7d, 0xd0, 0xb5, 0x7e, 0x3a, 0xe8, 0x68, - 0x3b, 0x51, 0x7c, 0x86, 0x3a, 0xda, 0x18, 0x11, 0x00, 0xd5, 0x9c, 0x81, 0xb5, 0xda, 0xf3, 0x51, - 0x01, 0xcd, 0x2c, 0xb2, 0x26, 0xa8, 0x24, 0x31, 0x0c, 0xac, 0x63, 0x45, 0xf8, 0x6a, 0x11, 0x7c, - 0x81, 0xda, 0x26, 0xa2, 0x32, 0x00, 0xb1, 0x60, 0xd5, 0x1f, 0x7d, 0x4e, 0xca, 0x29, 0x26, 0xf5, - 0x14, 0x93, 0x0f, 0xf5, 0x0f, 0x3a, 0x2c, 0xb8, 0x33, 0xb1, 0x60, 0x97, 0x6f, 0xff, 0xfc, 0x3d, - 0x75, 0xbe, 0x79, 0x5c, 0x11, 0x98, 0x33, 0x98, 0x0b, 0xc9, 0x0d, 0x91, 0x0c, 0x56, 0x4a, 0xa7, - 0xde, 0xed, 0x21, 0xbf, 0x1e, 0x79, 0x79, 0xca, 0x3d, 0x00, 0x99, 0x87, 0x61, 0xd3, 0x7a, 0x8e, - 0xfe, 0x05, 0x00, 0x00, 0xff, 0xff, 0x35, 0x4e, 0x59, 0x8c, 0x8a, 0x04, 0x00, 0x00, +var File_lorawan_stack_api_regional_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_regional_proto_rawDesc = []byte{ + 0x0a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, + 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, + 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xa6, 0x07, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x46, 0x0a, 0x08, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, + 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x73, 0x12, 0x6a, 0x0a, 0x15, 0x6c, 0x6f, 0x72, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, + 0x72, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x36, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x52, 0x61, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, + 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x13, 0x6c, 0x6f, 0x72, 0x61, 0x53, 0x74, + 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x4e, 0x0a, + 0x0b, 0x66, 0x73, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x46, 0x53, 0x4b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x52, 0x0a, 0x66, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x45, 0x0a, + 0x03, 0x6c, 0x62, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x63, + 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, + 0x42, 0x54, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x03, 0x6c, 0x62, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x52, 0x08, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x34, 0x0a, + 0x06, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x61, 0x64, 0x69, 0x6f, 0x52, 0x06, 0x72, 0x61, 0x64, + 0x69, 0x6f, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x3d, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x72, 0x61, 0x64, 0x69, 0x6f, 0x1a, 0x92, 0x01, 0x0a, 0x13, 0x4c, 0x6f, 0x52, 0x61, 0x53, 0x74, + 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1c, 0x0a, + 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x72, + 0x61, 0x64, 0x69, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x72, 0x61, 0x64, 0x69, + 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, + 0x29, 0x0a, 0x10, 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x73, 0x70, 0x72, 0x65, 0x61, + 0x64, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0x40, 0x0a, 0x0a, 0x46, 0x53, + 0x4b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x1a, 0x8c, 0x01, 0x0a, + 0x10, 0x4c, 0x42, 0x54, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x73, 0x73, 0x69, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x72, 0x73, 0x73, 0x69, 0x54, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x73, 0x73, 0x69, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x72, 0x73, 0x73, 0x69, 0x4f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x08, 0x73, 0x63, 0x61, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x35, 0x5a, 0x2f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, + 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_regional_proto_rawDescOnce sync.Once + file_lorawan_stack_api_regional_proto_rawDescData = file_lorawan_stack_api_regional_proto_rawDesc +) + +func file_lorawan_stack_api_regional_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_regional_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_regional_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_regional_proto_rawDescData) + }) + return file_lorawan_stack_api_regional_proto_rawDescData +} + +var file_lorawan_stack_api_regional_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_lorawan_stack_api_regional_proto_goTypes = []interface{}{ + (*ConcentratorConfig)(nil), // 0: ttn.lorawan.v3.ConcentratorConfig + (*ConcentratorConfig_Channel)(nil), // 1: ttn.lorawan.v3.ConcentratorConfig.Channel + (*ConcentratorConfig_LoRaStandardChannel)(nil), // 2: ttn.lorawan.v3.ConcentratorConfig.LoRaStandardChannel + (*ConcentratorConfig_FSKChannel)(nil), // 3: ttn.lorawan.v3.ConcentratorConfig.FSKChannel + (*ConcentratorConfig_LBTConfiguration)(nil), // 4: ttn.lorawan.v3.ConcentratorConfig.LBTConfiguration + (*GatewayRadio)(nil), // 5: ttn.lorawan.v3.GatewayRadio + (*durationpb.Duration)(nil), // 6: google.protobuf.Duration +} +var file_lorawan_stack_api_regional_proto_depIdxs = []int32{ + 1, // 0: ttn.lorawan.v3.ConcentratorConfig.channels:type_name -> ttn.lorawan.v3.ConcentratorConfig.Channel + 2, // 1: ttn.lorawan.v3.ConcentratorConfig.lora_standard_channel:type_name -> ttn.lorawan.v3.ConcentratorConfig.LoRaStandardChannel + 3, // 2: ttn.lorawan.v3.ConcentratorConfig.fsk_channel:type_name -> ttn.lorawan.v3.ConcentratorConfig.FSKChannel + 4, // 3: ttn.lorawan.v3.ConcentratorConfig.lbt:type_name -> ttn.lorawan.v3.ConcentratorConfig.LBTConfiguration + 1, // 4: ttn.lorawan.v3.ConcentratorConfig.ping_slot:type_name -> ttn.lorawan.v3.ConcentratorConfig.Channel + 5, // 5: ttn.lorawan.v3.ConcentratorConfig.radios:type_name -> ttn.lorawan.v3.GatewayRadio + 6, // 6: ttn.lorawan.v3.ConcentratorConfig.LBTConfiguration.scan_time:type_name -> google.protobuf.Duration + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_regional_proto_init() } +func file_lorawan_stack_api_regional_proto_init() { + if File_lorawan_stack_api_regional_proto != nil { + return + } + file_lorawan_stack_api_gateway_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_regional_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConcentratorConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_regional_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConcentratorConfig_Channel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_regional_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConcentratorConfig_LoRaStandardChannel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_regional_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConcentratorConfig_FSKChannel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_regional_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConcentratorConfig_LBTConfiguration); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_regional_proto_rawDesc, + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_regional_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_regional_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_regional_proto_msgTypes, + }.Build() + File_lorawan_stack_api_regional_proto = out.File + file_lorawan_stack_api_regional_proto_rawDesc = nil + file_lorawan_stack_api_regional_proto_goTypes = nil + file_lorawan_stack_api_regional_proto_depIdxs = nil } diff --git a/pkg/ttnpb/regional.pb.validate.go b/pkg/ttnpb/regional.pb.validate.go index 92be04b92c..7b54d5eff2 100644 --- a/pkg/ttnpb/regional.pb.validate.go +++ b/pkg/ttnpb/regional.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _regional_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on ConcentratorConfig with the rules // defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/rights.pb.go b/pkg/ttnpb/rights.pb.go index af92e0688d..96e441ca11 100644 --- a/pkg/ttnpb/rights.pb.go +++ b/pkg/ttnpb/rights.pb.go @@ -1,31 +1,43 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/rights.proto package ttnpb import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // Right is the enum that defines all the different rights to do something in the network. type Right int32 @@ -169,187 +181,221 @@ const ( Right_RIGHT_ALL Right = 55 ) -var Right_name = map[int32]string{ - 0: "right_invalid", - 1: "RIGHT_USER_INFO", - 2: "RIGHT_USER_SETTINGS_BASIC", - 3: "RIGHT_USER_SETTINGS_API_KEYS", - 4: "RIGHT_USER_DELETE", - 5: "RIGHT_USER_AUTHORIZED_CLIENTS", - 6: "RIGHT_USER_APPLICATIONS_LIST", - 7: "RIGHT_USER_APPLICATIONS_CREATE", - 8: "RIGHT_USER_GATEWAYS_LIST", - 9: "RIGHT_USER_GATEWAYS_CREATE", - 10: "RIGHT_USER_CLIENTS_LIST", - 11: "RIGHT_USER_CLIENTS_CREATE", - 12: "RIGHT_USER_ORGANIZATIONS_LIST", - 13: "RIGHT_USER_ORGANIZATIONS_CREATE", - 59: "RIGHT_USER_NOTIFICATIONS_READ", - 14: "RIGHT_USER_ALL", - 15: "RIGHT_APPLICATION_INFO", - 16: "RIGHT_APPLICATION_SETTINGS_BASIC", - 17: "RIGHT_APPLICATION_SETTINGS_API_KEYS", - 18: "RIGHT_APPLICATION_SETTINGS_COLLABORATORS", - 56: "RIGHT_APPLICATION_SETTINGS_PACKAGES", - 19: "RIGHT_APPLICATION_DELETE", - 20: "RIGHT_APPLICATION_DEVICES_READ", - 21: "RIGHT_APPLICATION_DEVICES_WRITE", - 22: "RIGHT_APPLICATION_DEVICES_READ_KEYS", - 23: "RIGHT_APPLICATION_DEVICES_WRITE_KEYS", - 24: "RIGHT_APPLICATION_TRAFFIC_READ", - 25: "RIGHT_APPLICATION_TRAFFIC_UP_WRITE", - 26: "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE", - 27: "RIGHT_APPLICATION_LINK", - 28: "RIGHT_APPLICATION_ALL", - 29: "RIGHT_CLIENT_ALL", - 60: "RIGHT_CLIENT_INFO", - 61: "RIGHT_CLIENT_SETTINGS_BASIC", - 62: "RIGHT_CLIENT_SETTINGS_COLLABORATORS", - 63: "RIGHT_CLIENT_DELETE", - 30: "RIGHT_GATEWAY_INFO", - 31: "RIGHT_GATEWAY_SETTINGS_BASIC", - 32: "RIGHT_GATEWAY_SETTINGS_API_KEYS", - 33: "RIGHT_GATEWAY_SETTINGS_COLLABORATORS", - 34: "RIGHT_GATEWAY_DELETE", - 35: "RIGHT_GATEWAY_TRAFFIC_READ", - 36: "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE", - 37: "RIGHT_GATEWAY_LINK", - 38: "RIGHT_GATEWAY_STATUS_READ", - 39: "RIGHT_GATEWAY_LOCATION_READ", - 57: "RIGHT_GATEWAY_WRITE_SECRETS", - 58: "RIGHT_GATEWAY_READ_SECRETS", - 40: "RIGHT_GATEWAY_ALL", - 41: "RIGHT_ORGANIZATION_INFO", - 42: "RIGHT_ORGANIZATION_SETTINGS_BASIC", - 43: "RIGHT_ORGANIZATION_SETTINGS_API_KEYS", - 44: "RIGHT_ORGANIZATION_SETTINGS_MEMBERS", - 45: "RIGHT_ORGANIZATION_DELETE", - 46: "RIGHT_ORGANIZATION_APPLICATIONS_LIST", - 47: "RIGHT_ORGANIZATION_APPLICATIONS_CREATE", - 48: "RIGHT_ORGANIZATION_GATEWAYS_LIST", - 49: "RIGHT_ORGANIZATION_GATEWAYS_CREATE", - 50: "RIGHT_ORGANIZATION_CLIENTS_LIST", - 51: "RIGHT_ORGANIZATION_CLIENTS_CREATE", - 52: "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR", - 53: "RIGHT_ORGANIZATION_ALL", - 54: "RIGHT_SEND_INVITES", - 55: "RIGHT_ALL", -} - -var Right_value = map[string]int32{ - "right_invalid": 0, - "RIGHT_USER_INFO": 1, - "RIGHT_USER_SETTINGS_BASIC": 2, - "RIGHT_USER_SETTINGS_API_KEYS": 3, - "RIGHT_USER_DELETE": 4, - "RIGHT_USER_AUTHORIZED_CLIENTS": 5, - "RIGHT_USER_APPLICATIONS_LIST": 6, - "RIGHT_USER_APPLICATIONS_CREATE": 7, - "RIGHT_USER_GATEWAYS_LIST": 8, - "RIGHT_USER_GATEWAYS_CREATE": 9, - "RIGHT_USER_CLIENTS_LIST": 10, - "RIGHT_USER_CLIENTS_CREATE": 11, - "RIGHT_USER_ORGANIZATIONS_LIST": 12, - "RIGHT_USER_ORGANIZATIONS_CREATE": 13, - "RIGHT_USER_NOTIFICATIONS_READ": 59, - "RIGHT_USER_ALL": 14, - "RIGHT_APPLICATION_INFO": 15, - "RIGHT_APPLICATION_SETTINGS_BASIC": 16, - "RIGHT_APPLICATION_SETTINGS_API_KEYS": 17, - "RIGHT_APPLICATION_SETTINGS_COLLABORATORS": 18, - "RIGHT_APPLICATION_SETTINGS_PACKAGES": 56, - "RIGHT_APPLICATION_DELETE": 19, - "RIGHT_APPLICATION_DEVICES_READ": 20, - "RIGHT_APPLICATION_DEVICES_WRITE": 21, - "RIGHT_APPLICATION_DEVICES_READ_KEYS": 22, - "RIGHT_APPLICATION_DEVICES_WRITE_KEYS": 23, - "RIGHT_APPLICATION_TRAFFIC_READ": 24, - "RIGHT_APPLICATION_TRAFFIC_UP_WRITE": 25, - "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE": 26, - "RIGHT_APPLICATION_LINK": 27, - "RIGHT_APPLICATION_ALL": 28, - "RIGHT_CLIENT_ALL": 29, - "RIGHT_CLIENT_INFO": 60, - "RIGHT_CLIENT_SETTINGS_BASIC": 61, - "RIGHT_CLIENT_SETTINGS_COLLABORATORS": 62, - "RIGHT_CLIENT_DELETE": 63, - "RIGHT_GATEWAY_INFO": 30, - "RIGHT_GATEWAY_SETTINGS_BASIC": 31, - "RIGHT_GATEWAY_SETTINGS_API_KEYS": 32, - "RIGHT_GATEWAY_SETTINGS_COLLABORATORS": 33, - "RIGHT_GATEWAY_DELETE": 34, - "RIGHT_GATEWAY_TRAFFIC_READ": 35, - "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE": 36, - "RIGHT_GATEWAY_LINK": 37, - "RIGHT_GATEWAY_STATUS_READ": 38, - "RIGHT_GATEWAY_LOCATION_READ": 39, - "RIGHT_GATEWAY_WRITE_SECRETS": 57, - "RIGHT_GATEWAY_READ_SECRETS": 58, - "RIGHT_GATEWAY_ALL": 40, - "RIGHT_ORGANIZATION_INFO": 41, - "RIGHT_ORGANIZATION_SETTINGS_BASIC": 42, - "RIGHT_ORGANIZATION_SETTINGS_API_KEYS": 43, - "RIGHT_ORGANIZATION_SETTINGS_MEMBERS": 44, - "RIGHT_ORGANIZATION_DELETE": 45, - "RIGHT_ORGANIZATION_APPLICATIONS_LIST": 46, - "RIGHT_ORGANIZATION_APPLICATIONS_CREATE": 47, - "RIGHT_ORGANIZATION_GATEWAYS_LIST": 48, - "RIGHT_ORGANIZATION_GATEWAYS_CREATE": 49, - "RIGHT_ORGANIZATION_CLIENTS_LIST": 50, - "RIGHT_ORGANIZATION_CLIENTS_CREATE": 51, - "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR": 52, - "RIGHT_ORGANIZATION_ALL": 53, - "RIGHT_SEND_INVITES": 54, - "RIGHT_ALL": 55, +// Enum value maps for Right. +var ( + Right_name = map[int32]string{ + 0: "right_invalid", + 1: "RIGHT_USER_INFO", + 2: "RIGHT_USER_SETTINGS_BASIC", + 3: "RIGHT_USER_SETTINGS_API_KEYS", + 4: "RIGHT_USER_DELETE", + 5: "RIGHT_USER_AUTHORIZED_CLIENTS", + 6: "RIGHT_USER_APPLICATIONS_LIST", + 7: "RIGHT_USER_APPLICATIONS_CREATE", + 8: "RIGHT_USER_GATEWAYS_LIST", + 9: "RIGHT_USER_GATEWAYS_CREATE", + 10: "RIGHT_USER_CLIENTS_LIST", + 11: "RIGHT_USER_CLIENTS_CREATE", + 12: "RIGHT_USER_ORGANIZATIONS_LIST", + 13: "RIGHT_USER_ORGANIZATIONS_CREATE", + 59: "RIGHT_USER_NOTIFICATIONS_READ", + 14: "RIGHT_USER_ALL", + 15: "RIGHT_APPLICATION_INFO", + 16: "RIGHT_APPLICATION_SETTINGS_BASIC", + 17: "RIGHT_APPLICATION_SETTINGS_API_KEYS", + 18: "RIGHT_APPLICATION_SETTINGS_COLLABORATORS", + 56: "RIGHT_APPLICATION_SETTINGS_PACKAGES", + 19: "RIGHT_APPLICATION_DELETE", + 20: "RIGHT_APPLICATION_DEVICES_READ", + 21: "RIGHT_APPLICATION_DEVICES_WRITE", + 22: "RIGHT_APPLICATION_DEVICES_READ_KEYS", + 23: "RIGHT_APPLICATION_DEVICES_WRITE_KEYS", + 24: "RIGHT_APPLICATION_TRAFFIC_READ", + 25: "RIGHT_APPLICATION_TRAFFIC_UP_WRITE", + 26: "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE", + 27: "RIGHT_APPLICATION_LINK", + 28: "RIGHT_APPLICATION_ALL", + 29: "RIGHT_CLIENT_ALL", + 60: "RIGHT_CLIENT_INFO", + 61: "RIGHT_CLIENT_SETTINGS_BASIC", + 62: "RIGHT_CLIENT_SETTINGS_COLLABORATORS", + 63: "RIGHT_CLIENT_DELETE", + 30: "RIGHT_GATEWAY_INFO", + 31: "RIGHT_GATEWAY_SETTINGS_BASIC", + 32: "RIGHT_GATEWAY_SETTINGS_API_KEYS", + 33: "RIGHT_GATEWAY_SETTINGS_COLLABORATORS", + 34: "RIGHT_GATEWAY_DELETE", + 35: "RIGHT_GATEWAY_TRAFFIC_READ", + 36: "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE", + 37: "RIGHT_GATEWAY_LINK", + 38: "RIGHT_GATEWAY_STATUS_READ", + 39: "RIGHT_GATEWAY_LOCATION_READ", + 57: "RIGHT_GATEWAY_WRITE_SECRETS", + 58: "RIGHT_GATEWAY_READ_SECRETS", + 40: "RIGHT_GATEWAY_ALL", + 41: "RIGHT_ORGANIZATION_INFO", + 42: "RIGHT_ORGANIZATION_SETTINGS_BASIC", + 43: "RIGHT_ORGANIZATION_SETTINGS_API_KEYS", + 44: "RIGHT_ORGANIZATION_SETTINGS_MEMBERS", + 45: "RIGHT_ORGANIZATION_DELETE", + 46: "RIGHT_ORGANIZATION_APPLICATIONS_LIST", + 47: "RIGHT_ORGANIZATION_APPLICATIONS_CREATE", + 48: "RIGHT_ORGANIZATION_GATEWAYS_LIST", + 49: "RIGHT_ORGANIZATION_GATEWAYS_CREATE", + 50: "RIGHT_ORGANIZATION_CLIENTS_LIST", + 51: "RIGHT_ORGANIZATION_CLIENTS_CREATE", + 52: "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR", + 53: "RIGHT_ORGANIZATION_ALL", + 54: "RIGHT_SEND_INVITES", + 55: "RIGHT_ALL", + } + Right_value = map[string]int32{ + "right_invalid": 0, + "RIGHT_USER_INFO": 1, + "RIGHT_USER_SETTINGS_BASIC": 2, + "RIGHT_USER_SETTINGS_API_KEYS": 3, + "RIGHT_USER_DELETE": 4, + "RIGHT_USER_AUTHORIZED_CLIENTS": 5, + "RIGHT_USER_APPLICATIONS_LIST": 6, + "RIGHT_USER_APPLICATIONS_CREATE": 7, + "RIGHT_USER_GATEWAYS_LIST": 8, + "RIGHT_USER_GATEWAYS_CREATE": 9, + "RIGHT_USER_CLIENTS_LIST": 10, + "RIGHT_USER_CLIENTS_CREATE": 11, + "RIGHT_USER_ORGANIZATIONS_LIST": 12, + "RIGHT_USER_ORGANIZATIONS_CREATE": 13, + "RIGHT_USER_NOTIFICATIONS_READ": 59, + "RIGHT_USER_ALL": 14, + "RIGHT_APPLICATION_INFO": 15, + "RIGHT_APPLICATION_SETTINGS_BASIC": 16, + "RIGHT_APPLICATION_SETTINGS_API_KEYS": 17, + "RIGHT_APPLICATION_SETTINGS_COLLABORATORS": 18, + "RIGHT_APPLICATION_SETTINGS_PACKAGES": 56, + "RIGHT_APPLICATION_DELETE": 19, + "RIGHT_APPLICATION_DEVICES_READ": 20, + "RIGHT_APPLICATION_DEVICES_WRITE": 21, + "RIGHT_APPLICATION_DEVICES_READ_KEYS": 22, + "RIGHT_APPLICATION_DEVICES_WRITE_KEYS": 23, + "RIGHT_APPLICATION_TRAFFIC_READ": 24, + "RIGHT_APPLICATION_TRAFFIC_UP_WRITE": 25, + "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE": 26, + "RIGHT_APPLICATION_LINK": 27, + "RIGHT_APPLICATION_ALL": 28, + "RIGHT_CLIENT_ALL": 29, + "RIGHT_CLIENT_INFO": 60, + "RIGHT_CLIENT_SETTINGS_BASIC": 61, + "RIGHT_CLIENT_SETTINGS_COLLABORATORS": 62, + "RIGHT_CLIENT_DELETE": 63, + "RIGHT_GATEWAY_INFO": 30, + "RIGHT_GATEWAY_SETTINGS_BASIC": 31, + "RIGHT_GATEWAY_SETTINGS_API_KEYS": 32, + "RIGHT_GATEWAY_SETTINGS_COLLABORATORS": 33, + "RIGHT_GATEWAY_DELETE": 34, + "RIGHT_GATEWAY_TRAFFIC_READ": 35, + "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE": 36, + "RIGHT_GATEWAY_LINK": 37, + "RIGHT_GATEWAY_STATUS_READ": 38, + "RIGHT_GATEWAY_LOCATION_READ": 39, + "RIGHT_GATEWAY_WRITE_SECRETS": 57, + "RIGHT_GATEWAY_READ_SECRETS": 58, + "RIGHT_GATEWAY_ALL": 40, + "RIGHT_ORGANIZATION_INFO": 41, + "RIGHT_ORGANIZATION_SETTINGS_BASIC": 42, + "RIGHT_ORGANIZATION_SETTINGS_API_KEYS": 43, + "RIGHT_ORGANIZATION_SETTINGS_MEMBERS": 44, + "RIGHT_ORGANIZATION_DELETE": 45, + "RIGHT_ORGANIZATION_APPLICATIONS_LIST": 46, + "RIGHT_ORGANIZATION_APPLICATIONS_CREATE": 47, + "RIGHT_ORGANIZATION_GATEWAYS_LIST": 48, + "RIGHT_ORGANIZATION_GATEWAYS_CREATE": 49, + "RIGHT_ORGANIZATION_CLIENTS_LIST": 50, + "RIGHT_ORGANIZATION_CLIENTS_CREATE": 51, + "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR": 52, + "RIGHT_ORGANIZATION_ALL": 53, + "RIGHT_SEND_INVITES": 54, + "RIGHT_ALL": 55, + } +) + +func (x Right) Enum() *Right { + p := new(Right) + *p = x + return p } func (x Right) String() string { - return proto.EnumName(Right_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (Right) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_9bb69af2cf8904c5, []int{0} +func (Right) Descriptor() protoreflect.EnumDescriptor { + return file_lorawan_stack_api_rights_proto_enumTypes[0].Descriptor() } -type Rights struct { - Rights []Right `protobuf:"varint,1,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (Right) Type() protoreflect.EnumType { + return &file_lorawan_stack_api_rights_proto_enumTypes[0] } -func (m *Rights) Reset() { *m = Rights{} } -func (m *Rights) String() string { return proto.CompactTextString(m) } -func (*Rights) ProtoMessage() {} -func (*Rights) Descriptor() ([]byte, []int) { - return fileDescriptor_9bb69af2cf8904c5, []int{0} +func (x Right) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (m *Rights) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Rights.Unmarshal(m, b) + +// Deprecated: Use Right.Descriptor instead. +func (Right) EnumDescriptor() ([]byte, []int) { + return file_lorawan_stack_api_rights_proto_rawDescGZIP(), []int{0} } -func (m *Rights) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Rights.Marshal(b, m, deterministic) + +type Rights struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Rights []Right `protobuf:"varint,1,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` } -func (m *Rights) XXX_Merge(src proto.Message) { - xxx_messageInfo_Rights.Merge(m, src) + +func (x *Rights) Reset() { + *x = Rights{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_rights_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Rights) XXX_Size() int { - return xxx_messageInfo_Rights.Size(m) + +func (x *Rights) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Rights) XXX_DiscardUnknown() { - xxx_messageInfo_Rights.DiscardUnknown(m) + +func (*Rights) ProtoMessage() {} + +func (x *Rights) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_rights_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Rights proto.InternalMessageInfo +// Deprecated: Use Rights.ProtoReflect.Descriptor instead. +func (*Rights) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_rights_proto_rawDescGZIP(), []int{0} +} -func (m *Rights) GetRights() []Right { - if m != nil { - return m.Rights +func (x *Rights) GetRights() []Right { + if x != nil { + return x.Rights } return nil } type APIKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Immutable and unique public identifier for the API key. // Generated by the Access Server. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` @@ -359,359 +405,661 @@ type APIKey struct { // User-defined (friendly) name for the API key. Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` // Rights that are granted to this API key. - Rights []Right `protobuf:"varint,4,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` - CreatedAt *types.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *types.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - ExpiresAt *types.Timestamp `protobuf:"bytes,7,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *APIKey) Reset() { *m = APIKey{} } -func (m *APIKey) String() string { return proto.CompactTextString(m) } -func (*APIKey) ProtoMessage() {} -func (*APIKey) Descriptor() ([]byte, []int) { - return fileDescriptor_9bb69af2cf8904c5, []int{1} -} -func (m *APIKey) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_APIKey.Unmarshal(m, b) + Rights []Right `protobuf:"varint,4,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` } -func (m *APIKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_APIKey.Marshal(b, m, deterministic) -} -func (m *APIKey) XXX_Merge(src proto.Message) { - xxx_messageInfo_APIKey.Merge(m, src) + +func (x *APIKey) Reset() { + *x = APIKey{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_rights_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *APIKey) XXX_Size() int { - return xxx_messageInfo_APIKey.Size(m) + +func (x *APIKey) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *APIKey) XXX_DiscardUnknown() { - xxx_messageInfo_APIKey.DiscardUnknown(m) + +func (*APIKey) ProtoMessage() {} + +func (x *APIKey) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_rights_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_APIKey proto.InternalMessageInfo +// Deprecated: Use APIKey.ProtoReflect.Descriptor instead. +func (*APIKey) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_rights_proto_rawDescGZIP(), []int{1} +} -func (m *APIKey) GetId() string { - if m != nil { - return m.Id +func (x *APIKey) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *APIKey) GetKey() string { - if m != nil { - return m.Key +func (x *APIKey) GetKey() string { + if x != nil { + return x.Key } return "" } -func (m *APIKey) GetName() string { - if m != nil { - return m.Name +func (x *APIKey) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *APIKey) GetRights() []Right { - if m != nil { - return m.Rights +func (x *APIKey) GetRights() []Right { + if x != nil { + return x.Rights } return nil } -func (m *APIKey) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *APIKey) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *APIKey) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *APIKey) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *APIKey) GetExpiresAt() *types.Timestamp { - if m != nil { - return m.ExpiresAt +func (x *APIKey) GetExpiresAt() *timestamppb.Timestamp { + if x != nil { + return x.ExpiresAt } return nil } type APIKeys struct { - ApiKeys []*APIKey `protobuf:"bytes,1,rep,name=api_keys,json=apiKeys,proto3" json:"api_keys,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *APIKeys) Reset() { *m = APIKeys{} } -func (m *APIKeys) String() string { return proto.CompactTextString(m) } -func (*APIKeys) ProtoMessage() {} -func (*APIKeys) Descriptor() ([]byte, []int) { - return fileDescriptor_9bb69af2cf8904c5, []int{2} -} -func (m *APIKeys) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_APIKeys.Unmarshal(m, b) + ApiKeys []*APIKey `protobuf:"bytes,1,rep,name=api_keys,json=apiKeys,proto3" json:"api_keys,omitempty"` } -func (m *APIKeys) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_APIKeys.Marshal(b, m, deterministic) -} -func (m *APIKeys) XXX_Merge(src proto.Message) { - xxx_messageInfo_APIKeys.Merge(m, src) + +func (x *APIKeys) Reset() { + *x = APIKeys{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_rights_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *APIKeys) XXX_Size() int { - return xxx_messageInfo_APIKeys.Size(m) + +func (x *APIKeys) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *APIKeys) XXX_DiscardUnknown() { - xxx_messageInfo_APIKeys.DiscardUnknown(m) + +func (*APIKeys) ProtoMessage() {} + +func (x *APIKeys) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_rights_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_APIKeys proto.InternalMessageInfo +// Deprecated: Use APIKeys.ProtoReflect.Descriptor instead. +func (*APIKeys) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_rights_proto_rawDescGZIP(), []int{2} +} -func (m *APIKeys) GetApiKeys() []*APIKey { - if m != nil { - return m.ApiKeys +func (x *APIKeys) GetApiKeys() []*APIKey { + if x != nil { + return x.ApiKeys } return nil } type Collaborator struct { - Ids *OrganizationOrUserIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` - Rights []Right `protobuf:"varint,2,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Collaborator) Reset() { *m = Collaborator{} } -func (m *Collaborator) String() string { return proto.CompactTextString(m) } -func (*Collaborator) ProtoMessage() {} -func (*Collaborator) Descriptor() ([]byte, []int) { - return fileDescriptor_9bb69af2cf8904c5, []int{3} + Ids *OrganizationOrUserIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` + Rights []Right `protobuf:"varint,2,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` } -func (m *Collaborator) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Collaborator.Unmarshal(m, b) -} -func (m *Collaborator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Collaborator.Marshal(b, m, deterministic) -} -func (m *Collaborator) XXX_Merge(src proto.Message) { - xxx_messageInfo_Collaborator.Merge(m, src) + +func (x *Collaborator) Reset() { + *x = Collaborator{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_rights_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Collaborator) XXX_Size() int { - return xxx_messageInfo_Collaborator.Size(m) + +func (x *Collaborator) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Collaborator) XXX_DiscardUnknown() { - xxx_messageInfo_Collaborator.DiscardUnknown(m) + +func (*Collaborator) ProtoMessage() {} + +func (x *Collaborator) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_rights_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Collaborator proto.InternalMessageInfo +// Deprecated: Use Collaborator.ProtoReflect.Descriptor instead. +func (*Collaborator) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_rights_proto_rawDescGZIP(), []int{3} +} -func (m *Collaborator) GetIds() *OrganizationOrUserIdentifiers { - if m != nil { - return m.Ids +func (x *Collaborator) GetIds() *OrganizationOrUserIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *Collaborator) GetRights() []Right { - if m != nil { - return m.Rights +func (x *Collaborator) GetRights() []Right { + if x != nil { + return x.Rights } return nil } type GetCollaboratorResponse struct { - Ids *OrganizationOrUserIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` - Rights []Right `protobuf:"varint,2,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *GetCollaboratorResponse) Reset() { *m = GetCollaboratorResponse{} } -func (m *GetCollaboratorResponse) String() string { return proto.CompactTextString(m) } -func (*GetCollaboratorResponse) ProtoMessage() {} -func (*GetCollaboratorResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9bb69af2cf8904c5, []int{4} + Ids *OrganizationOrUserIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` + Rights []Right `protobuf:"varint,2,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` } -func (m *GetCollaboratorResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetCollaboratorResponse.Unmarshal(m, b) -} -func (m *GetCollaboratorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetCollaboratorResponse.Marshal(b, m, deterministic) -} -func (m *GetCollaboratorResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetCollaboratorResponse.Merge(m, src) + +func (x *GetCollaboratorResponse) Reset() { + *x = GetCollaboratorResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_rights_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetCollaboratorResponse) XXX_Size() int { - return xxx_messageInfo_GetCollaboratorResponse.Size(m) + +func (x *GetCollaboratorResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetCollaboratorResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetCollaboratorResponse.DiscardUnknown(m) + +func (*GetCollaboratorResponse) ProtoMessage() {} + +func (x *GetCollaboratorResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_rights_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetCollaboratorResponse proto.InternalMessageInfo +// Deprecated: Use GetCollaboratorResponse.ProtoReflect.Descriptor instead. +func (*GetCollaboratorResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_rights_proto_rawDescGZIP(), []int{4} +} -func (m *GetCollaboratorResponse) GetIds() *OrganizationOrUserIdentifiers { - if m != nil { - return m.Ids +func (x *GetCollaboratorResponse) GetIds() *OrganizationOrUserIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *GetCollaboratorResponse) GetRights() []Right { - if m != nil { - return m.Rights +func (x *GetCollaboratorResponse) GetRights() []Right { + if x != nil { + return x.Rights } return nil } type Collaborators struct { - Collaborators []*Collaborator `protobuf:"bytes,1,rep,name=collaborators,proto3" json:"collaborators,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Collaborators []*Collaborator `protobuf:"bytes,1,rep,name=collaborators,proto3" json:"collaborators,omitempty"` } -func (m *Collaborators) Reset() { *m = Collaborators{} } -func (m *Collaborators) String() string { return proto.CompactTextString(m) } -func (*Collaborators) ProtoMessage() {} -func (*Collaborators) Descriptor() ([]byte, []int) { - return fileDescriptor_9bb69af2cf8904c5, []int{5} +func (x *Collaborators) Reset() { + *x = Collaborators{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_rights_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Collaborators) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Collaborators.Unmarshal(m, b) + +func (x *Collaborators) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Collaborators) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Collaborators.Marshal(b, m, deterministic) + +func (*Collaborators) ProtoMessage() {} + +func (x *Collaborators) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_rights_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *Collaborators) XXX_Merge(src proto.Message) { - xxx_messageInfo_Collaborators.Merge(m, src) + +// Deprecated: Use Collaborators.ProtoReflect.Descriptor instead. +func (*Collaborators) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_rights_proto_rawDescGZIP(), []int{5} } -func (m *Collaborators) XXX_Size() int { - return xxx_messageInfo_Collaborators.Size(m) + +func (x *Collaborators) GetCollaborators() []*Collaborator { + if x != nil { + return x.Collaborators + } + return nil } -func (m *Collaborators) XXX_DiscardUnknown() { - xxx_messageInfo_Collaborators.DiscardUnknown(m) + +var File_lorawan_stack_api_rights_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_rights_proto_rawDesc = []byte{ + 0x0a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, + 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, + 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, + 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, + 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x46, 0x0a, 0x06, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x3c, 0x0a, + 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, + 0x69, 0x67, 0x68, 0x74, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x82, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x22, 0xca, 0x02, 0x0a, 0x06, + 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x0d, 0xfa, 0x42, + 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, + 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x65, 0x78, 0x70, + 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, + 0x02, 0x40, 0x01, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x3a, 0x08, + 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x3c, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x4b, + 0x65, 0x79, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x61, + 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x22, 0xaf, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x49, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, + 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x92, 0x01, + 0x07, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, + 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0xa1, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, + 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x53, 0x0a, 0x0d, + 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x42, 0x0a, + 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x73, 0x2a, 0xdf, 0x10, 0x0a, 0x05, 0x52, 0x69, 0x67, 0x68, 0x74, 0x12, 0x11, 0x0a, 0x0d, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x00, 0x12, 0x13, + 0x0a, 0x0f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x46, + 0x4f, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, + 0x52, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x41, 0x53, 0x49, 0x43, + 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, + 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x4b, 0x45, + 0x59, 0x53, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, + 0x45, 0x52, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x52, + 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, + 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x05, 0x12, 0x20, + 0x0a, 0x1c, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, 0x50, 0x50, + 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x06, + 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, + 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, + 0x54, 0x45, 0x10, 0x07, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, + 0x45, 0x52, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, + 0x10, 0x08, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, + 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, + 0x10, 0x09, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, + 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x0a, 0x12, + 0x1d, 0x0a, 0x19, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x43, 0x4c, + 0x49, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x0b, 0x12, 0x21, + 0x0a, 0x1d, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4f, 0x52, 0x47, + 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, + 0x0c, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, + 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x43, 0x52, + 0x45, 0x41, 0x54, 0x45, 0x10, 0x0d, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, + 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x3b, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x49, 0x47, + 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x0e, 0x12, 0x1a, 0x0a, + 0x16, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x0f, 0x12, 0x24, 0x0a, 0x20, 0x52, 0x49, 0x47, + 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, + 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x41, 0x53, 0x49, 0x43, 0x10, 0x10, 0x12, + 0x27, 0x0a, 0x23, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x41, 0x50, + 0x49, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x11, 0x12, 0x2c, 0x0a, 0x28, 0x52, 0x49, 0x47, 0x48, + 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, + 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, + 0x54, 0x4f, 0x52, 0x53, 0x10, 0x12, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, + 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x54, + 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45, 0x53, 0x10, 0x38, 0x12, + 0x1c, 0x0a, 0x18, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x13, 0x12, 0x22, 0x0a, + 0x1e, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, + 0x14, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x53, 0x5f, 0x57, + 0x52, 0x49, 0x54, 0x45, 0x10, 0x15, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, + 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x49, + 0x43, 0x45, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x16, 0x12, + 0x28, 0x0a, 0x24, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x53, 0x5f, 0x57, 0x52, 0x49, + 0x54, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x17, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x49, 0x47, + 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, + 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x18, 0x12, 0x26, 0x0a, + 0x22, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f, 0x55, 0x50, 0x5f, 0x57, 0x52, + 0x49, 0x54, 0x45, 0x10, 0x19, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, + 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, + 0x49, 0x43, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x1a, 0x12, + 0x1a, 0x0a, 0x16, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x1b, 0x12, 0x19, 0x0a, 0x15, 0x52, + 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x1c, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, + 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x1d, 0x12, 0x15, 0x0a, 0x11, + 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x49, 0x4e, 0x46, + 0x4f, 0x10, 0x3c, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x43, 0x4c, 0x49, + 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x41, 0x53, + 0x49, 0x43, 0x10, 0x3d, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x43, 0x4c, + 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x43, 0x4f, + 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x53, 0x10, 0x3e, 0x12, 0x17, 0x0a, + 0x13, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, + 0x4c, 0x45, 0x54, 0x45, 0x10, 0x3f, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, + 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x1e, 0x12, 0x20, + 0x0a, 0x1c, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, + 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x41, 0x53, 0x49, 0x43, 0x10, 0x1f, + 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, + 0x59, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x4b, + 0x45, 0x59, 0x53, 0x10, 0x20, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x47, + 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, + 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x53, 0x10, 0x21, 0x12, + 0x18, 0x0a, 0x14, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, + 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x22, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x49, 0x47, + 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, + 0x49, 0x43, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x23, 0x12, 0x24, 0x0a, 0x20, 0x52, 0x49, 0x47, + 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, + 0x49, 0x43, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x24, 0x12, + 0x16, 0x0a, 0x12, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, + 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x25, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x49, 0x47, 0x48, 0x54, + 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, + 0x52, 0x45, 0x41, 0x44, 0x10, 0x26, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, + 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x27, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x49, 0x47, 0x48, 0x54, + 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x53, + 0x45, 0x43, 0x52, 0x45, 0x54, 0x53, 0x10, 0x39, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x49, 0x47, 0x48, + 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x53, + 0x45, 0x43, 0x52, 0x45, 0x54, 0x53, 0x10, 0x3a, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x49, 0x47, 0x48, + 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x28, 0x12, + 0x1b, 0x0a, 0x17, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x29, 0x12, 0x25, 0x0a, 0x21, + 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x41, 0x53, 0x49, + 0x43, 0x10, 0x2a, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, + 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, + 0x47, 0x53, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x2b, 0x12, 0x27, 0x0a, + 0x23, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x4d, 0x45, 0x4d, + 0x42, 0x45, 0x52, 0x53, 0x10, 0x2c, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, + 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, + 0x45, 0x54, 0x45, 0x10, 0x2d, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, + 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x50, 0x4c, + 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x2e, 0x12, + 0x2a, 0x0a, 0x26, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x2f, 0x12, 0x24, 0x0a, 0x20, 0x52, + 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, + 0x30, 0x12, 0x26, 0x0a, 0x22, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, + 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x53, + 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x31, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x49, 0x47, + 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x32, 0x12, 0x25, + 0x0a, 0x21, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x52, 0x45, + 0x41, 0x54, 0x45, 0x10, 0x33, 0x12, 0x2a, 0x0a, 0x26, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, + 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x44, 0x5f, + 0x41, 0x53, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, + 0x34, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, + 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x35, 0x12, 0x16, 0x0a, + 0x12, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x56, 0x49, + 0x54, 0x45, 0x53, 0x10, 0x36, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, + 0x4c, 0x4c, 0x10, 0x37, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x18, 0x01, 0x2a, 0x05, 0x52, 0x49, + 0x47, 0x48, 0x54, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } -var xxx_messageInfo_Collaborators proto.InternalMessageInfo +var ( + file_lorawan_stack_api_rights_proto_rawDescOnce sync.Once + file_lorawan_stack_api_rights_proto_rawDescData = file_lorawan_stack_api_rights_proto_rawDesc +) -func (m *Collaborators) GetCollaborators() []*Collaborator { - if m != nil { - return m.Collaborators - } - return nil +func file_lorawan_stack_api_rights_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_rights_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_rights_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_rights_proto_rawDescData) + }) + return file_lorawan_stack_api_rights_proto_rawDescData } -func init() { - proto.RegisterEnum("ttn.lorawan.v3.Right", Right_name, Right_value) - golang_proto.RegisterEnum("ttn.lorawan.v3.Right", Right_name, Right_value) - proto.RegisterType((*Rights)(nil), "ttn.lorawan.v3.Rights") - golang_proto.RegisterType((*Rights)(nil), "ttn.lorawan.v3.Rights") - proto.RegisterType((*APIKey)(nil), "ttn.lorawan.v3.APIKey") - golang_proto.RegisterType((*APIKey)(nil), "ttn.lorawan.v3.APIKey") - proto.RegisterType((*APIKeys)(nil), "ttn.lorawan.v3.APIKeys") - golang_proto.RegisterType((*APIKeys)(nil), "ttn.lorawan.v3.APIKeys") - proto.RegisterType((*Collaborator)(nil), "ttn.lorawan.v3.Collaborator") - golang_proto.RegisterType((*Collaborator)(nil), "ttn.lorawan.v3.Collaborator") - proto.RegisterType((*GetCollaboratorResponse)(nil), "ttn.lorawan.v3.GetCollaboratorResponse") - golang_proto.RegisterType((*GetCollaboratorResponse)(nil), "ttn.lorawan.v3.GetCollaboratorResponse") - proto.RegisterType((*Collaborators)(nil), "ttn.lorawan.v3.Collaborators") - golang_proto.RegisterType((*Collaborators)(nil), "ttn.lorawan.v3.Collaborators") -} - -func init() { proto.RegisterFile("lorawan-stack/api/rights.proto", fileDescriptor_9bb69af2cf8904c5) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/rights.proto", fileDescriptor_9bb69af2cf8904c5) -} - -var fileDescriptor_9bb69af2cf8904c5 = []byte{ - // 1283 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x4f, 0x57, 0xdb, 0xc6, - 0x17, 0xfd, 0xc9, 0xf8, 0x1f, 0x8f, 0x98, 0x4c, 0x26, 0x01, 0x8c, 0x21, 0x40, 0x4c, 0xfe, 0xf0, - 0xa3, 0xb1, 0xdd, 0x40, 0xd3, 0x36, 0x69, 0xda, 0x54, 0x96, 0x05, 0x11, 0x28, 0x16, 0x47, 0x12, - 0xc9, 0x49, 0x36, 0x3e, 0x02, 0x2b, 0x42, 0x05, 0x24, 0x1f, 0x69, 0x20, 0xa1, 0xcb, 0x2e, 0xbb, - 0xec, 0x37, 0xe8, 0x36, 0x9b, 0x9e, 0xd3, 0x4f, 0xd0, 0x75, 0xbf, 0x44, 0x17, 0xdd, 0x75, 0xd9, - 0x65, 0x56, 0x3d, 0x96, 0xc6, 0x8c, 0x24, 0x8b, 0xb8, 0x74, 0x27, 0xde, 0xbb, 0xef, 0xcd, 0x9d, - 0x7b, 0x9f, 0x9e, 0x30, 0x2c, 0x1c, 0xb9, 0x9e, 0xf1, 0xd6, 0x70, 0x6a, 0x3e, 0x31, 0xf6, 0x0f, - 0x1b, 0x46, 0xcf, 0x6e, 0x78, 0xb6, 0x75, 0x40, 0xfc, 0x7a, 0xcf, 0x73, 0x89, 0x8b, 0x27, 0x09, - 0x71, 0xea, 0x14, 0x53, 0x3f, 0x5d, 0xaf, 0xb4, 0x2c, 0x9b, 0x1c, 0x9c, 0xec, 0xd5, 0xf7, 0xdd, - 0xe3, 0x86, 0x7e, 0x60, 0xea, 0x07, 0xb6, 0x63, 0xf9, 0x92, 0xd3, 0x3d, 0xf1, 0x89, 0x67, 0x9b, - 0x7e, 0x23, 0xa8, 0xda, 0xaf, 0x59, 0xa6, 0x53, 0xb3, 0xdc, 0xda, 0x9b, 0x23, 0xc3, 0xf2, 0x1b, - 0x86, 0xe3, 0xb8, 0xc4, 0x20, 0xb6, 0xeb, 0xd0, 0xae, 0x15, 0x3e, 0xd2, 0xc5, 0x74, 0x4e, 0xdd, - 0xb3, 0x9e, 0xe7, 0xbe, 0x3b, 0x8b, 0x16, 0x9f, 0x1a, 0x47, 0x76, 0xd7, 0x20, 0x66, 0x63, 0xe8, - 0x81, 0xb6, 0xa8, 0x45, 0x5a, 0x58, 0xae, 0xe5, 0x86, 0xc5, 0x7b, 0x27, 0x6f, 0x82, 0xbf, 0x82, - 0x3f, 0x82, 0x27, 0x0a, 0x17, 0x2e, 0xc5, 0xfb, 0x3b, 0xdf, 0x75, 0x52, 0x68, 0x2f, 0x5a, 0xae, - 0x6b, 0x1d, 0x99, 0xec, 0x28, 0x62, 0x1f, 0x9b, 0x3e, 0x31, 0x8e, 0x7b, 0x14, 0xb0, 0x3c, 0xac, - 0xa6, 0xdd, 0x35, 0x1d, 0x62, 0xbf, 0xb1, 0x4d, 0x8f, 0x76, 0xa9, 0x6e, 0x40, 0x5e, 0x0d, 0x24, - 0xc6, 0x4f, 0x20, 0x1f, 0x8a, 0x5d, 0xe6, 0x96, 0xc6, 0x56, 0x26, 0xd7, 0xa6, 0xea, 0x71, 0xb5, - 0xeb, 0x01, 0xae, 0x59, 0xfa, 0xd0, 0x84, 0x9f, 0xb8, 0x42, 0x35, 0xf7, 0x03, 0x97, 0x41, 0x9c, - 0x4a, 0x6b, 0xaa, 0xbf, 0x67, 0x20, 0xcf, 0xef, 0x48, 0xdb, 0xe6, 0x19, 0x9e, 0x84, 0x8c, 0xdd, - 0x2d, 0x73, 0x4b, 0xdc, 0xca, 0xb8, 0x9a, 0xb1, 0xbb, 0x18, 0xc1, 0xd8, 0xa1, 0x79, 0x56, 0xce, - 0x04, 0x81, 0xfe, 0x23, 0x9e, 0x83, 0xac, 0x63, 0x1c, 0x9b, 0xe5, 0xb1, 0x7e, 0xa8, 0x59, 0xf8, - 0xd0, 0xcc, 0x7a, 0x99, 0xf2, 0x9a, 0x1a, 0x04, 0x23, 0x3c, 0xb2, 0x97, 0xe7, 0x81, 0x1f, 0x01, - 0xec, 0x7b, 0xa6, 0x41, 0xcc, 0x6e, 0xc7, 0x20, 0xe5, 0xdc, 0x12, 0xb7, 0x32, 0xb1, 0x56, 0xa9, - 0x87, 0x52, 0xd5, 0x07, 0x52, 0xd5, 0xf5, 0x81, 0x54, 0xea, 0x38, 0x45, 0xf3, 0xa4, 0x5f, 0x7a, - 0xd2, 0xeb, 0x0e, 0x4a, 0xf3, 0xa3, 0x4b, 0x29, 0x9a, 0x27, 0x58, 0x00, 0x30, 0xdf, 0xf5, 0x6c, - 0xcf, 0xf4, 0xfb, 0xa5, 0x85, 0x51, 0xa5, 0xcd, 0xe2, 0x87, 0x66, 0xee, 0x57, 0x2e, 0xf3, 0x2d, - 0xa7, 0x8e, 0xd3, 0x3a, 0x9e, 0x3c, 0x2e, 0xfe, 0xfd, 0x7e, 0x36, 0x5b, 0xe4, 0x10, 0x57, 0x7d, - 0x02, 0x85, 0x50, 0x4b, 0x1f, 0x3f, 0x80, 0xa2, 0xd1, 0xb3, 0x3b, 0x87, 0xe6, 0x59, 0xe8, 0xcb, - 0xc4, 0xda, 0x74, 0x52, 0x8f, 0x10, 0xaa, 0x16, 0x8c, 0x9e, 0xdd, 0x2f, 0xa9, 0xfe, 0xc2, 0xc1, - 0x15, 0xc1, 0x3d, 0x3a, 0x32, 0xf6, 0x5c, 0xcf, 0x20, 0xae, 0x87, 0x25, 0x18, 0xb3, 0xbb, 0x7e, - 0xe0, 0xc8, 0xc4, 0x5a, 0x2d, 0x59, 0xae, 0x78, 0x96, 0xe1, 0xd8, 0xdf, 0x07, 0xb3, 0xa5, 0x78, - 0xbb, 0xbe, 0xe9, 0x49, 0x6c, 0x4a, 0x02, 0xa6, 0x3f, 0x06, 0x0a, 0xf7, 0x7b, 0x44, 0xcc, 0xc9, - 0x5c, 0xde, 0x9c, 0xad, 0x6c, 0x71, 0x0c, 0x65, 0xb7, 0xb2, 0xc5, 0x2c, 0xca, 0x6d, 0x65, 0x8b, - 0x39, 0x94, 0xdf, 0xca, 0x16, 0xf3, 0xa8, 0x50, 0xfd, 0x99, 0x83, 0x99, 0x4d, 0x93, 0x44, 0x49, - 0xab, 0xa6, 0xdf, 0x73, 0x1d, 0xdf, 0xc4, 0x4f, 0xff, 0x3b, 0xf9, 0x90, 0x72, 0xed, 0x5f, 0x51, - 0x1e, 0xc9, 0x51, 0x83, 0x52, 0x94, 0x9f, 0x8f, 0x9b, 0x50, 0xda, 0x8f, 0x06, 0xa8, 0x3d, 0xf3, - 0xc9, 0xf6, 0xb1, 0x5b, 0xc5, 0x4b, 0x56, 0xff, 0x40, 0x90, 0x0b, 0x8e, 0xc7, 0xd7, 0xa0, 0x14, - 0x10, 0xe8, 0xd8, 0x4e, 0xb0, 0x5b, 0xd0, 0xff, 0xf0, 0x75, 0xb8, 0xaa, 0x4a, 0x9b, 0xcf, 0xf4, - 0xce, 0xae, 0x26, 0xaa, 0x1d, 0xa9, 0xbd, 0xa1, 0x20, 0x0e, 0xdf, 0x84, 0xd9, 0x48, 0x50, 0x13, - 0x75, 0x5d, 0x6a, 0x6f, 0x6a, 0x9d, 0x26, 0xaf, 0x49, 0x02, 0xca, 0xe0, 0x25, 0x98, 0x4f, 0x4b, - 0xf3, 0x3b, 0x52, 0x67, 0x5b, 0x7c, 0xa5, 0xa1, 0x31, 0x3c, 0x05, 0xd7, 0x22, 0x88, 0x96, 0x28, - 0x8b, 0xba, 0x88, 0xb2, 0xf8, 0x16, 0xdc, 0x8c, 0x84, 0xf9, 0x5d, 0xfd, 0x99, 0xa2, 0x4a, 0xaf, - 0xc5, 0x56, 0x47, 0x90, 0x25, 0xb1, 0xad, 0x6b, 0x28, 0x97, 0xe8, 0xcd, 0xef, 0xec, 0xc8, 0x92, - 0xc0, 0xeb, 0x92, 0xd2, 0xd6, 0x3a, 0xb2, 0xa4, 0xe9, 0x28, 0x8f, 0xab, 0xb0, 0x70, 0x11, 0x42, - 0x50, 0x45, 0x5e, 0x17, 0x51, 0x01, 0xcf, 0x43, 0x39, 0x82, 0xd9, 0xe4, 0x75, 0xf1, 0x25, 0xff, - 0x8a, 0x76, 0x28, 0xe2, 0x05, 0xa8, 0xa4, 0x65, 0x69, 0xf5, 0x38, 0x9e, 0x83, 0x99, 0x48, 0x9e, - 0x72, 0x0b, 0x8b, 0x21, 0xa1, 0xcd, 0x20, 0x49, 0x6b, 0x27, 0x12, 0x57, 0x54, 0xd4, 0x4d, 0xbe, - 0x2d, 0xbd, 0x8e, 0x5e, 0xe0, 0x0a, 0x5e, 0x86, 0xc5, 0x0b, 0x21, 0xb4, 0x4f, 0x29, 0xd1, 0xa7, - 0xad, 0xe8, 0xd2, 0xc6, 0xf9, 0x35, 0x55, 0x91, 0x6f, 0xa1, 0xaf, 0x30, 0x86, 0xc9, 0xa8, 0x10, - 0xb2, 0x8c, 0x26, 0x71, 0x05, 0xa6, 0xc3, 0x58, 0x44, 0x97, 0xd0, 0xd5, 0xab, 0xf8, 0x36, 0x2c, - 0x0d, 0xe7, 0x12, 0xe6, 0x22, 0x7c, 0x0f, 0x96, 0x3f, 0x82, 0x3a, 0xf7, 0xf8, 0x1a, 0xbe, 0x0f, - 0x2b, 0x1f, 0x01, 0x0a, 0x8a, 0x2c, 0xf3, 0x4d, 0x45, 0xe5, 0x75, 0x45, 0xd5, 0x10, 0x1e, 0xd1, - 0x76, 0x87, 0x17, 0xb6, 0xf9, 0x4d, 0x51, 0x43, 0x5f, 0x32, 0xeb, 0xa2, 0x40, 0x3a, 0x41, 0xd7, - 0x99, 0xf9, 0xf1, 0xec, 0x0b, 0x49, 0x10, 0xa9, 0x2e, 0x37, 0x98, 0xbe, 0x69, 0x98, 0x97, 0xaa, - 0xa4, 0x8b, 0x68, 0x2a, 0x9d, 0x4f, 0xb4, 0x51, 0x78, 0xcd, 0x69, 0xbc, 0x02, 0xb7, 0x47, 0x74, - 0x0b, 0x91, 0x33, 0xe9, 0xdc, 0x74, 0x95, 0xdf, 0xd8, 0x90, 0x84, 0x90, 0x5b, 0x19, 0xdf, 0x85, - 0xea, 0xc5, 0x98, 0xdd, 0x1d, 0x4a, 0x6f, 0x36, 0xfd, 0xd4, 0x01, 0xae, 0xa5, 0xbc, 0x6c, 0x53, - 0x64, 0x25, 0xdd, 0x71, 0x59, 0x6a, 0x6f, 0xa3, 0x39, 0x3c, 0x0b, 0x53, 0xc3, 0xb9, 0xfe, 0xa0, - 0xcc, 0xe3, 0x1b, 0x80, 0xc2, 0x54, 0x38, 0xc1, 0x41, 0xf4, 0x26, 0x7b, 0x6f, 0x69, 0x34, 0x98, - 0x9c, 0x27, 0x78, 0x11, 0xe6, 0x62, 0xe1, 0xc4, 0xd0, 0x7c, 0xcd, 0xd4, 0x4c, 0x02, 0xe2, 0x63, - 0xf0, 0x0d, 0x9e, 0x81, 0xeb, 0x31, 0x20, 0x35, 0xf6, 0x29, 0x9e, 0x06, 0x1c, 0x26, 0xe8, 0xeb, - 0x18, 0x1e, 0xbd, 0xc0, 0xf6, 0xc1, 0x20, 0x9e, 0x38, 0x7b, 0x91, 0xd9, 0x3d, 0x84, 0x38, 0x1f, - 0xd6, 0x25, 0xa6, 0xe7, 0x10, 0x28, 0xce, 0xf0, 0x16, 0x2e, 0xc3, 0x8d, 0x38, 0x92, 0x52, 0xac, - 0xb2, 0xb5, 0x31, 0xc8, 0xc4, 0xbc, 0x5d, 0x66, 0xef, 0x57, 0x32, 0x1f, 0xf1, 0xeb, 0xf6, 0xf0, - 0x45, 0x03, 0xaf, 0xee, 0xb0, 0xbd, 0x72, 0xce, 0x50, 0xe7, 0xf5, 0x5d, 0x3a, 0xd4, 0x77, 0x99, - 0x05, 0xe7, 0x65, 0x0a, 0xf5, 0x33, 0x00, 0xdc, 0x1b, 0x06, 0x84, 0xb3, 0xa9, 0x89, 0x82, 0x2a, - 0xea, 0x1a, 0x7a, 0x34, 0x4c, 0x3f, 0x98, 0xf2, 0x41, 0xfe, 0x31, 0xf3, 0x7e, 0x90, 0xef, 0x8f, - 0xc4, 0x0a, 0x5b, 0x86, 0xd1, 0x45, 0x15, 0xba, 0xf3, 0x7f, 0x7c, 0x07, 0x6e, 0xa5, 0x24, 0x13, - 0x16, 0xad, 0x32, 0xf5, 0xd3, 0x61, 0xe7, 0x3e, 0x7d, 0xc2, 0x06, 0x29, 0x1d, 0xf9, 0x5c, 0x7c, - 0xde, 0x14, 0x55, 0x0d, 0xdd, 0x67, 0x72, 0xc5, 0x80, 0xd4, 0xab, 0xda, 0x05, 0x27, 0x0e, 0x7f, - 0x4e, 0xea, 0x78, 0x15, 0xee, 0x8e, 0x42, 0xd2, 0xa5, 0xdc, 0x60, 0x0e, 0xc7, 0xb0, 0xf1, 0xcf, - 0xcb, 0xa7, 0xec, 0x1d, 0x4f, 0x47, 0xd1, 0x6e, 0x0f, 0xd8, 0xe0, 0xc6, 0x70, 0xb1, 0xcf, 0xcd, - 0xda, 0x05, 0x0a, 0x27, 0x3e, 0x3b, 0xeb, 0x17, 0xdd, 0xa2, 0xd5, 0xea, 0xf0, 0xf1, 0x11, 0x47, - 0x9f, 0xb1, 0x8d, 0x11, 0xc7, 0xca, 0x32, 0x7a, 0xc8, 0xa6, 0x53, 0x13, 0xdb, 0xad, 0x8e, 0xd4, - 0x7e, 0x21, 0xe9, 0xa2, 0x86, 0x3e, 0xc7, 0x25, 0x18, 0xa7, 0x9b, 0x44, 0x96, 0xd1, 0x17, 0x95, - 0xd2, 0x5f, 0xef, 0x67, 0xc7, 0xcb, 0xdc, 0x6a, 0x2e, 0x08, 0x36, 0x1f, 0xfe, 0xf6, 0xe7, 0x02, - 0xf7, 0xba, 0x61, 0xb9, 0x75, 0x72, 0x60, 0x92, 0xe0, 0x87, 0x46, 0xdd, 0x31, 0xc9, 0x5b, 0xd7, - 0x3b, 0x6c, 0xc4, 0x7f, 0x1f, 0x9c, 0xae, 0x37, 0x7a, 0x87, 0x56, 0x83, 0x10, 0xa7, 0xb7, 0xb7, - 0x97, 0x0f, 0xfe, 0x69, 0x5d, 0xff, 0x27, 0x00, 0x00, 0xff, 0xff, 0x51, 0x4e, 0x29, 0xf4, 0x92, - 0x0d, 0x00, 0x00, +var file_lorawan_stack_api_rights_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_lorawan_stack_api_rights_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_lorawan_stack_api_rights_proto_goTypes = []interface{}{ + (Right)(0), // 0: ttn.lorawan.v3.Right + (*Rights)(nil), // 1: ttn.lorawan.v3.Rights + (*APIKey)(nil), // 2: ttn.lorawan.v3.APIKey + (*APIKeys)(nil), // 3: ttn.lorawan.v3.APIKeys + (*Collaborator)(nil), // 4: ttn.lorawan.v3.Collaborator + (*GetCollaboratorResponse)(nil), // 5: ttn.lorawan.v3.GetCollaboratorResponse + (*Collaborators)(nil), // 6: ttn.lorawan.v3.Collaborators + (*timestamppb.Timestamp)(nil), // 7: google.protobuf.Timestamp + (*OrganizationOrUserIdentifiers)(nil), // 8: ttn.lorawan.v3.OrganizationOrUserIdentifiers +} +var file_lorawan_stack_api_rights_proto_depIdxs = []int32{ + 0, // 0: ttn.lorawan.v3.Rights.rights:type_name -> ttn.lorawan.v3.Right + 0, // 1: ttn.lorawan.v3.APIKey.rights:type_name -> ttn.lorawan.v3.Right + 7, // 2: ttn.lorawan.v3.APIKey.created_at:type_name -> google.protobuf.Timestamp + 7, // 3: ttn.lorawan.v3.APIKey.updated_at:type_name -> google.protobuf.Timestamp + 7, // 4: ttn.lorawan.v3.APIKey.expires_at:type_name -> google.protobuf.Timestamp + 2, // 5: ttn.lorawan.v3.APIKeys.api_keys:type_name -> ttn.lorawan.v3.APIKey + 8, // 6: ttn.lorawan.v3.Collaborator.ids:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 0, // 7: ttn.lorawan.v3.Collaborator.rights:type_name -> ttn.lorawan.v3.Right + 8, // 8: ttn.lorawan.v3.GetCollaboratorResponse.ids:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 0, // 9: ttn.lorawan.v3.GetCollaboratorResponse.rights:type_name -> ttn.lorawan.v3.Right + 4, // 10: ttn.lorawan.v3.Collaborators.collaborators:type_name -> ttn.lorawan.v3.Collaborator + 11, // [11:11] is the sub-list for method output_type + 11, // [11:11] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_rights_proto_init() } +func file_lorawan_stack_api_rights_proto_init() { + if File_lorawan_stack_api_rights_proto != nil { + return + } + file_lorawan_stack_api_identifiers_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_rights_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Rights); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_rights_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*APIKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_rights_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*APIKeys); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_rights_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Collaborator); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_rights_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCollaboratorResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_rights_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Collaborators); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_rights_proto_rawDesc, + NumEnums: 1, + NumMessages: 6, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_rights_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_rights_proto_depIdxs, + EnumInfos: file_lorawan_stack_api_rights_proto_enumTypes, + MessageInfos: file_lorawan_stack_api_rights_proto_msgTypes, + }.Build() + File_lorawan_stack_api_rights_proto = out.File + file_lorawan_stack_api_rights_proto_rawDesc = nil + file_lorawan_stack_api_rights_proto_goTypes = nil + file_lorawan_stack_api_rights_proto_depIdxs = nil } diff --git a/pkg/ttnpb/rights.pb.validate.go b/pkg/ttnpb/rights.pb.validate.go index 87217f4436..bd588480bc 100644 --- a/pkg/ttnpb/rights.pb.validate.go +++ b/pkg/ttnpb/rights.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _rights_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on Rights with the rules defined in // the proto definition for this message. If any rules are violated, an error // is returned. @@ -197,7 +194,7 @@ func (m *APIKey) ValidateFields(paths ...string) error { case "expires_at": if t := m.GetExpiresAt(); t != nil { - ts, err := types.TimestampFromProto(t) + ts, err := t.AsTime(), t.CheckValid() if err != nil { return APIKeyValidationError{ field: "expires_at", diff --git a/pkg/ttnpb/rights_flags.pb.go b/pkg/ttnpb/rights_flags.pb.go index 084a542b84..c6d61cf191 100644 --- a/pkg/ttnpb/rights_flags.pb.go +++ b/pkg/ttnpb/rights_flags.pb.go @@ -1,14 +1,14 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/rights.proto package ttnpb import ( flagsplugin "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - gogo "github.com/TheThingsIndustries/protoc-gen-go-flags/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-flags/golang" pflag "github.com/spf13/pflag" ) @@ -110,19 +110,19 @@ func (m *APIKey) SetFromFlags(flags *pflag.FlagSet, prefix string) (paths []stri if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("created_at", prefix)); err != nil { return nil, err } else if changed { - m.CreatedAt = gogo.SetTimestamp(val) + m.CreatedAt = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("created_at", prefix)) } if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("updated_at", prefix)); err != nil { return nil, err } else if changed { - m.UpdatedAt = gogo.SetTimestamp(val) + m.UpdatedAt = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("updated_at", prefix)) } if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("expires_at", prefix)); err != nil { return nil, err } else if changed { - m.ExpiresAt = gogo.SetTimestamp(val) + m.ExpiresAt = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("expires_at", prefix)) } return paths, nil diff --git a/pkg/ttnpb/rights_json.pb.go b/pkg/ttnpb/rights_json.pb.go index 3c16fef66a..198afb4560 100644 --- a/pkg/ttnpb/rights_json.pb.go +++ b/pkg/ttnpb/rights_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/rights.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" ) @@ -214,7 +214,7 @@ func (x *APIKey) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.CreatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.CreatedAt) + golang.MarshalTimestamp(s, x.CreatedAt) } } if x.UpdatedAt != nil || s.HasField("updated_at") { @@ -223,7 +223,7 @@ func (x *APIKey) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.UpdatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.UpdatedAt) + golang.MarshalTimestamp(s, x.UpdatedAt) } } if x.ExpiresAt != nil || s.HasField("expires_at") { @@ -232,7 +232,7 @@ func (x *APIKey) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ExpiresAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ExpiresAt) + golang.MarshalTimestamp(s, x.ExpiresAt) } } s.WriteObjectEnd() @@ -278,7 +278,7 @@ func (x *APIKey) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.CreatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -289,7 +289,7 @@ func (x *APIKey) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.UpdatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -300,7 +300,7 @@ func (x *APIKey) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.ExpiresAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -389,7 +389,7 @@ func (x *Collaborator) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("ids") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Ids) + golang.MarshalMessage(s, x.Ids) } if len(x.Rights) > 0 || s.HasField("rights") { s.WriteMoreIf(&wroteField) @@ -427,7 +427,7 @@ func (x *Collaborator) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Ids = &v case "rights": s.AddField("rights") @@ -461,7 +461,7 @@ func (x *GetCollaboratorResponse) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("ids") // NOTE: OrganizationOrUserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Ids) + golang.MarshalMessage(s, x.Ids) } if len(x.Rights) > 0 || s.HasField("rights") { s.WriteMoreIf(&wroteField) @@ -499,7 +499,7 @@ func (x *GetCollaboratorResponse) UnmarshalProtoJSON(s *jsonplugin.UnmarshalStat } // NOTE: OrganizationOrUserIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationOrUserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Ids = &v case "rights": s.AddField("rights") diff --git a/pkg/ttnpb/search_services.pb.go b/pkg/ttnpb/search_services.pb.go index 946c101ef9..e09173d1d2 100644 --- a/pkg/ttnpb/search_services.pb.go +++ b/pkg/ttnpb/search_services.pb.go @@ -1,38 +1,50 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/search_services.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // This message is used for finding applications in the EntityRegistrySearch service. type SearchApplicationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Find applications where the ID, name or description contains this substring. Query string `protobuf:"bytes,11,opt,name=query,proto3" json:"query,omitempty"` // Find applications where the ID contains this substring. @@ -42,8 +54,8 @@ type SearchApplicationsRequest struct { // Find applications where the description contains this substring. DescriptionContains string `protobuf:"bytes,3,opt,name=description_contains,json=descriptionContains,proto3" json:"description_contains,omitempty"` // Find applications where the given attributes contain these substrings. - AttributesContain map[string]string `protobuf:"bytes,4,rep,name=attributes_contain,json=attributesContain,proto3" json:"attributes_contain,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - FieldMask *types.FieldMask `protobuf:"bytes,6,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` + AttributesContain map[string]string `protobuf:"bytes,4,rep,name=attributes_contain,json=attributesContain,proto3" json:"attributes_contain,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,6,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. Order string `protobuf:"bytes,7,opt,name=order,proto3" json:"order,omitempty"` @@ -52,108 +64,117 @@ type SearchApplicationsRequest struct { // Page number for pagination. 0 is interpreted as 1. Page uint32 `protobuf:"varint,9,opt,name=page,proto3" json:"page,omitempty"` // Only return recently deleted applications. - Deleted bool `protobuf:"varint,10,opt,name=deleted,proto3" json:"deleted,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Deleted bool `protobuf:"varint,10,opt,name=deleted,proto3" json:"deleted,omitempty"` } -func (m *SearchApplicationsRequest) Reset() { *m = SearchApplicationsRequest{} } -func (m *SearchApplicationsRequest) String() string { return proto.CompactTextString(m) } -func (*SearchApplicationsRequest) ProtoMessage() {} -func (*SearchApplicationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_584ecc2845ae2dc1, []int{0} -} -func (m *SearchApplicationsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SearchApplicationsRequest.Unmarshal(m, b) -} -func (m *SearchApplicationsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SearchApplicationsRequest.Marshal(b, m, deterministic) -} -func (m *SearchApplicationsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SearchApplicationsRequest.Merge(m, src) +func (x *SearchApplicationsRequest) Reset() { + *x = SearchApplicationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_search_services_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SearchApplicationsRequest) XXX_Size() int { - return xxx_messageInfo_SearchApplicationsRequest.Size(m) + +func (x *SearchApplicationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SearchApplicationsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SearchApplicationsRequest.DiscardUnknown(m) + +func (*SearchApplicationsRequest) ProtoMessage() {} + +func (x *SearchApplicationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_search_services_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SearchApplicationsRequest proto.InternalMessageInfo +// Deprecated: Use SearchApplicationsRequest.ProtoReflect.Descriptor instead. +func (*SearchApplicationsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_search_services_proto_rawDescGZIP(), []int{0} +} -func (m *SearchApplicationsRequest) GetQuery() string { - if m != nil { - return m.Query +func (x *SearchApplicationsRequest) GetQuery() string { + if x != nil { + return x.Query } return "" } -func (m *SearchApplicationsRequest) GetIdContains() string { - if m != nil { - return m.IdContains +func (x *SearchApplicationsRequest) GetIdContains() string { + if x != nil { + return x.IdContains } return "" } -func (m *SearchApplicationsRequest) GetNameContains() string { - if m != nil { - return m.NameContains +func (x *SearchApplicationsRequest) GetNameContains() string { + if x != nil { + return x.NameContains } return "" } -func (m *SearchApplicationsRequest) GetDescriptionContains() string { - if m != nil { - return m.DescriptionContains +func (x *SearchApplicationsRequest) GetDescriptionContains() string { + if x != nil { + return x.DescriptionContains } return "" } -func (m *SearchApplicationsRequest) GetAttributesContain() map[string]string { - if m != nil { - return m.AttributesContain +func (x *SearchApplicationsRequest) GetAttributesContain() map[string]string { + if x != nil { + return x.AttributesContain } return nil } -func (m *SearchApplicationsRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *SearchApplicationsRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *SearchApplicationsRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *SearchApplicationsRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *SearchApplicationsRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *SearchApplicationsRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *SearchApplicationsRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *SearchApplicationsRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *SearchApplicationsRequest) GetDeleted() bool { - if m != nil { - return m.Deleted +func (x *SearchApplicationsRequest) GetDeleted() bool { + if x != nil { + return x.Deleted } return false } // This message is used for finding OAuth clients in the EntityRegistrySearch service. type SearchClientsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Find OAuth clients where the ID, name or description contains this substring. Query string `protobuf:"bytes,11,opt,name=query,proto3" json:"query,omitempty"` // Find OAuth clients where the ID contains this substring. @@ -165,8 +186,8 @@ type SearchClientsRequest struct { // Find OAuth clients where the given attributes contain these substrings. AttributesContain map[string]string `protobuf:"bytes,4,rep,name=attributes_contain,json=attributesContain,proto3" json:"attributes_contain,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Find OAuth clients where the state is any of these states. - State []State `protobuf:"varint,5,rep,packed,name=state,proto3,enum=ttn.lorawan.v3.State" json:"state,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,6,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` + State []State `protobuf:"varint,5,rep,packed,name=state,proto3,enum=ttn.lorawan.v3.State" json:"state,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,6,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. Order string `protobuf:"bytes,7,opt,name=order,proto3" json:"order,omitempty"` @@ -175,115 +196,124 @@ type SearchClientsRequest struct { // Page number for pagination. 0 is interpreted as 1. Page uint32 `protobuf:"varint,9,opt,name=page,proto3" json:"page,omitempty"` // Only return recently deleted OAuth clients. - Deleted bool `protobuf:"varint,10,opt,name=deleted,proto3" json:"deleted,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Deleted bool `protobuf:"varint,10,opt,name=deleted,proto3" json:"deleted,omitempty"` } -func (m *SearchClientsRequest) Reset() { *m = SearchClientsRequest{} } -func (m *SearchClientsRequest) String() string { return proto.CompactTextString(m) } -func (*SearchClientsRequest) ProtoMessage() {} -func (*SearchClientsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_584ecc2845ae2dc1, []int{1} -} -func (m *SearchClientsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SearchClientsRequest.Unmarshal(m, b) -} -func (m *SearchClientsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SearchClientsRequest.Marshal(b, m, deterministic) -} -func (m *SearchClientsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SearchClientsRequest.Merge(m, src) +func (x *SearchClientsRequest) Reset() { + *x = SearchClientsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_search_services_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SearchClientsRequest) XXX_Size() int { - return xxx_messageInfo_SearchClientsRequest.Size(m) + +func (x *SearchClientsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SearchClientsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SearchClientsRequest.DiscardUnknown(m) + +func (*SearchClientsRequest) ProtoMessage() {} + +func (x *SearchClientsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_search_services_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SearchClientsRequest proto.InternalMessageInfo +// Deprecated: Use SearchClientsRequest.ProtoReflect.Descriptor instead. +func (*SearchClientsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_search_services_proto_rawDescGZIP(), []int{1} +} -func (m *SearchClientsRequest) GetQuery() string { - if m != nil { - return m.Query +func (x *SearchClientsRequest) GetQuery() string { + if x != nil { + return x.Query } return "" } -func (m *SearchClientsRequest) GetIdContains() string { - if m != nil { - return m.IdContains +func (x *SearchClientsRequest) GetIdContains() string { + if x != nil { + return x.IdContains } return "" } -func (m *SearchClientsRequest) GetNameContains() string { - if m != nil { - return m.NameContains +func (x *SearchClientsRequest) GetNameContains() string { + if x != nil { + return x.NameContains } return "" } -func (m *SearchClientsRequest) GetDescriptionContains() string { - if m != nil { - return m.DescriptionContains +func (x *SearchClientsRequest) GetDescriptionContains() string { + if x != nil { + return x.DescriptionContains } return "" } -func (m *SearchClientsRequest) GetAttributesContain() map[string]string { - if m != nil { - return m.AttributesContain +func (x *SearchClientsRequest) GetAttributesContain() map[string]string { + if x != nil { + return x.AttributesContain } return nil } -func (m *SearchClientsRequest) GetState() []State { - if m != nil { - return m.State +func (x *SearchClientsRequest) GetState() []State { + if x != nil { + return x.State } return nil } -func (m *SearchClientsRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *SearchClientsRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *SearchClientsRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *SearchClientsRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *SearchClientsRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *SearchClientsRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *SearchClientsRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *SearchClientsRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *SearchClientsRequest) GetDeleted() bool { - if m != nil { - return m.Deleted +func (x *SearchClientsRequest) GetDeleted() bool { + if x != nil { + return x.Deleted } return false } // This message is used for finding gateways in the EntityRegistrySearch service. type SearchGatewaysRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Find gateways where the ID, name, description or EUI contains this substring. Query string `protobuf:"bytes,11,opt,name=query,proto3" json:"query,omitempty"` // Find gateways where the ID contains this substring. @@ -295,8 +325,8 @@ type SearchGatewaysRequest struct { // Find gateways where the given attributes contain these substrings. AttributesContain map[string]string `protobuf:"bytes,4,rep,name=attributes_contain,json=attributesContain,proto3" json:"attributes_contain,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Find gateways where the (hexadecimal) EUI contains this substring. - EuiContains string `protobuf:"bytes,5,opt,name=eui_contains,json=euiContains,proto3" json:"eui_contains,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,6,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` + EuiContains string `protobuf:"bytes,5,opt,name=eui_contains,json=euiContains,proto3" json:"eui_contains,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,6,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. Order string `protobuf:"bytes,7,opt,name=order,proto3" json:"order,omitempty"` @@ -305,115 +335,124 @@ type SearchGatewaysRequest struct { // Page number for pagination. 0 is interpreted as 1. Page uint32 `protobuf:"varint,9,opt,name=page,proto3" json:"page,omitempty"` // Only return recently deleted gateways. - Deleted bool `protobuf:"varint,10,opt,name=deleted,proto3" json:"deleted,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Deleted bool `protobuf:"varint,10,opt,name=deleted,proto3" json:"deleted,omitempty"` } -func (m *SearchGatewaysRequest) Reset() { *m = SearchGatewaysRequest{} } -func (m *SearchGatewaysRequest) String() string { return proto.CompactTextString(m) } -func (*SearchGatewaysRequest) ProtoMessage() {} -func (*SearchGatewaysRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_584ecc2845ae2dc1, []int{2} -} -func (m *SearchGatewaysRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SearchGatewaysRequest.Unmarshal(m, b) -} -func (m *SearchGatewaysRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SearchGatewaysRequest.Marshal(b, m, deterministic) -} -func (m *SearchGatewaysRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SearchGatewaysRequest.Merge(m, src) +func (x *SearchGatewaysRequest) Reset() { + *x = SearchGatewaysRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_search_services_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SearchGatewaysRequest) XXX_Size() int { - return xxx_messageInfo_SearchGatewaysRequest.Size(m) + +func (x *SearchGatewaysRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SearchGatewaysRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SearchGatewaysRequest.DiscardUnknown(m) + +func (*SearchGatewaysRequest) ProtoMessage() {} + +func (x *SearchGatewaysRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_search_services_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SearchGatewaysRequest proto.InternalMessageInfo +// Deprecated: Use SearchGatewaysRequest.ProtoReflect.Descriptor instead. +func (*SearchGatewaysRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_search_services_proto_rawDescGZIP(), []int{2} +} -func (m *SearchGatewaysRequest) GetQuery() string { - if m != nil { - return m.Query +func (x *SearchGatewaysRequest) GetQuery() string { + if x != nil { + return x.Query } return "" } -func (m *SearchGatewaysRequest) GetIdContains() string { - if m != nil { - return m.IdContains +func (x *SearchGatewaysRequest) GetIdContains() string { + if x != nil { + return x.IdContains } return "" } -func (m *SearchGatewaysRequest) GetNameContains() string { - if m != nil { - return m.NameContains +func (x *SearchGatewaysRequest) GetNameContains() string { + if x != nil { + return x.NameContains } return "" } -func (m *SearchGatewaysRequest) GetDescriptionContains() string { - if m != nil { - return m.DescriptionContains +func (x *SearchGatewaysRequest) GetDescriptionContains() string { + if x != nil { + return x.DescriptionContains } return "" } -func (m *SearchGatewaysRequest) GetAttributesContain() map[string]string { - if m != nil { - return m.AttributesContain +func (x *SearchGatewaysRequest) GetAttributesContain() map[string]string { + if x != nil { + return x.AttributesContain } return nil } -func (m *SearchGatewaysRequest) GetEuiContains() string { - if m != nil { - return m.EuiContains +func (x *SearchGatewaysRequest) GetEuiContains() string { + if x != nil { + return x.EuiContains } return "" } -func (m *SearchGatewaysRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *SearchGatewaysRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *SearchGatewaysRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *SearchGatewaysRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *SearchGatewaysRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *SearchGatewaysRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *SearchGatewaysRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *SearchGatewaysRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *SearchGatewaysRequest) GetDeleted() bool { - if m != nil { - return m.Deleted +func (x *SearchGatewaysRequest) GetDeleted() bool { + if x != nil { + return x.Deleted } return false } // This message is used for finding organizations in the EntityRegistrySearch service. type SearchOrganizationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Find organizations where the ID, name or description contains this substring. Query string `protobuf:"bytes,11,opt,name=query,proto3" json:"query,omitempty"` // Find organizations where the ID contains this substring. @@ -423,8 +462,8 @@ type SearchOrganizationsRequest struct { // Find organizations where the description contains this substring. DescriptionContains string `protobuf:"bytes,3,opt,name=description_contains,json=descriptionContains,proto3" json:"description_contains,omitempty"` // Find organizations where the given attributes contain these substrings. - AttributesContain map[string]string `protobuf:"bytes,4,rep,name=attributes_contain,json=attributesContain,proto3" json:"attributes_contain,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - FieldMask *types.FieldMask `protobuf:"bytes,6,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` + AttributesContain map[string]string `protobuf:"bytes,4,rep,name=attributes_contain,json=attributesContain,proto3" json:"attributes_contain,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,6,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. Order string `protobuf:"bytes,7,opt,name=order,proto3" json:"order,omitempty"` @@ -433,108 +472,117 @@ type SearchOrganizationsRequest struct { // Page number for pagination. 0 is interpreted as 1. Page uint32 `protobuf:"varint,9,opt,name=page,proto3" json:"page,omitempty"` // Only return recently deleted organizations. - Deleted bool `protobuf:"varint,10,opt,name=deleted,proto3" json:"deleted,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Deleted bool `protobuf:"varint,10,opt,name=deleted,proto3" json:"deleted,omitempty"` } -func (m *SearchOrganizationsRequest) Reset() { *m = SearchOrganizationsRequest{} } -func (m *SearchOrganizationsRequest) String() string { return proto.CompactTextString(m) } -func (*SearchOrganizationsRequest) ProtoMessage() {} -func (*SearchOrganizationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_584ecc2845ae2dc1, []int{3} -} -func (m *SearchOrganizationsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SearchOrganizationsRequest.Unmarshal(m, b) -} -func (m *SearchOrganizationsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SearchOrganizationsRequest.Marshal(b, m, deterministic) -} -func (m *SearchOrganizationsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SearchOrganizationsRequest.Merge(m, src) +func (x *SearchOrganizationsRequest) Reset() { + *x = SearchOrganizationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_search_services_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SearchOrganizationsRequest) XXX_Size() int { - return xxx_messageInfo_SearchOrganizationsRequest.Size(m) + +func (x *SearchOrganizationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SearchOrganizationsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SearchOrganizationsRequest.DiscardUnknown(m) + +func (*SearchOrganizationsRequest) ProtoMessage() {} + +func (x *SearchOrganizationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_search_services_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SearchOrganizationsRequest proto.InternalMessageInfo +// Deprecated: Use SearchOrganizationsRequest.ProtoReflect.Descriptor instead. +func (*SearchOrganizationsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_search_services_proto_rawDescGZIP(), []int{3} +} -func (m *SearchOrganizationsRequest) GetQuery() string { - if m != nil { - return m.Query +func (x *SearchOrganizationsRequest) GetQuery() string { + if x != nil { + return x.Query } return "" } -func (m *SearchOrganizationsRequest) GetIdContains() string { - if m != nil { - return m.IdContains +func (x *SearchOrganizationsRequest) GetIdContains() string { + if x != nil { + return x.IdContains } return "" } -func (m *SearchOrganizationsRequest) GetNameContains() string { - if m != nil { - return m.NameContains +func (x *SearchOrganizationsRequest) GetNameContains() string { + if x != nil { + return x.NameContains } return "" } -func (m *SearchOrganizationsRequest) GetDescriptionContains() string { - if m != nil { - return m.DescriptionContains +func (x *SearchOrganizationsRequest) GetDescriptionContains() string { + if x != nil { + return x.DescriptionContains } return "" } -func (m *SearchOrganizationsRequest) GetAttributesContain() map[string]string { - if m != nil { - return m.AttributesContain +func (x *SearchOrganizationsRequest) GetAttributesContain() map[string]string { + if x != nil { + return x.AttributesContain } return nil } -func (m *SearchOrganizationsRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *SearchOrganizationsRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *SearchOrganizationsRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *SearchOrganizationsRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *SearchOrganizationsRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *SearchOrganizationsRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *SearchOrganizationsRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *SearchOrganizationsRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *SearchOrganizationsRequest) GetDeleted() bool { - if m != nil { - return m.Deleted +func (x *SearchOrganizationsRequest) GetDeleted() bool { + if x != nil { + return x.Deleted } return false } // This message is used for finding users in the EntityRegistrySearch service. type SearchUsersRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Find users where the ID, name or description contains this substring. Query string `protobuf:"bytes,11,opt,name=query,proto3" json:"query,omitempty"` // Find users where the ID contains this substring. @@ -546,8 +594,8 @@ type SearchUsersRequest struct { // Find users where the given attributes contain these substrings. AttributesContain map[string]string `protobuf:"bytes,4,rep,name=attributes_contain,json=attributesContain,proto3" json:"attributes_contain,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Find users where the state is any of these states. - State []State `protobuf:"varint,5,rep,packed,name=state,proto3,enum=ttn.lorawan.v3.State" json:"state,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,6,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` + State []State `protobuf:"varint,5,rep,packed,name=state,proto3,enum=ttn.lorawan.v3.State" json:"state,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,6,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. Order string `protobuf:"bytes,7,opt,name=order,proto3" json:"order,omitempty"` @@ -556,271 +604,294 @@ type SearchUsersRequest struct { // Page number for pagination. 0 is interpreted as 1. Page uint32 `protobuf:"varint,9,opt,name=page,proto3" json:"page,omitempty"` // Only return recently deleted users. - Deleted bool `protobuf:"varint,10,opt,name=deleted,proto3" json:"deleted,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Deleted bool `protobuf:"varint,10,opt,name=deleted,proto3" json:"deleted,omitempty"` } -func (m *SearchUsersRequest) Reset() { *m = SearchUsersRequest{} } -func (m *SearchUsersRequest) String() string { return proto.CompactTextString(m) } -func (*SearchUsersRequest) ProtoMessage() {} -func (*SearchUsersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_584ecc2845ae2dc1, []int{4} -} -func (m *SearchUsersRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SearchUsersRequest.Unmarshal(m, b) -} -func (m *SearchUsersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SearchUsersRequest.Marshal(b, m, deterministic) -} -func (m *SearchUsersRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SearchUsersRequest.Merge(m, src) +func (x *SearchUsersRequest) Reset() { + *x = SearchUsersRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_search_services_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SearchUsersRequest) XXX_Size() int { - return xxx_messageInfo_SearchUsersRequest.Size(m) + +func (x *SearchUsersRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SearchUsersRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SearchUsersRequest.DiscardUnknown(m) + +func (*SearchUsersRequest) ProtoMessage() {} + +func (x *SearchUsersRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_search_services_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SearchUsersRequest proto.InternalMessageInfo +// Deprecated: Use SearchUsersRequest.ProtoReflect.Descriptor instead. +func (*SearchUsersRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_search_services_proto_rawDescGZIP(), []int{4} +} -func (m *SearchUsersRequest) GetQuery() string { - if m != nil { - return m.Query +func (x *SearchUsersRequest) GetQuery() string { + if x != nil { + return x.Query } return "" } -func (m *SearchUsersRequest) GetIdContains() string { - if m != nil { - return m.IdContains +func (x *SearchUsersRequest) GetIdContains() string { + if x != nil { + return x.IdContains } return "" } -func (m *SearchUsersRequest) GetNameContains() string { - if m != nil { - return m.NameContains +func (x *SearchUsersRequest) GetNameContains() string { + if x != nil { + return x.NameContains } return "" } -func (m *SearchUsersRequest) GetDescriptionContains() string { - if m != nil { - return m.DescriptionContains +func (x *SearchUsersRequest) GetDescriptionContains() string { + if x != nil { + return x.DescriptionContains } return "" } -func (m *SearchUsersRequest) GetAttributesContain() map[string]string { - if m != nil { - return m.AttributesContain +func (x *SearchUsersRequest) GetAttributesContain() map[string]string { + if x != nil { + return x.AttributesContain } return nil } -func (m *SearchUsersRequest) GetState() []State { - if m != nil { - return m.State +func (x *SearchUsersRequest) GetState() []State { + if x != nil { + return x.State } return nil } -func (m *SearchUsersRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *SearchUsersRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *SearchUsersRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *SearchUsersRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *SearchUsersRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *SearchUsersRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *SearchUsersRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *SearchUsersRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *SearchUsersRequest) GetDeleted() bool { - if m != nil { - return m.Deleted +func (x *SearchUsersRequest) GetDeleted() bool { + if x != nil { + return x.Deleted } return false } type SearchAccountsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` OnlyUsers bool `protobuf:"varint,2,opt,name=only_users,json=onlyUsers,proto3" json:"only_users,omitempty"` - // Types that are valid to be assigned to CollaboratorOf: + // Types that are assignable to CollaboratorOf: // *SearchAccountsRequest_ApplicationIds // *SearchAccountsRequest_ClientIds // *SearchAccountsRequest_GatewayIds // *SearchAccountsRequest_OrganizationIds - CollaboratorOf isSearchAccountsRequest_CollaboratorOf `protobuf_oneof:"collaborator_of"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + CollaboratorOf isSearchAccountsRequest_CollaboratorOf `protobuf_oneof:"collaborator_of"` } -func (m *SearchAccountsRequest) Reset() { *m = SearchAccountsRequest{} } -func (m *SearchAccountsRequest) String() string { return proto.CompactTextString(m) } -func (*SearchAccountsRequest) ProtoMessage() {} -func (*SearchAccountsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_584ecc2845ae2dc1, []int{5} -} -func (m *SearchAccountsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SearchAccountsRequest.Unmarshal(m, b) -} -func (m *SearchAccountsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SearchAccountsRequest.Marshal(b, m, deterministic) -} -func (m *SearchAccountsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SearchAccountsRequest.Merge(m, src) -} -func (m *SearchAccountsRequest) XXX_Size() int { - return xxx_messageInfo_SearchAccountsRequest.Size(m) +func (x *SearchAccountsRequest) Reset() { + *x = SearchAccountsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_search_services_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SearchAccountsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SearchAccountsRequest.DiscardUnknown(m) + +func (x *SearchAccountsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_SearchAccountsRequest proto.InternalMessageInfo +func (*SearchAccountsRequest) ProtoMessage() {} -type isSearchAccountsRequest_CollaboratorOf interface { - isSearchAccountsRequest_CollaboratorOf() +func (x *SearchAccountsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_search_services_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -type SearchAccountsRequest_ApplicationIds struct { - ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,3,opt,name=application_ids,json=applicationIds,proto3,oneof" json:"application_ids,omitempty"` -} -type SearchAccountsRequest_ClientIds struct { - ClientIds *ClientIdentifiers `protobuf:"bytes,4,opt,name=client_ids,json=clientIds,proto3,oneof" json:"client_ids,omitempty"` -} -type SearchAccountsRequest_GatewayIds struct { - GatewayIds *GatewayIdentifiers `protobuf:"bytes,5,opt,name=gateway_ids,json=gatewayIds,proto3,oneof" json:"gateway_ids,omitempty"` -} -type SearchAccountsRequest_OrganizationIds struct { - OrganizationIds *OrganizationIdentifiers `protobuf:"bytes,6,opt,name=organization_ids,json=organizationIds,proto3,oneof" json:"organization_ids,omitempty"` +// Deprecated: Use SearchAccountsRequest.ProtoReflect.Descriptor instead. +func (*SearchAccountsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_search_services_proto_rawDescGZIP(), []int{5} } -func (*SearchAccountsRequest_ApplicationIds) isSearchAccountsRequest_CollaboratorOf() {} -func (*SearchAccountsRequest_ClientIds) isSearchAccountsRequest_CollaboratorOf() {} -func (*SearchAccountsRequest_GatewayIds) isSearchAccountsRequest_CollaboratorOf() {} -func (*SearchAccountsRequest_OrganizationIds) isSearchAccountsRequest_CollaboratorOf() {} - -func (m *SearchAccountsRequest) GetCollaboratorOf() isSearchAccountsRequest_CollaboratorOf { - if m != nil { - return m.CollaboratorOf +func (x *SearchAccountsRequest) GetQuery() string { + if x != nil { + return x.Query } - return nil + return "" } -func (m *SearchAccountsRequest) GetQuery() string { - if m != nil { - return m.Query +func (x *SearchAccountsRequest) GetOnlyUsers() bool { + if x != nil { + return x.OnlyUsers } - return "" + return false } -func (m *SearchAccountsRequest) GetOnlyUsers() bool { +func (m *SearchAccountsRequest) GetCollaboratorOf() isSearchAccountsRequest_CollaboratorOf { if m != nil { - return m.OnlyUsers + return m.CollaboratorOf } - return false + return nil } -func (m *SearchAccountsRequest) GetApplicationIds() *ApplicationIdentifiers { - if x, ok := m.GetCollaboratorOf().(*SearchAccountsRequest_ApplicationIds); ok { +func (x *SearchAccountsRequest) GetApplicationIds() *ApplicationIdentifiers { + if x, ok := x.GetCollaboratorOf().(*SearchAccountsRequest_ApplicationIds); ok { return x.ApplicationIds } return nil } -func (m *SearchAccountsRequest) GetClientIds() *ClientIdentifiers { - if x, ok := m.GetCollaboratorOf().(*SearchAccountsRequest_ClientIds); ok { +func (x *SearchAccountsRequest) GetClientIds() *ClientIdentifiers { + if x, ok := x.GetCollaboratorOf().(*SearchAccountsRequest_ClientIds); ok { return x.ClientIds } return nil } -func (m *SearchAccountsRequest) GetGatewayIds() *GatewayIdentifiers { - if x, ok := m.GetCollaboratorOf().(*SearchAccountsRequest_GatewayIds); ok { +func (x *SearchAccountsRequest) GetGatewayIds() *GatewayIdentifiers { + if x, ok := x.GetCollaboratorOf().(*SearchAccountsRequest_GatewayIds); ok { return x.GatewayIds } return nil } -func (m *SearchAccountsRequest) GetOrganizationIds() *OrganizationIdentifiers { - if x, ok := m.GetCollaboratorOf().(*SearchAccountsRequest_OrganizationIds); ok { +func (x *SearchAccountsRequest) GetOrganizationIds() *OrganizationIdentifiers { + if x, ok := x.GetCollaboratorOf().(*SearchAccountsRequest_OrganizationIds); ok { return x.OrganizationIds } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*SearchAccountsRequest) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*SearchAccountsRequest_ApplicationIds)(nil), - (*SearchAccountsRequest_ClientIds)(nil), - (*SearchAccountsRequest_GatewayIds)(nil), - (*SearchAccountsRequest_OrganizationIds)(nil), - } +type isSearchAccountsRequest_CollaboratorOf interface { + isSearchAccountsRequest_CollaboratorOf() } -type SearchAccountsResponse struct { - AccountIds []*OrganizationOrUserIdentifiers `protobuf:"bytes,1,rep,name=account_ids,json=accountIds,proto3" json:"account_ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +type SearchAccountsRequest_ApplicationIds struct { + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,3,opt,name=application_ids,json=applicationIds,proto3,oneof"` } -func (m *SearchAccountsResponse) Reset() { *m = SearchAccountsResponse{} } -func (m *SearchAccountsResponse) String() string { return proto.CompactTextString(m) } -func (*SearchAccountsResponse) ProtoMessage() {} -func (*SearchAccountsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_584ecc2845ae2dc1, []int{6} +type SearchAccountsRequest_ClientIds struct { + ClientIds *ClientIdentifiers `protobuf:"bytes,4,opt,name=client_ids,json=clientIds,proto3,oneof"` } -func (m *SearchAccountsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SearchAccountsResponse.Unmarshal(m, b) + +type SearchAccountsRequest_GatewayIds struct { + GatewayIds *GatewayIdentifiers `protobuf:"bytes,5,opt,name=gateway_ids,json=gatewayIds,proto3,oneof"` } -func (m *SearchAccountsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SearchAccountsResponse.Marshal(b, m, deterministic) + +type SearchAccountsRequest_OrganizationIds struct { + OrganizationIds *OrganizationIdentifiers `protobuf:"bytes,6,opt,name=organization_ids,json=organizationIds,proto3,oneof"` } -func (m *SearchAccountsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_SearchAccountsResponse.Merge(m, src) + +func (*SearchAccountsRequest_ApplicationIds) isSearchAccountsRequest_CollaboratorOf() {} + +func (*SearchAccountsRequest_ClientIds) isSearchAccountsRequest_CollaboratorOf() {} + +func (*SearchAccountsRequest_GatewayIds) isSearchAccountsRequest_CollaboratorOf() {} + +func (*SearchAccountsRequest_OrganizationIds) isSearchAccountsRequest_CollaboratorOf() {} + +type SearchAccountsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AccountIds []*OrganizationOrUserIdentifiers `protobuf:"bytes,1,rep,name=account_ids,json=accountIds,proto3" json:"account_ids,omitempty"` } -func (m *SearchAccountsResponse) XXX_Size() int { - return xxx_messageInfo_SearchAccountsResponse.Size(m) + +func (x *SearchAccountsResponse) Reset() { + *x = SearchAccountsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_search_services_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SearchAccountsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_SearchAccountsResponse.DiscardUnknown(m) + +func (x *SearchAccountsResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_SearchAccountsResponse proto.InternalMessageInfo +func (*SearchAccountsResponse) ProtoMessage() {} -func (m *SearchAccountsResponse) GetAccountIds() []*OrganizationOrUserIdentifiers { - if m != nil { - return m.AccountIds +func (x *SearchAccountsResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_search_services_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchAccountsResponse.ProtoReflect.Descriptor instead. +func (*SearchAccountsResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_search_services_proto_rawDescGZIP(), []int{6} +} + +func (x *SearchAccountsResponse) GetAccountIds() []*OrganizationOrUserIdentifiers { + if x != nil { + return x.AccountIds } return nil } type SearchEndDevicesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + ApplicationIds *ApplicationIdentifiers `protobuf:"bytes,1,opt,name=application_ids,json=applicationIds,proto3" json:"application_ids,omitempty"` // Find end devices where the ID, name, description or EUI contains this substring. Query string `protobuf:"bytes,13,opt,name=query,proto3" json:"query,omitempty"` @@ -837,637 +908,803 @@ type SearchEndDevicesRequest struct { // Find end devices where the (hexadecimal) JoinEUI contains this substring. JoinEuiContains string `protobuf:"bytes,7,opt,name=join_eui_contains,json=joinEuiContains,proto3" json:"join_eui_contains,omitempty"` // Find end devices where the (hexadecimal) DevAddr contains this substring. - DevAddrContains string `protobuf:"bytes,8,opt,name=dev_addr_contains,json=devAddrContains,proto3" json:"dev_addr_contains,omitempty"` - FieldMask *types.FieldMask `protobuf:"bytes,9,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` + DevAddrContains string `protobuf:"bytes,8,opt,name=dev_addr_contains,json=devAddrContains,proto3" json:"dev_addr_contains,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,9,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. Order string `protobuf:"bytes,10,opt,name=order,proto3" json:"order,omitempty"` // Limit the number of results per page. Limit uint32 `protobuf:"varint,11,opt,name=limit,proto3" json:"limit,omitempty"` // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,12,opt,name=page,proto3" json:"page,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Page uint32 `protobuf:"varint,12,opt,name=page,proto3" json:"page,omitempty"` } -func (m *SearchEndDevicesRequest) Reset() { *m = SearchEndDevicesRequest{} } -func (m *SearchEndDevicesRequest) String() string { return proto.CompactTextString(m) } -func (*SearchEndDevicesRequest) ProtoMessage() {} -func (*SearchEndDevicesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_584ecc2845ae2dc1, []int{7} -} -func (m *SearchEndDevicesRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SearchEndDevicesRequest.Unmarshal(m, b) -} -func (m *SearchEndDevicesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SearchEndDevicesRequest.Marshal(b, m, deterministic) -} -func (m *SearchEndDevicesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SearchEndDevicesRequest.Merge(m, src) +func (x *SearchEndDevicesRequest) Reset() { + *x = SearchEndDevicesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_search_services_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SearchEndDevicesRequest) XXX_Size() int { - return xxx_messageInfo_SearchEndDevicesRequest.Size(m) + +func (x *SearchEndDevicesRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SearchEndDevicesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SearchEndDevicesRequest.DiscardUnknown(m) + +func (*SearchEndDevicesRequest) ProtoMessage() {} + +func (x *SearchEndDevicesRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_search_services_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SearchEndDevicesRequest proto.InternalMessageInfo +// Deprecated: Use SearchEndDevicesRequest.ProtoReflect.Descriptor instead. +func (*SearchEndDevicesRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_search_services_proto_rawDescGZIP(), []int{7} +} -func (m *SearchEndDevicesRequest) GetApplicationIds() *ApplicationIdentifiers { - if m != nil { - return m.ApplicationIds +func (x *SearchEndDevicesRequest) GetApplicationIds() *ApplicationIdentifiers { + if x != nil { + return x.ApplicationIds } return nil } -func (m *SearchEndDevicesRequest) GetQuery() string { - if m != nil { - return m.Query +func (x *SearchEndDevicesRequest) GetQuery() string { + if x != nil { + return x.Query } return "" } -func (m *SearchEndDevicesRequest) GetIdContains() string { - if m != nil { - return m.IdContains +func (x *SearchEndDevicesRequest) GetIdContains() string { + if x != nil { + return x.IdContains } return "" } -func (m *SearchEndDevicesRequest) GetNameContains() string { - if m != nil { - return m.NameContains +func (x *SearchEndDevicesRequest) GetNameContains() string { + if x != nil { + return x.NameContains } return "" } -func (m *SearchEndDevicesRequest) GetDescriptionContains() string { - if m != nil { - return m.DescriptionContains +func (x *SearchEndDevicesRequest) GetDescriptionContains() string { + if x != nil { + return x.DescriptionContains } return "" } -func (m *SearchEndDevicesRequest) GetAttributesContain() map[string]string { - if m != nil { - return m.AttributesContain +func (x *SearchEndDevicesRequest) GetAttributesContain() map[string]string { + if x != nil { + return x.AttributesContain } return nil } -func (m *SearchEndDevicesRequest) GetDevEuiContains() string { - if m != nil { - return m.DevEuiContains +func (x *SearchEndDevicesRequest) GetDevEuiContains() string { + if x != nil { + return x.DevEuiContains } return "" } -func (m *SearchEndDevicesRequest) GetJoinEuiContains() string { - if m != nil { - return m.JoinEuiContains +func (x *SearchEndDevicesRequest) GetJoinEuiContains() string { + if x != nil { + return x.JoinEuiContains } return "" } -func (m *SearchEndDevicesRequest) GetDevAddrContains() string { - if m != nil { - return m.DevAddrContains +func (x *SearchEndDevicesRequest) GetDevAddrContains() string { + if x != nil { + return x.DevAddrContains } return "" } -func (m *SearchEndDevicesRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *SearchEndDevicesRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *SearchEndDevicesRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *SearchEndDevicesRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *SearchEndDevicesRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *SearchEndDevicesRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *SearchEndDevicesRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *SearchEndDevicesRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func init() { - proto.RegisterType((*SearchApplicationsRequest)(nil), "ttn.lorawan.v3.SearchApplicationsRequest") - golang_proto.RegisterType((*SearchApplicationsRequest)(nil), "ttn.lorawan.v3.SearchApplicationsRequest") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.SearchApplicationsRequest.AttributesContainEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.SearchApplicationsRequest.AttributesContainEntry") - proto.RegisterType((*SearchClientsRequest)(nil), "ttn.lorawan.v3.SearchClientsRequest") - golang_proto.RegisterType((*SearchClientsRequest)(nil), "ttn.lorawan.v3.SearchClientsRequest") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.SearchClientsRequest.AttributesContainEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.SearchClientsRequest.AttributesContainEntry") - proto.RegisterType((*SearchGatewaysRequest)(nil), "ttn.lorawan.v3.SearchGatewaysRequest") - golang_proto.RegisterType((*SearchGatewaysRequest)(nil), "ttn.lorawan.v3.SearchGatewaysRequest") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.SearchGatewaysRequest.AttributesContainEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.SearchGatewaysRequest.AttributesContainEntry") - proto.RegisterType((*SearchOrganizationsRequest)(nil), "ttn.lorawan.v3.SearchOrganizationsRequest") - golang_proto.RegisterType((*SearchOrganizationsRequest)(nil), "ttn.lorawan.v3.SearchOrganizationsRequest") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.SearchOrganizationsRequest.AttributesContainEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.SearchOrganizationsRequest.AttributesContainEntry") - proto.RegisterType((*SearchUsersRequest)(nil), "ttn.lorawan.v3.SearchUsersRequest") - golang_proto.RegisterType((*SearchUsersRequest)(nil), "ttn.lorawan.v3.SearchUsersRequest") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.SearchUsersRequest.AttributesContainEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.SearchUsersRequest.AttributesContainEntry") - proto.RegisterType((*SearchAccountsRequest)(nil), "ttn.lorawan.v3.SearchAccountsRequest") - golang_proto.RegisterType((*SearchAccountsRequest)(nil), "ttn.lorawan.v3.SearchAccountsRequest") - proto.RegisterType((*SearchAccountsResponse)(nil), "ttn.lorawan.v3.SearchAccountsResponse") - golang_proto.RegisterType((*SearchAccountsResponse)(nil), "ttn.lorawan.v3.SearchAccountsResponse") - proto.RegisterType((*SearchEndDevicesRequest)(nil), "ttn.lorawan.v3.SearchEndDevicesRequest") - golang_proto.RegisterType((*SearchEndDevicesRequest)(nil), "ttn.lorawan.v3.SearchEndDevicesRequest") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.SearchEndDevicesRequest.AttributesContainEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.SearchEndDevicesRequest.AttributesContainEntry") -} - -func init() { - proto.RegisterFile("lorawan-stack/api/search_services.proto", fileDescriptor_584ecc2845ae2dc1) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/search_services.proto", fileDescriptor_584ecc2845ae2dc1) -} - -var fileDescriptor_584ecc2845ae2dc1 = []byte{ - // 1725 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x59, 0xcb, 0x6f, 0x23, 0x49, - 0x19, 0x4f, 0x3b, 0xee, 0xd8, 0x2e, 0x27, 0xb1, 0xa7, 0x36, 0x99, 0xf4, 0x5a, 0x93, 0x21, 0x34, - 0x61, 0xc7, 0x3b, 0xda, 0x6e, 0xb3, 0xce, 0xf2, 0x48, 0x58, 0x08, 0xe9, 0x49, 0x96, 0x0d, 0xab, - 0xdd, 0x85, 0x62, 0x38, 0x90, 0x65, 0xd7, 0xaa, 0xb8, 0x2b, 0x9d, 0x26, 0x76, 0xb7, 0xb7, 0xaa, - 0xec, 0xe0, 0x8d, 0x56, 0x48, 0x7b, 0x42, 0x70, 0x40, 0x02, 0x89, 0x03, 0x12, 0xcb, 0x4b, 0x44, - 0x88, 0x3f, 0x01, 0x84, 0xe0, 0x1f, 0xe0, 0xc4, 0x1f, 0xc0, 0x01, 0x0e, 0x20, 0x71, 0xe2, 0xe8, - 0x0b, 0xa8, 0xbb, 0xba, 0xdd, 0x0f, 0xb7, 0x3d, 0x19, 0x86, 0x91, 0x48, 0x4e, 0xae, 0xc7, 0xf7, - 0xa8, 0xaa, 0xef, 0xd7, 0xdf, 0xf7, 0xab, 0x32, 0xb8, 0xd7, 0x71, 0x29, 0x3e, 0xc7, 0x8e, 0xc6, - 0x38, 0x6e, 0x9f, 0x35, 0x70, 0xcf, 0x6e, 0x30, 0x82, 0x69, 0xfb, 0xb4, 0xc5, 0x08, 0x1d, 0xd8, - 0x6d, 0xc2, 0xf4, 0x1e, 0x75, 0xb9, 0x0b, 0x97, 0x39, 0x77, 0xf4, 0x40, 0x58, 0x1f, 0x6c, 0xd5, - 0xf6, 0x2c, 0x9b, 0x9f, 0xf6, 0x8f, 0xf5, 0xb6, 0xdb, 0x6d, 0x10, 0x67, 0xe0, 0x0e, 0x7b, 0xd4, - 0xfd, 0xd6, 0xb0, 0xe1, 0x0b, 0xb7, 0x35, 0x8b, 0x38, 0xda, 0x00, 0x77, 0x6c, 0x13, 0x73, 0xd2, - 0x98, 0x68, 0x08, 0x93, 0x35, 0x2d, 0x66, 0xc2, 0x72, 0x2d, 0x57, 0x28, 0x1f, 0xf7, 0x4f, 0xfc, - 0x9e, 0xdf, 0xf1, 0x5b, 0x81, 0xf8, 0x7e, 0x4c, 0xfc, 0xe1, 0x29, 0x79, 0x78, 0x6a, 0x3b, 0x16, - 0x3b, 0x74, 0xcc, 0x3e, 0xe3, 0xd4, 0x26, 0x2c, 0xee, 0xda, 0x72, 0xb5, 0x93, 0x0e, 0xb6, 0x58, - 0x03, 0x3b, 0x8e, 0xcb, 0x31, 0xb7, 0x5d, 0x27, 0xd8, 0x47, 0xed, 0x8e, 0xe5, 0xba, 0x56, 0x87, - 0xf8, 0x3b, 0x9d, 0x9c, 0xdd, 0x08, 0x66, 0xc7, 0x2b, 0x39, 0xb1, 0x49, 0xc7, 0x6c, 0x75, 0x31, - 0x3b, 0x0b, 0x24, 0x3e, 0x36, 0x79, 0x60, 0xb8, 0xd7, 0xeb, 0xd8, 0x6d, 0xdf, 0x4e, 0x20, 0x74, - 0x77, 0x52, 0xa8, 0xdd, 0xb1, 0x89, 0xc3, 0x83, 0x79, 0x75, 0x72, 0x9e, 0x38, 0x66, 0xcb, 0x24, - 0xde, 0x89, 0x07, 0x32, 0xeb, 0x59, 0x32, 0xfd, 0x6e, 0xb8, 0xd2, 0x8f, 0x4c, 0x4e, 0x5b, 0x98, - 0x93, 0x73, 0x3c, 0x9c, 0xbe, 0x50, 0xdb, 0x24, 0x0e, 0xb7, 0x4f, 0x6c, 0x42, 0x43, 0x2b, 0x9b, - 0x93, 0x42, 0x2e, 0xb5, 0xb0, 0x63, 0xbf, 0x17, 0xdf, 0xce, 0x9d, 0x49, 0xa9, 0x3e, 0x23, 0x54, - 0xcc, 0xaa, 0xbf, 0x93, 0xc1, 0xb3, 0x5f, 0xf5, 0x31, 0xb3, 0x17, 0x1d, 0x04, 0x43, 0xe4, 0xdd, - 0x3e, 0x61, 0x1c, 0xae, 0x03, 0xf9, 0xdd, 0x3e, 0xa1, 0x43, 0xa5, 0xbc, 0x21, 0xd5, 0x4b, 0x46, - 0x61, 0x64, 0xe4, 0x69, 0x4e, 0x69, 0x22, 0x31, 0x0a, 0xeb, 0xa0, 0x6c, 0x9b, 0xad, 0xb6, 0xeb, - 0x70, 0x6c, 0x3b, 0x4c, 0x91, 0x92, 0x42, 0xc0, 0x36, 0x1f, 0x04, 0x53, 0xf0, 0x05, 0xb0, 0xe4, - 0xe0, 0x2e, 0x89, 0x64, 0x73, 0x49, 0xd9, 0x45, 0x6f, 0x76, 0x2c, 0xbd, 0x03, 0x56, 0x4c, 0xc2, - 0xda, 0xd4, 0xee, 0x79, 0xab, 0x89, 0x94, 0xe6, 0x93, 0x4a, 0xcf, 0xc4, 0x84, 0xc6, 0xba, 0xbf, - 0x92, 0x00, 0xc4, 0x9c, 0x53, 0xfb, 0xb8, 0xcf, 0x09, 0x0b, 0x75, 0x95, 0xfc, 0xc6, 0x7c, 0xbd, - 0xdc, 0xfc, 0x82, 0x9e, 0xfc, 0x10, 0xf4, 0xa9, 0x5b, 0xd7, 0xf7, 0xc6, 0x36, 0x02, 0xd3, 0x07, - 0x0e, 0xa7, 0x43, 0xe3, 0xa5, 0x91, 0xf1, 0xe2, 0x8f, 0x25, 0xbd, 0x0a, 0xd4, 0x4d, 0xaa, 0x2a, - 0x9b, 0xcd, 0xbb, 0xef, 0xbc, 0x85, 0xb5, 0xf7, 0x3e, 0xa1, 0x6d, 0xbf, 0x5d, 0xdf, 0xdd, 0x79, - 0x4b, 0x7b, 0x7b, 0x37, 0xec, 0x3e, 0x7f, 0xd1, 0x7c, 0xe1, 0xfd, 0xcd, 0xfb, 0x62, 0xa5, 0xb7, - 0x70, 0xda, 0x1a, 0xdc, 0x06, 0x20, 0x82, 0xa7, 0xb2, 0xb0, 0x21, 0xd5, 0xcb, 0xcd, 0x9a, 0x2e, - 0x10, 0xac, 0x87, 0x08, 0xd6, 0x5f, 0xf1, 0x44, 0x5e, 0xc7, 0xec, 0x0c, 0x95, 0x4e, 0xc2, 0x26, - 0x34, 0x81, 0xec, 0x52, 0x93, 0x50, 0xa5, 0xe0, 0x9f, 0xc7, 0x1b, 0x23, 0xe3, 0x35, 0x7a, 0x88, - 0xe6, 0xd0, 0x72, 0x0c, 0xcb, 0x2d, 0xdb, 0x44, 0x15, 0x2d, 0x35, 0x90, 0xf7, 0x4e, 0x19, 0xc9, - 0x9a, 0xff, 0x03, 0xda, 0x94, 0x60, 0x4e, 0xcc, 0x16, 0xe6, 0xa8, 0xac, 0xc5, 0x3a, 0xc2, 0x38, - 0xbc, 0x0b, 0xe4, 0x8e, 0xdd, 0xb5, 0xb9, 0x52, 0xdc, 0x90, 0xea, 0x4b, 0x46, 0x71, 0x64, 0xc8, - 0xf7, 0xe7, 0x95, 0xbf, 0x17, 0x90, 0x18, 0x86, 0x10, 0xe4, 0x7b, 0xd8, 0x22, 0x4a, 0xc9, 0x9b, - 0x46, 0x7e, 0x1b, 0x2a, 0xa0, 0x60, 0x92, 0x0e, 0xe1, 0xc4, 0x54, 0xc0, 0x86, 0x54, 0x2f, 0xa2, - 0xb0, 0x5b, 0xdb, 0x07, 0xb7, 0xb3, 0x4f, 0x14, 0x56, 0xc1, 0xfc, 0x19, 0x19, 0x0a, 0xf0, 0x20, - 0xaf, 0x09, 0x57, 0x80, 0x3c, 0xc0, 0x9d, 0x3e, 0x11, 0x20, 0x41, 0xa2, 0xb3, 0x93, 0xfb, 0x8c, - 0xb4, 0x53, 0xfc, 0xd7, 0x6f, 0x9e, 0xcd, 0x17, 0xe7, 0xaa, 0xd2, 0x97, 0xf2, 0x45, 0xb9, 0xba, - 0xa0, 0xfe, 0x45, 0x06, 0x2b, 0x22, 0x84, 0x0f, 0xfc, 0x2f, 0xf4, 0x3a, 0x03, 0xf7, 0x67, 0xb3, - 0x80, 0xfb, 0xd9, 0x6c, 0xe0, 0x26, 0x77, 0xfd, 0xd4, 0x31, 0xfb, 0x32, 0x90, 0x19, 0xc7, 0x9c, - 0x28, 0xf2, 0xc6, 0x7c, 0x7d, 0xb9, 0xb9, 0x3a, 0xb1, 0x28, 0x6f, 0xd2, 0xa8, 0x8c, 0x8c, 0xc5, - 0x1f, 0x48, 0x25, 0x45, 0x52, 0xe5, 0x0f, 0xa4, 0x5c, 0x55, 0x42, 0x42, 0xe9, 0x49, 0x10, 0x7f, - 0x94, 0x44, 0xfc, 0xfe, 0xc8, 0xd8, 0xa3, 0xbb, 0x68, 0x0e, 0x95, 0x44, 0x62, 0xf6, 0xb0, 0x0d, - 0xb4, 0xa8, 0x7d, 0x73, 0x70, 0xae, 0xfe, 0x53, 0x06, 0xab, 0x22, 0xd6, 0x5f, 0x14, 0x05, 0xe2, - 0x3a, 0x43, 0xfc, 0xe7, 0xb3, 0x20, 0xfe, 0x72, 0x36, 0xc4, 0x53, 0xdb, 0x7e, 0xea, 0x18, 0xbf, - 0x0f, 0x16, 0x49, 0xdf, 0x8e, 0xf6, 0x25, 0xc7, 0xf7, 0x55, 0x45, 0x65, 0xd2, 0xb7, 0xc7, 0xfb, - 0x79, 0x02, 0x44, 0x9f, 0x27, 0x11, 0x8d, 0x47, 0xc6, 0x3b, 0xf4, 0x1b, 0x68, 0x0e, 0x81, 0x80, - 0x07, 0x78, 0x30, 0x2e, 0x6b, 0xf1, 0x4e, 0xd8, 0x26, 0x7d, 0x1b, 0x2d, 0x6a, 0xf1, 0xde, 0x0d, - 0x82, 0xfb, 0x1f, 0x64, 0x50, 0x13, 0x71, 0x7f, 0x33, 0xc6, 0x64, 0xae, 0x33, 0xe6, 0x2f, 0x67, - 0x61, 0x7e, 0x2f, 0x1b, 0xf3, 0x59, 0x7b, 0xff, 0x7f, 0x26, 0x24, 0x27, 0x49, 0x30, 0x7f, 0x79, - 0x64, 0xbc, 0x4e, 0x5f, 0x43, 0x73, 0xa8, 0x12, 0xa7, 0xa3, 0x1e, 0x88, 0xab, 0x5a, 0x7a, 0xe4, - 0xc6, 0x51, 0x92, 0x5f, 0x2f, 0x00, 0x28, 0xa2, 0xf8, 0x35, 0x46, 0xe8, 0x75, 0x46, 0xee, 0x87, - 0xb3, 0x90, 0xbb, 0x9d, 0x8d, 0xdc, 0xf8, 0x9e, 0x6f, 0x2e, 0x1d, 0xb9, 0x94, 0x92, 0x80, 0xff, - 0xbe, 0x34, 0x32, 0xbe, 0x27, 0xd1, 0xef, 0x48, 0x68, 0x0e, 0x15, 0xbc, 0xcb, 0x95, 0x87, 0xec, - 0xa2, 0x16, 0xb6, 0x12, 0x18, 0x5f, 0xed, 0x51, 0xbb, 0x8b, 0xe9, 0xb0, 0x45, 0xba, 0xd8, 0xee, - 0xb4, 0xb0, 0x69, 0x52, 0xc2, 0x18, 0xba, 0xad, 0x65, 0x8f, 0x8b, 0xc5, 0xa2, 0x05, 0x4d, 0xfc, - 0xca, 0xd8, 0xec, 0xda, 0x0e, 0x5a, 0xd0, 0xc4, 0xef, 0xf5, 0x4e, 0xf6, 0x97, 0xf3, 0x21, 0xb7, - 0xd9, 0x6b, 0xb7, 0xdd, 0x7e, 0x16, 0x7d, 0x97, 0x32, 0xbf, 0x96, 0x75, 0x00, 0x5c, 0xa7, 0x33, - 0x6c, 0x79, 0x07, 0x2c, 0x3e, 0x80, 0x22, 0x2a, 0x79, 0x23, 0x3e, 0xfc, 0xe0, 0x57, 0x40, 0x25, - 0x79, 0xf1, 0x11, 0x78, 0x2f, 0x37, 0x9f, 0x4b, 0x23, 0x24, 0x76, 0xf1, 0x3b, 0x8c, 0xae, 0xd7, - 0xaf, 0x26, 0xaf, 0x52, 0x87, 0x26, 0x83, 0x06, 0x00, 0x63, 0x7a, 0xc9, 0x94, 0xbc, 0x6f, 0xed, - 0xa3, 0x69, 0x6b, 0x82, 0x8d, 0x27, 0x0d, 0x05, 0x0c, 0xd5, 0xb3, 0x71, 0x00, 0xca, 0x51, 0x3d, - 0x17, 0xc4, 0xa2, 0xdc, 0x54, 0xd3, 0x46, 0x02, 0xbe, 0x93, 0xb4, 0x12, 0xb2, 0x02, 0xcf, 0xcc, - 0x43, 0x50, 0x4d, 0x25, 0x51, 0x16, 0xa0, 0xf7, 0x5e, 0xda, 0x56, 0xbc, 0x8e, 0x24, 0x0d, 0x26, - 0x32, 0xf3, 0xa1, 0xc9, 0xa2, 0xa8, 0x18, 0xb7, 0x40, 0xa5, 0xed, 0x76, 0x3a, 0xf8, 0xd8, 0xa5, - 0x98, 0xbb, 0xb4, 0xe5, 0x9e, 0xa8, 0xa7, 0xe0, 0x76, 0x3a, 0x4e, 0xac, 0xe7, 0x3a, 0x8c, 0xc0, - 0x37, 0x40, 0x19, 0x8b, 0x31, 0x7f, 0x1d, 0x92, 0x9f, 0x1b, 0xb4, 0x59, 0xeb, 0x78, 0x93, 0x7a, - 0x41, 0x8a, 0xad, 0x06, 0x81, 0xc0, 0xc2, 0xa1, 0xc9, 0xd4, 0x7f, 0x14, 0xc0, 0x9a, 0x70, 0x75, - 0xe0, 0x98, 0xfb, 0xfe, 0x8b, 0xca, 0x18, 0x14, 0x5f, 0x9f, 0x0c, 0xab, 0xf4, 0x38, 0x61, 0xf5, - 0xe1, 0xff, 0x5d, 0x3f, 0x05, 0xa4, 0xc3, 0x3b, 0xc6, 0xdb, 0xd2, 0x55, 0xb2, 0x73, 0xee, 0x31, - 0xb2, 0xf3, 0xfc, 0x7f, 0x93, 0x9d, 0xf3, 0x57, 0xc8, 0xce, 0xbf, 0xcc, 0xce, 0xce, 0xb2, 0x1f, - 0x81, 0xcf, 0x67, 0x67, 0xe7, 0x89, 0x33, 0x7d, 0xea, 0x29, 0xfa, 0x45, 0x50, 0x35, 0xc9, 0xa0, - 0x95, 0x60, 0xd4, 0x0b, 0x49, 0x46, 0xbd, 0x6c, 0x92, 0xc1, 0x41, 0x8c, 0x54, 0x6f, 0x81, 0x5b, - 0xdf, 0x74, 0x6d, 0x27, 0xa9, 0x53, 0x48, 0xea, 0x54, 0x3c, 0x89, 0x94, 0x92, 0xe7, 0xc7, 0xcb, - 0x9a, 0x91, 0x52, 0x31, 0xae, 0x54, 0x44, 0x15, 0x93, 0x0c, 0xf6, 0x4c, 0x93, 0x4e, 0xa1, 0xef, - 0xa5, 0xc7, 0xa9, 0x00, 0xbf, 0x1f, 0x57, 0x00, 0xe0, 0x3b, 0xb9, 0x94, 0x46, 0xc6, 0x2f, 0x24, - 0xfa, 0x53, 0xaf, 0x02, 0x94, 0xc4, 0x4b, 0xa0, 0xb8, 0x94, 0x46, 0xed, 0x62, 0xb8, 0x2b, 0x54, - 0xd2, 0xc6, 0xcd, 0x42, 0x70, 0x3a, 0xa8, 0xa8, 0x85, 0xad, 0x44, 0xb5, 0x28, 0xc7, 0x42, 0x8f, - 0x16, 0xb5, 0x78, 0x6f, 0x6a, 0xee, 0x5f, 0xec, 0x60, 0xc6, 0x5b, 0x8c, 0x10, 0xc7, 0xeb, 0x2d, - 0x69, 0x89, 0x6e, 0xba, 0x30, 0x94, 0x67, 0x17, 0x86, 0xc5, 0xa8, 0x30, 0xfc, 0xaf, 0xd3, 0x7f, - 0xf3, 0x4f, 0x05, 0xb0, 0x72, 0xe0, 0x70, 0x9b, 0x0f, 0x11, 0xb1, 0x6c, 0xc6, 0xe9, 0x50, 0xa0, - 0x14, 0x5e, 0x84, 0x0c, 0x2a, 0xfe, 0x2e, 0x07, 0x9f, 0xbf, 0xf2, 0xdb, 0x5d, 0xed, 0xce, 0x8c, - 0x84, 0xc0, 0xd4, 0x3b, 0x1f, 0xfc, 0xf9, 0x6f, 0x3f, 0xcc, 0xdd, 0x86, 0x2b, 0xc1, 0x63, 0x79, - 0xfc, 0x09, 0x98, 0x41, 0x0b, 0x2c, 0x25, 0xde, 0x56, 0xe0, 0xe6, 0x55, 0x9e, 0x5e, 0x6a, 0x6b, - 0xd9, 0xc5, 0x80, 0xa9, 0x6b, 0xbe, 0xb7, 0x5b, 0xb0, 0x12, 0x7a, 0x6b, 0x07, 0x76, 0xcf, 0xc0, - 0x72, 0xf2, 0x86, 0x0b, 0x3f, 0x7e, 0xa5, 0x1b, 0x70, 0x4d, 0x99, 0x52, 0x32, 0x98, 0xaa, 0xf8, - 0xbe, 0x20, 0xac, 0x86, 0xbe, 0xac, 0xd0, 0xf4, 0xb7, 0xc1, 0x33, 0x19, 0x57, 0x0b, 0x78, 0xff, - 0xea, 0xf7, 0x8f, 0xda, 0xfa, 0xac, 0xac, 0xce, 0xd4, 0x75, 0xdf, 0xf7, 0x1a, 0x5c, 0x0d, 0x7d, - 0xbb, 0x09, 0x4f, 0x2d, 0x50, 0x8e, 0x31, 0x44, 0xa8, 0x3e, 0x9a, 0x3e, 0xd6, 0x26, 0xf8, 0x9c, - 0x3f, 0xab, 0xae, 0xfa, 0x8e, 0x2a, 0x70, 0x29, 0x74, 0xe4, 0xb3, 0x00, 0xf8, 0xef, 0x5c, 0x78, - 0x9e, 0x61, 0x91, 0x9a, 0x76, 0x9e, 0x29, 0xb2, 0x51, 0x7b, 0xee, 0x51, 0x62, 0xa2, 0xd6, 0xa9, - 0x3f, 0xc9, 0xf9, 0x9e, 0x7f, 0x94, 0x8b, 0xce, 0x37, 0xa8, 0x5c, 0xec, 0xe8, 0x00, 0x3e, 0x48, - 0xc0, 0xa8, 0x71, 0x91, 0x2a, 0x55, 0x7a, 0xb2, 0xff, 0x7e, 0x23, 0x5e, 0x63, 0x59, 0x60, 0xef, - 0xe8, 0x53, 0xf0, 0xa5, 0x10, 0x1f, 0x8d, 0x8b, 0x88, 0x70, 0xe8, 0xe3, 0xe6, 0x14, 0xbd, 0x6d, - 0xf8, 0xe9, 0x71, 0xac, 0x1b, 0x17, 0x31, 0x96, 0xa1, 0x47, 0xed, 0x29, 0xaa, 0xaf, 0xc2, 0x57, - 0x92, 0xa1, 0x6a, 0x5c, 0xa4, 0xe9, 0x85, 0x9e, 0x1a, 0xc8, 0xb6, 0xd4, 0xfc, 0xad, 0x04, 0xd6, - 0xc6, 0x15, 0x26, 0xf5, 0x49, 0x7f, 0x28, 0x81, 0x6a, 0xba, 0x06, 0xc1, 0x7b, 0x57, 0xac, 0x52, - 0xb5, 0x5a, 0x5a, 0x30, 0x12, 0x51, 0x0f, 0xfc, 0xa0, 0xec, 0xc2, 0xcf, 0x65, 0x7d, 0xcd, 0x8f, - 0x0e, 0x83, 0xc8, 0xcf, 0xcc, 0xf8, 0xe4, 0x1f, 0xff, 0x7a, 0x57, 0x3a, 0x6a, 0x58, 0xae, 0xce, - 0x4f, 0x09, 0xf7, 0xff, 0x9d, 0xd2, 0x1d, 0xc2, 0xcf, 0x5d, 0x7a, 0xd6, 0x48, 0xfe, 0x81, 0x32, - 0xd8, 0x6a, 0xf4, 0xce, 0xac, 0x06, 0xe7, 0x4e, 0xef, 0xf8, 0x78, 0xc1, 0x2f, 0x13, 0x5b, 0xff, - 0x09, 0x00, 0x00, 0xff, 0xff, 0x56, 0x04, 0xa4, 0x54, 0x8a, 0x1b, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// EntityRegistrySearchClient is the client API for EntityRegistrySearch service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type EntityRegistrySearchClient interface { - // Search for applications that match the conditions specified in the request. - // Non-admin users will only match applications that they have rights on. - SearchApplications(ctx context.Context, in *SearchApplicationsRequest, opts ...grpc.CallOption) (*Applications, error) - // Search for OAuth clients that match the conditions specified in the request. - // Non-admin users will only match OAuth clients that they have rights on. - SearchClients(ctx context.Context, in *SearchClientsRequest, opts ...grpc.CallOption) (*Clients, error) - // Search for gateways that match the conditions specified in the request. - // Non-admin users will only match gateways that they have rights on. - SearchGateways(ctx context.Context, in *SearchGatewaysRequest, opts ...grpc.CallOption) (*Gateways, error) - // Search for organizations that match the conditions specified in the request. - // Non-admin users will only match organizations that they have rights on. - SearchOrganizations(ctx context.Context, in *SearchOrganizationsRequest, opts ...grpc.CallOption) (*Organizations, error) - // Search for users that match the conditions specified in the request. - // This is only available to admin users. - SearchUsers(ctx context.Context, in *SearchUsersRequest, opts ...grpc.CallOption) (*Users, error) - // Search for accounts that match the conditions specified in the request. - SearchAccounts(ctx context.Context, in *SearchAccountsRequest, opts ...grpc.CallOption) (*SearchAccountsResponse, error) -} - -type entityRegistrySearchClient struct { - cc *grpc.ClientConn -} - -func NewEntityRegistrySearchClient(cc *grpc.ClientConn) EntityRegistrySearchClient { - return &entityRegistrySearchClient{cc} -} - -func (c *entityRegistrySearchClient) SearchApplications(ctx context.Context, in *SearchApplicationsRequest, opts ...grpc.CallOption) (*Applications, error) { - out := new(Applications) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EntityRegistrySearch/SearchApplications", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *entityRegistrySearchClient) SearchClients(ctx context.Context, in *SearchClientsRequest, opts ...grpc.CallOption) (*Clients, error) { - out := new(Clients) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EntityRegistrySearch/SearchClients", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *entityRegistrySearchClient) SearchGateways(ctx context.Context, in *SearchGatewaysRequest, opts ...grpc.CallOption) (*Gateways, error) { - out := new(Gateways) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EntityRegistrySearch/SearchGateways", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *entityRegistrySearchClient) SearchOrganizations(ctx context.Context, in *SearchOrganizationsRequest, opts ...grpc.CallOption) (*Organizations, error) { - out := new(Organizations) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EntityRegistrySearch/SearchOrganizations", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *entityRegistrySearchClient) SearchUsers(ctx context.Context, in *SearchUsersRequest, opts ...grpc.CallOption) (*Users, error) { - out := new(Users) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EntityRegistrySearch/SearchUsers", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *entityRegistrySearchClient) SearchAccounts(ctx context.Context, in *SearchAccountsRequest, opts ...grpc.CallOption) (*SearchAccountsResponse, error) { - out := new(SearchAccountsResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EntityRegistrySearch/SearchAccounts", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// EntityRegistrySearchServer is the server API for EntityRegistrySearch service. -type EntityRegistrySearchServer interface { - // Search for applications that match the conditions specified in the request. - // Non-admin users will only match applications that they have rights on. - SearchApplications(context.Context, *SearchApplicationsRequest) (*Applications, error) - // Search for OAuth clients that match the conditions specified in the request. - // Non-admin users will only match OAuth clients that they have rights on. - SearchClients(context.Context, *SearchClientsRequest) (*Clients, error) - // Search for gateways that match the conditions specified in the request. - // Non-admin users will only match gateways that they have rights on. - SearchGateways(context.Context, *SearchGatewaysRequest) (*Gateways, error) - // Search for organizations that match the conditions specified in the request. - // Non-admin users will only match organizations that they have rights on. - SearchOrganizations(context.Context, *SearchOrganizationsRequest) (*Organizations, error) - // Search for users that match the conditions specified in the request. - // This is only available to admin users. - SearchUsers(context.Context, *SearchUsersRequest) (*Users, error) - // Search for accounts that match the conditions specified in the request. - SearchAccounts(context.Context, *SearchAccountsRequest) (*SearchAccountsResponse, error) -} - -// UnimplementedEntityRegistrySearchServer can be embedded to have forward compatible implementations. -type UnimplementedEntityRegistrySearchServer struct { -} - -func (*UnimplementedEntityRegistrySearchServer) SearchApplications(ctx context.Context, req *SearchApplicationsRequest) (*Applications, error) { - return nil, status.Errorf(codes.Unimplemented, "method SearchApplications not implemented") -} -func (*UnimplementedEntityRegistrySearchServer) SearchClients(ctx context.Context, req *SearchClientsRequest) (*Clients, error) { - return nil, status.Errorf(codes.Unimplemented, "method SearchClients not implemented") -} -func (*UnimplementedEntityRegistrySearchServer) SearchGateways(ctx context.Context, req *SearchGatewaysRequest) (*Gateways, error) { - return nil, status.Errorf(codes.Unimplemented, "method SearchGateways not implemented") -} -func (*UnimplementedEntityRegistrySearchServer) SearchOrganizations(ctx context.Context, req *SearchOrganizationsRequest) (*Organizations, error) { - return nil, status.Errorf(codes.Unimplemented, "method SearchOrganizations not implemented") -} -func (*UnimplementedEntityRegistrySearchServer) SearchUsers(ctx context.Context, req *SearchUsersRequest) (*Users, error) { - return nil, status.Errorf(codes.Unimplemented, "method SearchUsers not implemented") -} -func (*UnimplementedEntityRegistrySearchServer) SearchAccounts(ctx context.Context, req *SearchAccountsRequest) (*SearchAccountsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SearchAccounts not implemented") -} - -func RegisterEntityRegistrySearchServer(s *grpc.Server, srv EntityRegistrySearchServer) { - s.RegisterService(&_EntityRegistrySearch_serviceDesc, srv) -} - -func _EntityRegistrySearch_SearchApplications_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchApplicationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityRegistrySearchServer).SearchApplications(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EntityRegistrySearch/SearchApplications", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityRegistrySearchServer).SearchApplications(ctx, req.(*SearchApplicationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EntityRegistrySearch_SearchClients_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchClientsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityRegistrySearchServer).SearchClients(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EntityRegistrySearch/SearchClients", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityRegistrySearchServer).SearchClients(ctx, req.(*SearchClientsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EntityRegistrySearch_SearchGateways_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchGatewaysRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityRegistrySearchServer).SearchGateways(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EntityRegistrySearch/SearchGateways", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityRegistrySearchServer).SearchGateways(ctx, req.(*SearchGatewaysRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EntityRegistrySearch_SearchOrganizations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchOrganizationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityRegistrySearchServer).SearchOrganizations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EntityRegistrySearch/SearchOrganizations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityRegistrySearchServer).SearchOrganizations(ctx, req.(*SearchOrganizationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EntityRegistrySearch_SearchUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchUsersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityRegistrySearchServer).SearchUsers(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EntityRegistrySearch/SearchUsers", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityRegistrySearchServer).SearchUsers(ctx, req.(*SearchUsersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EntityRegistrySearch_SearchAccounts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchAccountsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityRegistrySearchServer).SearchAccounts(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EntityRegistrySearch/SearchAccounts", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityRegistrySearchServer).SearchAccounts(ctx, req.(*SearchAccountsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _EntityRegistrySearch_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.EntityRegistrySearch", - HandlerType: (*EntityRegistrySearchServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "SearchApplications", - Handler: _EntityRegistrySearch_SearchApplications_Handler, - }, - { - MethodName: "SearchClients", - Handler: _EntityRegistrySearch_SearchClients_Handler, - }, - { - MethodName: "SearchGateways", - Handler: _EntityRegistrySearch_SearchGateways_Handler, - }, - { - MethodName: "SearchOrganizations", - Handler: _EntityRegistrySearch_SearchOrganizations_Handler, - }, - { - MethodName: "SearchUsers", - Handler: _EntityRegistrySearch_SearchUsers_Handler, - }, - { - MethodName: "SearchAccounts", - Handler: _EntityRegistrySearch_SearchAccounts_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/search_services.proto", -} - -// EndDeviceRegistrySearchClient is the client API for EndDeviceRegistrySearch service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type EndDeviceRegistrySearchClient interface { - // Search for end devices in the given application that match the conditions specified in the request. - SearchEndDevices(ctx context.Context, in *SearchEndDevicesRequest, opts ...grpc.CallOption) (*EndDevices, error) -} - -type endDeviceRegistrySearchClient struct { - cc *grpc.ClientConn -} - -func NewEndDeviceRegistrySearchClient(cc *grpc.ClientConn) EndDeviceRegistrySearchClient { - return &endDeviceRegistrySearchClient{cc} -} - -func (c *endDeviceRegistrySearchClient) SearchEndDevices(ctx context.Context, in *SearchEndDevicesRequest, opts ...grpc.CallOption) (*EndDevices, error) { - out := new(EndDevices) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceRegistrySearch/SearchEndDevices", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// EndDeviceRegistrySearchServer is the server API for EndDeviceRegistrySearch service. -type EndDeviceRegistrySearchServer interface { - // Search for end devices in the given application that match the conditions specified in the request. - SearchEndDevices(context.Context, *SearchEndDevicesRequest) (*EndDevices, error) -} - -// UnimplementedEndDeviceRegistrySearchServer can be embedded to have forward compatible implementations. -type UnimplementedEndDeviceRegistrySearchServer struct { -} - -func (*UnimplementedEndDeviceRegistrySearchServer) SearchEndDevices(ctx context.Context, req *SearchEndDevicesRequest) (*EndDevices, error) { - return nil, status.Errorf(codes.Unimplemented, "method SearchEndDevices not implemented") -} - -func RegisterEndDeviceRegistrySearchServer(s *grpc.Server, srv EndDeviceRegistrySearchServer) { - s.RegisterService(&_EndDeviceRegistrySearch_serviceDesc, srv) -} +var File_lorawan_stack_api_search_services_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_search_services_proto_rawDesc = []byte{ + 0x0a, 0x27, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, + 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x05, 0x0a, 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0a, + 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, + 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, + 0x13, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x73, 0x12, 0xa5, 0x01, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x40, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x9a, 0x01, 0x2e, 0x10, 0x0a, 0x22, 0x24, 0x72, + 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, + 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, + 0x2c, 0x7d, 0x24, 0x2a, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x11, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x12, 0x39, 0x0a, 0x0a, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x64, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4e, 0xfa, 0x42, 0x4b, 0x72, 0x49, 0x52, 0x00, 0x52, + 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x52, + 0x0f, 0x2d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x1a, 0x44, 0x0a, 0x16, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x05, 0x10, + 0x06, 0x22, 0xdf, 0x05, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x18, 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0a, 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x18, 0x32, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x13, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0xa0, 0x01, + 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x9a, 0x01, 0x2e, 0x10, + 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x11, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x12, 0x3c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, 0x01, 0x09, 0x18, 0x01, + 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x39, + 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x5a, 0x0a, 0x05, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x44, 0xfa, 0x42, 0x41, 0x72, 0x3f, 0x52, + 0x00, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x52, 0x0a, 0x2d, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, + 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x1a, 0x44, 0x0a, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x00, 0x10, 0x01, 0x22, 0xec, 0x05, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, + 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x0b, + 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0a, 0x69, 0x64, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x13, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, + 0x12, 0xa1, 0x01, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, 0x31, + 0x9a, 0x01, 0x2e, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x04, 0x72, 0x02, 0x18, + 0x32, 0x52, 0x11, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x12, 0x2a, 0x0a, 0x0c, 0x65, 0x75, 0x69, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x18, 0x10, 0x52, 0x0b, 0x65, 0x75, 0x69, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, + 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x77, 0x0a, 0x05, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x61, 0xfa, 0x42, 0x5e, 0x72, + 0x5c, 0x52, 0x00, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x52, + 0x0b, 0x2d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x0b, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x0c, 0x2d, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, + 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x1a, 0x44, 0x0a, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, + 0x10, 0x01, 0x22, 0xbf, 0x05, 0x0a, 0x1a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0a, + 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, + 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, + 0x13, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x73, 0x12, 0xa6, 0x01, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x41, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x9a, 0x01, 0x2e, 0x10, 0x0a, 0x22, 0x24, + 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, + 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, + 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x11, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x12, 0x39, 0x0a, + 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x66, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50, 0xfa, 0x42, 0x4d, 0x72, 0x4b, 0x52, 0x00, + 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x52, 0x10, 0x2d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x1a, 0x44, + 0x0a, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x4a, 0x04, + 0x08, 0x05, 0x10, 0x06, 0x22, 0xa8, 0x06, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, + 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x18, 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x64, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0a, 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x18, 0x32, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x13, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x9e, + 0x01, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x9a, 0x01, 0x2e, 0x10, 0x0a, + 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x11, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x12, + 0x3c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, 0x01, 0x09, 0x18, 0x01, 0x22, + 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, + 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0xa6, 0x01, 0x0a, 0x05, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8f, 0x01, 0xfa, 0x42, 0x8b, 0x01, 0x72, + 0x88, 0x01, 0x52, 0x00, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x52, 0x08, 0x2d, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, + 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x15, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x16, 0x2d, 0x70, 0x72, + 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x06, 0x2d, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x06, 0x2d, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x1a, + 0x44, 0x0a, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, + 0xa6, 0x03, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, + 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x6e, 0x6c, 0x79, + 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x6e, + 0x6c, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x45, + 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x54, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x00, 0x10, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x66, 0x22, 0x68, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x73, 0x22, 0xe9, 0x07, 0x0a, 0x17, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, + 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x05, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, + 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x64, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0a, 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x18, 0x32, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, + 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x13, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0xa3, 0x01, 0x0a, + 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x9a, 0x01, + 0x2e, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, + 0x11, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x12, 0x31, 0x0a, 0x10, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x18, 0x10, 0x52, 0x0e, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x11, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, + 0x69, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x10, 0x52, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x45, + 0x75, 0x69, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x11, 0x64, 0x65, + 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x08, 0x52, 0x0f, + 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, + 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, + 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0xbd, 0x01, 0x0a, 0x05, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0xa6, 0x01, 0xfa, 0x42, 0xa2, + 0x01, 0x72, 0x9f, 0x01, 0x52, 0x00, 0x52, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x52, 0x0a, 0x2d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x52, 0x08, 0x6a, + 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x09, 0x2d, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, + 0x75, 0x69, 0x52, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x08, 0x2d, 0x64, 0x65, + 0x76, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, + 0x6d, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0c, 0x2d, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, + 0x6e, 0x5f, 0x61, 0x74, 0x52, 0x0d, 0x2d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, + 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, + 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x1a, 0x44, + 0x0a, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x32, 0xcd, + 0x07, 0x0a, 0x14, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, + 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x7b, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, + 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x67, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x73, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x6b, 0x0a, + 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, + 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, + 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x7f, 0x0a, 0x13, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x1d, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x0b, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x73, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0xff, 0x02, 0x0a, + 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, + 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9d, + 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x96, 0x02, 0x12, 0x10, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5a, 0x45, 0x12, 0x43, 0x2f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x5a, 0x36, 0x12, 0x34, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5a, 0x39, 0x12, 0x37, 0x2f, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x5a, 0x48, 0x12, 0x46, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, + 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x32, 0xba, + 0x01, 0x0a, 0x17, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x9e, 0x01, 0x0a, 0x10, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, + 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x42, 0x35, 0x5a, 0x2f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, + 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_search_services_proto_rawDescOnce sync.Once + file_lorawan_stack_api_search_services_proto_rawDescData = file_lorawan_stack_api_search_services_proto_rawDesc +) -func _EndDeviceRegistrySearch_SearchEndDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchEndDevicesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EndDeviceRegistrySearchServer).SearchEndDevices(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.EndDeviceRegistrySearch/SearchEndDevices", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EndDeviceRegistrySearchServer).SearchEndDevices(ctx, req.(*SearchEndDevicesRequest)) +func file_lorawan_stack_api_search_services_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_search_services_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_search_services_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_search_services_proto_rawDescData) + }) + return file_lorawan_stack_api_search_services_proto_rawDescData +} + +var file_lorawan_stack_api_search_services_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_lorawan_stack_api_search_services_proto_goTypes = []interface{}{ + (*SearchApplicationsRequest)(nil), // 0: ttn.lorawan.v3.SearchApplicationsRequest + (*SearchClientsRequest)(nil), // 1: ttn.lorawan.v3.SearchClientsRequest + (*SearchGatewaysRequest)(nil), // 2: ttn.lorawan.v3.SearchGatewaysRequest + (*SearchOrganizationsRequest)(nil), // 3: ttn.lorawan.v3.SearchOrganizationsRequest + (*SearchUsersRequest)(nil), // 4: ttn.lorawan.v3.SearchUsersRequest + (*SearchAccountsRequest)(nil), // 5: ttn.lorawan.v3.SearchAccountsRequest + (*SearchAccountsResponse)(nil), // 6: ttn.lorawan.v3.SearchAccountsResponse + (*SearchEndDevicesRequest)(nil), // 7: ttn.lorawan.v3.SearchEndDevicesRequest + nil, // 8: ttn.lorawan.v3.SearchApplicationsRequest.AttributesContainEntry + nil, // 9: ttn.lorawan.v3.SearchClientsRequest.AttributesContainEntry + nil, // 10: ttn.lorawan.v3.SearchGatewaysRequest.AttributesContainEntry + nil, // 11: ttn.lorawan.v3.SearchOrganizationsRequest.AttributesContainEntry + nil, // 12: ttn.lorawan.v3.SearchUsersRequest.AttributesContainEntry + nil, // 13: ttn.lorawan.v3.SearchEndDevicesRequest.AttributesContainEntry + (*fieldmaskpb.FieldMask)(nil), // 14: google.protobuf.FieldMask + (State)(0), // 15: ttn.lorawan.v3.State + (*ApplicationIdentifiers)(nil), // 16: ttn.lorawan.v3.ApplicationIdentifiers + (*ClientIdentifiers)(nil), // 17: ttn.lorawan.v3.ClientIdentifiers + (*GatewayIdentifiers)(nil), // 18: ttn.lorawan.v3.GatewayIdentifiers + (*OrganizationIdentifiers)(nil), // 19: ttn.lorawan.v3.OrganizationIdentifiers + (*OrganizationOrUserIdentifiers)(nil), // 20: ttn.lorawan.v3.OrganizationOrUserIdentifiers + (*Applications)(nil), // 21: ttn.lorawan.v3.Applications + (*Clients)(nil), // 22: ttn.lorawan.v3.Clients + (*Gateways)(nil), // 23: ttn.lorawan.v3.Gateways + (*Organizations)(nil), // 24: ttn.lorawan.v3.Organizations + (*Users)(nil), // 25: ttn.lorawan.v3.Users + (*EndDevices)(nil), // 26: ttn.lorawan.v3.EndDevices +} +var file_lorawan_stack_api_search_services_proto_depIdxs = []int32{ + 8, // 0: ttn.lorawan.v3.SearchApplicationsRequest.attributes_contain:type_name -> ttn.lorawan.v3.SearchApplicationsRequest.AttributesContainEntry + 14, // 1: ttn.lorawan.v3.SearchApplicationsRequest.field_mask:type_name -> google.protobuf.FieldMask + 9, // 2: ttn.lorawan.v3.SearchClientsRequest.attributes_contain:type_name -> ttn.lorawan.v3.SearchClientsRequest.AttributesContainEntry + 15, // 3: ttn.lorawan.v3.SearchClientsRequest.state:type_name -> ttn.lorawan.v3.State + 14, // 4: ttn.lorawan.v3.SearchClientsRequest.field_mask:type_name -> google.protobuf.FieldMask + 10, // 5: ttn.lorawan.v3.SearchGatewaysRequest.attributes_contain:type_name -> ttn.lorawan.v3.SearchGatewaysRequest.AttributesContainEntry + 14, // 6: ttn.lorawan.v3.SearchGatewaysRequest.field_mask:type_name -> google.protobuf.FieldMask + 11, // 7: ttn.lorawan.v3.SearchOrganizationsRequest.attributes_contain:type_name -> ttn.lorawan.v3.SearchOrganizationsRequest.AttributesContainEntry + 14, // 8: ttn.lorawan.v3.SearchOrganizationsRequest.field_mask:type_name -> google.protobuf.FieldMask + 12, // 9: ttn.lorawan.v3.SearchUsersRequest.attributes_contain:type_name -> ttn.lorawan.v3.SearchUsersRequest.AttributesContainEntry + 15, // 10: ttn.lorawan.v3.SearchUsersRequest.state:type_name -> ttn.lorawan.v3.State + 14, // 11: ttn.lorawan.v3.SearchUsersRequest.field_mask:type_name -> google.protobuf.FieldMask + 16, // 12: ttn.lorawan.v3.SearchAccountsRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 17, // 13: ttn.lorawan.v3.SearchAccountsRequest.client_ids:type_name -> ttn.lorawan.v3.ClientIdentifiers + 18, // 14: ttn.lorawan.v3.SearchAccountsRequest.gateway_ids:type_name -> ttn.lorawan.v3.GatewayIdentifiers + 19, // 15: ttn.lorawan.v3.SearchAccountsRequest.organization_ids:type_name -> ttn.lorawan.v3.OrganizationIdentifiers + 20, // 16: ttn.lorawan.v3.SearchAccountsResponse.account_ids:type_name -> ttn.lorawan.v3.OrganizationOrUserIdentifiers + 16, // 17: ttn.lorawan.v3.SearchEndDevicesRequest.application_ids:type_name -> ttn.lorawan.v3.ApplicationIdentifiers + 13, // 18: ttn.lorawan.v3.SearchEndDevicesRequest.attributes_contain:type_name -> ttn.lorawan.v3.SearchEndDevicesRequest.AttributesContainEntry + 14, // 19: ttn.lorawan.v3.SearchEndDevicesRequest.field_mask:type_name -> google.protobuf.FieldMask + 0, // 20: ttn.lorawan.v3.EntityRegistrySearch.SearchApplications:input_type -> ttn.lorawan.v3.SearchApplicationsRequest + 1, // 21: ttn.lorawan.v3.EntityRegistrySearch.SearchClients:input_type -> ttn.lorawan.v3.SearchClientsRequest + 2, // 22: ttn.lorawan.v3.EntityRegistrySearch.SearchGateways:input_type -> ttn.lorawan.v3.SearchGatewaysRequest + 3, // 23: ttn.lorawan.v3.EntityRegistrySearch.SearchOrganizations:input_type -> ttn.lorawan.v3.SearchOrganizationsRequest + 4, // 24: ttn.lorawan.v3.EntityRegistrySearch.SearchUsers:input_type -> ttn.lorawan.v3.SearchUsersRequest + 5, // 25: ttn.lorawan.v3.EntityRegistrySearch.SearchAccounts:input_type -> ttn.lorawan.v3.SearchAccountsRequest + 7, // 26: ttn.lorawan.v3.EndDeviceRegistrySearch.SearchEndDevices:input_type -> ttn.lorawan.v3.SearchEndDevicesRequest + 21, // 27: ttn.lorawan.v3.EntityRegistrySearch.SearchApplications:output_type -> ttn.lorawan.v3.Applications + 22, // 28: ttn.lorawan.v3.EntityRegistrySearch.SearchClients:output_type -> ttn.lorawan.v3.Clients + 23, // 29: ttn.lorawan.v3.EntityRegistrySearch.SearchGateways:output_type -> ttn.lorawan.v3.Gateways + 24, // 30: ttn.lorawan.v3.EntityRegistrySearch.SearchOrganizations:output_type -> ttn.lorawan.v3.Organizations + 25, // 31: ttn.lorawan.v3.EntityRegistrySearch.SearchUsers:output_type -> ttn.lorawan.v3.Users + 6, // 32: ttn.lorawan.v3.EntityRegistrySearch.SearchAccounts:output_type -> ttn.lorawan.v3.SearchAccountsResponse + 26, // 33: ttn.lorawan.v3.EndDeviceRegistrySearch.SearchEndDevices:output_type -> ttn.lorawan.v3.EndDevices + 27, // [27:34] is the sub-list for method output_type + 20, // [20:27] is the sub-list for method input_type + 20, // [20:20] is the sub-list for extension type_name + 20, // [20:20] is the sub-list for extension extendee + 0, // [0:20] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_search_services_proto_init() } +func file_lorawan_stack_api_search_services_proto_init() { + if File_lorawan_stack_api_search_services_proto != nil { + return + } + file_lorawan_stack_api_application_proto_init() + file_lorawan_stack_api_client_proto_init() + file_lorawan_stack_api_end_device_proto_init() + file_lorawan_stack_api_enums_proto_init() + file_lorawan_stack_api_gateway_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_organization_proto_init() + file_lorawan_stack_api_user_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_search_services_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchApplicationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_search_services_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchClientsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_search_services_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchGatewaysRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_search_services_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchOrganizationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_search_services_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchUsersRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_search_services_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchAccountsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_search_services_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchAccountsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_search_services_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchEndDevicesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_lorawan_stack_api_search_services_proto_msgTypes[5].OneofWrappers = []interface{}{ + (*SearchAccountsRequest_ApplicationIds)(nil), + (*SearchAccountsRequest_ClientIds)(nil), + (*SearchAccountsRequest_GatewayIds)(nil), + (*SearchAccountsRequest_OrganizationIds)(nil), } - return interceptor(ctx, in, info, handler) -} - -var _EndDeviceRegistrySearch_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.EndDeviceRegistrySearch", - HandlerType: (*EndDeviceRegistrySearchServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "SearchEndDevices", - Handler: _EndDeviceRegistrySearch_SearchEndDevices_Handler, + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_search_services_proto_rawDesc, + NumEnums: 0, + NumMessages: 14, + NumExtensions: 0, + NumServices: 2, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/search_services.proto", + GoTypes: file_lorawan_stack_api_search_services_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_search_services_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_search_services_proto_msgTypes, + }.Build() + File_lorawan_stack_api_search_services_proto = out.File + file_lorawan_stack_api_search_services_proto_rawDesc = nil + file_lorawan_stack_api_search_services_proto_goTypes = nil + file_lorawan_stack_api_search_services_proto_depIdxs = nil } diff --git a/pkg/ttnpb/search_services.pb.gw.go b/pkg/ttnpb/search_services.pb.gw.go index 6631cc6363..6b3cea46e6 100644 --- a/pkg/ttnpb/search_services.pb.gw.go +++ b/pkg/ttnpb/search_services.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join var ( @@ -270,7 +268,6 @@ func request_EntityRegistrySearch_SearchAccounts_1(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -304,7 +301,6 @@ func local_request_EntityRegistrySearch_SearchAccounts_1(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -342,7 +338,6 @@ func request_EntityRegistrySearch_SearchAccounts_2(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -376,7 +371,6 @@ func local_request_EntityRegistrySearch_SearchAccounts_2(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "client_ids.client_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "client_ids.client_id", err) } @@ -414,7 +408,6 @@ func request_EntityRegistrySearch_SearchAccounts_3(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -448,7 +441,6 @@ func local_request_EntityRegistrySearch_SearchAccounts_3(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "gateway_ids.gateway_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gateway_ids.gateway_id", err) } @@ -486,7 +478,6 @@ func request_EntityRegistrySearch_SearchAccounts_4(ctx context.Context, marshale } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -520,7 +511,6 @@ func local_request_EntityRegistrySearch_SearchAccounts_4(ctx context.Context, ma } err = runtime.PopulateFieldFromPath(&protoReq, "organization_ids.organization_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization_ids.organization_id", err) } @@ -558,7 +548,6 @@ func request_EndDeviceRegistrySearch_SearchEndDevices_0(ctx context.Context, mar } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -592,7 +581,6 @@ func local_request_EndDeviceRegistrySearch_SearchEndDevices_0(ctx context.Contex } err = runtime.PopulateFieldFromPath(&protoReq, "application_ids.application_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "application_ids.application_id", err) } @@ -621,20 +609,22 @@ func RegisterEntityRegistrySearchHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchApplications", runtime.WithHTTPPathPattern("/search/applications")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EntityRegistrySearch_SearchApplications_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EntityRegistrySearch_SearchApplications_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchApplications_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchApplications_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -644,20 +634,22 @@ func RegisterEntityRegistrySearchHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchClients", runtime.WithHTTPPathPattern("/search/clients")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EntityRegistrySearch_SearchClients_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EntityRegistrySearch_SearchClients_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchClients_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchClients_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -667,20 +659,22 @@ func RegisterEntityRegistrySearchHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchGateways", runtime.WithHTTPPathPattern("/search/gateways")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EntityRegistrySearch_SearchGateways_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EntityRegistrySearch_SearchGateways_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchGateways_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchGateways_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -690,20 +684,22 @@ func RegisterEntityRegistrySearchHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchOrganizations", runtime.WithHTTPPathPattern("/search/organizations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EntityRegistrySearch_SearchOrganizations_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EntityRegistrySearch_SearchOrganizations_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchOrganizations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchOrganizations_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -713,20 +709,22 @@ func RegisterEntityRegistrySearchHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchUsers", runtime.WithHTTPPathPattern("/search/users")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EntityRegistrySearch_SearchUsers_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EntityRegistrySearch_SearchUsers_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchUsers_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchUsers_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -736,20 +734,22 @@ func RegisterEntityRegistrySearchHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchAccounts", runtime.WithHTTPPathPattern("/search/accounts")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EntityRegistrySearch_SearchAccounts_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EntityRegistrySearch_SearchAccounts_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchAccounts_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchAccounts_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -759,20 +759,22 @@ func RegisterEntityRegistrySearchHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchAccounts", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/collaborators/search")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EntityRegistrySearch_SearchAccounts_1(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EntityRegistrySearch_SearchAccounts_1(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchAccounts_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchAccounts_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -782,20 +784,22 @@ func RegisterEntityRegistrySearchHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchAccounts", runtime.WithHTTPPathPattern("/clients/{client_ids.client_id}/collaborators/search")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EntityRegistrySearch_SearchAccounts_2(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EntityRegistrySearch_SearchAccounts_2(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchAccounts_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchAccounts_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -805,20 +809,22 @@ func RegisterEntityRegistrySearchHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchAccounts", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/collaborators/search")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EntityRegistrySearch_SearchAccounts_3(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EntityRegistrySearch_SearchAccounts_3(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchAccounts_3(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchAccounts_3(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -828,20 +834,22 @@ func RegisterEntityRegistrySearchHandlerServer(ctx context.Context, mux *runtime var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchAccounts", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}/collaborators/search")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EntityRegistrySearch_SearchAccounts_4(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EntityRegistrySearch_SearchAccounts_4(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchAccounts_4(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchAccounts_4(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -860,20 +868,22 @@ func RegisterEndDeviceRegistrySearchHandlerServer(ctx context.Context, mux *runt var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceRegistrySearch/SearchEndDevices", runtime.WithHTTPPathPattern("/search/applications/{application_ids.application_id}/devices")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_EndDeviceRegistrySearch_SearchEndDevices_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_EndDeviceRegistrySearch_SearchEndDevices_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceRegistrySearch_SearchEndDevices_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceRegistrySearch_SearchEndDevices_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -922,19 +932,21 @@ func RegisterEntityRegistrySearchHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchApplications", runtime.WithHTTPPathPattern("/search/applications")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EntityRegistrySearch_SearchApplications_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EntityRegistrySearch_SearchApplications_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchApplications_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchApplications_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -942,19 +954,21 @@ func RegisterEntityRegistrySearchHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchClients", runtime.WithHTTPPathPattern("/search/clients")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EntityRegistrySearch_SearchClients_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EntityRegistrySearch_SearchClients_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchClients_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchClients_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -962,19 +976,21 @@ func RegisterEntityRegistrySearchHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchGateways", runtime.WithHTTPPathPattern("/search/gateways")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EntityRegistrySearch_SearchGateways_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EntityRegistrySearch_SearchGateways_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchGateways_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchGateways_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -982,19 +998,21 @@ func RegisterEntityRegistrySearchHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchOrganizations", runtime.WithHTTPPathPattern("/search/organizations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EntityRegistrySearch_SearchOrganizations_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EntityRegistrySearch_SearchOrganizations_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchOrganizations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchOrganizations_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1002,19 +1020,21 @@ func RegisterEntityRegistrySearchHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchUsers", runtime.WithHTTPPathPattern("/search/users")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EntityRegistrySearch_SearchUsers_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EntityRegistrySearch_SearchUsers_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchUsers_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchUsers_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1022,19 +1042,21 @@ func RegisterEntityRegistrySearchHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchAccounts", runtime.WithHTTPPathPattern("/search/accounts")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EntityRegistrySearch_SearchAccounts_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EntityRegistrySearch_SearchAccounts_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchAccounts_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchAccounts_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1042,19 +1064,21 @@ func RegisterEntityRegistrySearchHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchAccounts", runtime.WithHTTPPathPattern("/applications/{application_ids.application_id}/collaborators/search")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EntityRegistrySearch_SearchAccounts_1(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EntityRegistrySearch_SearchAccounts_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchAccounts_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchAccounts_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1062,19 +1086,21 @@ func RegisterEntityRegistrySearchHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchAccounts", runtime.WithHTTPPathPattern("/clients/{client_ids.client_id}/collaborators/search")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EntityRegistrySearch_SearchAccounts_2(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EntityRegistrySearch_SearchAccounts_2(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchAccounts_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchAccounts_2(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1082,19 +1108,21 @@ func RegisterEntityRegistrySearchHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchAccounts", runtime.WithHTTPPathPattern("/gateways/{gateway_ids.gateway_id}/collaborators/search")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EntityRegistrySearch_SearchAccounts_3(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EntityRegistrySearch_SearchAccounts_3(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchAccounts_3(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchAccounts_3(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1102,19 +1130,21 @@ func RegisterEntityRegistrySearchHandlerClient(ctx context.Context, mux *runtime ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EntityRegistrySearch/SearchAccounts", runtime.WithHTTPPathPattern("/organizations/{organization_ids.organization_id}/collaborators/search")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EntityRegistrySearch_SearchAccounts_4(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EntityRegistrySearch_SearchAccounts_4(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EntityRegistrySearch_SearchAccounts_4(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EntityRegistrySearch_SearchAccounts_4(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1122,25 +1152,25 @@ func RegisterEntityRegistrySearchHandlerClient(ctx context.Context, mux *runtime } var ( - pattern_EntityRegistrySearch_SearchApplications_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"search", "applications"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EntityRegistrySearch_SearchApplications_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"search", "applications"}, "")) - pattern_EntityRegistrySearch_SearchClients_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"search", "clients"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EntityRegistrySearch_SearchClients_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"search", "clients"}, "")) - pattern_EntityRegistrySearch_SearchGateways_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"search", "gateways"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EntityRegistrySearch_SearchGateways_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"search", "gateways"}, "")) - pattern_EntityRegistrySearch_SearchOrganizations_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"search", "organizations"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EntityRegistrySearch_SearchOrganizations_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"search", "organizations"}, "")) - pattern_EntityRegistrySearch_SearchUsers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"search", "users"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EntityRegistrySearch_SearchUsers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"search", "users"}, "")) - pattern_EntityRegistrySearch_SearchAccounts_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"search", "accounts"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EntityRegistrySearch_SearchAccounts_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"search", "accounts"}, "")) - pattern_EntityRegistrySearch_SearchAccounts_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3}, []string{"applications", "application_ids.application_id", "collaborators", "search"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EntityRegistrySearch_SearchAccounts_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3}, []string{"applications", "application_ids.application_id", "collaborators", "search"}, "")) - pattern_EntityRegistrySearch_SearchAccounts_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3}, []string{"clients", "client_ids.client_id", "collaborators", "search"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EntityRegistrySearch_SearchAccounts_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3}, []string{"clients", "client_ids.client_id", "collaborators", "search"}, "")) - pattern_EntityRegistrySearch_SearchAccounts_3 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3}, []string{"gateways", "gateway_ids.gateway_id", "collaborators", "search"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EntityRegistrySearch_SearchAccounts_3 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3}, []string{"gateways", "gateway_ids.gateway_id", "collaborators", "search"}, "")) - pattern_EntityRegistrySearch_SearchAccounts_4 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3}, []string{"organizations", "organization_ids.organization_id", "collaborators", "search"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EntityRegistrySearch_SearchAccounts_4 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3}, []string{"organizations", "organization_ids.organization_id", "collaborators", "search"}, "")) ) var ( @@ -1207,19 +1237,21 @@ func RegisterEndDeviceRegistrySearchHandlerClient(ctx context.Context, mux *runt ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.EndDeviceRegistrySearch/SearchEndDevices", runtime.WithHTTPPathPattern("/search/applications/{application_ids.application_id}/devices")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_EndDeviceRegistrySearch_SearchEndDevices_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_EndDeviceRegistrySearch_SearchEndDevices_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_EndDeviceRegistrySearch_SearchEndDevices_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_EndDeviceRegistrySearch_SearchEndDevices_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1227,7 +1259,7 @@ func RegisterEndDeviceRegistrySearchHandlerClient(ctx context.Context, mux *runt } var ( - pattern_EndDeviceRegistrySearch_SearchEndDevices_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"search", "applications", "application_ids.application_id", "devices"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_EndDeviceRegistrySearch_SearchEndDevices_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"search", "applications", "application_ids.application_id", "devices"}, "")) ) var ( diff --git a/pkg/ttnpb/search_services.pb.validate.go b/pkg/ttnpb/search_services.pb.validate.go index 2476d7cd50..b85070c496 100644 --- a/pkg/ttnpb/search_services.pb.validate.go +++ b/pkg/ttnpb/search_services.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _search_services_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on SearchApplicationsRequest with the // rules defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/pkg/ttnpb/search_services_flags.pb.go b/pkg/ttnpb/search_services_flags.pb.go index 5db46040b7..28841e9d1d 100644 --- a/pkg/ttnpb/search_services_flags.pb.go +++ b/pkg/ttnpb/search_services_flags.pb.go @@ -1,14 +1,14 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/search_services.proto package ttnpb import ( flagsplugin "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - gogo "github.com/TheThingsIndustries/protoc-gen-go-flags/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-flags/golang" pflag "github.com/spf13/pflag" ) @@ -61,7 +61,7 @@ func (m *SearchApplicationsRequest) SetFromFlags(flags *pflag.FlagSet, prefix st if val, changed, err := flagsplugin.GetStringSlice(flags, flagsplugin.Prefix("field_mask", prefix)); err != nil { return nil, err } else if changed { - m.FieldMask = gogo.SetFieldMask(val) + m.FieldMask = golang.SetFieldMask(val) paths = append(paths, flagsplugin.Prefix("field_mask", prefix)) } if val, changed, err := flagsplugin.GetString(flags, flagsplugin.Prefix("order", prefix)); err != nil { @@ -154,7 +154,7 @@ func (m *SearchClientsRequest) SetFromFlags(flags *pflag.FlagSet, prefix string) if val, changed, err := flagsplugin.GetStringSlice(flags, flagsplugin.Prefix("field_mask", prefix)); err != nil { return nil, err } else if changed { - m.FieldMask = gogo.SetFieldMask(val) + m.FieldMask = golang.SetFieldMask(val) paths = append(paths, flagsplugin.Prefix("field_mask", prefix)) } if val, changed, err := flagsplugin.GetString(flags, flagsplugin.Prefix("order", prefix)); err != nil { @@ -240,7 +240,7 @@ func (m *SearchGatewaysRequest) SetFromFlags(flags *pflag.FlagSet, prefix string if val, changed, err := flagsplugin.GetStringSlice(flags, flagsplugin.Prefix("field_mask", prefix)); err != nil { return nil, err } else if changed { - m.FieldMask = gogo.SetFieldMask(val) + m.FieldMask = golang.SetFieldMask(val) paths = append(paths, flagsplugin.Prefix("field_mask", prefix)) } if val, changed, err := flagsplugin.GetString(flags, flagsplugin.Prefix("order", prefix)); err != nil { @@ -319,7 +319,7 @@ func (m *SearchOrganizationsRequest) SetFromFlags(flags *pflag.FlagSet, prefix s if val, changed, err := flagsplugin.GetStringSlice(flags, flagsplugin.Prefix("field_mask", prefix)); err != nil { return nil, err } else if changed { - m.FieldMask = gogo.SetFieldMask(val) + m.FieldMask = golang.SetFieldMask(val) paths = append(paths, flagsplugin.Prefix("field_mask", prefix)) } if val, changed, err := flagsplugin.GetString(flags, flagsplugin.Prefix("order", prefix)); err != nil { @@ -412,7 +412,7 @@ func (m *SearchUsersRequest) SetFromFlags(flags *pflag.FlagSet, prefix string) ( if val, changed, err := flagsplugin.GetStringSlice(flags, flagsplugin.Prefix("field_mask", prefix)); err != nil { return nil, err } else if changed { - m.FieldMask = gogo.SetFieldMask(val) + m.FieldMask = golang.SetFieldMask(val) paths = append(paths, flagsplugin.Prefix("field_mask", prefix)) } if val, changed, err := flagsplugin.GetString(flags, flagsplugin.Prefix("order", prefix)); err != nil { @@ -597,7 +597,7 @@ func (m *SearchEndDevicesRequest) SetFromFlags(flags *pflag.FlagSet, prefix stri if val, changed, err := flagsplugin.GetStringSlice(flags, flagsplugin.Prefix("field_mask", prefix)); err != nil { return nil, err } else if changed { - m.FieldMask = gogo.SetFieldMask(val) + m.FieldMask = golang.SetFieldMask(val) paths = append(paths, flagsplugin.Prefix("field_mask", prefix)) } if val, changed, err := flagsplugin.GetString(flags, flagsplugin.Prefix("order", prefix)); err != nil { diff --git a/pkg/ttnpb/search_services_grpc.pb.go b/pkg/ttnpb/search_services_grpc.pb.go new file mode 100644 index 0000000000..d1caf64fff --- /dev/null +++ b/pkg/ttnpb/search_services_grpc.pb.go @@ -0,0 +1,396 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/search_services.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// EntityRegistrySearchClient is the client API for EntityRegistrySearch service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type EntityRegistrySearchClient interface { + // Search for applications that match the conditions specified in the request. + // Non-admin users will only match applications that they have rights on. + SearchApplications(ctx context.Context, in *SearchApplicationsRequest, opts ...grpc.CallOption) (*Applications, error) + // Search for OAuth clients that match the conditions specified in the request. + // Non-admin users will only match OAuth clients that they have rights on. + SearchClients(ctx context.Context, in *SearchClientsRequest, opts ...grpc.CallOption) (*Clients, error) + // Search for gateways that match the conditions specified in the request. + // Non-admin users will only match gateways that they have rights on. + SearchGateways(ctx context.Context, in *SearchGatewaysRequest, opts ...grpc.CallOption) (*Gateways, error) + // Search for organizations that match the conditions specified in the request. + // Non-admin users will only match organizations that they have rights on. + SearchOrganizations(ctx context.Context, in *SearchOrganizationsRequest, opts ...grpc.CallOption) (*Organizations, error) + // Search for users that match the conditions specified in the request. + // This is only available to admin users. + SearchUsers(ctx context.Context, in *SearchUsersRequest, opts ...grpc.CallOption) (*Users, error) + // Search for accounts that match the conditions specified in the request. + SearchAccounts(ctx context.Context, in *SearchAccountsRequest, opts ...grpc.CallOption) (*SearchAccountsResponse, error) +} + +type entityRegistrySearchClient struct { + cc grpc.ClientConnInterface +} + +func NewEntityRegistrySearchClient(cc grpc.ClientConnInterface) EntityRegistrySearchClient { + return &entityRegistrySearchClient{cc} +} + +func (c *entityRegistrySearchClient) SearchApplications(ctx context.Context, in *SearchApplicationsRequest, opts ...grpc.CallOption) (*Applications, error) { + out := new(Applications) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EntityRegistrySearch/SearchApplications", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *entityRegistrySearchClient) SearchClients(ctx context.Context, in *SearchClientsRequest, opts ...grpc.CallOption) (*Clients, error) { + out := new(Clients) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EntityRegistrySearch/SearchClients", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *entityRegistrySearchClient) SearchGateways(ctx context.Context, in *SearchGatewaysRequest, opts ...grpc.CallOption) (*Gateways, error) { + out := new(Gateways) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EntityRegistrySearch/SearchGateways", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *entityRegistrySearchClient) SearchOrganizations(ctx context.Context, in *SearchOrganizationsRequest, opts ...grpc.CallOption) (*Organizations, error) { + out := new(Organizations) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EntityRegistrySearch/SearchOrganizations", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *entityRegistrySearchClient) SearchUsers(ctx context.Context, in *SearchUsersRequest, opts ...grpc.CallOption) (*Users, error) { + out := new(Users) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EntityRegistrySearch/SearchUsers", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *entityRegistrySearchClient) SearchAccounts(ctx context.Context, in *SearchAccountsRequest, opts ...grpc.CallOption) (*SearchAccountsResponse, error) { + out := new(SearchAccountsResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EntityRegistrySearch/SearchAccounts", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// EntityRegistrySearchServer is the server API for EntityRegistrySearch service. +// All implementations must embed UnimplementedEntityRegistrySearchServer +// for forward compatibility +type EntityRegistrySearchServer interface { + // Search for applications that match the conditions specified in the request. + // Non-admin users will only match applications that they have rights on. + SearchApplications(context.Context, *SearchApplicationsRequest) (*Applications, error) + // Search for OAuth clients that match the conditions specified in the request. + // Non-admin users will only match OAuth clients that they have rights on. + SearchClients(context.Context, *SearchClientsRequest) (*Clients, error) + // Search for gateways that match the conditions specified in the request. + // Non-admin users will only match gateways that they have rights on. + SearchGateways(context.Context, *SearchGatewaysRequest) (*Gateways, error) + // Search for organizations that match the conditions specified in the request. + // Non-admin users will only match organizations that they have rights on. + SearchOrganizations(context.Context, *SearchOrganizationsRequest) (*Organizations, error) + // Search for users that match the conditions specified in the request. + // This is only available to admin users. + SearchUsers(context.Context, *SearchUsersRequest) (*Users, error) + // Search for accounts that match the conditions specified in the request. + SearchAccounts(context.Context, *SearchAccountsRequest) (*SearchAccountsResponse, error) + mustEmbedUnimplementedEntityRegistrySearchServer() +} + +// UnimplementedEntityRegistrySearchServer must be embedded to have forward compatible implementations. +type UnimplementedEntityRegistrySearchServer struct { +} + +func (UnimplementedEntityRegistrySearchServer) SearchApplications(context.Context, *SearchApplicationsRequest) (*Applications, error) { + return nil, status.Errorf(codes.Unimplemented, "method SearchApplications not implemented") +} +func (UnimplementedEntityRegistrySearchServer) SearchClients(context.Context, *SearchClientsRequest) (*Clients, error) { + return nil, status.Errorf(codes.Unimplemented, "method SearchClients not implemented") +} +func (UnimplementedEntityRegistrySearchServer) SearchGateways(context.Context, *SearchGatewaysRequest) (*Gateways, error) { + return nil, status.Errorf(codes.Unimplemented, "method SearchGateways not implemented") +} +func (UnimplementedEntityRegistrySearchServer) SearchOrganizations(context.Context, *SearchOrganizationsRequest) (*Organizations, error) { + return nil, status.Errorf(codes.Unimplemented, "method SearchOrganizations not implemented") +} +func (UnimplementedEntityRegistrySearchServer) SearchUsers(context.Context, *SearchUsersRequest) (*Users, error) { + return nil, status.Errorf(codes.Unimplemented, "method SearchUsers not implemented") +} +func (UnimplementedEntityRegistrySearchServer) SearchAccounts(context.Context, *SearchAccountsRequest) (*SearchAccountsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SearchAccounts not implemented") +} +func (UnimplementedEntityRegistrySearchServer) mustEmbedUnimplementedEntityRegistrySearchServer() {} + +// UnsafeEntityRegistrySearchServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to EntityRegistrySearchServer will +// result in compilation errors. +type UnsafeEntityRegistrySearchServer interface { + mustEmbedUnimplementedEntityRegistrySearchServer() +} + +func RegisterEntityRegistrySearchServer(s grpc.ServiceRegistrar, srv EntityRegistrySearchServer) { + s.RegisterService(&EntityRegistrySearch_ServiceDesc, srv) +} + +func _EntityRegistrySearch_SearchApplications_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchApplicationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EntityRegistrySearchServer).SearchApplications(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EntityRegistrySearch/SearchApplications", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EntityRegistrySearchServer).SearchApplications(ctx, req.(*SearchApplicationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EntityRegistrySearch_SearchClients_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchClientsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EntityRegistrySearchServer).SearchClients(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EntityRegistrySearch/SearchClients", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EntityRegistrySearchServer).SearchClients(ctx, req.(*SearchClientsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EntityRegistrySearch_SearchGateways_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchGatewaysRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EntityRegistrySearchServer).SearchGateways(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EntityRegistrySearch/SearchGateways", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EntityRegistrySearchServer).SearchGateways(ctx, req.(*SearchGatewaysRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EntityRegistrySearch_SearchOrganizations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchOrganizationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EntityRegistrySearchServer).SearchOrganizations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EntityRegistrySearch/SearchOrganizations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EntityRegistrySearchServer).SearchOrganizations(ctx, req.(*SearchOrganizationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EntityRegistrySearch_SearchUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchUsersRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EntityRegistrySearchServer).SearchUsers(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EntityRegistrySearch/SearchUsers", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EntityRegistrySearchServer).SearchUsers(ctx, req.(*SearchUsersRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _EntityRegistrySearch_SearchAccounts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchAccountsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EntityRegistrySearchServer).SearchAccounts(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EntityRegistrySearch/SearchAccounts", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EntityRegistrySearchServer).SearchAccounts(ctx, req.(*SearchAccountsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// EntityRegistrySearch_ServiceDesc is the grpc.ServiceDesc for EntityRegistrySearch service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var EntityRegistrySearch_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.EntityRegistrySearch", + HandlerType: (*EntityRegistrySearchServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "SearchApplications", + Handler: _EntityRegistrySearch_SearchApplications_Handler, + }, + { + MethodName: "SearchClients", + Handler: _EntityRegistrySearch_SearchClients_Handler, + }, + { + MethodName: "SearchGateways", + Handler: _EntityRegistrySearch_SearchGateways_Handler, + }, + { + MethodName: "SearchOrganizations", + Handler: _EntityRegistrySearch_SearchOrganizations_Handler, + }, + { + MethodName: "SearchUsers", + Handler: _EntityRegistrySearch_SearchUsers_Handler, + }, + { + MethodName: "SearchAccounts", + Handler: _EntityRegistrySearch_SearchAccounts_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/search_services.proto", +} + +// EndDeviceRegistrySearchClient is the client API for EndDeviceRegistrySearch service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type EndDeviceRegistrySearchClient interface { + // Search for end devices in the given application that match the conditions specified in the request. + SearchEndDevices(ctx context.Context, in *SearchEndDevicesRequest, opts ...grpc.CallOption) (*EndDevices, error) +} + +type endDeviceRegistrySearchClient struct { + cc grpc.ClientConnInterface +} + +func NewEndDeviceRegistrySearchClient(cc grpc.ClientConnInterface) EndDeviceRegistrySearchClient { + return &endDeviceRegistrySearchClient{cc} +} + +func (c *endDeviceRegistrySearchClient) SearchEndDevices(ctx context.Context, in *SearchEndDevicesRequest, opts ...grpc.CallOption) (*EndDevices, error) { + out := new(EndDevices) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.EndDeviceRegistrySearch/SearchEndDevices", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// EndDeviceRegistrySearchServer is the server API for EndDeviceRegistrySearch service. +// All implementations must embed UnimplementedEndDeviceRegistrySearchServer +// for forward compatibility +type EndDeviceRegistrySearchServer interface { + // Search for end devices in the given application that match the conditions specified in the request. + SearchEndDevices(context.Context, *SearchEndDevicesRequest) (*EndDevices, error) + mustEmbedUnimplementedEndDeviceRegistrySearchServer() +} + +// UnimplementedEndDeviceRegistrySearchServer must be embedded to have forward compatible implementations. +type UnimplementedEndDeviceRegistrySearchServer struct { +} + +func (UnimplementedEndDeviceRegistrySearchServer) SearchEndDevices(context.Context, *SearchEndDevicesRequest) (*EndDevices, error) { + return nil, status.Errorf(codes.Unimplemented, "method SearchEndDevices not implemented") +} +func (UnimplementedEndDeviceRegistrySearchServer) mustEmbedUnimplementedEndDeviceRegistrySearchServer() { +} + +// UnsafeEndDeviceRegistrySearchServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to EndDeviceRegistrySearchServer will +// result in compilation errors. +type UnsafeEndDeviceRegistrySearchServer interface { + mustEmbedUnimplementedEndDeviceRegistrySearchServer() +} + +func RegisterEndDeviceRegistrySearchServer(s grpc.ServiceRegistrar, srv EndDeviceRegistrySearchServer) { + s.RegisterService(&EndDeviceRegistrySearch_ServiceDesc, srv) +} + +func _EndDeviceRegistrySearch_SearchEndDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchEndDevicesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndDeviceRegistrySearchServer).SearchEndDevices(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.EndDeviceRegistrySearch/SearchEndDevices", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndDeviceRegistrySearchServer).SearchEndDevices(ctx, req.(*SearchEndDevicesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// EndDeviceRegistrySearch_ServiceDesc is the grpc.ServiceDesc for EndDeviceRegistrySearch service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var EndDeviceRegistrySearch_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.EndDeviceRegistrySearch", + HandlerType: (*EndDeviceRegistrySearchServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "SearchEndDevices", + Handler: _EndDeviceRegistrySearch_SearchEndDevices_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/search_services.proto", +} diff --git a/pkg/ttnpb/search_services_json.pb.go b/pkg/ttnpb/search_services_json.pb.go index b439cc98d0..42086ccc66 100644 --- a/pkg/ttnpb/search_services_json.pb.go +++ b/pkg/ttnpb/search_services_json.pb.go @@ -1,16 +1,156 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/search_services.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" ) +// MarshalProtoJSON marshals the SearchApplicationsRequest message to JSON. +func (x *SearchApplicationsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Query != "" || s.HasField("query") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("query") + s.WriteString(x.Query) + } + if x.IdContains != "" || s.HasField("id_contains") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("id_contains") + s.WriteString(x.IdContains) + } + if x.NameContains != "" || s.HasField("name_contains") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("name_contains") + s.WriteString(x.NameContains) + } + if x.DescriptionContains != "" || s.HasField("description_contains") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("description_contains") + s.WriteString(x.DescriptionContains) + } + if x.AttributesContain != nil || s.HasField("attributes_contain") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("attributes_contain") + s.WriteObjectStart() + var wroteElement bool + for k, v := range x.AttributesContain { + s.WriteMoreIf(&wroteElement) + s.WriteObjectStringField(k) + s.WriteString(v) + } + s.WriteObjectEnd() + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + if x.Order != "" || s.HasField("order") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("order") + s.WriteString(x.Order) + } + if x.Limit != 0 || s.HasField("limit") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("limit") + s.WriteUint32(x.Limit) + } + if x.Page != 0 || s.HasField("page") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("page") + s.WriteUint32(x.Page) + } + if x.Deleted || s.HasField("deleted") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("deleted") + s.WriteBool(x.Deleted) + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the SearchApplicationsRequest to JSON. +func (x *SearchApplicationsRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the SearchApplicationsRequest message from JSON. +func (x *SearchApplicationsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "query": + s.AddField("query") + x.Query = s.ReadString() + case "id_contains", "idContains": + s.AddField("id_contains") + x.IdContains = s.ReadString() + case "name_contains", "nameContains": + s.AddField("name_contains") + x.NameContains = s.ReadString() + case "description_contains", "descriptionContains": + s.AddField("description_contains") + x.DescriptionContains = s.ReadString() + case "attributes_contain", "attributesContain": + s.AddField("attributes_contain") + if s.ReadNil() { + x.AttributesContain = nil + return + } + x.AttributesContain = make(map[string]string) + s.ReadStringMap(func(key string) { + x.AttributesContain[key] = s.ReadString() + }) + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + case "order": + s.AddField("order") + x.Order = s.ReadString() + case "limit": + s.AddField("limit") + x.Limit = s.ReadUint32() + case "page": + s.AddField("page") + x.Page = s.ReadUint32() + case "deleted": + s.AddField("deleted") + x.Deleted = s.ReadBool() + } + }) +} + +// UnmarshalJSON unmarshals the SearchApplicationsRequest from JSON. +func (x *SearchApplicationsRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + // MarshalProtoJSON marshals the SearchClientsRequest message to JSON. func (x *SearchClientsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x == nil { @@ -51,24 +191,323 @@ func (x *SearchClientsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { } s.WriteObjectEnd() } - if len(x.State) > 0 || s.HasField("state") { - s.WriteMoreIf(&wroteField) - s.WriteObjectField("state") - s.WriteArrayStart() - var wroteElement bool - for _, element := range x.State { - s.WriteMoreIf(&wroteElement) - element.MarshalProtoJSON(s) - } - s.WriteArrayEnd() - } + if len(x.State) > 0 || s.HasField("state") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("state") + s.WriteArrayStart() + var wroteElement bool + for _, element := range x.State { + s.WriteMoreIf(&wroteElement) + element.MarshalProtoJSON(s) + } + s.WriteArrayEnd() + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + if x.Order != "" || s.HasField("order") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("order") + s.WriteString(x.Order) + } + if x.Limit != 0 || s.HasField("limit") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("limit") + s.WriteUint32(x.Limit) + } + if x.Page != 0 || s.HasField("page") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("page") + s.WriteUint32(x.Page) + } + if x.Deleted || s.HasField("deleted") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("deleted") + s.WriteBool(x.Deleted) + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the SearchClientsRequest to JSON. +func (x *SearchClientsRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the SearchClientsRequest message from JSON. +func (x *SearchClientsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "query": + s.AddField("query") + x.Query = s.ReadString() + case "id_contains", "idContains": + s.AddField("id_contains") + x.IdContains = s.ReadString() + case "name_contains", "nameContains": + s.AddField("name_contains") + x.NameContains = s.ReadString() + case "description_contains", "descriptionContains": + s.AddField("description_contains") + x.DescriptionContains = s.ReadString() + case "attributes_contain", "attributesContain": + s.AddField("attributes_contain") + if s.ReadNil() { + x.AttributesContain = nil + return + } + x.AttributesContain = make(map[string]string) + s.ReadStringMap(func(key string) { + x.AttributesContain[key] = s.ReadString() + }) + case "state": + s.AddField("state") + if s.ReadNil() { + x.State = nil + return + } + s.ReadArray(func() { + var v State + v.UnmarshalProtoJSON(s) + x.State = append(x.State, v) + }) + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + case "order": + s.AddField("order") + x.Order = s.ReadString() + case "limit": + s.AddField("limit") + x.Limit = s.ReadUint32() + case "page": + s.AddField("page") + x.Page = s.ReadUint32() + case "deleted": + s.AddField("deleted") + x.Deleted = s.ReadBool() + } + }) +} + +// UnmarshalJSON unmarshals the SearchClientsRequest from JSON. +func (x *SearchClientsRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the SearchGatewaysRequest message to JSON. +func (x *SearchGatewaysRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Query != "" || s.HasField("query") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("query") + s.WriteString(x.Query) + } + if x.IdContains != "" || s.HasField("id_contains") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("id_contains") + s.WriteString(x.IdContains) + } + if x.NameContains != "" || s.HasField("name_contains") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("name_contains") + s.WriteString(x.NameContains) + } + if x.DescriptionContains != "" || s.HasField("description_contains") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("description_contains") + s.WriteString(x.DescriptionContains) + } + if x.AttributesContain != nil || s.HasField("attributes_contain") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("attributes_contain") + s.WriteObjectStart() + var wroteElement bool + for k, v := range x.AttributesContain { + s.WriteMoreIf(&wroteElement) + s.WriteObjectStringField(k) + s.WriteString(v) + } + s.WriteObjectEnd() + } + if x.EuiContains != "" || s.HasField("eui_contains") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("eui_contains") + s.WriteString(x.EuiContains) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + if x.Order != "" || s.HasField("order") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("order") + s.WriteString(x.Order) + } + if x.Limit != 0 || s.HasField("limit") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("limit") + s.WriteUint32(x.Limit) + } + if x.Page != 0 || s.HasField("page") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("page") + s.WriteUint32(x.Page) + } + if x.Deleted || s.HasField("deleted") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("deleted") + s.WriteBool(x.Deleted) + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the SearchGatewaysRequest to JSON. +func (x *SearchGatewaysRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the SearchGatewaysRequest message from JSON. +func (x *SearchGatewaysRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "query": + s.AddField("query") + x.Query = s.ReadString() + case "id_contains", "idContains": + s.AddField("id_contains") + x.IdContains = s.ReadString() + case "name_contains", "nameContains": + s.AddField("name_contains") + x.NameContains = s.ReadString() + case "description_contains", "descriptionContains": + s.AddField("description_contains") + x.DescriptionContains = s.ReadString() + case "attributes_contain", "attributesContain": + s.AddField("attributes_contain") + if s.ReadNil() { + x.AttributesContain = nil + return + } + x.AttributesContain = make(map[string]string) + s.ReadStringMap(func(key string) { + x.AttributesContain[key] = s.ReadString() + }) + case "eui_contains", "euiContains": + s.AddField("eui_contains") + x.EuiContains = s.ReadString() + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + case "order": + s.AddField("order") + x.Order = s.ReadString() + case "limit": + s.AddField("limit") + x.Limit = s.ReadUint32() + case "page": + s.AddField("page") + x.Page = s.ReadUint32() + case "deleted": + s.AddField("deleted") + x.Deleted = s.ReadBool() + } + }) +} + +// UnmarshalJSON unmarshals the SearchGatewaysRequest from JSON. +func (x *SearchGatewaysRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the SearchOrganizationsRequest message to JSON. +func (x *SearchOrganizationsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Query != "" || s.HasField("query") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("query") + s.WriteString(x.Query) + } + if x.IdContains != "" || s.HasField("id_contains") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("id_contains") + s.WriteString(x.IdContains) + } + if x.NameContains != "" || s.HasField("name_contains") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("name_contains") + s.WriteString(x.NameContains) + } + if x.DescriptionContains != "" || s.HasField("description_contains") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("description_contains") + s.WriteString(x.DescriptionContains) + } + if x.AttributesContain != nil || s.HasField("attributes_contain") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("attributes_contain") + s.WriteObjectStart() + var wroteElement bool + for k, v := range x.AttributesContain { + s.WriteMoreIf(&wroteElement) + s.WriteObjectStringField(k) + s.WriteString(v) + } + s.WriteObjectEnd() + } if x.FieldMask != nil || s.HasField("field_mask") { s.WriteMoreIf(&wroteField) s.WriteObjectField("field_mask") if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } if x.Order != "" || s.HasField("order") { @@ -94,13 +533,13 @@ func (x *SearchClientsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteObjectEnd() } -// MarshalJSON marshals the SearchClientsRequest to JSON. -func (x *SearchClientsRequest) MarshalJSON() ([]byte, error) { +// MarshalJSON marshals the SearchOrganizationsRequest to JSON. +func (x *SearchOrganizationsRequest) MarshalJSON() ([]byte, error) { return jsonplugin.DefaultMarshalerConfig.Marshal(x) } -// UnmarshalProtoJSON unmarshals the SearchClientsRequest message from JSON. -func (x *SearchClientsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { +// UnmarshalProtoJSON unmarshals the SearchOrganizationsRequest message from JSON. +func (x *SearchOrganizationsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { if s.ReadNil() { return } @@ -130,24 +569,13 @@ func (x *SearchClientsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) s.ReadStringMap(func(key string) { x.AttributesContain[key] = s.ReadString() }) - case "state": - s.AddField("state") - if s.ReadNil() { - x.State = nil - return - } - s.ReadArray(func() { - var v State - v.UnmarshalProtoJSON(s) - x.State = append(x.State, v) - }) case "field_mask", "fieldMask": s.AddField("field_mask") if s.ReadNil() { x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -168,8 +596,8 @@ func (x *SearchClientsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) }) } -// UnmarshalJSON unmarshals the SearchClientsRequest from JSON. -func (x *SearchClientsRequest) UnmarshalJSON(b []byte) error { +// UnmarshalJSON unmarshals the SearchOrganizationsRequest from JSON. +func (x *SearchOrganizationsRequest) UnmarshalJSON(b []byte) error { return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) } @@ -230,7 +658,7 @@ func (x *SearchUsersRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } if x.Order != "" || s.HasField("order") { @@ -309,7 +737,7 @@ func (x *SearchUsersRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -359,12 +787,12 @@ func (x *SearchAccountsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("application_ids") // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.ApplicationIds) + golang.MarshalMessage(s, ov.ApplicationIds) case *SearchAccountsRequest_ClientIds: s.WriteMoreIf(&wroteField) s.WriteObjectField("client_ids") // NOTE: ClientIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.ClientIds) + golang.MarshalMessage(s, ov.ClientIds) case *SearchAccountsRequest_GatewayIds: s.WriteMoreIf(&wroteField) s.WriteObjectField("gateway_ids") @@ -373,7 +801,7 @@ func (x *SearchAccountsRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("organization_ids") // NOTE: OrganizationIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, ov.OrganizationIds) + golang.MarshalMessage(s, ov.OrganizationIds) } } s.WriteObjectEnd() @@ -409,7 +837,7 @@ func (x *SearchAccountsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) } // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. var v ApplicationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.ApplicationIds = &v case "client_ids", "clientIds": s.AddField("client_ids") @@ -421,7 +849,7 @@ func (x *SearchAccountsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) } // NOTE: ClientIdentifiers does not seem to implement UnmarshalProtoJSON. var v ClientIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.ClientIds = &v case "gateway_ids", "gatewayIds": ov := &SearchAccountsRequest_GatewayIds{} @@ -442,7 +870,7 @@ func (x *SearchAccountsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) } // NOTE: OrganizationIdentifiers does not seem to implement UnmarshalProtoJSON. var v OrganizationIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) ov.OrganizationIds = &v } }) @@ -452,3 +880,175 @@ func (x *SearchAccountsRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) func (x *SearchAccountsRequest) UnmarshalJSON(b []byte) error { return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) } + +// MarshalProtoJSON marshals the SearchEndDevicesRequest message to JSON. +func (x *SearchEndDevicesRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.ApplicationIds != nil || s.HasField("application_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("application_ids") + // NOTE: ApplicationIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.ApplicationIds) + } + if x.Query != "" || s.HasField("query") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("query") + s.WriteString(x.Query) + } + if x.IdContains != "" || s.HasField("id_contains") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("id_contains") + s.WriteString(x.IdContains) + } + if x.NameContains != "" || s.HasField("name_contains") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("name_contains") + s.WriteString(x.NameContains) + } + if x.DescriptionContains != "" || s.HasField("description_contains") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("description_contains") + s.WriteString(x.DescriptionContains) + } + if x.AttributesContain != nil || s.HasField("attributes_contain") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("attributes_contain") + s.WriteObjectStart() + var wroteElement bool + for k, v := range x.AttributesContain { + s.WriteMoreIf(&wroteElement) + s.WriteObjectStringField(k) + s.WriteString(v) + } + s.WriteObjectEnd() + } + if x.DevEuiContains != "" || s.HasField("dev_eui_contains") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("dev_eui_contains") + s.WriteString(x.DevEuiContains) + } + if x.JoinEuiContains != "" || s.HasField("join_eui_contains") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("join_eui_contains") + s.WriteString(x.JoinEuiContains) + } + if x.DevAddrContains != "" || s.HasField("dev_addr_contains") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("dev_addr_contains") + s.WriteString(x.DevAddrContains) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + if x.Order != "" || s.HasField("order") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("order") + s.WriteString(x.Order) + } + if x.Limit != 0 || s.HasField("limit") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("limit") + s.WriteUint32(x.Limit) + } + if x.Page != 0 || s.HasField("page") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("page") + s.WriteUint32(x.Page) + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the SearchEndDevicesRequest to JSON. +func (x *SearchEndDevicesRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the SearchEndDevicesRequest message from JSON. +func (x *SearchEndDevicesRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "application_ids", "applicationIds": + s.AddField("application_ids") + if s.ReadNil() { + x.ApplicationIds = nil + return + } + // NOTE: ApplicationIdentifiers does not seem to implement UnmarshalProtoJSON. + var v ApplicationIdentifiers + golang.UnmarshalMessage(s, &v) + x.ApplicationIds = &v + case "query": + s.AddField("query") + x.Query = s.ReadString() + case "id_contains", "idContains": + s.AddField("id_contains") + x.IdContains = s.ReadString() + case "name_contains", "nameContains": + s.AddField("name_contains") + x.NameContains = s.ReadString() + case "description_contains", "descriptionContains": + s.AddField("description_contains") + x.DescriptionContains = s.ReadString() + case "attributes_contain", "attributesContain": + s.AddField("attributes_contain") + if s.ReadNil() { + x.AttributesContain = nil + return + } + x.AttributesContain = make(map[string]string) + s.ReadStringMap(func(key string) { + x.AttributesContain[key] = s.ReadString() + }) + case "dev_eui_contains", "devEuiContains": + s.AddField("dev_eui_contains") + x.DevEuiContains = s.ReadString() + case "join_eui_contains", "joinEuiContains": + s.AddField("join_eui_contains") + x.JoinEuiContains = s.ReadString() + case "dev_addr_contains", "devAddrContains": + s.AddField("dev_addr_contains") + x.DevAddrContains = s.ReadString() + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + case "order": + s.AddField("order") + x.Order = s.ReadString() + case "limit": + s.AddField("limit") + x.Limit = s.ReadUint32() + case "page": + s.AddField("page") + x.Page = s.ReadUint32() + } + }) +} + +// UnmarshalJSON unmarshals the SearchEndDevicesRequest from JSON. +func (x *SearchEndDevicesRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} diff --git a/pkg/ttnpb/secrets.pb.go b/pkg/ttnpb/secrets.pb.go index da2c2a060e..6a72a33e00 100644 --- a/pkg/ttnpb/secrets.pb.go +++ b/pkg/ttnpb/secrets.pb.go @@ -1,109 +1,197 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2020 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/secrets.proto package ttnpb import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - golang_proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it. type Secret struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // ID of the Key used to encrypt the secret. - KeyId string `protobuf:"bytes,1,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` - Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + KeyId string `protobuf:"bytes,1,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` + Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } -func (m *Secret) Reset() { *m = Secret{} } -func (m *Secret) String() string { return proto.CompactTextString(m) } -func (*Secret) ProtoMessage() {} -func (*Secret) Descriptor() ([]byte, []int) { - return fileDescriptor_8c9d796b7f7ca235, []int{0} -} -func (m *Secret) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Secret.Unmarshal(m, b) -} -func (m *Secret) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Secret.Marshal(b, m, deterministic) -} -func (m *Secret) XXX_Merge(src proto.Message) { - xxx_messageInfo_Secret.Merge(m, src) +func (x *Secret) Reset() { + *x = Secret{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_secrets_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Secret) XXX_Size() int { - return xxx_messageInfo_Secret.Size(m) + +func (x *Secret) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Secret) XXX_DiscardUnknown() { - xxx_messageInfo_Secret.DiscardUnknown(m) + +func (*Secret) ProtoMessage() {} + +func (x *Secret) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_secrets_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Secret proto.InternalMessageInfo +// Deprecated: Use Secret.ProtoReflect.Descriptor instead. +func (*Secret) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_secrets_proto_rawDescGZIP(), []int{0} +} -func (m *Secret) GetKeyId() string { - if m != nil { - return m.KeyId +func (x *Secret) GetKeyId() string { + if x != nil { + return x.KeyId } return "" } -func (m *Secret) GetValue() []byte { - if m != nil { - return m.Value +func (x *Secret) GetValue() []byte { + if x != nil { + return x.Value } return nil } -func init() { - proto.RegisterType((*Secret)(nil), "ttn.lorawan.v3.Secret") - golang_proto.RegisterType((*Secret)(nil), "ttn.lorawan.v3.Secret") +var File_lorawan_stack_api_secrets_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_secrets_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, + 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe9, 0x01, 0x0a, 0x06, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0xbd, 0x01, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa6, 0x01, 0xfa, 0x42, + 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0xf2, 0xaa, 0x19, 0x99, 0x01, 0x1a, 0x4e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4e, 0x65, 0x77, 0x48, + 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x47, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x01, 0x10, 0x01, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } -func init() { proto.RegisterFile("lorawan-stack/api/secrets.proto", fileDescriptor_8c9d796b7f7ca235) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/secrets.proto", fileDescriptor_8c9d796b7f7ca235) +var ( + file_lorawan_stack_api_secrets_proto_rawDescOnce sync.Once + file_lorawan_stack_api_secrets_proto_rawDescData = file_lorawan_stack_api_secrets_proto_rawDesc +) + +func file_lorawan_stack_api_secrets_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_secrets_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_secrets_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_secrets_proto_rawDescData) + }) + return file_lorawan_stack_api_secrets_proto_rawDescData } -var fileDescriptor_8c9d796b7f7ca235 = []byte{ - // 333 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x91, 0xb1, 0x4a, 0x2b, 0x41, - 0x14, 0x86, 0x99, 0x7b, 0x6f, 0x42, 0xee, 0x72, 0xb9, 0x84, 0x80, 0x90, 0xa4, 0xd0, 0x90, 0x2a, - 0xcd, 0xce, 0x14, 0xc1, 0xc6, 0xce, 0x45, 0x8c, 0x69, 0x52, 0xc4, 0x54, 0x36, 0x32, 0xbb, 0x7b, - 0x32, 0x3b, 0xec, 0x3a, 0x67, 0xd9, 0x39, 0xbb, 0xc9, 0x5a, 0xf9, 0x1a, 0xbe, 0x80, 0x45, 0xde, - 0x41, 0xf0, 0x5d, 0xac, 0x6c, 0x53, 0x5a, 0x09, 0x93, 0x14, 0x11, 0x3b, 0x6d, 0x86, 0x73, 0xe0, - 0xff, 0xbf, 0x7f, 0x7e, 0x8e, 0x77, 0x92, 0x61, 0x21, 0x57, 0xd2, 0xf8, 0x96, 0x64, 0x94, 0x0a, - 0x99, 0x6b, 0x61, 0x21, 0x2a, 0x80, 0x2c, 0xcf, 0x0b, 0x24, 0xec, 0xfc, 0x27, 0x32, 0x7c, 0x2f, - 0xe2, 0xd5, 0xb8, 0x7f, 0xa1, 0x34, 0x25, 0x65, 0xc8, 0x23, 0xbc, 0x13, 0x8b, 0x04, 0x16, 0x89, - 0x36, 0xca, 0x4e, 0x4d, 0x5c, 0x5a, 0x2a, 0x34, 0x58, 0xe1, 0x5c, 0x91, 0xaf, 0xc0, 0xf8, 0x0a, - 0xfd, 0x65, 0x26, 0x95, 0x15, 0xd2, 0x18, 0x24, 0x49, 0x1a, 0xcd, 0x9e, 0xda, 0xf7, 0x0f, 0x28, - 0x0a, 0x15, 0xee, 0x6c, 0x61, 0xb9, 0x74, 0x9b, 0x5b, 0xdc, 0xb4, 0x97, 0x9f, 0x1f, 0xc8, 0xc1, - 0x54, 0x58, 0xe7, 0x05, 0xae, 0xeb, 0xc3, 0xac, 0x4a, 0x66, 0x3a, 0x96, 0x04, 0xe2, 0xcb, 0xb0, - 0x43, 0x0c, 0xdf, 0x98, 0xd7, 0xbc, 0x76, 0xcd, 0x3a, 0x47, 0x5e, 0x33, 0x85, 0xfa, 0x56, 0xc7, - 0x5d, 0x36, 0x60, 0xa3, 0xbf, 0xf3, 0x46, 0x0a, 0xf5, 0x34, 0xee, 0x3c, 0x33, 0xaf, 0x51, 0xc9, - 0xac, 0x84, 0xee, 0xaf, 0x01, 0x1b, 0xfd, 0x0b, 0x9e, 0xd8, 0x7b, 0xd0, 0xb8, 0xff, 0xdd, 0x7d, - 0x68, 0x6f, 0x37, 0xbd, 0x47, 0xd6, 0x9f, 0x7d, 0xa3, 0xb9, 0x7b, 0xf3, 0xac, 0x54, 0xda, 0xf0, - 0x19, 0xac, 0xae, 0x60, 0x1d, 0xd4, 0x04, 0xf6, 0x32, 0x93, 0x6a, 0x38, 0xf9, 0x21, 0x6f, 0x02, - 0xe4, 0x60, 0xf3, 0xdd, 0xaf, 0xcf, 0x5a, 0xdb, 0x4d, 0xef, 0x4f, 0x8b, 0xb5, 0x59, 0x70, 0xfa, - 0xf2, 0x7a, 0xcc, 0x6e, 0x84, 0x42, 0x4e, 0x09, 0x90, 0xe3, 0x72, 0x03, 0xb4, 0xc2, 0x22, 0x15, - 0x9f, 0xef, 0x5d, 0x8d, 0x45, 0x9e, 0x2a, 0x41, 0x64, 0xf2, 0x30, 0x6c, 0xba, 0xc4, 0xf1, 0x47, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x6b, 0x35, 0x2a, 0x14, 0x02, 0x00, 0x00, +var file_lorawan_stack_api_secrets_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_lorawan_stack_api_secrets_proto_goTypes = []interface{}{ + (*Secret)(nil), // 0: ttn.lorawan.v3.Secret +} +var file_lorawan_stack_api_secrets_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_secrets_proto_init() } +func file_lorawan_stack_api_secrets_proto_init() { + if File_lorawan_stack_api_secrets_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_secrets_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Secret); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_secrets_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_secrets_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_secrets_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_secrets_proto_msgTypes, + }.Build() + File_lorawan_stack_api_secrets_proto = out.File + file_lorawan_stack_api_secrets_proto_rawDesc = nil + file_lorawan_stack_api_secrets_proto_goTypes = nil + file_lorawan_stack_api_secrets_proto_depIdxs = nil } diff --git a/pkg/ttnpb/secrets.pb.validate.go b/pkg/ttnpb/secrets.pb.validate.go index a38d333c7d..ec6b2d9a76 100644 --- a/pkg/ttnpb/secrets.pb.validate.go +++ b/pkg/ttnpb/secrets.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _secrets_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on Secret with the rules defined in // the proto definition for this message. If any rules are violated, an error // is returned. diff --git a/pkg/ttnpb/secrets_flags.pb.go b/pkg/ttnpb/secrets_flags.pb.go index a9e353d1d9..d8935cbdc2 100644 --- a/pkg/ttnpb/secrets_flags.pb.go +++ b/pkg/ttnpb/secrets_flags.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/secrets.proto package ttnpb diff --git a/pkg/ttnpb/user.pb.go b/pkg/ttnpb/user.pb.go index 70317e972a..c892da9a5f 100644 --- a/pkg/ttnpb/user.pb.go +++ b/pkg/ttnpb/user.pb.go @@ -1,41 +1,58 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/user.proto package ttnpb import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // User is the message that defines a user on the network. type User struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The identifiers of the user. These are public and can be seen by any authenticated user in the network. Ids *UserIdentifiers `protobuf:"bytes,1,opt,name=ids,proto3" json:"ids,omitempty"` // When the user was created. This information is public and can be seen by any authenticated user in the network. - CreatedAt *types.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // When the user was last updated. This information is public and can be seen by any authenticated user in the network. - UpdatedAt *types.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // When the user was deleted. This information is public and can be seen by any authenticated user in the network. - DeletedAt *types.Timestamp `protobuf:"bytes,19,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` + DeletedAt *timestamppb.Timestamp `protobuf:"bytes,19,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` // The name of the user. This information is public and can be seen by any authenticated user in the network. Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` // A description for the user. This information is public and can be seen by any authenticated user in the network. @@ -44,18 +61,20 @@ type User struct { Attributes map[string]string `protobuf:"bytes,6,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Contact information for this user. Typically used to indicate who to contact with security/billing questions about the user. // This field is deprecated. - ContactInfo []*ContactInfo `protobuf:"bytes,7,rep,name=contact_info,json=contactInfo,proto3" json:"contact_info,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Do not use. + ContactInfo []*ContactInfo `protobuf:"bytes,7,rep,name=contact_info,json=contactInfo,proto3" json:"contact_info,omitempty"` // Primary email address that can be used for logging in. // This address is not public, use contact_info for that. PrimaryEmailAddress string `protobuf:"bytes,8,opt,name=primary_email_address,json=primaryEmailAddress,proto3" json:"primary_email_address,omitempty"` // When the primary email address was validated. Note that email address validation is not required on all networks. - PrimaryEmailAddressValidatedAt *types.Timestamp `protobuf:"bytes,9,opt,name=primary_email_address_validated_at,json=primaryEmailAddressValidatedAt,proto3" json:"primary_email_address_validated_at,omitempty"` + PrimaryEmailAddressValidatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=primary_email_address_validated_at,json=primaryEmailAddressValidatedAt,proto3" json:"primary_email_address_validated_at,omitempty"` // The password field is only considered when creating a user. // It is not returned on API calls, and can not be updated by updating the User. // See the UpdatePassword method of the UserRegistry service for more information. - Password string `protobuf:"bytes,10,opt,name=password,proto3" json:"password,omitempty"` - PasswordUpdatedAt *types.Timestamp `protobuf:"bytes,11,opt,name=password_updated_at,json=passwordUpdatedAt,proto3" json:"password_updated_at,omitempty"` - RequirePasswordUpdate bool `protobuf:"varint,12,opt,name=require_password_update,json=requirePasswordUpdate,proto3" json:"require_password_update,omitempty"` + Password string `protobuf:"bytes,10,opt,name=password,proto3" json:"password,omitempty"` + PasswordUpdatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=password_updated_at,json=passwordUpdatedAt,proto3" json:"password_updated_at,omitempty"` + RequirePasswordUpdate bool `protobuf:"varint,12,opt,name=require_password_update,json=requirePasswordUpdate,proto3" json:"require_password_update,omitempty"` // The reviewing state of the user. // This information is public and can be seen by any authenticated user in the network. // This field can only be modified by admins. @@ -71,270 +90,297 @@ type User struct { // The temporary password can only be used to update a user's password; never returned on API calls. // It is not returned on API calls, and can not be updated by updating the User. // See the CreateTemporaryPassword method of the UserRegistry service for more information. - TemporaryPassword string `protobuf:"bytes,15,opt,name=temporary_password,json=temporaryPassword,proto3" json:"temporary_password,omitempty"` - TemporaryPasswordCreatedAt *types.Timestamp `protobuf:"bytes,16,opt,name=temporary_password_created_at,json=temporaryPasswordCreatedAt,proto3" json:"temporary_password_created_at,omitempty"` - TemporaryPasswordExpiresAt *types.Timestamp `protobuf:"bytes,17,opt,name=temporary_password_expires_at,json=temporaryPasswordExpiresAt,proto3" json:"temporary_password_expires_at,omitempty"` + TemporaryPassword string `protobuf:"bytes,15,opt,name=temporary_password,json=temporaryPassword,proto3" json:"temporary_password,omitempty"` + TemporaryPasswordCreatedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=temporary_password_created_at,json=temporaryPasswordCreatedAt,proto3" json:"temporary_password_created_at,omitempty"` + TemporaryPasswordExpiresAt *timestamppb.Timestamp `protobuf:"bytes,17,opt,name=temporary_password_expires_at,json=temporaryPasswordExpiresAt,proto3" json:"temporary_password_expires_at,omitempty"` // A profile picture for the user. // This information is public and can be seen by any authenticated user in the network. - ProfilePicture *Picture `protobuf:"bytes,18,opt,name=profile_picture,json=profilePicture,proto3" json:"profile_picture,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ProfilePicture *Picture `protobuf:"bytes,18,opt,name=profile_picture,json=profilePicture,proto3" json:"profile_picture,omitempty"` } -func (m *User) Reset() { *m = User{} } -func (m *User) String() string { return proto.CompactTextString(m) } -func (*User) ProtoMessage() {} -func (*User) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{0} -} -func (m *User) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_User.Unmarshal(m, b) -} -func (m *User) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_User.Marshal(b, m, deterministic) -} -func (m *User) XXX_Merge(src proto.Message) { - xxx_messageInfo_User.Merge(m, src) +func (x *User) Reset() { + *x = User{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *User) XXX_Size() int { - return xxx_messageInfo_User.Size(m) + +func (x *User) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *User) XXX_DiscardUnknown() { - xxx_messageInfo_User.DiscardUnknown(m) + +func (*User) ProtoMessage() {} + +func (x *User) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_User proto.InternalMessageInfo +// Deprecated: Use User.ProtoReflect.Descriptor instead. +func (*User) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{0} +} -func (m *User) GetIds() *UserIdentifiers { - if m != nil { - return m.Ids +func (x *User) GetIds() *UserIdentifiers { + if x != nil { + return x.Ids } return nil } -func (m *User) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *User) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *User) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *User) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *User) GetDeletedAt() *types.Timestamp { - if m != nil { - return m.DeletedAt +func (x *User) GetDeletedAt() *timestamppb.Timestamp { + if x != nil { + return x.DeletedAt } return nil } -func (m *User) GetName() string { - if m != nil { - return m.Name +func (x *User) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *User) GetDescription() string { - if m != nil { - return m.Description +func (x *User) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *User) GetAttributes() map[string]string { - if m != nil { - return m.Attributes +func (x *User) GetAttributes() map[string]string { + if x != nil { + return x.Attributes } return nil } // Deprecated: Do not use. -func (m *User) GetContactInfo() []*ContactInfo { - if m != nil { - return m.ContactInfo +func (x *User) GetContactInfo() []*ContactInfo { + if x != nil { + return x.ContactInfo } return nil } -func (m *User) GetPrimaryEmailAddress() string { - if m != nil { - return m.PrimaryEmailAddress +func (x *User) GetPrimaryEmailAddress() string { + if x != nil { + return x.PrimaryEmailAddress } return "" } -func (m *User) GetPrimaryEmailAddressValidatedAt() *types.Timestamp { - if m != nil { - return m.PrimaryEmailAddressValidatedAt +func (x *User) GetPrimaryEmailAddressValidatedAt() *timestamppb.Timestamp { + if x != nil { + return x.PrimaryEmailAddressValidatedAt } return nil } -func (m *User) GetPassword() string { - if m != nil { - return m.Password +func (x *User) GetPassword() string { + if x != nil { + return x.Password } return "" } -func (m *User) GetPasswordUpdatedAt() *types.Timestamp { - if m != nil { - return m.PasswordUpdatedAt +func (x *User) GetPasswordUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.PasswordUpdatedAt } return nil } -func (m *User) GetRequirePasswordUpdate() bool { - if m != nil { - return m.RequirePasswordUpdate +func (x *User) GetRequirePasswordUpdate() bool { + if x != nil { + return x.RequirePasswordUpdate } return false } -func (m *User) GetState() State { - if m != nil { - return m.State +func (x *User) GetState() State { + if x != nil { + return x.State } return State_STATE_REQUESTED } -func (m *User) GetStateDescription() string { - if m != nil { - return m.StateDescription +func (x *User) GetStateDescription() string { + if x != nil { + return x.StateDescription } return "" } -func (m *User) GetAdmin() bool { - if m != nil { - return m.Admin +func (x *User) GetAdmin() bool { + if x != nil { + return x.Admin } return false } -func (m *User) GetTemporaryPassword() string { - if m != nil { - return m.TemporaryPassword +func (x *User) GetTemporaryPassword() string { + if x != nil { + return x.TemporaryPassword } return "" } -func (m *User) GetTemporaryPasswordCreatedAt() *types.Timestamp { - if m != nil { - return m.TemporaryPasswordCreatedAt +func (x *User) GetTemporaryPasswordCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.TemporaryPasswordCreatedAt } return nil } -func (m *User) GetTemporaryPasswordExpiresAt() *types.Timestamp { - if m != nil { - return m.TemporaryPasswordExpiresAt +func (x *User) GetTemporaryPasswordExpiresAt() *timestamppb.Timestamp { + if x != nil { + return x.TemporaryPasswordExpiresAt } return nil } -func (m *User) GetProfilePicture() *Picture { - if m != nil { - return m.ProfilePicture +func (x *User) GetProfilePicture() *Picture { + if x != nil { + return x.ProfilePicture } return nil } type Users struct { - Users []*User `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Users) Reset() { *m = Users{} } -func (m *Users) String() string { return proto.CompactTextString(m) } -func (*Users) ProtoMessage() {} -func (*Users) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{1} -} -func (m *Users) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Users.Unmarshal(m, b) + Users []*User `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` } -func (m *Users) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Users.Marshal(b, m, deterministic) -} -func (m *Users) XXX_Merge(src proto.Message) { - xxx_messageInfo_Users.Merge(m, src) + +func (x *Users) Reset() { + *x = Users{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Users) XXX_Size() int { - return xxx_messageInfo_Users.Size(m) + +func (x *Users) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Users) XXX_DiscardUnknown() { - xxx_messageInfo_Users.DiscardUnknown(m) + +func (*Users) ProtoMessage() {} + +func (x *Users) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Users proto.InternalMessageInfo +// Deprecated: Use Users.ProtoReflect.Descriptor instead. +func (*Users) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{1} +} -func (m *Users) GetUsers() []*User { - if m != nil { - return m.Users +func (x *Users) GetUsers() []*User { + if x != nil { + return x.Users } return nil } type GetUserRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` // The names of the user fields that should be returned. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *GetUserRequest) Reset() { *m = GetUserRequest{} } -func (m *GetUserRequest) String() string { return proto.CompactTextString(m) } -func (*GetUserRequest) ProtoMessage() {} -func (*GetUserRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{2} -} -func (m *GetUserRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetUserRequest.Unmarshal(m, b) -} -func (m *GetUserRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetUserRequest.Marshal(b, m, deterministic) -} -func (m *GetUserRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetUserRequest.Merge(m, src) +func (x *GetUserRequest) Reset() { + *x = GetUserRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetUserRequest) XXX_Size() int { - return xxx_messageInfo_GetUserRequest.Size(m) + +func (x *GetUserRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetUserRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetUserRequest.DiscardUnknown(m) + +func (*GetUserRequest) ProtoMessage() {} + +func (x *GetUserRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetUserRequest proto.InternalMessageInfo +// Deprecated: Use GetUserRequest.ProtoReflect.Descriptor instead. +func (*GetUserRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{2} +} -func (m *GetUserRequest) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *GetUserRequest) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *GetUserRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *GetUserRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type ListUsersRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The names of the user fields that should be returned. - FieldMask *types.FieldMask `protobuf:"bytes,1,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,1,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. Order string `protobuf:"bytes,2,opt,name=order,proto3" json:"order,omitempty"` @@ -343,267 +389,312 @@ type ListUsersRequest struct { // Page number for pagination. 0 is interpreted as 1. Page uint32 `protobuf:"varint,4,opt,name=page,proto3" json:"page,omitempty"` // Only return recently deleted users. - Deleted bool `protobuf:"varint,5,opt,name=deleted,proto3" json:"deleted,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Deleted bool `protobuf:"varint,5,opt,name=deleted,proto3" json:"deleted,omitempty"` } -func (m *ListUsersRequest) Reset() { *m = ListUsersRequest{} } -func (m *ListUsersRequest) String() string { return proto.CompactTextString(m) } -func (*ListUsersRequest) ProtoMessage() {} -func (*ListUsersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{3} -} -func (m *ListUsersRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListUsersRequest.Unmarshal(m, b) -} -func (m *ListUsersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListUsersRequest.Marshal(b, m, deterministic) -} -func (m *ListUsersRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListUsersRequest.Merge(m, src) +func (x *ListUsersRequest) Reset() { + *x = ListUsersRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListUsersRequest) XXX_Size() int { - return xxx_messageInfo_ListUsersRequest.Size(m) + +func (x *ListUsersRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListUsersRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListUsersRequest.DiscardUnknown(m) + +func (*ListUsersRequest) ProtoMessage() {} + +func (x *ListUsersRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListUsersRequest proto.InternalMessageInfo +// Deprecated: Use ListUsersRequest.ProtoReflect.Descriptor instead. +func (*ListUsersRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{3} +} -func (m *ListUsersRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *ListUsersRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *ListUsersRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListUsersRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *ListUsersRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListUsersRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListUsersRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListUsersRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } -func (m *ListUsersRequest) GetDeleted() bool { - if m != nil { - return m.Deleted +func (x *ListUsersRequest) GetDeleted() bool { + if x != nil { + return x.Deleted } return false } type CreateUserRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` // The invitation token that was sent to the user (some networks require an invitation in order to register new users). - InvitationToken string `protobuf:"bytes,2,opt,name=invitation_token,json=invitationToken,proto3" json:"invitation_token,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + InvitationToken string `protobuf:"bytes,2,opt,name=invitation_token,json=invitationToken,proto3" json:"invitation_token,omitempty"` } -func (m *CreateUserRequest) Reset() { *m = CreateUserRequest{} } -func (m *CreateUserRequest) String() string { return proto.CompactTextString(m) } -func (*CreateUserRequest) ProtoMessage() {} -func (*CreateUserRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{4} -} -func (m *CreateUserRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateUserRequest.Unmarshal(m, b) -} -func (m *CreateUserRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateUserRequest.Marshal(b, m, deterministic) -} -func (m *CreateUserRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateUserRequest.Merge(m, src) +func (x *CreateUserRequest) Reset() { + *x = CreateUserRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateUserRequest) XXX_Size() int { - return xxx_messageInfo_CreateUserRequest.Size(m) + +func (x *CreateUserRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateUserRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateUserRequest.DiscardUnknown(m) + +func (*CreateUserRequest) ProtoMessage() {} + +func (x *CreateUserRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CreateUserRequest proto.InternalMessageInfo +// Deprecated: Use CreateUserRequest.ProtoReflect.Descriptor instead. +func (*CreateUserRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{4} +} -func (m *CreateUserRequest) GetUser() *User { - if m != nil { - return m.User +func (x *CreateUserRequest) GetUser() *User { + if x != nil { + return x.User } return nil } -func (m *CreateUserRequest) GetInvitationToken() string { - if m != nil { - return m.InvitationToken +func (x *CreateUserRequest) GetInvitationToken() string { + if x != nil { + return x.InvitationToken } return "" } type UpdateUserRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` // The names of the user fields that should be updated. - FieldMask *types.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *UpdateUserRequest) Reset() { *m = UpdateUserRequest{} } -func (m *UpdateUserRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateUserRequest) ProtoMessage() {} -func (*UpdateUserRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{5} -} -func (m *UpdateUserRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateUserRequest.Unmarshal(m, b) -} -func (m *UpdateUserRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateUserRequest.Marshal(b, m, deterministic) -} -func (m *UpdateUserRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateUserRequest.Merge(m, src) +func (x *UpdateUserRequest) Reset() { + *x = UpdateUserRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UpdateUserRequest) XXX_Size() int { - return xxx_messageInfo_UpdateUserRequest.Size(m) + +func (x *UpdateUserRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UpdateUserRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateUserRequest.DiscardUnknown(m) + +func (*UpdateUserRequest) ProtoMessage() {} + +func (x *UpdateUserRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UpdateUserRequest proto.InternalMessageInfo +// Deprecated: Use UpdateUserRequest.ProtoReflect.Descriptor instead. +func (*UpdateUserRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{5} +} -func (m *UpdateUserRequest) GetUser() *User { - if m != nil { - return m.User +func (x *UpdateUserRequest) GetUser() *User { + if x != nil { + return x.User } return nil } -func (m *UpdateUserRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *UpdateUserRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type CreateTemporaryPasswordRequest struct { - UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *CreateTemporaryPasswordRequest) Reset() { *m = CreateTemporaryPasswordRequest{} } -func (m *CreateTemporaryPasswordRequest) String() string { return proto.CompactTextString(m) } -func (*CreateTemporaryPasswordRequest) ProtoMessage() {} -func (*CreateTemporaryPasswordRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{6} -} -func (m *CreateTemporaryPasswordRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateTemporaryPasswordRequest.Unmarshal(m, b) -} -func (m *CreateTemporaryPasswordRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateTemporaryPasswordRequest.Marshal(b, m, deterministic) + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` } -func (m *CreateTemporaryPasswordRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateTemporaryPasswordRequest.Merge(m, src) + +func (x *CreateTemporaryPasswordRequest) Reset() { + *x = CreateTemporaryPasswordRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateTemporaryPasswordRequest) XXX_Size() int { - return xxx_messageInfo_CreateTemporaryPasswordRequest.Size(m) + +func (x *CreateTemporaryPasswordRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateTemporaryPasswordRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateTemporaryPasswordRequest.DiscardUnknown(m) + +func (*CreateTemporaryPasswordRequest) ProtoMessage() {} + +func (x *CreateTemporaryPasswordRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CreateTemporaryPasswordRequest proto.InternalMessageInfo +// Deprecated: Use CreateTemporaryPasswordRequest.ProtoReflect.Descriptor instead. +func (*CreateTemporaryPasswordRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{6} +} -func (m *CreateTemporaryPasswordRequest) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *CreateTemporaryPasswordRequest) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } type UpdateUserPasswordRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` New string `protobuf:"bytes,2,opt,name=new,proto3" json:"new,omitempty"` Old string `protobuf:"bytes,3,opt,name=old,proto3" json:"old,omitempty"` // Revoke active sessions and access tokens of user if true. To be used if credentials are suspected to be compromised. - RevokeAllAccess bool `protobuf:"varint,4,opt,name=revoke_all_access,json=revokeAllAccess,proto3" json:"revoke_all_access,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + RevokeAllAccess bool `protobuf:"varint,4,opt,name=revoke_all_access,json=revokeAllAccess,proto3" json:"revoke_all_access,omitempty"` } -func (m *UpdateUserPasswordRequest) Reset() { *m = UpdateUserPasswordRequest{} } -func (m *UpdateUserPasswordRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateUserPasswordRequest) ProtoMessage() {} -func (*UpdateUserPasswordRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{7} -} -func (m *UpdateUserPasswordRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateUserPasswordRequest.Unmarshal(m, b) -} -func (m *UpdateUserPasswordRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateUserPasswordRequest.Marshal(b, m, deterministic) -} -func (m *UpdateUserPasswordRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateUserPasswordRequest.Merge(m, src) +func (x *UpdateUserPasswordRequest) Reset() { + *x = UpdateUserPasswordRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UpdateUserPasswordRequest) XXX_Size() int { - return xxx_messageInfo_UpdateUserPasswordRequest.Size(m) + +func (x *UpdateUserPasswordRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UpdateUserPasswordRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateUserPasswordRequest.DiscardUnknown(m) + +func (*UpdateUserPasswordRequest) ProtoMessage() {} + +func (x *UpdateUserPasswordRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UpdateUserPasswordRequest proto.InternalMessageInfo +// Deprecated: Use UpdateUserPasswordRequest.ProtoReflect.Descriptor instead. +func (*UpdateUserPasswordRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{7} +} -func (m *UpdateUserPasswordRequest) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *UpdateUserPasswordRequest) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *UpdateUserPasswordRequest) GetNew() string { - if m != nil { - return m.New +func (x *UpdateUserPasswordRequest) GetNew() string { + if x != nil { + return x.New } return "" } -func (m *UpdateUserPasswordRequest) GetOld() string { - if m != nil { - return m.Old +func (x *UpdateUserPasswordRequest) GetOld() string { + if x != nil { + return x.Old } return "" } -func (m *UpdateUserPasswordRequest) GetRevokeAllAccess() bool { - if m != nil { - return m.RevokeAllAccess +func (x *UpdateUserPasswordRequest) GetRevokeAllAccess() bool { + if x != nil { + return x.RevokeAllAccess } return false } type ListUserAPIKeysRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` // Order the results by this field path. // Default ordering is by ID. Prepend with a minus (-) to reverse the order. @@ -611,640 +702,748 @@ type ListUserAPIKeysRequest struct { // Limit the number of results per page. Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Page uint32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` } -func (m *ListUserAPIKeysRequest) Reset() { *m = ListUserAPIKeysRequest{} } -func (m *ListUserAPIKeysRequest) String() string { return proto.CompactTextString(m) } -func (*ListUserAPIKeysRequest) ProtoMessage() {} -func (*ListUserAPIKeysRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{8} -} -func (m *ListUserAPIKeysRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListUserAPIKeysRequest.Unmarshal(m, b) -} -func (m *ListUserAPIKeysRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListUserAPIKeysRequest.Marshal(b, m, deterministic) -} -func (m *ListUserAPIKeysRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListUserAPIKeysRequest.Merge(m, src) +func (x *ListUserAPIKeysRequest) Reset() { + *x = ListUserAPIKeysRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListUserAPIKeysRequest) XXX_Size() int { - return xxx_messageInfo_ListUserAPIKeysRequest.Size(m) + +func (x *ListUserAPIKeysRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListUserAPIKeysRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListUserAPIKeysRequest.DiscardUnknown(m) + +func (*ListUserAPIKeysRequest) ProtoMessage() {} + +func (x *ListUserAPIKeysRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListUserAPIKeysRequest proto.InternalMessageInfo +// Deprecated: Use ListUserAPIKeysRequest.ProtoReflect.Descriptor instead. +func (*ListUserAPIKeysRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{8} +} -func (m *ListUserAPIKeysRequest) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *ListUserAPIKeysRequest) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *ListUserAPIKeysRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListUserAPIKeysRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *ListUserAPIKeysRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListUserAPIKeysRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListUserAPIKeysRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListUserAPIKeysRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } type GetUserAPIKeyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` // Unique public identifier for the API key. - KeyId string `protobuf:"bytes,2,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + KeyId string `protobuf:"bytes,2,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` } -func (m *GetUserAPIKeyRequest) Reset() { *m = GetUserAPIKeyRequest{} } -func (m *GetUserAPIKeyRequest) String() string { return proto.CompactTextString(m) } -func (*GetUserAPIKeyRequest) ProtoMessage() {} -func (*GetUserAPIKeyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{9} -} -func (m *GetUserAPIKeyRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetUserAPIKeyRequest.Unmarshal(m, b) -} -func (m *GetUserAPIKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetUserAPIKeyRequest.Marshal(b, m, deterministic) -} -func (m *GetUserAPIKeyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetUserAPIKeyRequest.Merge(m, src) +func (x *GetUserAPIKeyRequest) Reset() { + *x = GetUserAPIKeyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetUserAPIKeyRequest) XXX_Size() int { - return xxx_messageInfo_GetUserAPIKeyRequest.Size(m) + +func (x *GetUserAPIKeyRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *GetUserAPIKeyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetUserAPIKeyRequest.DiscardUnknown(m) + +func (*GetUserAPIKeyRequest) ProtoMessage() {} + +func (x *GetUserAPIKeyRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_GetUserAPIKeyRequest proto.InternalMessageInfo +// Deprecated: Use GetUserAPIKeyRequest.ProtoReflect.Descriptor instead. +func (*GetUserAPIKeyRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{9} +} -func (m *GetUserAPIKeyRequest) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *GetUserAPIKeyRequest) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *GetUserAPIKeyRequest) GetKeyId() string { - if m != nil { - return m.KeyId +func (x *GetUserAPIKeyRequest) GetKeyId() string { + if x != nil { + return x.KeyId } return "" } type CreateUserAPIKeyRequest struct { - UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Rights []Right `protobuf:"varint,3,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` - ExpiresAt *types.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateUserAPIKeyRequest) Reset() { *m = CreateUserAPIKeyRequest{} } -func (m *CreateUserAPIKeyRequest) String() string { return proto.CompactTextString(m) } -func (*CreateUserAPIKeyRequest) ProtoMessage() {} -func (*CreateUserAPIKeyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{10} -} -func (m *CreateUserAPIKeyRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateUserAPIKeyRequest.Unmarshal(m, b) -} -func (m *CreateUserAPIKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateUserAPIKeyRequest.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Rights []Right `protobuf:"varint,3,rep,packed,name=rights,proto3,enum=ttn.lorawan.v3.Right" json:"rights,omitempty"` + ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` } -func (m *CreateUserAPIKeyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateUserAPIKeyRequest.Merge(m, src) + +func (x *CreateUserAPIKeyRequest) Reset() { + *x = CreateUserAPIKeyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateUserAPIKeyRequest) XXX_Size() int { - return xxx_messageInfo_CreateUserAPIKeyRequest.Size(m) + +func (x *CreateUserAPIKeyRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateUserAPIKeyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateUserAPIKeyRequest.DiscardUnknown(m) + +func (*CreateUserAPIKeyRequest) ProtoMessage() {} + +func (x *CreateUserAPIKeyRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CreateUserAPIKeyRequest proto.InternalMessageInfo +// Deprecated: Use CreateUserAPIKeyRequest.ProtoReflect.Descriptor instead. +func (*CreateUserAPIKeyRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{10} +} -func (m *CreateUserAPIKeyRequest) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *CreateUserAPIKeyRequest) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *CreateUserAPIKeyRequest) GetName() string { - if m != nil { - return m.Name +func (x *CreateUserAPIKeyRequest) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *CreateUserAPIKeyRequest) GetRights() []Right { - if m != nil { - return m.Rights +func (x *CreateUserAPIKeyRequest) GetRights() []Right { + if x != nil { + return x.Rights } return nil } -func (m *CreateUserAPIKeyRequest) GetExpiresAt() *types.Timestamp { - if m != nil { - return m.ExpiresAt +func (x *CreateUserAPIKeyRequest) GetExpiresAt() *timestamppb.Timestamp { + if x != nil { + return x.ExpiresAt } return nil } type UpdateUserAPIKeyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` ApiKey *APIKey `protobuf:"bytes,2,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` // The names of the api key fields that should be updated. - FieldMask *types.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + FieldMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=field_mask,json=fieldMask,proto3" json:"field_mask,omitempty"` } -func (m *UpdateUserAPIKeyRequest) Reset() { *m = UpdateUserAPIKeyRequest{} } -func (m *UpdateUserAPIKeyRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateUserAPIKeyRequest) ProtoMessage() {} -func (*UpdateUserAPIKeyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{11} -} -func (m *UpdateUserAPIKeyRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateUserAPIKeyRequest.Unmarshal(m, b) -} -func (m *UpdateUserAPIKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateUserAPIKeyRequest.Marshal(b, m, deterministic) -} -func (m *UpdateUserAPIKeyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateUserAPIKeyRequest.Merge(m, src) +func (x *UpdateUserAPIKeyRequest) Reset() { + *x = UpdateUserAPIKeyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UpdateUserAPIKeyRequest) XXX_Size() int { - return xxx_messageInfo_UpdateUserAPIKeyRequest.Size(m) + +func (x *UpdateUserAPIKeyRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UpdateUserAPIKeyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateUserAPIKeyRequest.DiscardUnknown(m) + +func (*UpdateUserAPIKeyRequest) ProtoMessage() {} + +func (x *UpdateUserAPIKeyRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UpdateUserAPIKeyRequest proto.InternalMessageInfo +// Deprecated: Use UpdateUserAPIKeyRequest.ProtoReflect.Descriptor instead. +func (*UpdateUserAPIKeyRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{11} +} -func (m *UpdateUserAPIKeyRequest) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *UpdateUserAPIKeyRequest) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *UpdateUserAPIKeyRequest) GetApiKey() *APIKey { - if m != nil { - return m.ApiKey +func (x *UpdateUserAPIKeyRequest) GetApiKey() *APIKey { + if x != nil { + return x.ApiKey } return nil } -func (m *UpdateUserAPIKeyRequest) GetFieldMask() *types.FieldMask { - if m != nil { - return m.FieldMask +func (x *UpdateUserAPIKeyRequest) GetFieldMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.FieldMask } return nil } type Invitation struct { - Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` - Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` - ExpiresAt *types.Timestamp `protobuf:"bytes,3,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` - CreatedAt *types.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *types.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - AcceptedAt *types.Timestamp `protobuf:"bytes,6,opt,name=accepted_at,json=acceptedAt,proto3" json:"accepted_at,omitempty"` - AcceptedBy *UserIdentifiers `protobuf:"bytes,7,opt,name=accepted_by,json=acceptedBy,proto3" json:"accepted_by,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Invitation) Reset() { *m = Invitation{} } -func (m *Invitation) String() string { return proto.CompactTextString(m) } -func (*Invitation) ProtoMessage() {} -func (*Invitation) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{12} -} -func (m *Invitation) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Invitation.Unmarshal(m, b) -} -func (m *Invitation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Invitation.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` + ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + AcceptedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=accepted_at,json=acceptedAt,proto3" json:"accepted_at,omitempty"` + AcceptedBy *UserIdentifiers `protobuf:"bytes,7,opt,name=accepted_by,json=acceptedBy,proto3" json:"accepted_by,omitempty"` } -func (m *Invitation) XXX_Merge(src proto.Message) { - xxx_messageInfo_Invitation.Merge(m, src) + +func (x *Invitation) Reset() { + *x = Invitation{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Invitation) XXX_Size() int { - return xxx_messageInfo_Invitation.Size(m) + +func (x *Invitation) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Invitation) XXX_DiscardUnknown() { - xxx_messageInfo_Invitation.DiscardUnknown(m) + +func (*Invitation) ProtoMessage() {} + +func (x *Invitation) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Invitation proto.InternalMessageInfo +// Deprecated: Use Invitation.ProtoReflect.Descriptor instead. +func (*Invitation) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{12} +} -func (m *Invitation) GetEmail() string { - if m != nil { - return m.Email +func (x *Invitation) GetEmail() string { + if x != nil { + return x.Email } return "" } -func (m *Invitation) GetToken() string { - if m != nil { - return m.Token +func (x *Invitation) GetToken() string { + if x != nil { + return x.Token } return "" } -func (m *Invitation) GetExpiresAt() *types.Timestamp { - if m != nil { - return m.ExpiresAt +func (x *Invitation) GetExpiresAt() *timestamppb.Timestamp { + if x != nil { + return x.ExpiresAt } return nil } -func (m *Invitation) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *Invitation) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *Invitation) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *Invitation) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *Invitation) GetAcceptedAt() *types.Timestamp { - if m != nil { - return m.AcceptedAt +func (x *Invitation) GetAcceptedAt() *timestamppb.Timestamp { + if x != nil { + return x.AcceptedAt } return nil } -func (m *Invitation) GetAcceptedBy() *UserIdentifiers { - if m != nil { - return m.AcceptedBy +func (x *Invitation) GetAcceptedBy() *UserIdentifiers { + if x != nil { + return x.AcceptedBy } return nil } type ListInvitationsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Limit the number of results per page. Limit uint32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Page uint32 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` } -func (m *ListInvitationsRequest) Reset() { *m = ListInvitationsRequest{} } -func (m *ListInvitationsRequest) String() string { return proto.CompactTextString(m) } -func (*ListInvitationsRequest) ProtoMessage() {} -func (*ListInvitationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{13} -} -func (m *ListInvitationsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListInvitationsRequest.Unmarshal(m, b) -} -func (m *ListInvitationsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListInvitationsRequest.Marshal(b, m, deterministic) -} -func (m *ListInvitationsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListInvitationsRequest.Merge(m, src) +func (x *ListInvitationsRequest) Reset() { + *x = ListInvitationsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListInvitationsRequest) XXX_Size() int { - return xxx_messageInfo_ListInvitationsRequest.Size(m) + +func (x *ListInvitationsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListInvitationsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListInvitationsRequest.DiscardUnknown(m) + +func (*ListInvitationsRequest) ProtoMessage() {} + +func (x *ListInvitationsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListInvitationsRequest proto.InternalMessageInfo +// Deprecated: Use ListInvitationsRequest.ProtoReflect.Descriptor instead. +func (*ListInvitationsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{13} +} -func (m *ListInvitationsRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListInvitationsRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListInvitationsRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListInvitationsRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } type Invitations struct { - Invitations []*Invitation `protobuf:"bytes,1,rep,name=invitations,proto3" json:"invitations,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Invitations) Reset() { *m = Invitations{} } -func (m *Invitations) String() string { return proto.CompactTextString(m) } -func (*Invitations) ProtoMessage() {} -func (*Invitations) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{14} + Invitations []*Invitation `protobuf:"bytes,1,rep,name=invitations,proto3" json:"invitations,omitempty"` } -func (m *Invitations) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Invitations.Unmarshal(m, b) -} -func (m *Invitations) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Invitations.Marshal(b, m, deterministic) -} -func (m *Invitations) XXX_Merge(src proto.Message) { - xxx_messageInfo_Invitations.Merge(m, src) + +func (x *Invitations) Reset() { + *x = Invitations{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *Invitations) XXX_Size() int { - return xxx_messageInfo_Invitations.Size(m) + +func (x *Invitations) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Invitations) XXX_DiscardUnknown() { - xxx_messageInfo_Invitations.DiscardUnknown(m) + +func (*Invitations) ProtoMessage() {} + +func (x *Invitations) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_Invitations proto.InternalMessageInfo +// Deprecated: Use Invitations.ProtoReflect.Descriptor instead. +func (*Invitations) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{14} +} -func (m *Invitations) GetInvitations() []*Invitation { - if m != nil { - return m.Invitations +func (x *Invitations) GetInvitations() []*Invitation { + if x != nil { + return x.Invitations } return nil } type SendInvitationRequest struct { - Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SendInvitationRequest) Reset() { *m = SendInvitationRequest{} } -func (m *SendInvitationRequest) String() string { return proto.CompactTextString(m) } -func (*SendInvitationRequest) ProtoMessage() {} -func (*SendInvitationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{15} -} -func (m *SendInvitationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SendInvitationRequest.Unmarshal(m, b) + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` } -func (m *SendInvitationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SendInvitationRequest.Marshal(b, m, deterministic) -} -func (m *SendInvitationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SendInvitationRequest.Merge(m, src) + +func (x *SendInvitationRequest) Reset() { + *x = SendInvitationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SendInvitationRequest) XXX_Size() int { - return xxx_messageInfo_SendInvitationRequest.Size(m) + +func (x *SendInvitationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SendInvitationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SendInvitationRequest.DiscardUnknown(m) + +func (*SendInvitationRequest) ProtoMessage() {} + +func (x *SendInvitationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SendInvitationRequest proto.InternalMessageInfo +// Deprecated: Use SendInvitationRequest.ProtoReflect.Descriptor instead. +func (*SendInvitationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{15} +} -func (m *SendInvitationRequest) GetEmail() string { - if m != nil { - return m.Email +func (x *SendInvitationRequest) GetEmail() string { + if x != nil { + return x.Email } return "" } type DeleteInvitationRequest struct { - Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *DeleteInvitationRequest) Reset() { *m = DeleteInvitationRequest{} } -func (m *DeleteInvitationRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteInvitationRequest) ProtoMessage() {} -func (*DeleteInvitationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{16} -} -func (m *DeleteInvitationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteInvitationRequest.Unmarshal(m, b) -} -func (m *DeleteInvitationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteInvitationRequest.Marshal(b, m, deterministic) + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` } -func (m *DeleteInvitationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteInvitationRequest.Merge(m, src) + +func (x *DeleteInvitationRequest) Reset() { + *x = DeleteInvitationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DeleteInvitationRequest) XXX_Size() int { - return xxx_messageInfo_DeleteInvitationRequest.Size(m) + +func (x *DeleteInvitationRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DeleteInvitationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteInvitationRequest.DiscardUnknown(m) + +func (*DeleteInvitationRequest) ProtoMessage() {} + +func (x *DeleteInvitationRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DeleteInvitationRequest proto.InternalMessageInfo +// Deprecated: Use DeleteInvitationRequest.ProtoReflect.Descriptor instead. +func (*DeleteInvitationRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{16} +} -func (m *DeleteInvitationRequest) GetEmail() string { - if m != nil { - return m.Email +func (x *DeleteInvitationRequest) GetEmail() string { + if x != nil { + return x.Email } return "" } type UserSessionIdentifiers struct { - UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` - SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *UserSessionIdentifiers) Reset() { *m = UserSessionIdentifiers{} } -func (m *UserSessionIdentifiers) String() string { return proto.CompactTextString(m) } -func (*UserSessionIdentifiers) ProtoMessage() {} -func (*UserSessionIdentifiers) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{17} -} -func (m *UserSessionIdentifiers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UserSessionIdentifiers.Unmarshal(m, b) -} -func (m *UserSessionIdentifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UserSessionIdentifiers.Marshal(b, m, deterministic) + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` + SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` } -func (m *UserSessionIdentifiers) XXX_Merge(src proto.Message) { - xxx_messageInfo_UserSessionIdentifiers.Merge(m, src) + +func (x *UserSessionIdentifiers) Reset() { + *x = UserSessionIdentifiers{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UserSessionIdentifiers) XXX_Size() int { - return xxx_messageInfo_UserSessionIdentifiers.Size(m) + +func (x *UserSessionIdentifiers) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UserSessionIdentifiers) XXX_DiscardUnknown() { - xxx_messageInfo_UserSessionIdentifiers.DiscardUnknown(m) + +func (*UserSessionIdentifiers) ProtoMessage() {} + +func (x *UserSessionIdentifiers) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UserSessionIdentifiers proto.InternalMessageInfo +// Deprecated: Use UserSessionIdentifiers.ProtoReflect.Descriptor instead. +func (*UserSessionIdentifiers) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{17} +} -func (m *UserSessionIdentifiers) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *UserSessionIdentifiers) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *UserSessionIdentifiers) GetSessionId() string { - if m != nil { - return m.SessionId +func (x *UserSessionIdentifiers) GetSessionId() string { + if x != nil { + return x.SessionId } return "" } type UserSession struct { - UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` - SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - CreatedAt *types.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *types.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - ExpiresAt *types.Timestamp `protobuf:"bytes,5,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` + SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` // The session secret is used to compose an authorization key and is never returned. - SessionSecret string `protobuf:"bytes,6,opt,name=session_secret,json=sessionSecret,proto3" json:"session_secret,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + SessionSecret string `protobuf:"bytes,6,opt,name=session_secret,json=sessionSecret,proto3" json:"session_secret,omitempty"` } -func (m *UserSession) Reset() { *m = UserSession{} } -func (m *UserSession) String() string { return proto.CompactTextString(m) } -func (*UserSession) ProtoMessage() {} -func (*UserSession) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{18} -} -func (m *UserSession) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UserSession.Unmarshal(m, b) -} -func (m *UserSession) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UserSession.Marshal(b, m, deterministic) -} -func (m *UserSession) XXX_Merge(src proto.Message) { - xxx_messageInfo_UserSession.Merge(m, src) +func (x *UserSession) Reset() { + *x = UserSession{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UserSession) XXX_Size() int { - return xxx_messageInfo_UserSession.Size(m) + +func (x *UserSession) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UserSession) XXX_DiscardUnknown() { - xxx_messageInfo_UserSession.DiscardUnknown(m) + +func (*UserSession) ProtoMessage() {} + +func (x *UserSession) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UserSession proto.InternalMessageInfo +// Deprecated: Use UserSession.ProtoReflect.Descriptor instead. +func (*UserSession) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{18} +} -func (m *UserSession) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *UserSession) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *UserSession) GetSessionId() string { - if m != nil { - return m.SessionId +func (x *UserSession) GetSessionId() string { + if x != nil { + return x.SessionId } return "" } -func (m *UserSession) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *UserSession) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *UserSession) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *UserSession) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *UserSession) GetExpiresAt() *types.Timestamp { - if m != nil { - return m.ExpiresAt +func (x *UserSession) GetExpiresAt() *timestamppb.Timestamp { + if x != nil { + return x.ExpiresAt } return nil } -func (m *UserSession) GetSessionSecret() string { - if m != nil { - return m.SessionSecret +func (x *UserSession) GetSessionSecret() string { + if x != nil { + return x.SessionSecret } return "" } type UserSessions struct { - Sessions []*UserSession `protobuf:"bytes,1,rep,name=sessions,proto3" json:"sessions,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *UserSessions) Reset() { *m = UserSessions{} } -func (m *UserSessions) String() string { return proto.CompactTextString(m) } -func (*UserSessions) ProtoMessage() {} -func (*UserSessions) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{19} -} -func (m *UserSessions) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UserSessions.Unmarshal(m, b) -} -func (m *UserSessions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UserSessions.Marshal(b, m, deterministic) + Sessions []*UserSession `protobuf:"bytes,1,rep,name=sessions,proto3" json:"sessions,omitempty"` } -func (m *UserSessions) XXX_Merge(src proto.Message) { - xxx_messageInfo_UserSessions.Merge(m, src) + +func (x *UserSessions) Reset() { + *x = UserSessions{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *UserSessions) XXX_Size() int { - return xxx_messageInfo_UserSessions.Size(m) + +func (x *UserSessions) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *UserSessions) XXX_DiscardUnknown() { - xxx_messageInfo_UserSessions.DiscardUnknown(m) + +func (*UserSessions) ProtoMessage() {} + +func (x *UserSessions) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_UserSessions proto.InternalMessageInfo +// Deprecated: Use UserSessions.ProtoReflect.Descriptor instead. +func (*UserSessions) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{19} +} -func (m *UserSessions) GetSessions() []*UserSession { - if m != nil { - return m.Sessions +func (x *UserSessions) GetSessions() []*UserSession { + if x != nil { + return x.Sessions } return nil } type ListUserSessionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` // Order the results by this field path (must be present in the field mask). // Default ordering is by ID. Prepend with a minus (-) to reverse the order. @@ -1252,403 +1451,1056 @@ type ListUserSessionsRequest struct { // Limit the number of results per page. Limit uint32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` // Page number for pagination. 0 is interpreted as 1. - Page uint32 `protobuf:"varint,4,opt,name=page,proto3" json:"page,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Page uint32 `protobuf:"varint,4,opt,name=page,proto3" json:"page,omitempty"` } -func (m *ListUserSessionsRequest) Reset() { *m = ListUserSessionsRequest{} } -func (m *ListUserSessionsRequest) String() string { return proto.CompactTextString(m) } -func (*ListUserSessionsRequest) ProtoMessage() {} -func (*ListUserSessionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{20} -} -func (m *ListUserSessionsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListUserSessionsRequest.Unmarshal(m, b) -} -func (m *ListUserSessionsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListUserSessionsRequest.Marshal(b, m, deterministic) -} -func (m *ListUserSessionsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListUserSessionsRequest.Merge(m, src) +func (x *ListUserSessionsRequest) Reset() { + *x = ListUserSessionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *ListUserSessionsRequest) XXX_Size() int { - return xxx_messageInfo_ListUserSessionsRequest.Size(m) + +func (x *ListUserSessionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *ListUserSessionsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListUserSessionsRequest.DiscardUnknown(m) + +func (*ListUserSessionsRequest) ProtoMessage() {} + +func (x *ListUserSessionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_ListUserSessionsRequest proto.InternalMessageInfo +// Deprecated: Use ListUserSessionsRequest.ProtoReflect.Descriptor instead. +func (*ListUserSessionsRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{20} +} -func (m *ListUserSessionsRequest) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *ListUserSessionsRequest) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *ListUserSessionsRequest) GetOrder() string { - if m != nil { - return m.Order +func (x *ListUserSessionsRequest) GetOrder() string { + if x != nil { + return x.Order } return "" } -func (m *ListUserSessionsRequest) GetLimit() uint32 { - if m != nil { - return m.Limit +func (x *ListUserSessionsRequest) GetLimit() uint32 { + if x != nil { + return x.Limit } return 0 } -func (m *ListUserSessionsRequest) GetPage() uint32 { - if m != nil { - return m.Page +func (x *ListUserSessionsRequest) GetPage() uint32 { + if x != nil { + return x.Page } return 0 } type LoginToken struct { - UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` - CreatedAt *types.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *types.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - ExpiresAt *types.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` - Token string `protobuf:"bytes,5,opt,name=token,proto3" json:"token,omitempty"` - Used bool `protobuf:"varint,6,opt,name=used,proto3" json:"used,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *LoginToken) Reset() { *m = LoginToken{} } -func (m *LoginToken) String() string { return proto.CompactTextString(m) } -func (*LoginToken) ProtoMessage() {} -func (*LoginToken) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{21} -} -func (m *LoginToken) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LoginToken.Unmarshal(m, b) -} -func (m *LoginToken) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LoginToken.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` + Token string `protobuf:"bytes,5,opt,name=token,proto3" json:"token,omitempty"` + Used bool `protobuf:"varint,6,opt,name=used,proto3" json:"used,omitempty"` } -func (m *LoginToken) XXX_Merge(src proto.Message) { - xxx_messageInfo_LoginToken.Merge(m, src) + +func (x *LoginToken) Reset() { + *x = LoginToken{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *LoginToken) XXX_Size() int { - return xxx_messageInfo_LoginToken.Size(m) + +func (x *LoginToken) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *LoginToken) XXX_DiscardUnknown() { - xxx_messageInfo_LoginToken.DiscardUnknown(m) + +func (*LoginToken) ProtoMessage() {} + +func (x *LoginToken) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_LoginToken proto.InternalMessageInfo +// Deprecated: Use LoginToken.ProtoReflect.Descriptor instead. +func (*LoginToken) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{21} +} -func (m *LoginToken) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *LoginToken) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *LoginToken) GetCreatedAt() *types.Timestamp { - if m != nil { - return m.CreatedAt +func (x *LoginToken) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *LoginToken) GetUpdatedAt() *types.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *LoginToken) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } -func (m *LoginToken) GetExpiresAt() *types.Timestamp { - if m != nil { - return m.ExpiresAt +func (x *LoginToken) GetExpiresAt() *timestamppb.Timestamp { + if x != nil { + return x.ExpiresAt } return nil } -func (m *LoginToken) GetToken() string { - if m != nil { - return m.Token +func (x *LoginToken) GetToken() string { + if x != nil { + return x.Token } return "" } -func (m *LoginToken) GetUsed() bool { - if m != nil { - return m.Used +func (x *LoginToken) GetUsed() bool { + if x != nil { + return x.Used } return false } type CreateLoginTokenRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + UserIds *UserIdentifiers `protobuf:"bytes,1,opt,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` // Skip sending the login token to the user by email. // This field is only effective when the login token is created by an admin user. - SkipEmail bool `protobuf:"varint,2,opt,name=skip_email,json=skipEmail,proto3" json:"skip_email,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + SkipEmail bool `protobuf:"varint,2,opt,name=skip_email,json=skipEmail,proto3" json:"skip_email,omitempty"` } -func (m *CreateLoginTokenRequest) Reset() { *m = CreateLoginTokenRequest{} } -func (m *CreateLoginTokenRequest) String() string { return proto.CompactTextString(m) } -func (*CreateLoginTokenRequest) ProtoMessage() {} -func (*CreateLoginTokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{22} -} -func (m *CreateLoginTokenRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateLoginTokenRequest.Unmarshal(m, b) -} -func (m *CreateLoginTokenRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateLoginTokenRequest.Marshal(b, m, deterministic) -} -func (m *CreateLoginTokenRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateLoginTokenRequest.Merge(m, src) +func (x *CreateLoginTokenRequest) Reset() { + *x = CreateLoginTokenRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateLoginTokenRequest) XXX_Size() int { - return xxx_messageInfo_CreateLoginTokenRequest.Size(m) + +func (x *CreateLoginTokenRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateLoginTokenRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateLoginTokenRequest.DiscardUnknown(m) + +func (*CreateLoginTokenRequest) ProtoMessage() {} + +func (x *CreateLoginTokenRequest) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CreateLoginTokenRequest proto.InternalMessageInfo +// Deprecated: Use CreateLoginTokenRequest.ProtoReflect.Descriptor instead. +func (*CreateLoginTokenRequest) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{22} +} -func (m *CreateLoginTokenRequest) GetUserIds() *UserIdentifiers { - if m != nil { - return m.UserIds +func (x *CreateLoginTokenRequest) GetUserIds() *UserIdentifiers { + if x != nil { + return x.UserIds } return nil } -func (m *CreateLoginTokenRequest) GetSkipEmail() bool { - if m != nil { - return m.SkipEmail +func (x *CreateLoginTokenRequest) GetSkipEmail() bool { + if x != nil { + return x.SkipEmail } return false } type CreateLoginTokenResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The token that can be used for logging in as the user. // This field is only present if a token was created by an admin user for a non-admin user. - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` } -func (m *CreateLoginTokenResponse) Reset() { *m = CreateLoginTokenResponse{} } -func (m *CreateLoginTokenResponse) String() string { return proto.CompactTextString(m) } -func (*CreateLoginTokenResponse) ProtoMessage() {} -func (*CreateLoginTokenResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_5ce30de589ccb9af, []int{23} -} -func (m *CreateLoginTokenResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateLoginTokenResponse.Unmarshal(m, b) -} -func (m *CreateLoginTokenResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateLoginTokenResponse.Marshal(b, m, deterministic) -} -func (m *CreateLoginTokenResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateLoginTokenResponse.Merge(m, src) +func (x *CreateLoginTokenResponse) Reset() { + *x = CreateLoginTokenResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_user_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *CreateLoginTokenResponse) XXX_Size() int { - return xxx_messageInfo_CreateLoginTokenResponse.Size(m) + +func (x *CreateLoginTokenResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *CreateLoginTokenResponse) XXX_DiscardUnknown() { - xxx_messageInfo_CreateLoginTokenResponse.DiscardUnknown(m) + +func (*CreateLoginTokenResponse) ProtoMessage() {} + +func (x *CreateLoginTokenResponse) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_user_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_CreateLoginTokenResponse proto.InternalMessageInfo +// Deprecated: Use CreateLoginTokenResponse.ProtoReflect.Descriptor instead. +func (*CreateLoginTokenResponse) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_user_proto_rawDescGZIP(), []int{23} +} -func (m *CreateLoginTokenResponse) GetToken() string { - if m != nil { - return m.Token +func (x *CreateLoginTokenResponse) GetToken() string { + if x != nil { + return x.Token } return "" } -func init() { - proto.RegisterType((*User)(nil), "ttn.lorawan.v3.User") - golang_proto.RegisterType((*User)(nil), "ttn.lorawan.v3.User") - proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.User.AttributesEntry") - golang_proto.RegisterMapType((map[string]string)(nil), "ttn.lorawan.v3.User.AttributesEntry") - proto.RegisterType((*Users)(nil), "ttn.lorawan.v3.Users") - golang_proto.RegisterType((*Users)(nil), "ttn.lorawan.v3.Users") - proto.RegisterType((*GetUserRequest)(nil), "ttn.lorawan.v3.GetUserRequest") - golang_proto.RegisterType((*GetUserRequest)(nil), "ttn.lorawan.v3.GetUserRequest") - proto.RegisterType((*ListUsersRequest)(nil), "ttn.lorawan.v3.ListUsersRequest") - golang_proto.RegisterType((*ListUsersRequest)(nil), "ttn.lorawan.v3.ListUsersRequest") - proto.RegisterType((*CreateUserRequest)(nil), "ttn.lorawan.v3.CreateUserRequest") - golang_proto.RegisterType((*CreateUserRequest)(nil), "ttn.lorawan.v3.CreateUserRequest") - proto.RegisterType((*UpdateUserRequest)(nil), "ttn.lorawan.v3.UpdateUserRequest") - golang_proto.RegisterType((*UpdateUserRequest)(nil), "ttn.lorawan.v3.UpdateUserRequest") - proto.RegisterType((*CreateTemporaryPasswordRequest)(nil), "ttn.lorawan.v3.CreateTemporaryPasswordRequest") - golang_proto.RegisterType((*CreateTemporaryPasswordRequest)(nil), "ttn.lorawan.v3.CreateTemporaryPasswordRequest") - proto.RegisterType((*UpdateUserPasswordRequest)(nil), "ttn.lorawan.v3.UpdateUserPasswordRequest") - golang_proto.RegisterType((*UpdateUserPasswordRequest)(nil), "ttn.lorawan.v3.UpdateUserPasswordRequest") - proto.RegisterType((*ListUserAPIKeysRequest)(nil), "ttn.lorawan.v3.ListUserAPIKeysRequest") - golang_proto.RegisterType((*ListUserAPIKeysRequest)(nil), "ttn.lorawan.v3.ListUserAPIKeysRequest") - proto.RegisterType((*GetUserAPIKeyRequest)(nil), "ttn.lorawan.v3.GetUserAPIKeyRequest") - golang_proto.RegisterType((*GetUserAPIKeyRequest)(nil), "ttn.lorawan.v3.GetUserAPIKeyRequest") - proto.RegisterType((*CreateUserAPIKeyRequest)(nil), "ttn.lorawan.v3.CreateUserAPIKeyRequest") - golang_proto.RegisterType((*CreateUserAPIKeyRequest)(nil), "ttn.lorawan.v3.CreateUserAPIKeyRequest") - proto.RegisterType((*UpdateUserAPIKeyRequest)(nil), "ttn.lorawan.v3.UpdateUserAPIKeyRequest") - golang_proto.RegisterType((*UpdateUserAPIKeyRequest)(nil), "ttn.lorawan.v3.UpdateUserAPIKeyRequest") - proto.RegisterType((*Invitation)(nil), "ttn.lorawan.v3.Invitation") - golang_proto.RegisterType((*Invitation)(nil), "ttn.lorawan.v3.Invitation") - proto.RegisterType((*ListInvitationsRequest)(nil), "ttn.lorawan.v3.ListInvitationsRequest") - golang_proto.RegisterType((*ListInvitationsRequest)(nil), "ttn.lorawan.v3.ListInvitationsRequest") - proto.RegisterType((*Invitations)(nil), "ttn.lorawan.v3.Invitations") - golang_proto.RegisterType((*Invitations)(nil), "ttn.lorawan.v3.Invitations") - proto.RegisterType((*SendInvitationRequest)(nil), "ttn.lorawan.v3.SendInvitationRequest") - golang_proto.RegisterType((*SendInvitationRequest)(nil), "ttn.lorawan.v3.SendInvitationRequest") - proto.RegisterType((*DeleteInvitationRequest)(nil), "ttn.lorawan.v3.DeleteInvitationRequest") - golang_proto.RegisterType((*DeleteInvitationRequest)(nil), "ttn.lorawan.v3.DeleteInvitationRequest") - proto.RegisterType((*UserSessionIdentifiers)(nil), "ttn.lorawan.v3.UserSessionIdentifiers") - golang_proto.RegisterType((*UserSessionIdentifiers)(nil), "ttn.lorawan.v3.UserSessionIdentifiers") - proto.RegisterType((*UserSession)(nil), "ttn.lorawan.v3.UserSession") - golang_proto.RegisterType((*UserSession)(nil), "ttn.lorawan.v3.UserSession") - proto.RegisterType((*UserSessions)(nil), "ttn.lorawan.v3.UserSessions") - golang_proto.RegisterType((*UserSessions)(nil), "ttn.lorawan.v3.UserSessions") - proto.RegisterType((*ListUserSessionsRequest)(nil), "ttn.lorawan.v3.ListUserSessionsRequest") - golang_proto.RegisterType((*ListUserSessionsRequest)(nil), "ttn.lorawan.v3.ListUserSessionsRequest") - proto.RegisterType((*LoginToken)(nil), "ttn.lorawan.v3.LoginToken") - golang_proto.RegisterType((*LoginToken)(nil), "ttn.lorawan.v3.LoginToken") - proto.RegisterType((*CreateLoginTokenRequest)(nil), "ttn.lorawan.v3.CreateLoginTokenRequest") - golang_proto.RegisterType((*CreateLoginTokenRequest)(nil), "ttn.lorawan.v3.CreateLoginTokenRequest") - proto.RegisterType((*CreateLoginTokenResponse)(nil), "ttn.lorawan.v3.CreateLoginTokenResponse") - golang_proto.RegisterType((*CreateLoginTokenResponse)(nil), "ttn.lorawan.v3.CreateLoginTokenResponse") -} - -func init() { proto.RegisterFile("lorawan-stack/api/user.proto", fileDescriptor_5ce30de589ccb9af) } -func init() { - golang_proto.RegisterFile("lorawan-stack/api/user.proto", fileDescriptor_5ce30de589ccb9af) -} - -var fileDescriptor_5ce30de589ccb9af = []byte{ - // 1834 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4f, 0x6f, 0x1c, 0x49, - 0x15, 0x4f, 0xcd, 0x1f, 0xbb, 0xe7, 0x4d, 0x6c, 0xcf, 0x74, 0x62, 0xbb, 0xe3, 0x60, 0xc7, 0x6a, - 0x0c, 0xf2, 0x5a, 0xcc, 0xcc, 0xca, 0x51, 0xb2, 0x9b, 0x2c, 0x68, 0x33, 0x9d, 0x84, 0x95, 0x9d, - 0x20, 0x45, 0x65, 0x2f, 0x87, 0x5d, 0x96, 0xa6, 0x3d, 0x5d, 0x33, 0x2e, 0x4d, 0x4f, 0x77, 0x6f, - 0x57, 0x8d, 0xbd, 0xb3, 0x2b, 0x10, 0x5a, 0x24, 0x84, 0xe0, 0x80, 0x58, 0x6e, 0x7c, 0x00, 0x0e, - 0x48, 0x5c, 0xf8, 0x04, 0x5c, 0x90, 0x90, 0x90, 0x10, 0x12, 0xe2, 0x13, 0x70, 0xe1, 0x0a, 0xc7, - 0xe1, 0x82, 0xaa, 0xaa, 0x7b, 0xba, 0xe7, 0x4f, 0xe2, 0x9d, 0xc4, 0xe1, 0x34, 0xf5, 0xe7, 0xf7, - 0xde, 0xab, 0x7a, 0xf5, 0xde, 0xef, 0xbd, 0x1e, 0xf8, 0x8a, 0x17, 0x44, 0xce, 0xb9, 0xe3, 0xd7, - 0x18, 0x77, 0x5a, 0xdd, 0x86, 0x13, 0xd2, 0x46, 0x9f, 0x91, 0xa8, 0x1e, 0x46, 0x01, 0x0f, 0xf4, - 0x65, 0xce, 0xfd, 0x7a, 0x8c, 0xa8, 0x9f, 0xdd, 0xde, 0x78, 0xd4, 0xa1, 0xfc, 0xb4, 0x7f, 0x52, - 0x6f, 0x05, 0xbd, 0xc6, 0xf1, 0x29, 0x39, 0x3e, 0xa5, 0x7e, 0x87, 0x1d, 0xf8, 0x6e, 0x9f, 0xf1, - 0x88, 0x12, 0xd6, 0x90, 0x52, 0xad, 0x5a, 0x87, 0xf8, 0xb5, 0x4e, 0x50, 0x6b, 0x7b, 0x4e, 0x87, - 0x35, 0x1c, 0xdf, 0x0f, 0xb8, 0xc3, 0x69, 0xe0, 0x33, 0xa5, 0x75, 0xa3, 0x99, 0xd1, 0x42, 0xfc, - 0xb3, 0x60, 0x10, 0x46, 0xc1, 0x27, 0x83, 0xac, 0xf0, 0x99, 0xe3, 0x51, 0xd7, 0xe1, 0xa4, 0x31, - 0x35, 0x88, 0x55, 0xd4, 0x32, 0x2a, 0x3a, 0x41, 0x27, 0x50, 0xc2, 0x27, 0xfd, 0xb6, 0x9c, 0xc9, - 0x89, 0x1c, 0xc5, 0xf0, 0xed, 0x4e, 0x10, 0x74, 0x3c, 0x92, 0xa2, 0xda, 0x94, 0x78, 0xae, 0xdd, - 0x73, 0x58, 0x37, 0x46, 0xdc, 0x9a, 0x44, 0x70, 0xda, 0x23, 0x8c, 0x3b, 0xbd, 0x30, 0x06, 0xec, - 0x4c, 0x3b, 0xaa, 0x15, 0xf8, 0xdc, 0x69, 0x71, 0x9b, 0xfa, 0xed, 0xc4, 0xd0, 0xe6, 0x34, 0x8a, - 0xf8, 0xfd, 0x5e, 0x72, 0xf3, 0xaf, 0x4e, 0x6f, 0x53, 0x97, 0xf8, 0x9c, 0xb6, 0x29, 0x89, 0x12, - 0xd0, 0xad, 0x69, 0x50, 0x48, 0x5b, 0xbc, 0x1f, 0x25, 0x97, 0xdf, 0x9a, 0x06, 0x44, 0xb4, 0x73, - 0xca, 0x63, 0x05, 0xe6, 0x7f, 0xcb, 0x50, 0x78, 0x9f, 0x91, 0x48, 0x7f, 0x08, 0x79, 0xea, 0x32, - 0x03, 0x6d, 0xa3, 0xdd, 0xf2, 0xfe, 0xad, 0xfa, 0xf8, 0x63, 0xd6, 0x05, 0xe4, 0x20, 0xb5, 0x6e, - 0x55, 0x86, 0x56, 0xf1, 0xe7, 0x28, 0x57, 0x41, 0xff, 0xf9, 0xdd, 0x8d, 0x82, 0x76, 0x65, 0x17, - 0x61, 0x21, 0xad, 0x3f, 0x04, 0x68, 0x45, 0xc4, 0xe1, 0xc4, 0xb5, 0x1d, 0x6e, 0xe4, 0xa4, 0xae, - 0x8d, 0xba, 0x72, 0x57, 0x3d, 0x71, 0x57, 0xfd, 0x38, 0x71, 0x97, 0xa5, 0x29, 0xf1, 0xca, 0x15, - 0x5c, 0x8a, 0xe5, 0x9a, 0x5c, 0x28, 0xe9, 0x87, 0x6e, 0xa2, 0x24, 0x3f, 0x8f, 0x92, 0x58, 0x4e, - 0x29, 0x71, 0x89, 0x47, 0x62, 0x25, 0xd7, 0xbe, 0xa4, 0x12, 0x24, 0x94, 0xc4, 0x72, 0x4d, 0xae, - 0xdf, 0x84, 0x82, 0xef, 0xf4, 0x88, 0x51, 0xd8, 0x46, 0xbb, 0x25, 0x6b, 0x71, 0x68, 0x15, 0xa2, - 0x9c, 0xb1, 0x8f, 0xe5, 0xa2, 0xbe, 0x07, 0x65, 0x97, 0xb0, 0x56, 0x44, 0x43, 0x11, 0xaf, 0x46, - 0x51, 0x62, 0xb4, 0xa1, 0x55, 0x8c, 0xf2, 0xc6, 0xdf, 0x56, 0x70, 0x76, 0x53, 0xff, 0x0c, 0xc0, - 0xe1, 0x3c, 0xa2, 0x27, 0x7d, 0x4e, 0x98, 0xb1, 0xb0, 0x9d, 0xdf, 0x2d, 0xef, 0xef, 0xcc, 0xf2, - 0x71, 0xbd, 0x39, 0x82, 0x3d, 0xf6, 0x79, 0x34, 0xb0, 0xee, 0x0c, 0xad, 0xfd, 0xdf, 0xa0, 0x46, - 0x05, 0xcc, 0x9d, 0xc8, 0x34, 0x76, 0xf6, 0xb7, 0xbe, 0xff, 0xa1, 0x53, 0xfb, 0xf4, 0xcd, 0xda, - 0xbd, 0x8f, 0x76, 0xdf, 0xbd, 0xff, 0x61, 0xed, 0xa3, 0x77, 0x93, 0xe9, 0x1b, 0x9f, 0xed, 0x7f, - 0xe3, 0x87, 0x3b, 0x7b, 0xc2, 0xfa, 0x9f, 0x11, 0xce, 0x98, 0xd3, 0x0f, 0xe1, 0x6a, 0x36, 0xfa, - 0x8c, 0x45, 0x69, 0xfe, 0xe6, 0xa4, 0xf9, 0x87, 0x0a, 0x73, 0xe0, 0xb7, 0x03, 0x0b, 0x86, 0x56, - 0xf1, 0x0b, 0x94, 0xab, 0x80, 0x81, 0x70, 0xb9, 0x95, 0x6e, 0xe8, 0xef, 0xc0, 0x6a, 0x18, 0xd1, - 0x9e, 0x13, 0x0d, 0x6c, 0xd2, 0x73, 0xa8, 0x67, 0x3b, 0xae, 0x1b, 0x11, 0xc6, 0x0c, 0x2d, 0xe3, - 0xa2, 0x1f, 0x20, 0x7c, 0x2d, 0x46, 0x3d, 0x16, 0xa0, 0xa6, 0xc2, 0xe8, 0x6d, 0x30, 0x67, 0x0a, - 0xdb, 0x49, 0xc2, 0xca, 0xb7, 0x2a, 0x5d, 0xf4, 0x56, 0x78, 0x6b, 0x86, 0xf2, 0xef, 0x26, 0x2a, - 0x9a, 0x5c, 0xdf, 0x01, 0x2d, 0x74, 0x18, 0x3b, 0x0f, 0x22, 0xd7, 0x80, 0xec, 0xb3, 0xfc, 0x6b, - 0x11, 0x8f, 0x76, 0xf4, 0x63, 0xb8, 0x96, 0x8c, 0xed, 0x4c, 0xbc, 0x95, 0xe7, 0x08, 0x95, 0x6a, - 0xa2, 0xe0, 0xfd, 0x51, 0xdc, 0xdd, 0x85, 0xf5, 0x88, 0x7c, 0xdc, 0xa7, 0x11, 0xb1, 0x27, 0xb4, - 0x1b, 0x57, 0xb7, 0xd1, 0xae, 0x86, 0x57, 0xe3, 0xed, 0x67, 0x63, 0xa2, 0xfa, 0x1d, 0x28, 0x32, - 0x2e, 0x50, 0x4b, 0xdb, 0x68, 0x77, 0x79, 0x7f, 0x75, 0xf2, 0x75, 0x8e, 0xc4, 0xa6, 0xbc, 0xc7, - 0xe7, 0x22, 0xed, 0xb0, 0x42, 0xeb, 0x77, 0xa0, 0x2a, 0x07, 0x76, 0x36, 0x14, 0xaf, 0x67, 0xef, - 0xfc, 0x63, 0x84, 0x2b, 0x12, 0xf2, 0x28, 0x13, 0x8f, 0xd7, 0xa1, 0xe8, 0xb8, 0x3d, 0xea, 0x1b, - 0xcb, 0xf2, 0x4c, 0x6a, 0xa2, 0xbf, 0x05, 0x3a, 0x27, 0xbd, 0x30, 0x88, 0xc4, 0x0b, 0x8d, 0x3c, - 0xb8, 0x32, 0xe1, 0xc1, 0xea, 0x08, 0x93, 0x5c, 0x41, 0xef, 0xc0, 0xe6, 0xb4, 0xa0, 0x9d, 0x61, - 0x82, 0xca, 0x1c, 0x4e, 0xdd, 0x98, 0xd2, 0xff, 0x70, 0x44, 0x0d, 0xb3, 0x0d, 0x91, 0x4f, 0x42, - 0x1a, 0x11, 0x26, 0x0c, 0x55, 0x5f, 0xc9, 0xd0, 0x63, 0xa5, 0xa8, 0xc9, 0xf5, 0x07, 0xb0, 0x12, - 0x46, 0x41, 0x9b, 0x7a, 0xc4, 0x8e, 0xf9, 0xd4, 0xd0, 0xa5, 0xea, 0xf5, 0xc9, 0x87, 0x79, 0xa6, - 0xb6, 0xf1, 0x72, 0x8c, 0x8f, 0xe7, 0x1b, 0xdf, 0x82, 0x95, 0x89, 0x5c, 0xd6, 0x2b, 0x90, 0xef, - 0x92, 0x81, 0xa4, 0xd8, 0x12, 0x16, 0x43, 0xf1, 0x0e, 0x67, 0x8e, 0xd7, 0x27, 0x92, 0x2a, 0x4b, - 0x58, 0x4d, 0xee, 0xe7, 0xde, 0x46, 0xf7, 0x93, 0x63, 0xa2, 0xc3, 0x82, 0xb6, 0x5a, 0x59, 0x3b, - 0x2c, 0x68, 0x6b, 0x95, 0xf5, 0xc3, 0x82, 0xb6, 0x5e, 0x31, 0x0e, 0x0b, 0x9a, 0x51, 0xb9, 0x81, - 0xab, 0x4e, 0x18, 0x7a, 0xb4, 0x25, 0xab, 0xa5, 0xed, 0xd1, 0x1e, 0xe5, 0xf8, 0x6a, 0xcb, 0xa3, - 0xc4, 0xe7, 0xf1, 0x6c, 0xa9, 0xe3, 0x70, 0x72, 0xee, 0x0c, 0xe2, 0xa9, 0x1e, 0x44, 0x1d, 0xc7, - 0xa7, 0x9f, 0x66, 0x04, 0xcc, 0xdb, 0x50, 0x14, 0xac, 0xc3, 0xf4, 0x3d, 0x28, 0x8a, 0x52, 0x2e, - 0xf8, 0x5f, 0x90, 0xc3, 0xf5, 0x59, 0xdc, 0x84, 0x15, 0xc4, 0xfc, 0x15, 0x82, 0xe5, 0xf7, 0x08, - 0x97, 0x4b, 0xe4, 0xe3, 0x3e, 0x61, 0x5c, 0x7f, 0x04, 0x9a, 0xd8, 0xb3, 0xe7, 0xa8, 0x20, 0x5a, - 0x52, 0x41, 0xf0, 0x62, 0x5f, 0x6e, 0x31, 0xfd, 0x1e, 0x40, 0x5a, 0x6b, 0x9f, 0x5b, 0x3d, 0xbe, - 0x2d, 0x20, 0xdf, 0x71, 0x58, 0x17, 0x97, 0xda, 0xc9, 0xd0, 0xfc, 0x6b, 0x0e, 0x2a, 0x4f, 0x29, - 0x93, 0x87, 0x62, 0xc9, 0xa9, 0xc6, 0xf5, 0xa1, 0x39, 0xf4, 0xe9, 0xbf, 0x45, 0x50, 0x0c, 0x22, - 0x97, 0x44, 0xea, 0x65, 0xac, 0x5f, 0xa2, 0xa1, 0xf5, 0x0b, 0x14, 0xfd, 0x0c, 0xe1, 0x2b, 0xea, - 0xbc, 0x36, 0x75, 0xb1, 0x56, 0x4b, 0x46, 0xb2, 0x22, 0xe0, 0x62, 0x4d, 0xfe, 0xcc, 0x66, 0x48, - 0xbc, 0x56, 0x9b, 0xbd, 0xae, 0x32, 0x19, 0x2f, 0xd4, 0xd4, 0xaf, 0xca, 0x45, 0xbc, 0x50, 0x53, - 0xbf, 0x99, 0x7a, 0x8a, 0xcb, 0xb5, 0xcc, 0x44, 0x1d, 0x4f, 0xdf, 0x82, 0xa2, 0x7c, 0x4a, 0x59, - 0x27, 0x97, 0xa4, 0x57, 0xf7, 0x64, 0x9a, 0xaa, 0x65, 0x5d, 0x87, 0x42, 0xe8, 0x74, 0x54, 0x09, - 0x5b, 0xc2, 0x72, 0xac, 0x1b, 0xb0, 0x18, 0xd7, 0x38, 0x59, 0xb5, 0x34, 0x9c, 0x4c, 0xd3, 0xa8, - 0x33, 0x23, 0xa8, 0xaa, 0xb4, 0xcb, 0x3e, 0xf3, 0x3e, 0x14, 0xc4, 0x8d, 0x63, 0x57, 0xce, 0x0c, - 0x92, 0xcc, 0xbb, 0x4a, 0xac, 0xfe, 0x06, 0x54, 0xa8, 0x7f, 0x46, 0x55, 0x57, 0x67, 0xf3, 0xa0, - 0x4b, 0xfc, 0x38, 0xda, 0x57, 0xd2, 0xf5, 0x63, 0xb1, 0x6c, 0x7e, 0x8e, 0xa0, 0xaa, 0xe8, 0xf0, - 0x55, 0x8d, 0xbe, 0x42, 0x24, 0xb5, 0x61, 0x4b, 0x5d, 0xfc, 0x78, 0x92, 0x1d, 0x2e, 0x35, 0xd8, - 0xcd, 0x3f, 0x21, 0xb8, 0x91, 0x5e, 0xf6, 0xb5, 0xd8, 0xd0, 0x37, 0x20, 0xef, 0x93, 0xf3, 0x38, - 0x84, 0x53, 0x06, 0x17, 0x8b, 0x62, 0x2f, 0xf0, 0x5c, 0x19, 0x36, 0x63, 0x7b, 0x81, 0xe7, 0xea, - 0x7b, 0x50, 0x8d, 0xc8, 0x59, 0xd0, 0x25, 0xb6, 0xe3, 0x79, 0xb6, 0xd3, 0x6a, 0x89, 0x0a, 0x5f, - 0x90, 0xa1, 0xb2, 0xa2, 0x36, 0x9a, 0x9e, 0xd7, 0x94, 0xcb, 0xe6, 0xaf, 0x73, 0xb0, 0x96, 0x64, - 0x5e, 0xf3, 0xd9, 0xc1, 0x13, 0x32, 0x60, 0x97, 0x7b, 0x89, 0x7e, 0x92, 0x89, 0xaa, 0x0b, 0xb3, - 0x87, 0xd6, 0xf7, 0xa2, 0x0f, 0xf0, 0x15, 0x0c, 0x4e, 0x48, 0xed, 0x2e, 0x19, 0x88, 0xfc, 0x2b, - 0xd7, 0x32, 0x93, 0xb1, 0x64, 0x7c, 0x6e, 0xfe, 0x40, 0x5a, 0x35, 0x70, 0xb9, 0x96, 0x99, 0x4c, - 0x26, 0x56, 0xee, 0xc5, 0x89, 0x95, 0x4f, 0x13, 0xeb, 0x7e, 0xd2, 0x89, 0x22, 0x93, 0xc1, 0xf5, - 0x98, 0x22, 0x95, 0x4f, 0x2e, 0xd7, 0x25, 0xab, 0xb0, 0xa0, 0xee, 0x9a, 0xd4, 0x8d, 0x2e, 0x19, - 0x1c, 0xb8, 0xe6, 0x4f, 0x72, 0xb0, 0x9e, 0x26, 0xed, 0xeb, 0x30, 0x9c, 0x34, 0xc4, 0xb9, 0x59, - 0x0d, 0xf1, 0x03, 0x58, 0x50, 0x9f, 0x16, 0x46, 0x7e, 0x3b, 0x3f, 0xab, 0x87, 0xc1, 0x62, 0xd7, - 0xaa, 0x0e, 0xad, 0xe5, 0x2f, 0x50, 0x59, 0x43, 0x06, 0x32, 0xe3, 0x66, 0x26, 0x96, 0x13, 0x4d, - 0x7b, 0xa6, 0x96, 0x17, 0x2e, 0xae, 0xe5, 0x43, 0xab, 0xf8, 0x07, 0x94, 0x7b, 0x80, 0x70, 0x89, - 0x24, 0xa5, 0xdb, 0xfc, 0x07, 0x82, 0xf5, 0x34, 0xb1, 0x5e, 0x87, 0x17, 0xee, 0xc1, 0x62, 0x1c, - 0x6e, 0x31, 0xb5, 0xac, 0x4d, 0x2a, 0x51, 0x56, 0x33, 0xb2, 0x0b, 0x4e, 0x48, 0x9f, 0x90, 0xc1, - 0x04, 0x31, 0xe5, 0xe7, 0x21, 0xa6, 0x7f, 0xe7, 0x00, 0x0e, 0x46, 0x8c, 0xa9, 0x6f, 0x42, 0x51, - 0xd6, 0x11, 0xd5, 0x4e, 0xa4, 0x9d, 0xb7, 0x5a, 0x15, 0x9d, 0x45, 0x96, 0x6b, 0xd5, 0x44, 0x98, - 0xcf, 0x38, 0xf8, 0xc2, 0x4f, 0xab, 0x8c, 0x5b, 0x85, 0x68, 0xa6, 0xa1, 0x2b, 0x5c, 0x2c, 0x9a, - 0x7e, 0xd0, 0xdd, 0x1b, 0xfb, 0xa0, 0x2b, 0x5e, 0x2c, 0x9a, 0x7e, 0xc6, 0xbd, 0x03, 0x65, 0x41, - 0x3f, 0x61, 0x2c, 0xbb, 0x70, 0xa1, 0x2c, 0x24, 0x70, 0xd9, 0xc4, 0xa5, 0xc2, 0x27, 0x03, 0x63, - 0xf1, 0x4b, 0x3d, 0x78, 0xaa, 0xc1, 0x1a, 0x98, 0x4f, 0x15, 0xb7, 0xa5, 0x6e, 0x1f, 0x71, 0xdb, - 0x88, 0x1e, 0xd0, 0x8b, 0xe9, 0x21, 0x97, 0xd2, 0x83, 0xf9, 0x04, 0xca, 0x19, 0x4d, 0xfa, 0x37, - 0xa1, 0x9c, 0x56, 0xc0, 0xa4, 0xf3, 0xda, 0x98, 0x3c, 0x5e, 0x2a, 0x81, 0xb3, 0x70, 0xf3, 0x2e, - 0xac, 0x1e, 0x11, 0xdf, 0xcd, 0x6c, 0xc7, 0x27, 0x7b, 0x71, 0x60, 0x98, 0x6f, 0xc3, 0xfa, 0x23, - 0x59, 0xed, 0xe7, 0x96, 0xfc, 0x29, 0x82, 0x35, 0xe1, 0xac, 0x23, 0xc2, 0x18, 0x0d, 0xfc, 0x8c, - 0xcf, 0x2e, 0x29, 0xaf, 0xbe, 0x0e, 0xc0, 0x94, 0xee, 0x11, 0xb5, 0x25, 0x1c, 0xf3, 0x00, 0x97, - 0x58, 0x62, 0xd6, 0xfc, 0x7b, 0x0e, 0xca, 0x99, 0x83, 0xfc, 0x7f, 0xad, 0x4f, 0x24, 0x42, 0xfe, - 0xe5, 0x13, 0xa1, 0x30, 0x4f, 0x22, 0x8c, 0x67, 0x6e, 0x71, 0x9e, 0xcc, 0xfd, 0x1a, 0x2c, 0x27, - 0x17, 0x63, 0xa4, 0x15, 0x11, 0x95, 0x46, 0x25, 0xbc, 0x14, 0xaf, 0x1e, 0xc9, 0x45, 0xf3, 0x3d, - 0xb8, 0x9a, 0x71, 0x2a, 0xd3, 0xdf, 0x02, 0x2d, 0x06, 0x24, 0xb1, 0x79, 0x73, 0x96, 0x57, 0x63, - 0x3c, 0x1e, 0x81, 0xcd, 0xbf, 0x20, 0x58, 0x4f, 0x3a, 0x82, 0x44, 0xdb, 0xe5, 0x12, 0xf0, 0xdd, - 0xf1, 0xe6, 0x7c, 0x7b, 0x68, 0x6d, 0x46, 0x37, 0x45, 0x4b, 0x70, 0xf9, 0xcd, 0xb2, 0xf9, 0xfb, - 0x1c, 0xc0, 0xd3, 0xa0, 0x43, 0x55, 0x8f, 0x7a, 0x79, 0x5f, 0x3a, 0xf3, 0xfc, 0x4f, 0xf6, 0xfc, - 0x18, 0xca, 0xbf, 0x7c, 0x0c, 0x15, 0xe6, 0x89, 0xa1, 0x51, 0x39, 0x29, 0x66, 0xcb, 0x89, 0x2e, - 0x5b, 0x73, 0x57, 0xc6, 0x93, 0x26, 0x5b, 0x6f, 0xd7, 0xfc, 0x51, 0xd2, 0x83, 0xa4, 0x4e, 0xbb, - 0xdc, 0xc7, 0xdf, 0x04, 0x60, 0x5d, 0x1a, 0xaa, 0xaf, 0x28, 0xe9, 0x3b, 0x0d, 0x97, 0xc4, 0x8a, - 0xfc, 0x3b, 0xc8, 0x7c, 0x13, 0x8c, 0x69, 0xfb, 0x2c, 0x0c, 0x7c, 0x46, 0xd2, 0x5b, 0xa0, 0xcc, - 0x2d, 0xac, 0x3b, 0x7f, 0xfc, 0xe7, 0x16, 0xfa, 0xa0, 0xd1, 0x09, 0xea, 0xfc, 0x94, 0x70, 0xf9, - 0x37, 0x75, 0xdd, 0x27, 0xfc, 0x3c, 0x88, 0xba, 0x8d, 0xf1, 0x7f, 0x4f, 0xcf, 0x6e, 0x37, 0xc2, - 0x6e, 0xa7, 0xc1, 0xb9, 0x1f, 0x9e, 0x9c, 0x2c, 0x48, 0x8f, 0xdd, 0xfe, 0x5f, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xaf, 0xf2, 0xd2, 0x78, 0x16, 0x17, 0x00, 0x00, +var File_lorawan_stack_api_user_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_user_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x44, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, + 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfb, 0x0b, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x43, 0x0a, + 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, + 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, + 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7b, 0x0a, 0x0a, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, + 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, + 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, + 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, 0x42, + 0x05, 0x92, 0x01, 0x02, 0x10, 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x3b, 0x0a, 0x15, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x13, 0x70, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x66, 0x0a, 0x22, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, + 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, + 0x03, 0x18, 0xe8, 0x07, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x54, + 0x0a, 0x13, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, + 0x00, 0x52, 0x11, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x50, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x65, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x12, 0x37, 0x0a, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x72, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, + 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x67, 0x0a, 0x1d, 0x74, 0x65, 0x6d, + 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x52, 0x1a, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, + 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x67, 0x0a, 0x1d, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x5f, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, + 0x5f, 0x61, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x52, + 0x1a, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0f, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0e, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x1a, 0x3d, 0x0a, + 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x15, 0x10, 0x16, 0x4a, 0x04, 0x08, 0x16, + 0x10, 0x17, 0x4a, 0x04, 0x08, 0x17, 0x10, 0x18, 0x4a, 0x04, 0x08, 0x18, 0x10, 0x19, 0x52, 0x11, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, + 0x0d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x12, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x22, 0x33, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x75, + 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, + 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xce, 0x02, 0x0a, 0x10, + 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0xa6, 0x01, 0x0a, 0x05, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8f, 0x01, 0xfa, 0x42, + 0x8b, 0x01, 0x72, 0x88, 0x01, 0x52, 0x00, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x52, 0x08, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x15, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, + 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x16, + 0x2d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x06, 0x2d, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x06, 0x2d, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x72, 0x0a, 0x11, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x22, 0x82, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x66, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0xc5, 0x01, + 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x73, 0x12, 0x1a, 0x0a, 0x03, 0x6e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x03, 0x6e, 0x65, 0x77, 0x12, 0x1a, 0x0a, + 0x03, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, + 0x03, 0x18, 0xe8, 0x07, 0x52, 0x03, 0x6f, 0x6c, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x76, + 0x6f, 0x6b, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x6c, 0x6c, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x93, 0x02, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x75, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x5f, 0xfa, 0x42, 0x5c, 0x72, 0x5a, 0x52, 0x00, 0x52, 0x0a, + 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x0b, 0x2d, 0x61, 0x70, 0x69, + 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, + 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0a, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0x73, 0x0a, 0x14, 0x47, + 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, + 0x22, 0x83, 0x02, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, + 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x40, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x92, 0x01, 0x0b, 0x08, 0x01, + 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x40, 0x01, 0x52, 0x09, 0x65, 0x78, 0x70, + 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0xd5, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, + 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, + 0x4b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xf1, + 0x02, 0x0a, 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x40, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, + 0x42, 0x79, 0x22, 0x4c, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x22, 0x4b, 0x0a, 0x0b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x3c, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x36, 0x0a, + 0x15, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x38, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, + 0x86, 0x01, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, + 0x12, 0x26, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x09, 0x73, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xd3, 0x02, 0x0a, 0x0b, 0x55, 0x73, 0x65, + 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x26, + 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x09, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x47, + 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, + 0x0a, 0x08, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xcb, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x20, 0xfa, 0x42, 0x1d, 0x72, 0x1b, 0x52, + 0x00, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x22, 0xad, 0x02, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x04, 0x75, 0x73, 0x65, 0x64, 0x22, 0x7e, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, + 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x6b, 0x69, 0x70, + 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x30, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, + 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_user_proto_rawDescOnce sync.Once + file_lorawan_stack_api_user_proto_rawDescData = file_lorawan_stack_api_user_proto_rawDesc +) + +func file_lorawan_stack_api_user_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_user_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_user_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_user_proto_rawDescData) + }) + return file_lorawan_stack_api_user_proto_rawDescData +} + +var file_lorawan_stack_api_user_proto_msgTypes = make([]protoimpl.MessageInfo, 25) +var file_lorawan_stack_api_user_proto_goTypes = []interface{}{ + (*User)(nil), // 0: ttn.lorawan.v3.User + (*Users)(nil), // 1: ttn.lorawan.v3.Users + (*GetUserRequest)(nil), // 2: ttn.lorawan.v3.GetUserRequest + (*ListUsersRequest)(nil), // 3: ttn.lorawan.v3.ListUsersRequest + (*CreateUserRequest)(nil), // 4: ttn.lorawan.v3.CreateUserRequest + (*UpdateUserRequest)(nil), // 5: ttn.lorawan.v3.UpdateUserRequest + (*CreateTemporaryPasswordRequest)(nil), // 6: ttn.lorawan.v3.CreateTemporaryPasswordRequest + (*UpdateUserPasswordRequest)(nil), // 7: ttn.lorawan.v3.UpdateUserPasswordRequest + (*ListUserAPIKeysRequest)(nil), // 8: ttn.lorawan.v3.ListUserAPIKeysRequest + (*GetUserAPIKeyRequest)(nil), // 9: ttn.lorawan.v3.GetUserAPIKeyRequest + (*CreateUserAPIKeyRequest)(nil), // 10: ttn.lorawan.v3.CreateUserAPIKeyRequest + (*UpdateUserAPIKeyRequest)(nil), // 11: ttn.lorawan.v3.UpdateUserAPIKeyRequest + (*Invitation)(nil), // 12: ttn.lorawan.v3.Invitation + (*ListInvitationsRequest)(nil), // 13: ttn.lorawan.v3.ListInvitationsRequest + (*Invitations)(nil), // 14: ttn.lorawan.v3.Invitations + (*SendInvitationRequest)(nil), // 15: ttn.lorawan.v3.SendInvitationRequest + (*DeleteInvitationRequest)(nil), // 16: ttn.lorawan.v3.DeleteInvitationRequest + (*UserSessionIdentifiers)(nil), // 17: ttn.lorawan.v3.UserSessionIdentifiers + (*UserSession)(nil), // 18: ttn.lorawan.v3.UserSession + (*UserSessions)(nil), // 19: ttn.lorawan.v3.UserSessions + (*ListUserSessionsRequest)(nil), // 20: ttn.lorawan.v3.ListUserSessionsRequest + (*LoginToken)(nil), // 21: ttn.lorawan.v3.LoginToken + (*CreateLoginTokenRequest)(nil), // 22: ttn.lorawan.v3.CreateLoginTokenRequest + (*CreateLoginTokenResponse)(nil), // 23: ttn.lorawan.v3.CreateLoginTokenResponse + nil, // 24: ttn.lorawan.v3.User.AttributesEntry + (*UserIdentifiers)(nil), // 25: ttn.lorawan.v3.UserIdentifiers + (*timestamppb.Timestamp)(nil), // 26: google.protobuf.Timestamp + (*ContactInfo)(nil), // 27: ttn.lorawan.v3.ContactInfo + (State)(0), // 28: ttn.lorawan.v3.State + (*Picture)(nil), // 29: ttn.lorawan.v3.Picture + (*fieldmaskpb.FieldMask)(nil), // 30: google.protobuf.FieldMask + (Right)(0), // 31: ttn.lorawan.v3.Right + (*APIKey)(nil), // 32: ttn.lorawan.v3.APIKey +} +var file_lorawan_stack_api_user_proto_depIdxs = []int32{ + 25, // 0: ttn.lorawan.v3.User.ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 26, // 1: ttn.lorawan.v3.User.created_at:type_name -> google.protobuf.Timestamp + 26, // 2: ttn.lorawan.v3.User.updated_at:type_name -> google.protobuf.Timestamp + 26, // 3: ttn.lorawan.v3.User.deleted_at:type_name -> google.protobuf.Timestamp + 24, // 4: ttn.lorawan.v3.User.attributes:type_name -> ttn.lorawan.v3.User.AttributesEntry + 27, // 5: ttn.lorawan.v3.User.contact_info:type_name -> ttn.lorawan.v3.ContactInfo + 26, // 6: ttn.lorawan.v3.User.primary_email_address_validated_at:type_name -> google.protobuf.Timestamp + 26, // 7: ttn.lorawan.v3.User.password_updated_at:type_name -> google.protobuf.Timestamp + 28, // 8: ttn.lorawan.v3.User.state:type_name -> ttn.lorawan.v3.State + 26, // 9: ttn.lorawan.v3.User.temporary_password_created_at:type_name -> google.protobuf.Timestamp + 26, // 10: ttn.lorawan.v3.User.temporary_password_expires_at:type_name -> google.protobuf.Timestamp + 29, // 11: ttn.lorawan.v3.User.profile_picture:type_name -> ttn.lorawan.v3.Picture + 0, // 12: ttn.lorawan.v3.Users.users:type_name -> ttn.lorawan.v3.User + 25, // 13: ttn.lorawan.v3.GetUserRequest.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 30, // 14: ttn.lorawan.v3.GetUserRequest.field_mask:type_name -> google.protobuf.FieldMask + 30, // 15: ttn.lorawan.v3.ListUsersRequest.field_mask:type_name -> google.protobuf.FieldMask + 0, // 16: ttn.lorawan.v3.CreateUserRequest.user:type_name -> ttn.lorawan.v3.User + 0, // 17: ttn.lorawan.v3.UpdateUserRequest.user:type_name -> ttn.lorawan.v3.User + 30, // 18: ttn.lorawan.v3.UpdateUserRequest.field_mask:type_name -> google.protobuf.FieldMask + 25, // 19: ttn.lorawan.v3.CreateTemporaryPasswordRequest.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 25, // 20: ttn.lorawan.v3.UpdateUserPasswordRequest.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 25, // 21: ttn.lorawan.v3.ListUserAPIKeysRequest.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 25, // 22: ttn.lorawan.v3.GetUserAPIKeyRequest.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 25, // 23: ttn.lorawan.v3.CreateUserAPIKeyRequest.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 31, // 24: ttn.lorawan.v3.CreateUserAPIKeyRequest.rights:type_name -> ttn.lorawan.v3.Right + 26, // 25: ttn.lorawan.v3.CreateUserAPIKeyRequest.expires_at:type_name -> google.protobuf.Timestamp + 25, // 26: ttn.lorawan.v3.UpdateUserAPIKeyRequest.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 32, // 27: ttn.lorawan.v3.UpdateUserAPIKeyRequest.api_key:type_name -> ttn.lorawan.v3.APIKey + 30, // 28: ttn.lorawan.v3.UpdateUserAPIKeyRequest.field_mask:type_name -> google.protobuf.FieldMask + 26, // 29: ttn.lorawan.v3.Invitation.expires_at:type_name -> google.protobuf.Timestamp + 26, // 30: ttn.lorawan.v3.Invitation.created_at:type_name -> google.protobuf.Timestamp + 26, // 31: ttn.lorawan.v3.Invitation.updated_at:type_name -> google.protobuf.Timestamp + 26, // 32: ttn.lorawan.v3.Invitation.accepted_at:type_name -> google.protobuf.Timestamp + 25, // 33: ttn.lorawan.v3.Invitation.accepted_by:type_name -> ttn.lorawan.v3.UserIdentifiers + 12, // 34: ttn.lorawan.v3.Invitations.invitations:type_name -> ttn.lorawan.v3.Invitation + 25, // 35: ttn.lorawan.v3.UserSessionIdentifiers.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 25, // 36: ttn.lorawan.v3.UserSession.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 26, // 37: ttn.lorawan.v3.UserSession.created_at:type_name -> google.protobuf.Timestamp + 26, // 38: ttn.lorawan.v3.UserSession.updated_at:type_name -> google.protobuf.Timestamp + 26, // 39: ttn.lorawan.v3.UserSession.expires_at:type_name -> google.protobuf.Timestamp + 18, // 40: ttn.lorawan.v3.UserSessions.sessions:type_name -> ttn.lorawan.v3.UserSession + 25, // 41: ttn.lorawan.v3.ListUserSessionsRequest.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 25, // 42: ttn.lorawan.v3.LoginToken.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 26, // 43: ttn.lorawan.v3.LoginToken.created_at:type_name -> google.protobuf.Timestamp + 26, // 44: ttn.lorawan.v3.LoginToken.updated_at:type_name -> google.protobuf.Timestamp + 26, // 45: ttn.lorawan.v3.LoginToken.expires_at:type_name -> google.protobuf.Timestamp + 25, // 46: ttn.lorawan.v3.CreateLoginTokenRequest.user_ids:type_name -> ttn.lorawan.v3.UserIdentifiers + 47, // [47:47] is the sub-list for method output_type + 47, // [47:47] is the sub-list for method input_type + 47, // [47:47] is the sub-list for extension type_name + 47, // [47:47] is the sub-list for extension extendee + 0, // [0:47] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_user_proto_init() } +func file_lorawan_stack_api_user_proto_init() { + if File_lorawan_stack_api_user_proto != nil { + return + } + file_lorawan_stack_api_contact_info_proto_init() + file_lorawan_stack_api_enums_proto_init() + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_picture_proto_init() + file_lorawan_stack_api_rights_proto_init() + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_user_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*User); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Users); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetUserRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListUsersRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateUserRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateUserRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateTemporaryPasswordRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateUserPasswordRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListUserAPIKeysRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetUserAPIKeyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateUserAPIKeyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateUserAPIKeyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Invitation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListInvitationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Invitations); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SendInvitationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteInvitationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UserSessionIdentifiers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UserSession); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UserSessions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListUserSessionsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LoginToken); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateLoginTokenRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_user_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateLoginTokenResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_user_proto_rawDesc, + NumEnums: 0, + NumMessages: 25, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_user_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_user_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_user_proto_msgTypes, + }.Build() + File_lorawan_stack_api_user_proto = out.File + file_lorawan_stack_api_user_proto_rawDesc = nil + file_lorawan_stack_api_user_proto_goTypes = nil + file_lorawan_stack_api_user_proto_depIdxs = nil } diff --git a/pkg/ttnpb/user.pb.setters.fm.go b/pkg/ttnpb/user.pb.setters.fm.go index 3ee386a496..940187aef0 100644 --- a/pkg/ttnpb/user.pb.setters.fm.go +++ b/pkg/ttnpb/user.pb.setters.fm.go @@ -152,8 +152,7 @@ func (dst *User) SetFields(src *User, paths ...string) error { if src != nil { dst.State = src.State } else { - var zero State - dst.State = zero + dst.State = 0 } case "state_description": if len(subs) > 0 { diff --git a/pkg/ttnpb/user.pb.validate.go b/pkg/ttnpb/user.pb.validate.go index 05cb8633da..2d0d624126 100644 --- a/pkg/ttnpb/user.pb.validate.go +++ b/pkg/ttnpb/user.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _user_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on User with the rules defined in the // proto definition for this message. If any rules are violated, an error is returned. func (m *User) ValidateFields(paths ...string) error { @@ -1490,7 +1487,7 @@ func (m *CreateUserAPIKeyRequest) ValidateFields(paths ...string) error { case "expires_at": if t := m.GetExpiresAt(); t != nil { - ts, err := types.TimestampFromProto(t) + ts, err := t.AsTime(), t.CheckValid() if err != nil { return CreateUserAPIKeyRequestValidationError{ field: "expires_at", diff --git a/pkg/ttnpb/user_flags.pb.go b/pkg/ttnpb/user_flags.pb.go index 15e5da97a6..34bf2fbcc7 100644 --- a/pkg/ttnpb/user_flags.pb.go +++ b/pkg/ttnpb/user_flags.pb.go @@ -1,14 +1,14 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/user.proto package ttnpb import ( flagsplugin "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - gogo "github.com/TheThingsIndustries/protoc-gen-go-flags/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-flags/golang" pflag "github.com/spf13/pflag" ) @@ -183,7 +183,7 @@ func (m *User) SetFromFlags(flags *pflag.FlagSet, prefix string) (paths []string if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("primary_email_address_validated_at", prefix)); err != nil { return nil, err } else if changed { - m.PrimaryEmailAddressValidatedAt = gogo.SetTimestamp(val) + m.PrimaryEmailAddressValidatedAt = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("primary_email_address_validated_at", prefix)) } if val, changed, err := flagsplugin.GetString(flags, flagsplugin.Prefix("password", prefix)); err != nil { @@ -283,7 +283,7 @@ func (m *ListUsersRequest) SetFromFlags(flags *pflag.FlagSet, prefix string) (pa if val, changed, err := flagsplugin.GetStringSlice(flags, flagsplugin.Prefix("field_mask", prefix)); err != nil { return nil, err } else if changed { - m.FieldMask = gogo.SetFieldMask(val) + m.FieldMask = golang.SetFieldMask(val) paths = append(paths, flagsplugin.Prefix("field_mask", prefix)) } if val, changed, err := flagsplugin.GetString(flags, flagsplugin.Prefix("order", prefix)); err != nil { diff --git a/pkg/ttnpb/user_json.pb.go b/pkg/ttnpb/user_json.pb.go index ee266e82a8..ceac8c4f43 100644 --- a/pkg/ttnpb/user_json.pb.go +++ b/pkg/ttnpb/user_json.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go-json. DO NOT EDIT. // versions: -// - protoc-gen-go-json v1.4.0 -// - protoc v3.9.1 +// - protoc-gen-go-json v1.4.2 +// - protoc v3.21.1 // source: lorawan-stack/api/user.proto package ttnpb import ( - gogo "github.com/TheThingsIndustries/protoc-gen-go-json/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" ) @@ -23,7 +23,7 @@ func (x *User) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("ids") // NOTE: UserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.Ids) + golang.MarshalMessage(s, x.Ids) } if x.CreatedAt != nil || s.HasField("created_at") { s.WriteMoreIf(&wroteField) @@ -31,7 +31,7 @@ func (x *User) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.CreatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.CreatedAt) + golang.MarshalTimestamp(s, x.CreatedAt) } } if x.UpdatedAt != nil || s.HasField("updated_at") { @@ -40,7 +40,7 @@ func (x *User) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.UpdatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.UpdatedAt) + golang.MarshalTimestamp(s, x.UpdatedAt) } } if x.DeletedAt != nil || s.HasField("deleted_at") { @@ -49,7 +49,7 @@ func (x *User) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.DeletedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.DeletedAt) + golang.MarshalTimestamp(s, x.DeletedAt) } } if x.Name != "" || s.HasField("name") { @@ -96,7 +96,7 @@ func (x *User) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.PrimaryEmailAddressValidatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.PrimaryEmailAddressValidatedAt) + golang.MarshalTimestamp(s, x.PrimaryEmailAddressValidatedAt) } } if x.Password != "" || s.HasField("password") { @@ -110,7 +110,7 @@ func (x *User) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.PasswordUpdatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.PasswordUpdatedAt) + golang.MarshalTimestamp(s, x.PasswordUpdatedAt) } } if x.RequirePasswordUpdate || s.HasField("require_password_update") { @@ -144,7 +144,7 @@ func (x *User) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.TemporaryPasswordCreatedAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.TemporaryPasswordCreatedAt) + golang.MarshalTimestamp(s, x.TemporaryPasswordCreatedAt) } } if x.TemporaryPasswordExpiresAt != nil || s.HasField("temporary_password_expires_at") { @@ -153,14 +153,14 @@ func (x *User) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.TemporaryPasswordExpiresAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.TemporaryPasswordExpiresAt) + golang.MarshalTimestamp(s, x.TemporaryPasswordExpiresAt) } } if x.ProfilePicture != nil || s.HasField("profile_picture") { s.WriteMoreIf(&wroteField) s.WriteObjectField("profile_picture") // NOTE: Picture does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.ProfilePicture) + golang.MarshalMessage(s, x.ProfilePicture) } s.WriteObjectEnd() } @@ -187,7 +187,7 @@ func (x *User) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: UserIdentifiers does not seem to implement UnmarshalProtoJSON. var v UserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.Ids = &v case "created_at", "createdAt": s.AddField("created_at") @@ -195,7 +195,7 @@ func (x *User) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.CreatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -206,7 +206,7 @@ func (x *User) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.UpdatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -217,7 +217,7 @@ func (x *User) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.DeletedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -265,7 +265,7 @@ func (x *User) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.PrimaryEmailAddressValidatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -279,7 +279,7 @@ func (x *User) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.PasswordUpdatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -305,7 +305,7 @@ func (x *User) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.TemporaryPasswordCreatedAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -316,7 +316,7 @@ func (x *User) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.TemporaryPasswordExpiresAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -329,7 +329,7 @@ func (x *User) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { } // NOTE: Picture does not seem to implement UnmarshalProtoJSON. var v Picture - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.ProfilePicture = &v } }) @@ -403,6 +403,162 @@ func (x *Users) UnmarshalJSON(b []byte) error { return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) } +// MarshalProtoJSON marshals the GetUserRequest message to JSON. +func (x *GetUserRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.UserIds != nil || s.HasField("user_ids") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("user_ids") + // NOTE: UserIdentifiers does not seem to implement MarshalProtoJSON. + golang.MarshalMessage(s, x.UserIds) + } + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the GetUserRequest to JSON. +func (x *GetUserRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the GetUserRequest message from JSON. +func (x *GetUserRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "user_ids", "userIds": + s.AddField("user_ids") + if s.ReadNil() { + x.UserIds = nil + return + } + // NOTE: UserIdentifiers does not seem to implement UnmarshalProtoJSON. + var v UserIdentifiers + golang.UnmarshalMessage(s, &v) + x.UserIds = &v + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + } + }) +} + +// UnmarshalJSON unmarshals the GetUserRequest from JSON. +func (x *GetUserRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the ListUsersRequest message to JSON. +func (x *ListUsersRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.FieldMask != nil || s.HasField("field_mask") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("field_mask") + if x.FieldMask == nil { + s.WriteNil() + } else { + golang.MarshalLegacyFieldMask(s, x.FieldMask) + } + } + if x.Order != "" || s.HasField("order") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("order") + s.WriteString(x.Order) + } + if x.Limit != 0 || s.HasField("limit") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("limit") + s.WriteUint32(x.Limit) + } + if x.Page != 0 || s.HasField("page") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("page") + s.WriteUint32(x.Page) + } + if x.Deleted || s.HasField("deleted") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("deleted") + s.WriteBool(x.Deleted) + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the ListUsersRequest to JSON. +func (x *ListUsersRequest) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the ListUsersRequest message from JSON. +func (x *ListUsersRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "field_mask", "fieldMask": + s.AddField("field_mask") + if s.ReadNil() { + x.FieldMask = nil + return + } + v := golang.UnmarshalFieldMask(s) + if s.Err() != nil { + return + } + x.FieldMask = v + case "order": + s.AddField("order") + x.Order = s.ReadString() + case "limit": + s.AddField("limit") + x.Limit = s.ReadUint32() + case "page": + s.AddField("page") + x.Page = s.ReadUint32() + case "deleted": + s.AddField("deleted") + x.Deleted = s.ReadBool() + } + }) +} + +// UnmarshalJSON unmarshals the ListUsersRequest from JSON. +func (x *ListUsersRequest) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + // MarshalProtoJSON marshals the CreateUserRequest message to JSON. func (x *CreateUserRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x == nil { @@ -476,7 +632,7 @@ func (x *UpdateUserRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -509,7 +665,7 @@ func (x *UpdateUserRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } @@ -535,7 +691,7 @@ func (x *CreateUserAPIKeyRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("user_ids") // NOTE: UserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.UserIds) + golang.MarshalMessage(s, x.UserIds) } if x.Name != "" || s.HasField("name") { s.WriteMoreIf(&wroteField) @@ -559,7 +715,7 @@ func (x *CreateUserAPIKeyRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.ExpiresAt == nil { s.WriteNil() } else { - gogo.MarshalTimestamp(s, x.ExpiresAt) + golang.MarshalTimestamp(s, x.ExpiresAt) } } s.WriteObjectEnd() @@ -587,7 +743,7 @@ func (x *CreateUserAPIKeyRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalStat } // NOTE: UserIdentifiers does not seem to implement UnmarshalProtoJSON. var v UserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.UserIds = &v case "name": s.AddField("name") @@ -609,7 +765,7 @@ func (x *CreateUserAPIKeyRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalStat x.ExpiresAt = nil return } - v := gogo.UnmarshalTimestamp(s) + v := golang.UnmarshalTimestamp(s) if s.Err() != nil { return } @@ -635,7 +791,7 @@ func (x *UpdateUserAPIKeyRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { s.WriteMoreIf(&wroteField) s.WriteObjectField("user_ids") // NOTE: UserIdentifiers does not seem to implement MarshalProtoJSON. - gogo.MarshalMessage(s, x.UserIds) + golang.MarshalMessage(s, x.UserIds) } if x.ApiKey != nil || s.HasField("api_key") { s.WriteMoreIf(&wroteField) @@ -648,7 +804,7 @@ func (x *UpdateUserAPIKeyRequest) MarshalProtoJSON(s *jsonplugin.MarshalState) { if x.FieldMask == nil { s.WriteNil() } else { - gogo.MarshalFieldMask(s, x.FieldMask) + golang.MarshalLegacyFieldMask(s, x.FieldMask) } } s.WriteObjectEnd() @@ -676,7 +832,7 @@ func (x *UpdateUserAPIKeyRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalStat } // NOTE: UserIdentifiers does not seem to implement UnmarshalProtoJSON. var v UserIdentifiers - gogo.UnmarshalMessage(s, &v) + golang.UnmarshalMessage(s, &v) x.UserIds = &v case "api_key", "apiKey": if s.ReadNil() { @@ -691,7 +847,7 @@ func (x *UpdateUserAPIKeyRequest) UnmarshalProtoJSON(s *jsonplugin.UnmarshalStat x.FieldMask = nil return } - v := gogo.UnmarshalFieldMask(s) + v := golang.UnmarshalFieldMask(s) if s.Err() != nil { return } diff --git a/pkg/ttnpb/user_services.pb.go b/pkg/ttnpb/user_services.pb.go index c38b8cfc01..06ac449808 100644 --- a/pkg/ttnpb/user_services.pb.go +++ b/pkg/ttnpb/user_services.pb.go @@ -1,1033 +1,314 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/user_services.proto package ttnpb import ( - context "context" - fmt "fmt" _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - golang_proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + reflect "reflect" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = golang_proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -func init() { - proto.RegisterFile("lorawan-stack/api/user_services.proto", fileDescriptor_82df9ba9356987c4) -} -func init() { - golang_proto.RegisterFile("lorawan-stack/api/user_services.proto", fileDescriptor_82df9ba9356987c4) -} - -var fileDescriptor_82df9ba9356987c4 = []byte{ - // 857 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x5d, 0x4f, 0xf3, 0x36, - 0x18, 0x55, 0xd9, 0xbb, 0xbe, 0x9b, 0xdf, 0xaa, 0x02, 0x8f, 0x51, 0x08, 0xa8, 0x40, 0xc6, 0xd7, - 0xba, 0xd5, 0xd6, 0x5a, 0xa6, 0x49, 0xdc, 0xb1, 0x0f, 0x21, 0x34, 0xa4, 0x21, 0x3e, 0x6e, 0x36, - 0x69, 0x5d, 0xda, 0x9a, 0xd4, 0x6a, 0x89, 0x33, 0xdb, 0x2d, 0xca, 0x10, 0x48, 0xe3, 0x76, 0x97, - 0xfb, 0xfa, 0x3b, 0x68, 0x7f, 0x61, 0x3f, 0x61, 0xfb, 0x21, 0xaf, 0x62, 0x3b, 0x29, 0x4d, 0x13, - 0x1a, 0x89, 0xbb, 0xd4, 0x3e, 0x3e, 0xe7, 0x3c, 0x4f, 0x8e, 0x9f, 0x14, 0x6c, 0x0f, 0x18, 0x77, - 0x6e, 0x1c, 0xaf, 0x2e, 0xa4, 0xd3, 0xe9, 0x63, 0xc7, 0xa7, 0x78, 0x28, 0x08, 0x6f, 0x09, 0xc2, - 0x47, 0xb4, 0x43, 0x04, 0xf2, 0x39, 0x93, 0x0c, 0x96, 0xa5, 0xf4, 0x90, 0x81, 0xa2, 0x51, 0xd3, - 0xaa, 0xbb, 0x54, 0xf6, 0x86, 0x6d, 0xd4, 0x61, 0xd7, 0xd8, 0x65, 0x2e, 0xc3, 0x0a, 0xd6, 0x1e, - 0x5e, 0xa9, 0x5f, 0xea, 0x87, 0x7a, 0xd2, 0xc7, 0xad, 0x35, 0x97, 0x31, 0x77, 0x40, 0x14, 0xbd, - 0xe3, 0x79, 0x4c, 0x3a, 0x92, 0x32, 0xcf, 0x90, 0x5b, 0xab, 0x66, 0x37, 0xe6, 0x20, 0xd7, 0xbe, - 0x0c, 0xcc, 0xe6, 0x47, 0xd3, 0x06, 0x69, 0x97, 0x78, 0x92, 0x5e, 0x51, 0xc2, 0x23, 0x86, 0xea, - 0x34, 0x88, 0x53, 0xb7, 0x27, 0xa3, 0xfd, 0xb5, 0xf4, 0x2a, 0xf5, 0x6e, 0xe3, 0x9f, 0xd7, 0xa0, - 0x74, 0x29, 0x08, 0x3f, 0x23, 0x2e, 0x15, 0x92, 0x07, 0xf0, 0x02, 0x14, 0xbf, 0xe2, 0xc4, 0x91, - 0x04, 0x6e, 0xa2, 0xc9, 0xc2, 0x91, 0x5e, 0xd7, 0xe8, 0x9f, 0x87, 0x44, 0x48, 0x6b, 0x31, 0x09, - 0x09, 0x37, 0xed, 0x85, 0x87, 0x7f, 0xff, 0xff, 0x7d, 0xee, 0x8d, 0x5d, 0x54, 0x42, 0xe2, 0xa0, - 0x50, 0x83, 0x3f, 0x82, 0x77, 0x8e, 0x88, 0x84, 0xd5, 0x24, 0xfe, 0x88, 0xc8, 0xd9, 0x7c, 0x9b, - 0x8a, 0x6f, 0x15, 0xae, 0x68, 0x3e, 0x7c, 0xab, 0xde, 0x12, 0xed, 0x0a, 0x64, 0x1e, 0xee, 0xe0, - 0x77, 0xe0, 0xd5, 0x09, 0x15, 0x12, 0x6e, 0x24, 0x09, 0xc2, 0xd5, 0x90, 0x44, 0x44, 0x12, 0x1f, - 0xa6, 0x49, 0x08, 0xbb, 0xac, 0x34, 0xde, 0x83, 0xc6, 0x33, 0x74, 0x41, 0xf1, 0xd2, 0xef, 0xa6, - 0xb6, 0x41, 0xaf, 0xcf, 0xb6, 0xbd, 0xa5, 0x28, 0xab, 0xd6, 0x84, 0x6d, 0xf4, 0xd4, 0x76, 0xd8, - 0x99, 0xbf, 0x0b, 0xa0, 0xa2, 0x1b, 0x7b, 0x41, 0xae, 0x7d, 0xc6, 0x1d, 0x1e, 0x9c, 0x3a, 0x42, - 0xdc, 0x30, 0xde, 0x85, 0x28, 0xfd, 0x0d, 0x4c, 0x01, 0x23, 0x1f, 0x4b, 0x48, 0xa7, 0x09, 0x45, - 0x69, 0x42, 0xdf, 0x84, 0x69, 0xb2, 0xf7, 0x95, 0x13, 0x64, 0x7f, 0x9a, 0xd9, 0x40, 0x2c, 0x23, - 0xce, 0x96, 0x1f, 0xa9, 0x3f, 0x14, 0x40, 0x59, 0xd7, 0x1a, 0x1b, 0xfa, 0x38, 0xbb, 0x17, 0x79, - 0xbd, 0xd4, 0x95, 0x97, 0x5d, 0xcb, 0xce, 0xf6, 0x12, 0x39, 0x08, 0xdb, 0xf3, 0x03, 0x28, 0x7e, - 0x4d, 0x06, 0x44, 0x12, 0xb8, 0x9e, 0xd6, 0xe4, 0xe3, 0xf1, 0x75, 0xc8, 0x54, 0x5c, 0x56, 0x8a, - 0xb0, 0x36, 0x9f, 0x50, 0xbc, 0x83, 0x5d, 0xf0, 0xfa, 0x8c, 0x08, 0xc9, 0xf8, 0x0b, 0xd8, 0x37, - 0x14, 0xbb, 0x65, 0x2f, 0x27, 0xd9, 0x31, 0x37, 0xd4, 0x3f, 0x81, 0x77, 0x4f, 0x87, 0xdc, 0x7d, - 0x81, 0x46, 0x55, 0x69, 0x2c, 0xd7, 0x96, 0xa6, 0x34, 0xfc, 0x90, 0xb8, 0xf1, 0x57, 0x11, 0x80, - 0x90, 0xeb, 0xb0, 0xd3, 0x21, 0x42, 0xc0, 0x2b, 0x00, 0xc2, 0xd8, 0x9f, 0xa9, 0x29, 0x90, 0x47, - 0x35, 0x01, 0xd0, 0x07, 0xed, 0x75, 0xa5, 0xba, 0x02, 0x2b, 0xd3, 0x95, 0x69, 0xe6, 0x7b, 0x50, - 0xd2, 0x81, 0x3c, 0x3c, 0x3d, 0xfe, 0x96, 0x04, 0x70, 0x37, 0x7b, 0x60, 0x68, 0xc4, 0x38, 0x1b, - 0x09, 0xa0, 0xde, 0x8e, 0xb2, 0x61, 0x3f, 0x93, 0x0d, 0xc7, 0xa7, 0xf5, 0x3e, 0x09, 0xd4, 0x50, - 0xf9, 0x05, 0xbc, 0x09, 0xeb, 0xd4, 0x87, 0x05, 0xdc, 0xc9, 0xba, 0xfb, 0x06, 0x10, 0xa9, 0x57, - 0xd2, 0xd5, 0x85, 0x5d, 0x53, 0xf2, 0x5b, 0x30, 0x87, 0x3c, 0xbc, 0x07, 0xef, 0x1f, 0x11, 0x23, - 0x0d, 0xb7, 0x32, 0xc6, 0x5a, 0xbe, 0xaa, 0x9b, 0x4a, 0xb6, 0x0e, 0x3f, 0x99, 0x2d, 0x8b, 0x6f, - 0xfb, 0x24, 0x50, 0xd1, 0xfd, 0xad, 0x00, 0x4a, 0xfa, 0xf2, 0x65, 0x35, 0x7f, 0x7c, 0x35, 0xf3, - 0xd9, 0x38, 0x50, 0x36, 0xf6, 0x2d, 0x9c, 0xc7, 0x86, 0xe3, 0xd3, 0x56, 0x9f, 0x04, 0xc8, 0x0c, - 0xb1, 0x3f, 0x0b, 0x60, 0x5e, 0xbf, 0xec, 0x13, 0xe6, 0x52, 0xef, 0x82, 0xf5, 0x89, 0x97, 0x15, - 0x87, 0x31, 0x22, 0x72, 0xb4, 0x37, 0x1b, 0x28, 0x7c, 0xe6, 0x09, 0x62, 0x23, 0xe5, 0x71, 0xcf, - 0xde, 0xc9, 0xf6, 0x38, 0x08, 0x4f, 0xd5, 0x65, 0x78, 0x4c, 0x34, 0x1e, 0xe7, 0xc0, 0x92, 0x8a, - 0xbb, 0x37, 0xa2, 0xfa, 0xbb, 0x1b, 0x7f, 0xe7, 0xda, 0xe0, 0xd5, 0x39, 0xf1, 0xba, 0x70, 0x3b, - 0x29, 0x1e, 0xae, 0x3e, 0xc5, 0x6b, 0x8f, 0x56, 0x12, 0x36, 0x86, 0xd8, 0x15, 0xe5, 0x6a, 0xc1, - 0x2e, 0x61, 0x1a, 0x2f, 0xaa, 0x80, 0x3a, 0xe6, 0xab, 0x94, 0x9a, 0xcc, 0x31, 0x41, 0x9c, 0xcc, - 0xd5, 0x6c, 0x11, 0x61, 0x2f, 0x2a, 0x95, 0x32, 0x9c, 0x50, 0x81, 0xad, 0x78, 0x3e, 0x4e, 0xb5, - 0x5b, 0xaf, 0x4f, 0x97, 0x92, 0x35, 0x65, 0x8c, 0x40, 0x6d, 0x42, 0xa0, 0xf1, 0xc7, 0x1c, 0xf8, - 0x20, 0x6c, 0xe1, 0x39, 0x11, 0xe2, 0x69, 0xff, 0x02, 0x53, 0xdb, 0x6e, 0xd6, 0xad, 0x33, 0x07, - 0xe2, 0xe2, 0xd6, 0xd2, 0xe6, 0x50, 0x04, 0xca, 0x73, 0xf7, 0x84, 0xc1, 0xc2, 0x5f, 0x0b, 0x71, - 0xd1, 0x3b, 0xcf, 0x90, 0xe6, 0x99, 0xac, 0x5f, 0x28, 0xd9, 0xcf, 0x6a, 0x78, 0xb6, 0x2c, 0xbe, - 0x35, 0x4f, 0xe1, 0xea, 0x97, 0x9f, 0x3f, 0xfe, 0x57, 0x2d, 0x7c, 0x8f, 0x5d, 0x86, 0x64, 0x8f, - 0xc8, 0x1e, 0xf5, 0x5c, 0x81, 0x3c, 0x22, 0x6f, 0x18, 0xef, 0xe3, 0xc9, 0x3f, 0x5c, 0xa3, 0x26, - 0xf6, 0xfb, 0x2e, 0x96, 0xd2, 0xf3, 0xdb, 0xed, 0xa2, 0xd2, 0x6f, 0xbe, 0x0d, 0x00, 0x00, 0xff, - 0xff, 0x25, 0xe4, 0x8b, 0x10, 0x7b, 0x0a, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// UserRegistryClient is the client API for UserRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type UserRegistryClient interface { - // Register a new user. This method may be restricted by network settings. - Create(ctx context.Context, in *CreateUserRequest, opts ...grpc.CallOption) (*User, error) - // Get the user with the given identifiers, selecting the fields given by the - // field mask. The method may return more or less fields, depending on the rights - // of the caller. - Get(ctx context.Context, in *GetUserRequest, opts ...grpc.CallOption) (*User, error) - // List users of the network. This method is typically restricted to admins only. - List(ctx context.Context, in *ListUsersRequest, opts ...grpc.CallOption) (*Users, error) - // Update the user, changing the fields specified by the field mask to the provided values. - // This method can not be used to change the password, see the UpdatePassword method for that. - Update(ctx context.Context, in *UpdateUserRequest, opts ...grpc.CallOption) (*User, error) - // Create a temporary password that can be used for updating a forgotten password. - // The generated password is sent to the user's email address. - CreateTemporaryPassword(ctx context.Context, in *CreateTemporaryPasswordRequest, opts ...grpc.CallOption) (*types.Empty, error) - // Update the password of the user. - UpdatePassword(ctx context.Context, in *UpdateUserPasswordRequest, opts ...grpc.CallOption) (*types.Empty, error) - // Delete the user. This may not release the user ID for reuse. - Delete(ctx context.Context, in *UserIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) - // Restore a recently deleted user. - // - // Deployment configuration may specify if, and for how long after deletion, - // entities can be restored. - Restore(ctx context.Context, in *UserIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) - // Purge the user. This will release the user ID for reuse. - // The user is responsible for clearing data from any (external) integrations - // that may store and expose data by user or organization ID. - Purge(ctx context.Context, in *UserIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) -} - -type userRegistryClient struct { - cc *grpc.ClientConn -} - -func NewUserRegistryClient(cc *grpc.ClientConn) UserRegistryClient { - return &userRegistryClient{cc} -} - -func (c *userRegistryClient) Create(ctx context.Context, in *CreateUserRequest, opts ...grpc.CallOption) (*User, error) { - out := new(User) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/Create", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userRegistryClient) Get(ctx context.Context, in *GetUserRequest, opts ...grpc.CallOption) (*User, error) { - out := new(User) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/Get", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userRegistryClient) List(ctx context.Context, in *ListUsersRequest, opts ...grpc.CallOption) (*Users, error) { - out := new(Users) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/List", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userRegistryClient) Update(ctx context.Context, in *UpdateUserRequest, opts ...grpc.CallOption) (*User, error) { - out := new(User) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/Update", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userRegistryClient) CreateTemporaryPassword(ctx context.Context, in *CreateTemporaryPasswordRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/CreateTemporaryPassword", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userRegistryClient) UpdatePassword(ctx context.Context, in *UpdateUserPasswordRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/UpdatePassword", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userRegistryClient) Delete(ctx context.Context, in *UserIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/Delete", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userRegistryClient) Restore(ctx context.Context, in *UserIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/Restore", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userRegistryClient) Purge(ctx context.Context, in *UserIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/Purge", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// UserRegistryServer is the server API for UserRegistry service. -type UserRegistryServer interface { - // Register a new user. This method may be restricted by network settings. - Create(context.Context, *CreateUserRequest) (*User, error) - // Get the user with the given identifiers, selecting the fields given by the - // field mask. The method may return more or less fields, depending on the rights - // of the caller. - Get(context.Context, *GetUserRequest) (*User, error) - // List users of the network. This method is typically restricted to admins only. - List(context.Context, *ListUsersRequest) (*Users, error) - // Update the user, changing the fields specified by the field mask to the provided values. - // This method can not be used to change the password, see the UpdatePassword method for that. - Update(context.Context, *UpdateUserRequest) (*User, error) - // Create a temporary password that can be used for updating a forgotten password. - // The generated password is sent to the user's email address. - CreateTemporaryPassword(context.Context, *CreateTemporaryPasswordRequest) (*types.Empty, error) - // Update the password of the user. - UpdatePassword(context.Context, *UpdateUserPasswordRequest) (*types.Empty, error) - // Delete the user. This may not release the user ID for reuse. - Delete(context.Context, *UserIdentifiers) (*types.Empty, error) - // Restore a recently deleted user. - // - // Deployment configuration may specify if, and for how long after deletion, - // entities can be restored. - Restore(context.Context, *UserIdentifiers) (*types.Empty, error) - // Purge the user. This will release the user ID for reuse. - // The user is responsible for clearing data from any (external) integrations - // that may store and expose data by user or organization ID. - Purge(context.Context, *UserIdentifiers) (*types.Empty, error) -} - -// UnimplementedUserRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedUserRegistryServer struct { -} - -func (*UnimplementedUserRegistryServer) Create(ctx context.Context, req *CreateUserRequest) (*User, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (*UnimplementedUserRegistryServer) Get(ctx context.Context, req *GetUserRequest) (*User, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") -} -func (*UnimplementedUserRegistryServer) List(ctx context.Context, req *ListUsersRequest) (*Users, error) { - return nil, status.Errorf(codes.Unimplemented, "method List not implemented") -} -func (*UnimplementedUserRegistryServer) Update(ctx context.Context, req *UpdateUserRequest) (*User, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") -} -func (*UnimplementedUserRegistryServer) CreateTemporaryPassword(ctx context.Context, req *CreateTemporaryPasswordRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateTemporaryPassword not implemented") -} -func (*UnimplementedUserRegistryServer) UpdatePassword(ctx context.Context, req *UpdateUserPasswordRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdatePassword not implemented") -} -func (*UnimplementedUserRegistryServer) Delete(ctx context.Context, req *UserIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (*UnimplementedUserRegistryServer) Restore(ctx context.Context, req *UserIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Restore not implemented") -} -func (*UnimplementedUserRegistryServer) Purge(ctx context.Context, req *UserIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Purge not implemented") -} - -func RegisterUserRegistryServer(s *grpc.Server, srv UserRegistryServer) { - s.RegisterService(&_UserRegistry_serviceDesc, srv) -} - -func _UserRegistry_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateUserRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserRegistryServer).Create(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserRegistry/Create", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserRegistryServer).Create(ctx, req.(*CreateUserRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UserRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetUserRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserRegistryServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserRegistry/Get", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserRegistryServer).Get(ctx, req.(*GetUserRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UserRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListUsersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserRegistryServer).List(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserRegistry/List", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserRegistryServer).List(ctx, req.(*ListUsersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UserRegistry_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateUserRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserRegistryServer).Update(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserRegistry/Update", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserRegistryServer).Update(ctx, req.(*UpdateUserRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UserRegistry_CreateTemporaryPassword_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateTemporaryPasswordRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserRegistryServer).CreateTemporaryPassword(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserRegistry/CreateTemporaryPassword", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserRegistryServer).CreateTemporaryPassword(ctx, req.(*CreateTemporaryPasswordRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UserRegistry_UpdatePassword_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateUserPasswordRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserRegistryServer).UpdatePassword(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserRegistry/UpdatePassword", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserRegistryServer).UpdatePassword(ctx, req.(*UpdateUserPasswordRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UserRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UserIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserRegistryServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserRegistry/Delete", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserRegistryServer).Delete(ctx, req.(*UserIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _UserRegistry_Restore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UserIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserRegistryServer).Restore(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserRegistry/Restore", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserRegistryServer).Restore(ctx, req.(*UserIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _UserRegistry_Purge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UserIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserRegistryServer).Purge(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserRegistry/Purge", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserRegistryServer).Purge(ctx, req.(*UserIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -var _UserRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.UserRegistry", - HandlerType: (*UserRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Create", - Handler: _UserRegistry_Create_Handler, - }, - { - MethodName: "Get", - Handler: _UserRegistry_Get_Handler, - }, - { - MethodName: "List", - Handler: _UserRegistry_List_Handler, - }, - { - MethodName: "Update", - Handler: _UserRegistry_Update_Handler, - }, - { - MethodName: "CreateTemporaryPassword", - Handler: _UserRegistry_CreateTemporaryPassword_Handler, - }, - { - MethodName: "UpdatePassword", - Handler: _UserRegistry_UpdatePassword_Handler, - }, - { - MethodName: "Delete", - Handler: _UserRegistry_Delete_Handler, - }, - { - MethodName: "Restore", - Handler: _UserRegistry_Restore_Handler, - }, - { - MethodName: "Purge", - Handler: _UserRegistry_Purge_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/user_services.proto", -} - -// UserAccessClient is the client API for UserAccess service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type UserAccessClient interface { - // List the rights the caller has on this user. - ListRights(ctx context.Context, in *UserIdentifiers, opts ...grpc.CallOption) (*Rights, error) - // Create an API key scoped to this user. - // User API keys can give access to the user itself, as well as - // any organization, application, gateway and OAuth client this user is a collaborator of. - CreateAPIKey(ctx context.Context, in *CreateUserAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) - // List the API keys for this user. - ListAPIKeys(ctx context.Context, in *ListUserAPIKeysRequest, opts ...grpc.CallOption) (*APIKeys, error) - // Get a single API key of this user. - GetAPIKey(ctx context.Context, in *GetUserAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) - // Update the rights of an API key of the user. - // This method can also be used to delete the API key, by giving it no rights. - // The caller is required to have all assigned or/and removed rights. - UpdateAPIKey(ctx context.Context, in *UpdateUserAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) - // Create a login token that can be used for a one-time login as a user. - CreateLoginToken(ctx context.Context, in *CreateLoginTokenRequest, opts ...grpc.CallOption) (*CreateLoginTokenResponse, error) -} - -type userAccessClient struct { - cc *grpc.ClientConn -} - -func NewUserAccessClient(cc *grpc.ClientConn) UserAccessClient { - return &userAccessClient{cc} -} - -func (c *userAccessClient) ListRights(ctx context.Context, in *UserIdentifiers, opts ...grpc.CallOption) (*Rights, error) { - out := new(Rights) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserAccess/ListRights", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userAccessClient) CreateAPIKey(ctx context.Context, in *CreateUserAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { - out := new(APIKey) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserAccess/CreateAPIKey", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userAccessClient) ListAPIKeys(ctx context.Context, in *ListUserAPIKeysRequest, opts ...grpc.CallOption) (*APIKeys, error) { - out := new(APIKeys) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserAccess/ListAPIKeys", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userAccessClient) GetAPIKey(ctx context.Context, in *GetUserAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { - out := new(APIKey) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserAccess/GetAPIKey", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userAccessClient) UpdateAPIKey(ctx context.Context, in *UpdateUserAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { - out := new(APIKey) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserAccess/UpdateAPIKey", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userAccessClient) CreateLoginToken(ctx context.Context, in *CreateLoginTokenRequest, opts ...grpc.CallOption) (*CreateLoginTokenResponse, error) { - out := new(CreateLoginTokenResponse) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserAccess/CreateLoginToken", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// UserAccessServer is the server API for UserAccess service. -type UserAccessServer interface { - // List the rights the caller has on this user. - ListRights(context.Context, *UserIdentifiers) (*Rights, error) - // Create an API key scoped to this user. - // User API keys can give access to the user itself, as well as - // any organization, application, gateway and OAuth client this user is a collaborator of. - CreateAPIKey(context.Context, *CreateUserAPIKeyRequest) (*APIKey, error) - // List the API keys for this user. - ListAPIKeys(context.Context, *ListUserAPIKeysRequest) (*APIKeys, error) - // Get a single API key of this user. - GetAPIKey(context.Context, *GetUserAPIKeyRequest) (*APIKey, error) - // Update the rights of an API key of the user. - // This method can also be used to delete the API key, by giving it no rights. - // The caller is required to have all assigned or/and removed rights. - UpdateAPIKey(context.Context, *UpdateUserAPIKeyRequest) (*APIKey, error) - // Create a login token that can be used for a one-time login as a user. - CreateLoginToken(context.Context, *CreateLoginTokenRequest) (*CreateLoginTokenResponse, error) -} - -// UnimplementedUserAccessServer can be embedded to have forward compatible implementations. -type UnimplementedUserAccessServer struct { -} - -func (*UnimplementedUserAccessServer) ListRights(ctx context.Context, req *UserIdentifiers) (*Rights, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListRights not implemented") -} -func (*UnimplementedUserAccessServer) CreateAPIKey(ctx context.Context, req *CreateUserAPIKeyRequest) (*APIKey, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateAPIKey not implemented") -} -func (*UnimplementedUserAccessServer) ListAPIKeys(ctx context.Context, req *ListUserAPIKeysRequest) (*APIKeys, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListAPIKeys not implemented") -} -func (*UnimplementedUserAccessServer) GetAPIKey(ctx context.Context, req *GetUserAPIKeyRequest) (*APIKey, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetAPIKey not implemented") -} -func (*UnimplementedUserAccessServer) UpdateAPIKey(ctx context.Context, req *UpdateUserAPIKeyRequest) (*APIKey, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateAPIKey not implemented") -} -func (*UnimplementedUserAccessServer) CreateLoginToken(ctx context.Context, req *CreateLoginTokenRequest) (*CreateLoginTokenResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateLoginToken not implemented") -} - -func RegisterUserAccessServer(s *grpc.Server, srv UserAccessServer) { - s.RegisterService(&_UserAccess_serviceDesc, srv) -} - -func _UserAccess_ListRights_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UserIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserAccessServer).ListRights(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserAccess/ListRights", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserAccessServer).ListRights(ctx, req.(*UserIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} - -func _UserAccess_CreateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateUserAPIKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserAccessServer).CreateAPIKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserAccess/CreateAPIKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserAccessServer).CreateAPIKey(ctx, req.(*CreateUserAPIKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UserAccess_ListAPIKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListUserAPIKeysRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserAccessServer).ListAPIKeys(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserAccess/ListAPIKeys", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserAccessServer).ListAPIKeys(ctx, req.(*ListUserAPIKeysRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UserAccess_GetAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetUserAPIKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserAccessServer).GetAPIKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserAccess/GetAPIKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserAccessServer).GetAPIKey(ctx, req.(*GetUserAPIKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UserAccess_UpdateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateUserAPIKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserAccessServer).UpdateAPIKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserAccess/UpdateAPIKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserAccessServer).UpdateAPIKey(ctx, req.(*UpdateUserAPIKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UserAccess_CreateLoginToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateLoginTokenRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserAccessServer).CreateLoginToken(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserAccess/CreateLoginToken", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserAccessServer).CreateLoginToken(ctx, req.(*CreateLoginTokenRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _UserAccess_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.UserAccess", - HandlerType: (*UserAccessServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListRights", - Handler: _UserAccess_ListRights_Handler, - }, - { - MethodName: "CreateAPIKey", - Handler: _UserAccess_CreateAPIKey_Handler, - }, - { - MethodName: "ListAPIKeys", - Handler: _UserAccess_ListAPIKeys_Handler, - }, - { - MethodName: "GetAPIKey", - Handler: _UserAccess_GetAPIKey_Handler, - }, - { - MethodName: "UpdateAPIKey", - Handler: _UserAccess_UpdateAPIKey_Handler, - }, - { - MethodName: "CreateLoginToken", - Handler: _UserAccess_CreateLoginToken_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/user_services.proto", -} - -// UserInvitationRegistryClient is the client API for UserInvitationRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type UserInvitationRegistryClient interface { - // Invite a user to join the network. - Send(ctx context.Context, in *SendInvitationRequest, opts ...grpc.CallOption) (*Invitation, error) - // List the invitations the caller has sent. - List(ctx context.Context, in *ListInvitationsRequest, opts ...grpc.CallOption) (*Invitations, error) - // Delete (revoke) a user invitation. - Delete(ctx context.Context, in *DeleteInvitationRequest, opts ...grpc.CallOption) (*types.Empty, error) -} - -type userInvitationRegistryClient struct { - cc *grpc.ClientConn -} - -func NewUserInvitationRegistryClient(cc *grpc.ClientConn) UserInvitationRegistryClient { - return &userInvitationRegistryClient{cc} -} - -func (c *userInvitationRegistryClient) Send(ctx context.Context, in *SendInvitationRequest, opts ...grpc.CallOption) (*Invitation, error) { - out := new(Invitation) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserInvitationRegistry/Send", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userInvitationRegistryClient) List(ctx context.Context, in *ListInvitationsRequest, opts ...grpc.CallOption) (*Invitations, error) { - out := new(Invitations) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserInvitationRegistry/List", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userInvitationRegistryClient) Delete(ctx context.Context, in *DeleteInvitationRequest, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserInvitationRegistry/Delete", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// UserInvitationRegistryServer is the server API for UserInvitationRegistry service. -type UserInvitationRegistryServer interface { - // Invite a user to join the network. - Send(context.Context, *SendInvitationRequest) (*Invitation, error) - // List the invitations the caller has sent. - List(context.Context, *ListInvitationsRequest) (*Invitations, error) - // Delete (revoke) a user invitation. - Delete(context.Context, *DeleteInvitationRequest) (*types.Empty, error) -} - -// UnimplementedUserInvitationRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedUserInvitationRegistryServer struct { -} - -func (*UnimplementedUserInvitationRegistryServer) Send(ctx context.Context, req *SendInvitationRequest) (*Invitation, error) { - return nil, status.Errorf(codes.Unimplemented, "method Send not implemented") -} -func (*UnimplementedUserInvitationRegistryServer) List(ctx context.Context, req *ListInvitationsRequest) (*Invitations, error) { - return nil, status.Errorf(codes.Unimplemented, "method List not implemented") -} -func (*UnimplementedUserInvitationRegistryServer) Delete(ctx context.Context, req *DeleteInvitationRequest) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} - -func RegisterUserInvitationRegistryServer(s *grpc.Server, srv UserInvitationRegistryServer) { - s.RegisterService(&_UserInvitationRegistry_serviceDesc, srv) -} - -func _UserInvitationRegistry_Send_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SendInvitationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserInvitationRegistryServer).Send(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserInvitationRegistry/Send", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserInvitationRegistryServer).Send(ctx, req.(*SendInvitationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UserInvitationRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListInvitationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserInvitationRegistryServer).List(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserInvitationRegistry/List", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserInvitationRegistryServer).List(ctx, req.(*ListInvitationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UserInvitationRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteInvitationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserInvitationRegistryServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserInvitationRegistry/Delete", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserInvitationRegistryServer).Delete(ctx, req.(*DeleteInvitationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _UserInvitationRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.UserInvitationRegistry", - HandlerType: (*UserInvitationRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Send", - Handler: _UserInvitationRegistry_Send_Handler, - }, - { - MethodName: "List", - Handler: _UserInvitationRegistry_List_Handler, - }, - { - MethodName: "Delete", - Handler: _UserInvitationRegistry_Delete_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/user_services.proto", -} - -// UserSessionRegistryClient is the client API for UserSessionRegistry service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type UserSessionRegistryClient interface { - // List the active sessions for the given user. - List(ctx context.Context, in *ListUserSessionsRequest, opts ...grpc.CallOption) (*UserSessions, error) - // Delete (revoke) the given user session. - Delete(ctx context.Context, in *UserSessionIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) -} - -type userSessionRegistryClient struct { - cc *grpc.ClientConn -} - -func NewUserSessionRegistryClient(cc *grpc.ClientConn) UserSessionRegistryClient { - return &userSessionRegistryClient{cc} -} - -func (c *userSessionRegistryClient) List(ctx context.Context, in *ListUserSessionsRequest, opts ...grpc.CallOption) (*UserSessions, error) { - out := new(UserSessions) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserSessionRegistry/List", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userSessionRegistryClient) Delete(ctx context.Context, in *UserSessionIdentifiers, opts ...grpc.CallOption) (*types.Empty, error) { - out := new(types.Empty) - err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserSessionRegistry/Delete", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// UserSessionRegistryServer is the server API for UserSessionRegistry service. -type UserSessionRegistryServer interface { - // List the active sessions for the given user. - List(context.Context, *ListUserSessionsRequest) (*UserSessions, error) - // Delete (revoke) the given user session. - Delete(context.Context, *UserSessionIdentifiers) (*types.Empty, error) -} - -// UnimplementedUserSessionRegistryServer can be embedded to have forward compatible implementations. -type UnimplementedUserSessionRegistryServer struct { -} - -func (*UnimplementedUserSessionRegistryServer) List(ctx context.Context, req *ListUserSessionsRequest) (*UserSessions, error) { - return nil, status.Errorf(codes.Unimplemented, "method List not implemented") -} -func (*UnimplementedUserSessionRegistryServer) Delete(ctx context.Context, req *UserSessionIdentifiers) (*types.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} - -func RegisterUserSessionRegistryServer(s *grpc.Server, srv UserSessionRegistryServer) { - s.RegisterService(&_UserSessionRegistry_serviceDesc, srv) -} - -func _UserSessionRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListUserSessionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserSessionRegistryServer).List(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserSessionRegistry/List", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserSessionRegistryServer).List(ctx, req.(*ListUserSessionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UserSessionRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UserSessionIdentifiers) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserSessionRegistryServer).Delete(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/ttn.lorawan.v3.UserSessionRegistry/Delete", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserSessionRegistryServer).Delete(ctx, req.(*UserSessionIdentifiers)) - } - return interceptor(ctx, in, info, handler) -} +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -var _UserSessionRegistry_serviceDesc = grpc.ServiceDesc{ - ServiceName: "ttn.lorawan.v3.UserSessionRegistry", - HandlerType: (*UserSessionRegistryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "List", - Handler: _UserSessionRegistry_List_Handler, - }, - { - MethodName: "Delete", - Handler: _UserSessionRegistry_Delete_Handler, +var File_lorawan_stack_api_user_services_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_user_services_proto_rawDesc = []byte{ + 0x0a, 0x25, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xc2, 0x07, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x54, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, + 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, + 0x22, 0x06, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x5e, 0x0a, 0x03, 0x47, + 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, + 0x12, 0x19, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x4f, 0x0a, 0x04, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x22, 0x0e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x08, 0x12, 0x06, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x67, 0x0a, 0x06, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x22, + 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x1a, 0x19, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x97, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, + 0x72, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x2e, 0x22, 0x2c, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, + 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, + 0x82, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x1a, 0x22, 0x2f, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x5b, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1f, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x2a, + 0x10, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x7d, 0x12, 0x64, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x1f, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x18, 0x2f, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x60, 0x0a, 0x05, 0x50, 0x75, 0x72, 0x67, 0x65, + 0x12, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x18, 0x2a, 0x16, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x32, 0x96, 0x06, 0x0a, 0x0a, 0x55, 0x73, + 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x66, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x22, + 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x12, 0x7e, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, + 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, + 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, + 0x79, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x22, 0x22, 0x2f, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x3a, 0x01, 0x2a, + 0x12, 0x7a, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x12, + 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, + 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x7e, 0x0a, 0x09, + 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, + 0x2b, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, + 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8b, 0x01, 0x0a, + 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x3a, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x1a, 0x2f, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x69, 0x5f, + 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x95, 0x01, 0x0a, 0x10, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, + 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x22, 0x26, 0x2f, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x2d, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x32, 0xc0, 0x02, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x62, 0x0a, + 0x04, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, + 0x22, 0x0c, 0x2f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x01, + 0x2a, 0x12, 0x61, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x14, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x27, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, + 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x2a, 0x0c, 0x2f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x94, 0x02, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x79, 0x0a, + 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2a, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x75, 0x73, + 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x42, 0x35, 0x5a, 0x2f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, + 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var file_lorawan_stack_api_user_services_proto_goTypes = []interface{}{ + (*CreateUserRequest)(nil), // 0: ttn.lorawan.v3.CreateUserRequest + (*GetUserRequest)(nil), // 1: ttn.lorawan.v3.GetUserRequest + (*ListUsersRequest)(nil), // 2: ttn.lorawan.v3.ListUsersRequest + (*UpdateUserRequest)(nil), // 3: ttn.lorawan.v3.UpdateUserRequest + (*CreateTemporaryPasswordRequest)(nil), // 4: ttn.lorawan.v3.CreateTemporaryPasswordRequest + (*UpdateUserPasswordRequest)(nil), // 5: ttn.lorawan.v3.UpdateUserPasswordRequest + (*UserIdentifiers)(nil), // 6: ttn.lorawan.v3.UserIdentifiers + (*CreateUserAPIKeyRequest)(nil), // 7: ttn.lorawan.v3.CreateUserAPIKeyRequest + (*ListUserAPIKeysRequest)(nil), // 8: ttn.lorawan.v3.ListUserAPIKeysRequest + (*GetUserAPIKeyRequest)(nil), // 9: ttn.lorawan.v3.GetUserAPIKeyRequest + (*UpdateUserAPIKeyRequest)(nil), // 10: ttn.lorawan.v3.UpdateUserAPIKeyRequest + (*CreateLoginTokenRequest)(nil), // 11: ttn.lorawan.v3.CreateLoginTokenRequest + (*SendInvitationRequest)(nil), // 12: ttn.lorawan.v3.SendInvitationRequest + (*ListInvitationsRequest)(nil), // 13: ttn.lorawan.v3.ListInvitationsRequest + (*DeleteInvitationRequest)(nil), // 14: ttn.lorawan.v3.DeleteInvitationRequest + (*ListUserSessionsRequest)(nil), // 15: ttn.lorawan.v3.ListUserSessionsRequest + (*UserSessionIdentifiers)(nil), // 16: ttn.lorawan.v3.UserSessionIdentifiers + (*User)(nil), // 17: ttn.lorawan.v3.User + (*Users)(nil), // 18: ttn.lorawan.v3.Users + (*emptypb.Empty)(nil), // 19: google.protobuf.Empty + (*Rights)(nil), // 20: ttn.lorawan.v3.Rights + (*APIKey)(nil), // 21: ttn.lorawan.v3.APIKey + (*APIKeys)(nil), // 22: ttn.lorawan.v3.APIKeys + (*CreateLoginTokenResponse)(nil), // 23: ttn.lorawan.v3.CreateLoginTokenResponse + (*Invitation)(nil), // 24: ttn.lorawan.v3.Invitation + (*Invitations)(nil), // 25: ttn.lorawan.v3.Invitations + (*UserSessions)(nil), // 26: ttn.lorawan.v3.UserSessions +} +var file_lorawan_stack_api_user_services_proto_depIdxs = []int32{ + 0, // 0: ttn.lorawan.v3.UserRegistry.Create:input_type -> ttn.lorawan.v3.CreateUserRequest + 1, // 1: ttn.lorawan.v3.UserRegistry.Get:input_type -> ttn.lorawan.v3.GetUserRequest + 2, // 2: ttn.lorawan.v3.UserRegistry.List:input_type -> ttn.lorawan.v3.ListUsersRequest + 3, // 3: ttn.lorawan.v3.UserRegistry.Update:input_type -> ttn.lorawan.v3.UpdateUserRequest + 4, // 4: ttn.lorawan.v3.UserRegistry.CreateTemporaryPassword:input_type -> ttn.lorawan.v3.CreateTemporaryPasswordRequest + 5, // 5: ttn.lorawan.v3.UserRegistry.UpdatePassword:input_type -> ttn.lorawan.v3.UpdateUserPasswordRequest + 6, // 6: ttn.lorawan.v3.UserRegistry.Delete:input_type -> ttn.lorawan.v3.UserIdentifiers + 6, // 7: ttn.lorawan.v3.UserRegistry.Restore:input_type -> ttn.lorawan.v3.UserIdentifiers + 6, // 8: ttn.lorawan.v3.UserRegistry.Purge:input_type -> ttn.lorawan.v3.UserIdentifiers + 6, // 9: ttn.lorawan.v3.UserAccess.ListRights:input_type -> ttn.lorawan.v3.UserIdentifiers + 7, // 10: ttn.lorawan.v3.UserAccess.CreateAPIKey:input_type -> ttn.lorawan.v3.CreateUserAPIKeyRequest + 8, // 11: ttn.lorawan.v3.UserAccess.ListAPIKeys:input_type -> ttn.lorawan.v3.ListUserAPIKeysRequest + 9, // 12: ttn.lorawan.v3.UserAccess.GetAPIKey:input_type -> ttn.lorawan.v3.GetUserAPIKeyRequest + 10, // 13: ttn.lorawan.v3.UserAccess.UpdateAPIKey:input_type -> ttn.lorawan.v3.UpdateUserAPIKeyRequest + 11, // 14: ttn.lorawan.v3.UserAccess.CreateLoginToken:input_type -> ttn.lorawan.v3.CreateLoginTokenRequest + 12, // 15: ttn.lorawan.v3.UserInvitationRegistry.Send:input_type -> ttn.lorawan.v3.SendInvitationRequest + 13, // 16: ttn.lorawan.v3.UserInvitationRegistry.List:input_type -> ttn.lorawan.v3.ListInvitationsRequest + 14, // 17: ttn.lorawan.v3.UserInvitationRegistry.Delete:input_type -> ttn.lorawan.v3.DeleteInvitationRequest + 15, // 18: ttn.lorawan.v3.UserSessionRegistry.List:input_type -> ttn.lorawan.v3.ListUserSessionsRequest + 16, // 19: ttn.lorawan.v3.UserSessionRegistry.Delete:input_type -> ttn.lorawan.v3.UserSessionIdentifiers + 17, // 20: ttn.lorawan.v3.UserRegistry.Create:output_type -> ttn.lorawan.v3.User + 17, // 21: ttn.lorawan.v3.UserRegistry.Get:output_type -> ttn.lorawan.v3.User + 18, // 22: ttn.lorawan.v3.UserRegistry.List:output_type -> ttn.lorawan.v3.Users + 17, // 23: ttn.lorawan.v3.UserRegistry.Update:output_type -> ttn.lorawan.v3.User + 19, // 24: ttn.lorawan.v3.UserRegistry.CreateTemporaryPassword:output_type -> google.protobuf.Empty + 19, // 25: ttn.lorawan.v3.UserRegistry.UpdatePassword:output_type -> google.protobuf.Empty + 19, // 26: ttn.lorawan.v3.UserRegistry.Delete:output_type -> google.protobuf.Empty + 19, // 27: ttn.lorawan.v3.UserRegistry.Restore:output_type -> google.protobuf.Empty + 19, // 28: ttn.lorawan.v3.UserRegistry.Purge:output_type -> google.protobuf.Empty + 20, // 29: ttn.lorawan.v3.UserAccess.ListRights:output_type -> ttn.lorawan.v3.Rights + 21, // 30: ttn.lorawan.v3.UserAccess.CreateAPIKey:output_type -> ttn.lorawan.v3.APIKey + 22, // 31: ttn.lorawan.v3.UserAccess.ListAPIKeys:output_type -> ttn.lorawan.v3.APIKeys + 21, // 32: ttn.lorawan.v3.UserAccess.GetAPIKey:output_type -> ttn.lorawan.v3.APIKey + 21, // 33: ttn.lorawan.v3.UserAccess.UpdateAPIKey:output_type -> ttn.lorawan.v3.APIKey + 23, // 34: ttn.lorawan.v3.UserAccess.CreateLoginToken:output_type -> ttn.lorawan.v3.CreateLoginTokenResponse + 24, // 35: ttn.lorawan.v3.UserInvitationRegistry.Send:output_type -> ttn.lorawan.v3.Invitation + 25, // 36: ttn.lorawan.v3.UserInvitationRegistry.List:output_type -> ttn.lorawan.v3.Invitations + 19, // 37: ttn.lorawan.v3.UserInvitationRegistry.Delete:output_type -> google.protobuf.Empty + 26, // 38: ttn.lorawan.v3.UserSessionRegistry.List:output_type -> ttn.lorawan.v3.UserSessions + 19, // 39: ttn.lorawan.v3.UserSessionRegistry.Delete:output_type -> google.protobuf.Empty + 20, // [20:40] is the sub-list for method output_type + 0, // [0:20] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_user_services_proto_init() } +func file_lorawan_stack_api_user_services_proto_init() { + if File_lorawan_stack_api_user_services_proto != nil { + return + } + file_lorawan_stack_api_identifiers_proto_init() + file_lorawan_stack_api_rights_proto_init() + file_lorawan_stack_api_user_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_user_services_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 4, }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "lorawan-stack/api/user_services.proto", + GoTypes: file_lorawan_stack_api_user_services_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_user_services_proto_depIdxs, + }.Build() + File_lorawan_stack_api_user_services_proto = out.File + file_lorawan_stack_api_user_services_proto_rawDesc = nil + file_lorawan_stack_api_user_services_proto_goTypes = nil + file_lorawan_stack_api_user_services_proto_depIdxs = nil } diff --git a/pkg/ttnpb/user_services.pb.gw.go b/pkg/ttnpb/user_services.pb.gw.go index 80afc205e7..6b2431501c 100644 --- a/pkg/ttnpb/user_services.pb.gw.go +++ b/pkg/ttnpb/user_services.pb.gw.go @@ -13,15 +13,14 @@ import ( "io" "net/http" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // Suppress "imported and not used" errors @@ -30,7 +29,6 @@ var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage var _ = metadata.Join func request_UserRegistry_Create_0(ctx context.Context, marshaler runtime.Marshaler, client UserRegistryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -88,7 +86,6 @@ func request_UserRegistry_Get_0(ctx context.Context, marshaler runtime.Marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -122,7 +119,6 @@ func local_request_UserRegistry_Get_0(ctx context.Context, marshaler runtime.Mar } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -200,7 +196,6 @@ func request_UserRegistry_Update_0(ctx context.Context, marshaler runtime.Marsha } err = runtime.PopulateFieldFromPath(&protoReq, "user.ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user.ids.user_id", err) } @@ -235,7 +230,6 @@ func local_request_UserRegistry_Update_0(ctx context.Context, marshaler runtime. } err = runtime.PopulateFieldFromPath(&protoReq, "user.ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user.ids.user_id", err) } @@ -266,7 +260,6 @@ func request_UserRegistry_CreateTemporaryPassword_0(ctx context.Context, marshal } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -300,7 +293,6 @@ func local_request_UserRegistry_CreateTemporaryPassword_0(ctx context.Context, m } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -342,7 +334,6 @@ func request_UserRegistry_UpdatePassword_0(ctx context.Context, marshaler runtim } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -377,7 +368,6 @@ func local_request_UserRegistry_UpdatePassword_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -408,7 +398,6 @@ func request_UserRegistry_Delete_0(ctx context.Context, marshaler runtime.Marsha } protoReq.UserId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_id", err) } @@ -442,7 +431,6 @@ func local_request_UserRegistry_Delete_0(ctx context.Context, marshaler runtime. } protoReq.UserId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_id", err) } @@ -480,7 +468,6 @@ func request_UserRegistry_Restore_0(ctx context.Context, marshaler runtime.Marsh } protoReq.UserId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_id", err) } @@ -514,7 +501,6 @@ func local_request_UserRegistry_Restore_0(ctx context.Context, marshaler runtime } protoReq.UserId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_id", err) } @@ -552,7 +538,6 @@ func request_UserRegistry_Purge_0(ctx context.Context, marshaler runtime.Marshal } protoReq.UserId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_id", err) } @@ -586,7 +571,6 @@ func local_request_UserRegistry_Purge_0(ctx context.Context, marshaler runtime.M } protoReq.UserId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_id", err) } @@ -624,7 +608,6 @@ func request_UserAccess_ListRights_0(ctx context.Context, marshaler runtime.Mars } protoReq.UserId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_id", err) } @@ -658,7 +641,6 @@ func local_request_UserAccess_ListRights_0(ctx context.Context, marshaler runtim } protoReq.UserId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_id", err) } @@ -700,7 +682,6 @@ func request_UserAccess_CreateAPIKey_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -735,7 +716,6 @@ func local_request_UserAccess_CreateAPIKey_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -766,7 +746,6 @@ func request_UserAccess_ListAPIKeys_0(ctx context.Context, marshaler runtime.Mar } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -800,7 +779,6 @@ func local_request_UserAccess_ListAPIKeys_0(ctx context.Context, marshaler runti } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -838,7 +816,6 @@ func request_UserAccess_GetAPIKey_0(ctx context.Context, marshaler runtime.Marsh } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -849,7 +826,6 @@ func request_UserAccess_GetAPIKey_0(ctx context.Context, marshaler runtime.Marsh } protoReq.KeyId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "key_id", err) } @@ -883,7 +859,6 @@ func local_request_UserAccess_GetAPIKey_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -894,7 +869,6 @@ func local_request_UserAccess_GetAPIKey_0(ctx context.Context, marshaler runtime } protoReq.KeyId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "key_id", err) } @@ -936,7 +910,6 @@ func request_UserAccess_UpdateAPIKey_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -947,7 +920,6 @@ func request_UserAccess_UpdateAPIKey_0(ctx context.Context, marshaler runtime.Ma } err = runtime.PopulateFieldFromPath(&protoReq, "api_key.id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "api_key.id", err) } @@ -982,7 +954,6 @@ func local_request_UserAccess_UpdateAPIKey_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -993,7 +964,6 @@ func local_request_UserAccess_UpdateAPIKey_0(ctx context.Context, marshaler runt } err = runtime.PopulateFieldFromPath(&protoReq, "api_key.id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "api_key.id", err) } @@ -1024,7 +994,6 @@ func request_UserAccess_CreateLoginToken_0(ctx context.Context, marshaler runtim } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -1058,7 +1027,6 @@ func local_request_UserAccess_CreateLoginToken_0(ctx context.Context, marshaler } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -1202,7 +1170,6 @@ func request_UserSessionRegistry_List_0(ctx context.Context, marshaler runtime.M } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -1236,7 +1203,6 @@ func local_request_UserSessionRegistry_List_0(ctx context.Context, marshaler run } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -1274,7 +1240,6 @@ func request_UserSessionRegistry_Delete_0(ctx context.Context, marshaler runtime } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -1285,7 +1250,6 @@ func request_UserSessionRegistry_Delete_0(ctx context.Context, marshaler runtime } protoReq.SessionId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "session_id", err) } @@ -1319,7 +1283,6 @@ func local_request_UserSessionRegistry_Delete_0(ctx context.Context, marshaler r } err = runtime.PopulateFieldFromPath(&protoReq, "user_ids.user_id", val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_ids.user_id", err) } @@ -1330,7 +1293,6 @@ func local_request_UserSessionRegistry_Delete_0(ctx context.Context, marshaler r } protoReq.SessionId, err = runtime.String(val) - if err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "session_id", err) } @@ -1359,20 +1321,22 @@ func RegisterUserRegistryHandlerServer(ctx context.Context, mux *runtime.ServeMu var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/Create", runtime.WithHTTPPathPattern("/users")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserRegistry_Create_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserRegistry_Create_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_Create_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1382,20 +1346,22 @@ func RegisterUserRegistryHandlerServer(ctx context.Context, mux *runtime.ServeMu var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/Get", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserRegistry_Get_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserRegistry_Get_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1405,20 +1371,22 @@ func RegisterUserRegistryHandlerServer(ctx context.Context, mux *runtime.ServeMu var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/List", runtime.WithHTTPPathPattern("/users")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserRegistry_List_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserRegistry_List_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1428,20 +1396,22 @@ func RegisterUserRegistryHandlerServer(ctx context.Context, mux *runtime.ServeMu var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/Update", runtime.WithHTTPPathPattern("/users/{user.ids.user_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserRegistry_Update_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserRegistry_Update_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_Update_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1451,20 +1421,22 @@ func RegisterUserRegistryHandlerServer(ctx context.Context, mux *runtime.ServeMu var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/CreateTemporaryPassword", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/temporary_password")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserRegistry_CreateTemporaryPassword_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserRegistry_CreateTemporaryPassword_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_CreateTemporaryPassword_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_CreateTemporaryPassword_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1474,20 +1446,22 @@ func RegisterUserRegistryHandlerServer(ctx context.Context, mux *runtime.ServeMu var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/UpdatePassword", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/password")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserRegistry_UpdatePassword_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserRegistry_UpdatePassword_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_UpdatePassword_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_UpdatePassword_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1497,20 +1471,22 @@ func RegisterUserRegistryHandlerServer(ctx context.Context, mux *runtime.ServeMu var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/Delete", runtime.WithHTTPPathPattern("/users/{user_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserRegistry_Delete_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserRegistry_Delete_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1520,20 +1496,22 @@ func RegisterUserRegistryHandlerServer(ctx context.Context, mux *runtime.ServeMu var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/Restore", runtime.WithHTTPPathPattern("/users/{user_id}/restore")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserRegistry_Restore_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserRegistry_Restore_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_Restore_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_Restore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1543,20 +1521,22 @@ func RegisterUserRegistryHandlerServer(ctx context.Context, mux *runtime.ServeMu var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/Purge", runtime.WithHTTPPathPattern("/users/{user_id}/purge")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserRegistry_Purge_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserRegistry_Purge_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_Purge_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_Purge_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1575,20 +1555,22 @@ func RegisterUserAccessHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserAccess/ListRights", runtime.WithHTTPPathPattern("/users/{user_id}/rights")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserAccess_ListRights_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserAccess_ListRights_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserAccess_ListRights_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserAccess_ListRights_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1598,20 +1580,22 @@ func RegisterUserAccessHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserAccess/CreateAPIKey", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/api-keys")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserAccess_CreateAPIKey_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserAccess_CreateAPIKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserAccess_CreateAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserAccess_CreateAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1621,20 +1605,22 @@ func RegisterUserAccessHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserAccess/ListAPIKeys", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/api-keys")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserAccess_ListAPIKeys_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserAccess_ListAPIKeys_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserAccess_ListAPIKeys_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserAccess_ListAPIKeys_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1644,20 +1630,22 @@ func RegisterUserAccessHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserAccess/GetAPIKey", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/api-keys/{key_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserAccess_GetAPIKey_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserAccess_GetAPIKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserAccess_GetAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserAccess_GetAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1667,20 +1655,22 @@ func RegisterUserAccessHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserAccess/UpdateAPIKey", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/api-keys/{api_key.id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserAccess_UpdateAPIKey_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserAccess_UpdateAPIKey_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserAccess_UpdateAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserAccess_UpdateAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1690,20 +1680,22 @@ func RegisterUserAccessHandlerServer(ctx context.Context, mux *runtime.ServeMux, var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserAccess/CreateLoginToken", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/login-tokens")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserAccess_CreateLoginToken_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserAccess_CreateLoginToken_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserAccess_CreateLoginToken_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserAccess_CreateLoginToken_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1722,20 +1714,22 @@ func RegisterUserInvitationRegistryHandlerServer(ctx context.Context, mux *runti var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserInvitationRegistry/Send", runtime.WithHTTPPathPattern("/invitations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserInvitationRegistry_Send_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserInvitationRegistry_Send_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserInvitationRegistry_Send_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserInvitationRegistry_Send_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1745,20 +1739,22 @@ func RegisterUserInvitationRegistryHandlerServer(ctx context.Context, mux *runti var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserInvitationRegistry/List", runtime.WithHTTPPathPattern("/invitations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserInvitationRegistry_List_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserInvitationRegistry_List_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserInvitationRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserInvitationRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1768,20 +1764,22 @@ func RegisterUserInvitationRegistryHandlerServer(ctx context.Context, mux *runti var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserInvitationRegistry/Delete", runtime.WithHTTPPathPattern("/invitations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserInvitationRegistry_Delete_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserInvitationRegistry_Delete_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserInvitationRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserInvitationRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1800,20 +1798,22 @@ func RegisterUserSessionRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserSessionRegistry/List", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/sessions")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserSessionRegistry_List_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserSessionRegistry_List_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserSessionRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserSessionRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1823,20 +1823,22 @@ func RegisterUserSessionRegistryHandlerServer(ctx context.Context, mux *runtime. var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/ttn.lorawan.v3.UserSessionRegistry/Delete", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/sessions/{session_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_UserSessionRegistry_Delete_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_UserSessionRegistry_Delete_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserSessionRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserSessionRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1885,19 +1887,21 @@ func RegisterUserRegistryHandlerClient(ctx context.Context, mux *runtime.ServeMu ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/Create", runtime.WithHTTPPathPattern("/users")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserRegistry_Create_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserRegistry_Create_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_Create_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1905,19 +1909,21 @@ func RegisterUserRegistryHandlerClient(ctx context.Context, mux *runtime.ServeMu ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/Get", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserRegistry_Get_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserRegistry_Get_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_Get_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_Get_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1925,19 +1931,21 @@ func RegisterUserRegistryHandlerClient(ctx context.Context, mux *runtime.ServeMu ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/List", runtime.WithHTTPPathPattern("/users")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserRegistry_List_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserRegistry_List_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1945,19 +1953,21 @@ func RegisterUserRegistryHandlerClient(ctx context.Context, mux *runtime.ServeMu ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/Update", runtime.WithHTTPPathPattern("/users/{user.ids.user_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserRegistry_Update_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserRegistry_Update_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_Update_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1965,19 +1975,21 @@ func RegisterUserRegistryHandlerClient(ctx context.Context, mux *runtime.ServeMu ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/CreateTemporaryPassword", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/temporary_password")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserRegistry_CreateTemporaryPassword_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserRegistry_CreateTemporaryPassword_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_CreateTemporaryPassword_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_CreateTemporaryPassword_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1985,19 +1997,21 @@ func RegisterUserRegistryHandlerClient(ctx context.Context, mux *runtime.ServeMu ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/UpdatePassword", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/password")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserRegistry_UpdatePassword_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserRegistry_UpdatePassword_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_UpdatePassword_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_UpdatePassword_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2005,19 +2019,21 @@ func RegisterUserRegistryHandlerClient(ctx context.Context, mux *runtime.ServeMu ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/Delete", runtime.WithHTTPPathPattern("/users/{user_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserRegistry_Delete_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserRegistry_Delete_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2025,19 +2041,21 @@ func RegisterUserRegistryHandlerClient(ctx context.Context, mux *runtime.ServeMu ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/Restore", runtime.WithHTTPPathPattern("/users/{user_id}/restore")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserRegistry_Restore_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserRegistry_Restore_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_Restore_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_Restore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2045,19 +2063,21 @@ func RegisterUserRegistryHandlerClient(ctx context.Context, mux *runtime.ServeMu ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserRegistry/Purge", runtime.WithHTTPPathPattern("/users/{user_id}/purge")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserRegistry_Purge_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserRegistry_Purge_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserRegistry_Purge_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserRegistry_Purge_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2065,23 +2085,23 @@ func RegisterUserRegistryHandlerClient(ctx context.Context, mux *runtime.ServeMu } var ( - pattern_UserRegistry_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"users"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserRegistry_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"users"}, "")) - pattern_UserRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"users", "user_ids.user_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserRegistry_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"users", "user_ids.user_id"}, "")) - pattern_UserRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"users"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"users"}, "")) - pattern_UserRegistry_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"users", "user.ids.user_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserRegistry_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"users", "user.ids.user_id"}, "")) - pattern_UserRegistry_CreateTemporaryPassword_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_ids.user_id", "temporary_password"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserRegistry_CreateTemporaryPassword_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_ids.user_id", "temporary_password"}, "")) - pattern_UserRegistry_UpdatePassword_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_ids.user_id", "password"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserRegistry_UpdatePassword_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_ids.user_id", "password"}, "")) - pattern_UserRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"users", "user_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"users", "user_id"}, "")) - pattern_UserRegistry_Restore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_id", "restore"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserRegistry_Restore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_id", "restore"}, "")) - pattern_UserRegistry_Purge_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_id", "purge"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserRegistry_Purge_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_id", "purge"}, "")) ) var ( @@ -2146,19 +2166,21 @@ func RegisterUserAccessHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserAccess/ListRights", runtime.WithHTTPPathPattern("/users/{user_id}/rights")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserAccess_ListRights_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserAccess_ListRights_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserAccess_ListRights_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserAccess_ListRights_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2166,19 +2188,21 @@ func RegisterUserAccessHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserAccess/CreateAPIKey", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/api-keys")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserAccess_CreateAPIKey_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserAccess_CreateAPIKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserAccess_CreateAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserAccess_CreateAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2186,19 +2210,21 @@ func RegisterUserAccessHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserAccess/ListAPIKeys", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/api-keys")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserAccess_ListAPIKeys_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserAccess_ListAPIKeys_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserAccess_ListAPIKeys_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserAccess_ListAPIKeys_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2206,19 +2232,21 @@ func RegisterUserAccessHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserAccess/GetAPIKey", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/api-keys/{key_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserAccess_GetAPIKey_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserAccess_GetAPIKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserAccess_GetAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserAccess_GetAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2226,19 +2254,21 @@ func RegisterUserAccessHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserAccess/UpdateAPIKey", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/api-keys/{api_key.id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserAccess_UpdateAPIKey_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserAccess_UpdateAPIKey_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserAccess_UpdateAPIKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserAccess_UpdateAPIKey_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2246,19 +2276,21 @@ func RegisterUserAccessHandlerClient(ctx context.Context, mux *runtime.ServeMux, ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserAccess/CreateLoginToken", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/login-tokens")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserAccess_CreateLoginToken_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserAccess_CreateLoginToken_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserAccess_CreateLoginToken_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserAccess_CreateLoginToken_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2266,17 +2298,17 @@ func RegisterUserAccessHandlerClient(ctx context.Context, mux *runtime.ServeMux, } var ( - pattern_UserAccess_ListRights_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_id", "rights"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserAccess_ListRights_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_id", "rights"}, "")) - pattern_UserAccess_CreateAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_ids.user_id", "api-keys"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserAccess_CreateAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_ids.user_id", "api-keys"}, "")) - pattern_UserAccess_ListAPIKeys_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_ids.user_id", "api-keys"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserAccess_ListAPIKeys_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_ids.user_id", "api-keys"}, "")) - pattern_UserAccess_GetAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"users", "user_ids.user_id", "api-keys", "key_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserAccess_GetAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"users", "user_ids.user_id", "api-keys", "key_id"}, "")) - pattern_UserAccess_UpdateAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"users", "user_ids.user_id", "api-keys", "api_key.id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserAccess_UpdateAPIKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"users", "user_ids.user_id", "api-keys", "api_key.id"}, "")) - pattern_UserAccess_CreateLoginToken_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_ids.user_id", "login-tokens"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserAccess_CreateLoginToken_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_ids.user_id", "login-tokens"}, "")) ) var ( @@ -2335,19 +2367,21 @@ func RegisterUserInvitationRegistryHandlerClient(ctx context.Context, mux *runti ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserInvitationRegistry/Send", runtime.WithHTTPPathPattern("/invitations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserInvitationRegistry_Send_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserInvitationRegistry_Send_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserInvitationRegistry_Send_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserInvitationRegistry_Send_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2355,19 +2389,21 @@ func RegisterUserInvitationRegistryHandlerClient(ctx context.Context, mux *runti ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserInvitationRegistry/List", runtime.WithHTTPPathPattern("/invitations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserInvitationRegistry_List_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserInvitationRegistry_List_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserInvitationRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserInvitationRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2375,19 +2411,21 @@ func RegisterUserInvitationRegistryHandlerClient(ctx context.Context, mux *runti ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserInvitationRegistry/Delete", runtime.WithHTTPPathPattern("/invitations")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserInvitationRegistry_Delete_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserInvitationRegistry_Delete_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserInvitationRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserInvitationRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2395,11 +2433,11 @@ func RegisterUserInvitationRegistryHandlerClient(ctx context.Context, mux *runti } var ( - pattern_UserInvitationRegistry_Send_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"invitations"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserInvitationRegistry_Send_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"invitations"}, "")) - pattern_UserInvitationRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"invitations"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserInvitationRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"invitations"}, "")) - pattern_UserInvitationRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"invitations"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserInvitationRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"invitations"}, "")) ) var ( @@ -2452,19 +2490,21 @@ func RegisterUserSessionRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserSessionRegistry/List", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/sessions")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserSessionRegistry_List_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserSessionRegistry_List_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserSessionRegistry_List_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserSessionRegistry_List_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2472,19 +2512,21 @@ func RegisterUserSessionRegistryHandlerClient(ctx context.Context, mux *runtime. ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/ttn.lorawan.v3.UserSessionRegistry/Delete", runtime.WithHTTPPathPattern("/users/{user_ids.user_id}/sessions/{session_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_UserSessionRegistry_Delete_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_UserSessionRegistry_Delete_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_UserSessionRegistry_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_UserSessionRegistry_Delete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2492,9 +2534,9 @@ func RegisterUserSessionRegistryHandlerClient(ctx context.Context, mux *runtime. } var ( - pattern_UserSessionRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_ids.user_id", "sessions"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserSessionRegistry_List_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"users", "user_ids.user_id", "sessions"}, "")) - pattern_UserSessionRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"users", "user_ids.user_id", "sessions", "session_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_UserSessionRegistry_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"users", "user_ids.user_id", "sessions", "session_id"}, "")) ) var ( diff --git a/pkg/ttnpb/user_services.pb.validate.go b/pkg/ttnpb/user_services.pb.validate.go index d36b767d63..90a1820015 100644 --- a/pkg/ttnpb/user_services.pb.validate.go +++ b/pkg/ttnpb/user_services.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,8 +29,5 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) - -// define the regex for a UUID once up-front -var _user_services_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") diff --git a/pkg/ttnpb/user_services_grpc.pb.go b/pkg/ttnpb/user_services_grpc.pb.go new file mode 100644 index 0000000000..66da747882 --- /dev/null +++ b/pkg/ttnpb/user_services_grpc.pb.go @@ -0,0 +1,1007 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.5 +// source: lorawan-stack/api/user_services.proto + +package ttnpb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// UserRegistryClient is the client API for UserRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type UserRegistryClient interface { + // Register a new user. This method may be restricted by network settings. + Create(ctx context.Context, in *CreateUserRequest, opts ...grpc.CallOption) (*User, error) + // Get the user with the given identifiers, selecting the fields given by the + // field mask. The method may return more or less fields, depending on the rights + // of the caller. + Get(ctx context.Context, in *GetUserRequest, opts ...grpc.CallOption) (*User, error) + // List users of the network. This method is typically restricted to admins only. + List(ctx context.Context, in *ListUsersRequest, opts ...grpc.CallOption) (*Users, error) + // Update the user, changing the fields specified by the field mask to the provided values. + // This method can not be used to change the password, see the UpdatePassword method for that. + Update(ctx context.Context, in *UpdateUserRequest, opts ...grpc.CallOption) (*User, error) + // Create a temporary password that can be used for updating a forgotten password. + // The generated password is sent to the user's email address. + CreateTemporaryPassword(ctx context.Context, in *CreateTemporaryPasswordRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Update the password of the user. + UpdatePassword(ctx context.Context, in *UpdateUserPasswordRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Delete the user. This may not release the user ID for reuse. + Delete(ctx context.Context, in *UserIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Restore a recently deleted user. + // + // Deployment configuration may specify if, and for how long after deletion, + // entities can be restored. + Restore(ctx context.Context, in *UserIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Purge the user. This will release the user ID for reuse. + // The user is responsible for clearing data from any (external) integrations + // that may store and expose data by user or organization ID. + Purge(ctx context.Context, in *UserIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type userRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewUserRegistryClient(cc grpc.ClientConnInterface) UserRegistryClient { + return &userRegistryClient{cc} +} + +func (c *userRegistryClient) Create(ctx context.Context, in *CreateUserRequest, opts ...grpc.CallOption) (*User, error) { + out := new(User) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/Create", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userRegistryClient) Get(ctx context.Context, in *GetUserRequest, opts ...grpc.CallOption) (*User, error) { + out := new(User) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/Get", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userRegistryClient) List(ctx context.Context, in *ListUsersRequest, opts ...grpc.CallOption) (*Users, error) { + out := new(Users) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/List", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userRegistryClient) Update(ctx context.Context, in *UpdateUserRequest, opts ...grpc.CallOption) (*User, error) { + out := new(User) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/Update", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userRegistryClient) CreateTemporaryPassword(ctx context.Context, in *CreateTemporaryPasswordRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/CreateTemporaryPassword", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userRegistryClient) UpdatePassword(ctx context.Context, in *UpdateUserPasswordRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/UpdatePassword", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userRegistryClient) Delete(ctx context.Context, in *UserIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/Delete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userRegistryClient) Restore(ctx context.Context, in *UserIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/Restore", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userRegistryClient) Purge(ctx context.Context, in *UserIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserRegistry/Purge", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// UserRegistryServer is the server API for UserRegistry service. +// All implementations must embed UnimplementedUserRegistryServer +// for forward compatibility +type UserRegistryServer interface { + // Register a new user. This method may be restricted by network settings. + Create(context.Context, *CreateUserRequest) (*User, error) + // Get the user with the given identifiers, selecting the fields given by the + // field mask. The method may return more or less fields, depending on the rights + // of the caller. + Get(context.Context, *GetUserRequest) (*User, error) + // List users of the network. This method is typically restricted to admins only. + List(context.Context, *ListUsersRequest) (*Users, error) + // Update the user, changing the fields specified by the field mask to the provided values. + // This method can not be used to change the password, see the UpdatePassword method for that. + Update(context.Context, *UpdateUserRequest) (*User, error) + // Create a temporary password that can be used for updating a forgotten password. + // The generated password is sent to the user's email address. + CreateTemporaryPassword(context.Context, *CreateTemporaryPasswordRequest) (*emptypb.Empty, error) + // Update the password of the user. + UpdatePassword(context.Context, *UpdateUserPasswordRequest) (*emptypb.Empty, error) + // Delete the user. This may not release the user ID for reuse. + Delete(context.Context, *UserIdentifiers) (*emptypb.Empty, error) + // Restore a recently deleted user. + // + // Deployment configuration may specify if, and for how long after deletion, + // entities can be restored. + Restore(context.Context, *UserIdentifiers) (*emptypb.Empty, error) + // Purge the user. This will release the user ID for reuse. + // The user is responsible for clearing data from any (external) integrations + // that may store and expose data by user or organization ID. + Purge(context.Context, *UserIdentifiers) (*emptypb.Empty, error) + mustEmbedUnimplementedUserRegistryServer() +} + +// UnimplementedUserRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedUserRegistryServer struct { +} + +func (UnimplementedUserRegistryServer) Create(context.Context, *CreateUserRequest) (*User, error) { + return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") +} +func (UnimplementedUserRegistryServer) Get(context.Context, *GetUserRequest) (*User, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (UnimplementedUserRegistryServer) List(context.Context, *ListUsersRequest) (*Users, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedUserRegistryServer) Update(context.Context, *UpdateUserRequest) (*User, error) { + return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") +} +func (UnimplementedUserRegistryServer) CreateTemporaryPassword(context.Context, *CreateTemporaryPasswordRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateTemporaryPassword not implemented") +} +func (UnimplementedUserRegistryServer) UpdatePassword(context.Context, *UpdateUserPasswordRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdatePassword not implemented") +} +func (UnimplementedUserRegistryServer) Delete(context.Context, *UserIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedUserRegistryServer) Restore(context.Context, *UserIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Restore not implemented") +} +func (UnimplementedUserRegistryServer) Purge(context.Context, *UserIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Purge not implemented") +} +func (UnimplementedUserRegistryServer) mustEmbedUnimplementedUserRegistryServer() {} + +// UnsafeUserRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to UserRegistryServer will +// result in compilation errors. +type UnsafeUserRegistryServer interface { + mustEmbedUnimplementedUserRegistryServer() +} + +func RegisterUserRegistryServer(s grpc.ServiceRegistrar, srv UserRegistryServer) { + s.RegisterService(&UserRegistry_ServiceDesc, srv) +} + +func _UserRegistry_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateUserRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserRegistryServer).Create(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserRegistry/Create", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserRegistryServer).Create(ctx, req.(*CreateUserRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserRegistry_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserRegistryServer).Get(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserRegistry/Get", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserRegistryServer).Get(ctx, req.(*GetUserRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListUsersRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserRegistryServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserRegistry/List", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserRegistryServer).List(ctx, req.(*ListUsersRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserRegistry_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateUserRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserRegistryServer).Update(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserRegistry/Update", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserRegistryServer).Update(ctx, req.(*UpdateUserRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserRegistry_CreateTemporaryPassword_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateTemporaryPasswordRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserRegistryServer).CreateTemporaryPassword(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserRegistry/CreateTemporaryPassword", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserRegistryServer).CreateTemporaryPassword(ctx, req.(*CreateTemporaryPasswordRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserRegistry_UpdatePassword_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateUserPasswordRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserRegistryServer).UpdatePassword(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserRegistry/UpdatePassword", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserRegistryServer).UpdatePassword(ctx, req.(*UpdateUserPasswordRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UserIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserRegistryServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserRegistry/Delete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserRegistryServer).Delete(ctx, req.(*UserIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserRegistry_Restore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UserIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserRegistryServer).Restore(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserRegistry/Restore", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserRegistryServer).Restore(ctx, req.(*UserIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserRegistry_Purge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UserIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserRegistryServer).Purge(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserRegistry/Purge", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserRegistryServer).Purge(ctx, req.(*UserIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// UserRegistry_ServiceDesc is the grpc.ServiceDesc for UserRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var UserRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.UserRegistry", + HandlerType: (*UserRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Create", + Handler: _UserRegistry_Create_Handler, + }, + { + MethodName: "Get", + Handler: _UserRegistry_Get_Handler, + }, + { + MethodName: "List", + Handler: _UserRegistry_List_Handler, + }, + { + MethodName: "Update", + Handler: _UserRegistry_Update_Handler, + }, + { + MethodName: "CreateTemporaryPassword", + Handler: _UserRegistry_CreateTemporaryPassword_Handler, + }, + { + MethodName: "UpdatePassword", + Handler: _UserRegistry_UpdatePassword_Handler, + }, + { + MethodName: "Delete", + Handler: _UserRegistry_Delete_Handler, + }, + { + MethodName: "Restore", + Handler: _UserRegistry_Restore_Handler, + }, + { + MethodName: "Purge", + Handler: _UserRegistry_Purge_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/user_services.proto", +} + +// UserAccessClient is the client API for UserAccess service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type UserAccessClient interface { + // List the rights the caller has on this user. + ListRights(ctx context.Context, in *UserIdentifiers, opts ...grpc.CallOption) (*Rights, error) + // Create an API key scoped to this user. + // User API keys can give access to the user itself, as well as + // any organization, application, gateway and OAuth client this user is a collaborator of. + CreateAPIKey(ctx context.Context, in *CreateUserAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) + // List the API keys for this user. + ListAPIKeys(ctx context.Context, in *ListUserAPIKeysRequest, opts ...grpc.CallOption) (*APIKeys, error) + // Get a single API key of this user. + GetAPIKey(ctx context.Context, in *GetUserAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) + // Update the rights of an API key of the user. + // This method can also be used to delete the API key, by giving it no rights. + // The caller is required to have all assigned or/and removed rights. + UpdateAPIKey(ctx context.Context, in *UpdateUserAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) + // Create a login token that can be used for a one-time login as a user. + CreateLoginToken(ctx context.Context, in *CreateLoginTokenRequest, opts ...grpc.CallOption) (*CreateLoginTokenResponse, error) +} + +type userAccessClient struct { + cc grpc.ClientConnInterface +} + +func NewUserAccessClient(cc grpc.ClientConnInterface) UserAccessClient { + return &userAccessClient{cc} +} + +func (c *userAccessClient) ListRights(ctx context.Context, in *UserIdentifiers, opts ...grpc.CallOption) (*Rights, error) { + out := new(Rights) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserAccess/ListRights", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userAccessClient) CreateAPIKey(ctx context.Context, in *CreateUserAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { + out := new(APIKey) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserAccess/CreateAPIKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userAccessClient) ListAPIKeys(ctx context.Context, in *ListUserAPIKeysRequest, opts ...grpc.CallOption) (*APIKeys, error) { + out := new(APIKeys) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserAccess/ListAPIKeys", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userAccessClient) GetAPIKey(ctx context.Context, in *GetUserAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { + out := new(APIKey) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserAccess/GetAPIKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userAccessClient) UpdateAPIKey(ctx context.Context, in *UpdateUserAPIKeyRequest, opts ...grpc.CallOption) (*APIKey, error) { + out := new(APIKey) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserAccess/UpdateAPIKey", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userAccessClient) CreateLoginToken(ctx context.Context, in *CreateLoginTokenRequest, opts ...grpc.CallOption) (*CreateLoginTokenResponse, error) { + out := new(CreateLoginTokenResponse) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserAccess/CreateLoginToken", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// UserAccessServer is the server API for UserAccess service. +// All implementations must embed UnimplementedUserAccessServer +// for forward compatibility +type UserAccessServer interface { + // List the rights the caller has on this user. + ListRights(context.Context, *UserIdentifiers) (*Rights, error) + // Create an API key scoped to this user. + // User API keys can give access to the user itself, as well as + // any organization, application, gateway and OAuth client this user is a collaborator of. + CreateAPIKey(context.Context, *CreateUserAPIKeyRequest) (*APIKey, error) + // List the API keys for this user. + ListAPIKeys(context.Context, *ListUserAPIKeysRequest) (*APIKeys, error) + // Get a single API key of this user. + GetAPIKey(context.Context, *GetUserAPIKeyRequest) (*APIKey, error) + // Update the rights of an API key of the user. + // This method can also be used to delete the API key, by giving it no rights. + // The caller is required to have all assigned or/and removed rights. + UpdateAPIKey(context.Context, *UpdateUserAPIKeyRequest) (*APIKey, error) + // Create a login token that can be used for a one-time login as a user. + CreateLoginToken(context.Context, *CreateLoginTokenRequest) (*CreateLoginTokenResponse, error) + mustEmbedUnimplementedUserAccessServer() +} + +// UnimplementedUserAccessServer must be embedded to have forward compatible implementations. +type UnimplementedUserAccessServer struct { +} + +func (UnimplementedUserAccessServer) ListRights(context.Context, *UserIdentifiers) (*Rights, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListRights not implemented") +} +func (UnimplementedUserAccessServer) CreateAPIKey(context.Context, *CreateUserAPIKeyRequest) (*APIKey, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateAPIKey not implemented") +} +func (UnimplementedUserAccessServer) ListAPIKeys(context.Context, *ListUserAPIKeysRequest) (*APIKeys, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListAPIKeys not implemented") +} +func (UnimplementedUserAccessServer) GetAPIKey(context.Context, *GetUserAPIKeyRequest) (*APIKey, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAPIKey not implemented") +} +func (UnimplementedUserAccessServer) UpdateAPIKey(context.Context, *UpdateUserAPIKeyRequest) (*APIKey, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateAPIKey not implemented") +} +func (UnimplementedUserAccessServer) CreateLoginToken(context.Context, *CreateLoginTokenRequest) (*CreateLoginTokenResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateLoginToken not implemented") +} +func (UnimplementedUserAccessServer) mustEmbedUnimplementedUserAccessServer() {} + +// UnsafeUserAccessServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to UserAccessServer will +// result in compilation errors. +type UnsafeUserAccessServer interface { + mustEmbedUnimplementedUserAccessServer() +} + +func RegisterUserAccessServer(s grpc.ServiceRegistrar, srv UserAccessServer) { + s.RegisterService(&UserAccess_ServiceDesc, srv) +} + +func _UserAccess_ListRights_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UserIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserAccessServer).ListRights(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserAccess/ListRights", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserAccessServer).ListRights(ctx, req.(*UserIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserAccess_CreateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateUserAPIKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserAccessServer).CreateAPIKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserAccess/CreateAPIKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserAccessServer).CreateAPIKey(ctx, req.(*CreateUserAPIKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserAccess_ListAPIKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListUserAPIKeysRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserAccessServer).ListAPIKeys(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserAccess/ListAPIKeys", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserAccessServer).ListAPIKeys(ctx, req.(*ListUserAPIKeysRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserAccess_GetAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserAPIKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserAccessServer).GetAPIKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserAccess/GetAPIKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserAccessServer).GetAPIKey(ctx, req.(*GetUserAPIKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserAccess_UpdateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateUserAPIKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserAccessServer).UpdateAPIKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserAccess/UpdateAPIKey", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserAccessServer).UpdateAPIKey(ctx, req.(*UpdateUserAPIKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserAccess_CreateLoginToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateLoginTokenRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserAccessServer).CreateLoginToken(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserAccess/CreateLoginToken", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserAccessServer).CreateLoginToken(ctx, req.(*CreateLoginTokenRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// UserAccess_ServiceDesc is the grpc.ServiceDesc for UserAccess service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var UserAccess_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.UserAccess", + HandlerType: (*UserAccessServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListRights", + Handler: _UserAccess_ListRights_Handler, + }, + { + MethodName: "CreateAPIKey", + Handler: _UserAccess_CreateAPIKey_Handler, + }, + { + MethodName: "ListAPIKeys", + Handler: _UserAccess_ListAPIKeys_Handler, + }, + { + MethodName: "GetAPIKey", + Handler: _UserAccess_GetAPIKey_Handler, + }, + { + MethodName: "UpdateAPIKey", + Handler: _UserAccess_UpdateAPIKey_Handler, + }, + { + MethodName: "CreateLoginToken", + Handler: _UserAccess_CreateLoginToken_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/user_services.proto", +} + +// UserInvitationRegistryClient is the client API for UserInvitationRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type UserInvitationRegistryClient interface { + // Invite a user to join the network. + Send(ctx context.Context, in *SendInvitationRequest, opts ...grpc.CallOption) (*Invitation, error) + // List the invitations the caller has sent. + List(ctx context.Context, in *ListInvitationsRequest, opts ...grpc.CallOption) (*Invitations, error) + // Delete (revoke) a user invitation. + Delete(ctx context.Context, in *DeleteInvitationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type userInvitationRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewUserInvitationRegistryClient(cc grpc.ClientConnInterface) UserInvitationRegistryClient { + return &userInvitationRegistryClient{cc} +} + +func (c *userInvitationRegistryClient) Send(ctx context.Context, in *SendInvitationRequest, opts ...grpc.CallOption) (*Invitation, error) { + out := new(Invitation) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserInvitationRegistry/Send", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userInvitationRegistryClient) List(ctx context.Context, in *ListInvitationsRequest, opts ...grpc.CallOption) (*Invitations, error) { + out := new(Invitations) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserInvitationRegistry/List", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userInvitationRegistryClient) Delete(ctx context.Context, in *DeleteInvitationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserInvitationRegistry/Delete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// UserInvitationRegistryServer is the server API for UserInvitationRegistry service. +// All implementations must embed UnimplementedUserInvitationRegistryServer +// for forward compatibility +type UserInvitationRegistryServer interface { + // Invite a user to join the network. + Send(context.Context, *SendInvitationRequest) (*Invitation, error) + // List the invitations the caller has sent. + List(context.Context, *ListInvitationsRequest) (*Invitations, error) + // Delete (revoke) a user invitation. + Delete(context.Context, *DeleteInvitationRequest) (*emptypb.Empty, error) + mustEmbedUnimplementedUserInvitationRegistryServer() +} + +// UnimplementedUserInvitationRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedUserInvitationRegistryServer struct { +} + +func (UnimplementedUserInvitationRegistryServer) Send(context.Context, *SendInvitationRequest) (*Invitation, error) { + return nil, status.Errorf(codes.Unimplemented, "method Send not implemented") +} +func (UnimplementedUserInvitationRegistryServer) List(context.Context, *ListInvitationsRequest) (*Invitations, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedUserInvitationRegistryServer) Delete(context.Context, *DeleteInvitationRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedUserInvitationRegistryServer) mustEmbedUnimplementedUserInvitationRegistryServer() { +} + +// UnsafeUserInvitationRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to UserInvitationRegistryServer will +// result in compilation errors. +type UnsafeUserInvitationRegistryServer interface { + mustEmbedUnimplementedUserInvitationRegistryServer() +} + +func RegisterUserInvitationRegistryServer(s grpc.ServiceRegistrar, srv UserInvitationRegistryServer) { + s.RegisterService(&UserInvitationRegistry_ServiceDesc, srv) +} + +func _UserInvitationRegistry_Send_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SendInvitationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserInvitationRegistryServer).Send(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserInvitationRegistry/Send", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserInvitationRegistryServer).Send(ctx, req.(*SendInvitationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserInvitationRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListInvitationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserInvitationRegistryServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserInvitationRegistry/List", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserInvitationRegistryServer).List(ctx, req.(*ListInvitationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserInvitationRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteInvitationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserInvitationRegistryServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserInvitationRegistry/Delete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserInvitationRegistryServer).Delete(ctx, req.(*DeleteInvitationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// UserInvitationRegistry_ServiceDesc is the grpc.ServiceDesc for UserInvitationRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var UserInvitationRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.UserInvitationRegistry", + HandlerType: (*UserInvitationRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Send", + Handler: _UserInvitationRegistry_Send_Handler, + }, + { + MethodName: "List", + Handler: _UserInvitationRegistry_List_Handler, + }, + { + MethodName: "Delete", + Handler: _UserInvitationRegistry_Delete_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/user_services.proto", +} + +// UserSessionRegistryClient is the client API for UserSessionRegistry service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type UserSessionRegistryClient interface { + // List the active sessions for the given user. + List(ctx context.Context, in *ListUserSessionsRequest, opts ...grpc.CallOption) (*UserSessions, error) + // Delete (revoke) the given user session. + Delete(ctx context.Context, in *UserSessionIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type userSessionRegistryClient struct { + cc grpc.ClientConnInterface +} + +func NewUserSessionRegistryClient(cc grpc.ClientConnInterface) UserSessionRegistryClient { + return &userSessionRegistryClient{cc} +} + +func (c *userSessionRegistryClient) List(ctx context.Context, in *ListUserSessionsRequest, opts ...grpc.CallOption) (*UserSessions, error) { + out := new(UserSessions) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserSessionRegistry/List", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userSessionRegistryClient) Delete(ctx context.Context, in *UserSessionIdentifiers, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/ttn.lorawan.v3.UserSessionRegistry/Delete", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// UserSessionRegistryServer is the server API for UserSessionRegistry service. +// All implementations must embed UnimplementedUserSessionRegistryServer +// for forward compatibility +type UserSessionRegistryServer interface { + // List the active sessions for the given user. + List(context.Context, *ListUserSessionsRequest) (*UserSessions, error) + // Delete (revoke) the given user session. + Delete(context.Context, *UserSessionIdentifiers) (*emptypb.Empty, error) + mustEmbedUnimplementedUserSessionRegistryServer() +} + +// UnimplementedUserSessionRegistryServer must be embedded to have forward compatible implementations. +type UnimplementedUserSessionRegistryServer struct { +} + +func (UnimplementedUserSessionRegistryServer) List(context.Context, *ListUserSessionsRequest) (*UserSessions, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedUserSessionRegistryServer) Delete(context.Context, *UserSessionIdentifiers) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedUserSessionRegistryServer) mustEmbedUnimplementedUserSessionRegistryServer() {} + +// UnsafeUserSessionRegistryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to UserSessionRegistryServer will +// result in compilation errors. +type UnsafeUserSessionRegistryServer interface { + mustEmbedUnimplementedUserSessionRegistryServer() +} + +func RegisterUserSessionRegistryServer(s grpc.ServiceRegistrar, srv UserSessionRegistryServer) { + s.RegisterService(&UserSessionRegistry_ServiceDesc, srv) +} + +func _UserSessionRegistry_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListUserSessionsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserSessionRegistryServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserSessionRegistry/List", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserSessionRegistryServer).List(ctx, req.(*ListUserSessionsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserSessionRegistry_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UserSessionIdentifiers) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserSessionRegistryServer).Delete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ttn.lorawan.v3.UserSessionRegistry/Delete", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserSessionRegistryServer).Delete(ctx, req.(*UserSessionIdentifiers)) + } + return interceptor(ctx, in, info, handler) +} + +// UserSessionRegistry_ServiceDesc is the grpc.ServiceDesc for UserSessionRegistry service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var UserSessionRegistry_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ttn.lorawan.v3.UserSessionRegistry", + HandlerType: (*UserSessionRegistryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "List", + Handler: _UserSessionRegistry_List_Handler, + }, + { + MethodName: "Delete", + Handler: _UserSessionRegistry_Delete_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lorawan-stack/api/user_services.proto", +} From 6e3cbd0580d0acf8bd156c62eb6235b75ff12814 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Mon, 5 Sep 2022 11:24:34 +0300 Subject: [PATCH 03/30] api: Remove gogo --- api/_api.proto | 5 - api/application.proto | 4 - api/application_services.proto | 4 - api/applicationserver.proto | 4 - ...plicationserver_integrations_storage.proto | 4 - api/applicationserver_packages.proto | 4 - api/applicationserver_pubsub.proto | 4 - api/applicationserver_web.proto | 4 - api/client.proto | 4 - api/client_services.proto | 4 - api/cluster.proto | 4 - api/configuration_services.proto | 4 - api/contact_info.proto | 4 - api/deviceclaimingserver.proto | 4 - api/devicerepository.proto | 4 - api/end_device.proto | 4 - api/end_device_services.proto | 4 - api/enums.proto | 5 - api/error.proto | 4 - api/events.proto | 4 - api/gateway.proto | 4 - api/gateway_services.proto | 4 - api/gatewayserver.proto | 4 - api/identifiers.proto | 4 - api/identityserver.proto | 4 - api/join.proto | 4 - api/joinserver.proto | 4 - api/keys.proto | 4 - api/lorawan.proto | 4 - api/messages.proto | 4 - api/metadata.proto | 4 - api/mqtt.proto | 5 - api/networkserver.proto | 4 - api/notification_service.proto | 4 - api/oauth.proto | 4 - api/oauth_services.proto | 4 - api/organization.proto | 4 - api/organization_services.proto | 4 - api/packetbrokeragent.proto | 4 - api/picture.proto | 5 - api/qrcodegenerator.proto | 4 - api/regional.proto | 4 - api/rights.proto | 4 - api/search_services.proto | 4 - api/secrets.proto | 4 - .../gogo/protobuf/gogoproto/gogo.proto | 144 ------------------ api/user.proto | 4 - api/user_services.proto | 4 - 48 files changed, 336 deletions(-) delete mode 100644 api/third_party/github.com/gogo/protobuf/gogoproto/gogo.proto diff --git a/api/_api.proto b/api/_api.proto index 8ed85193d4..0d6f9cfa31 100644 --- a/api/_api.proto +++ b/api/_api.proto @@ -14,14 +14,9 @@ syntax = "proto3"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; - // Package documentation should be added in the comment block below: // The Things Stack for LoRaWAN v3 API package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; - -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; diff --git a/api/application.proto b/api/application.proto index 0a6dd7912a..bef7bd1821 100644 --- a/api/application.proto +++ b/api/application.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "google/protobuf/field_mask.proto"; @@ -29,9 +28,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // Application is the message that defines an Application in the network. message Application { option (thethings.flags.message) = { select: true, set: true }; diff --git a/api/application_services.proto b/api/application_services.proto index a75aba03fd..f87ab6bf04 100644 --- a/api/application_services.proto +++ b/api/application_services.proto @@ -14,7 +14,6 @@ syntax = "proto3"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "lorawan-stack/api/application.proto"; @@ -25,9 +24,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // The ApplicationRegistry service, exposed by the Identity Server, is used to manage // application registrations. service ApplicationRegistry { diff --git a/api/applicationserver.proto b/api/applicationserver.proto index 0154727bd1..90bbc62253 100644 --- a/api/applicationserver.proto +++ b/api/applicationserver.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "google/api/annotations.proto"; @@ -33,9 +32,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message ApplicationLink { option (thethings.flags.message) = { select: true, set: true }; reserved 1; // Deprecated: network_server_address diff --git a/api/applicationserver_integrations_storage.proto b/api/applicationserver_integrations_storage.proto index 6484ddb736..4954f38e03 100644 --- a/api/applicationserver_integrations_storage.proto +++ b/api/applicationserver_integrations_storage.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; @@ -28,9 +27,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message GetStoredApplicationUpRequest { // Query upstream messages from all end devices of an application. Cannot be used in conjunction with end_device_ids. ApplicationIdentifiers application_ids = 1; diff --git a/api/applicationserver_packages.proto b/api/applicationserver_packages.proto index b6522c5053..83928d4f4d 100644 --- a/api/applicationserver_packages.proto +++ b/api/applicationserver_packages.proto @@ -16,7 +16,6 @@ syntax = "proto3"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; @@ -28,9 +27,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message ApplicationPackage { string name = 1 [(validate.rules).string = {pattern: "^[a-z0-9](?:[-]?[a-z0-9]){2,}$" , max_len: 36}]; uint32 default_f_port = 2 [(validate.rules).uint32 = {gte: 1, lte: 255}]; diff --git a/api/applicationserver_pubsub.proto b/api/applicationserver_pubsub.proto index b106088b25..66eeac15ed 100644 --- a/api/applicationserver_pubsub.proto +++ b/api/applicationserver_pubsub.proto @@ -16,7 +16,6 @@ syntax = "proto3"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "google/api/annotations.proto"; import "google/protobuf/duration.proto"; @@ -29,9 +28,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message ApplicationPubSubIdentifiers { option (thethings.flags.message) = { select: false, set: true }; ApplicationIdentifiers application_ids = 1 [(validate.rules).message.required = true]; diff --git a/api/applicationserver_web.proto b/api/applicationserver_web.proto index 9976f79a8b..75f7a96b64 100644 --- a/api/applicationserver_web.proto +++ b/api/applicationserver_web.proto @@ -16,7 +16,6 @@ syntax = "proto3"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; @@ -28,9 +27,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message ApplicationWebhookIdentifiers { option (thethings.flags.message) = { select: true, set: true }; ApplicationIdentifiers application_ids = 1 [(validate.rules).message.required = true]; diff --git a/api/client.proto b/api/client.proto index 9c165c235f..d8490c37a7 100644 --- a/api/client.proto +++ b/api/client.proto @@ -16,7 +16,6 @@ syntax = "proto3"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; @@ -29,9 +28,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // The OAuth2 flows an OAuth client can use to get an access token. enum GrantType { option (thethings.json.enum) = { marshal_as_string: true, prefix: "GRANT" }; diff --git a/api/client_services.proto b/api/client_services.proto index c10bb8f583..606c099e8c 100644 --- a/api/client_services.proto +++ b/api/client_services.proto @@ -14,7 +14,6 @@ syntax = "proto3"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "lorawan-stack/api/client.proto"; @@ -25,9 +24,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // The ClientRegistry service, exposed by the Identity Server, is used to manage // OAuth client registrations. service ClientRegistry { diff --git a/api/cluster.proto b/api/cluster.proto index 83e3710a6d..10dde42f02 100644 --- a/api/cluster.proto +++ b/api/cluster.proto @@ -14,16 +14,12 @@ syntax = "proto3"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "lorawan-stack/api/enums.proto"; package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // PeerInfo message PeerInfo { // Port on which the gRPC server is exposed. diff --git a/api/configuration_services.proto b/api/configuration_services.proto index 654671eece..9297a9f7ce 100644 --- a/api/configuration_services.proto +++ b/api/configuration_services.proto @@ -16,7 +16,6 @@ syntax = "proto3"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; import "google/api/annotations.proto"; import "google/protobuf/wrappers.proto"; @@ -26,9 +25,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message ListFrequencyPlansRequest { option (thethings.flags.message) = { select: false, set: true }; // Optional base frequency in MHz for hardware support (433, 470, 868 or 915) diff --git a/api/contact_info.proto b/api/contact_info.proto index f82c37e0c7..513064bd4d 100644 --- a/api/contact_info.proto +++ b/api/contact_info.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "google/api/annotations.proto"; @@ -27,9 +26,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - enum ContactType { option (thethings.json.enum) = { marshal_as_string: true, prefix: "CONTACT_TYPE" }; diff --git a/api/deviceclaimingserver.proto b/api/deviceclaimingserver.proto index 5cd1dd05b5..ef7298dbdb 100644 --- a/api/deviceclaimingserver.proto +++ b/api/deviceclaimingserver.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/struct.proto"; import "google/protobuf/empty.proto"; @@ -27,9 +26,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message ClaimEndDeviceRequest { message AuthenticatedIdentifiers { // JoinEUI (or AppEUI) of the device to claim. diff --git a/api/devicerepository.proto b/api/devicerepository.proto index 18d7796ce9..04364856f5 100644 --- a/api/devicerepository.proto +++ b/api/devicerepository.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "google/api/annotations.proto"; import "google/protobuf/field_mask.proto"; @@ -29,9 +28,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message EndDeviceBrand { // Brand identifier, as specified in the Device Repository. string brand_id = 1 [(validate.rules).string = {pattern: "^[a-z0-9](?:[-]?[a-z0-9]){2,}$" , max_len: 36}]; diff --git a/api/end_device.proto b/api/end_device.proto index df608f3289..a8106847f0 100644 --- a/api/end_device.proto +++ b/api/end_device.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "google/protobuf/duration.proto"; @@ -36,9 +35,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message Session { option (thethings.flags.message) = { select: true, set: true }; reserved 1; // RFU: Session ID diff --git a/api/end_device_services.proto b/api/end_device_services.proto index 215b0184dc..af23d3b0d1 100644 --- a/api/end_device_services.proto +++ b/api/end_device_services.proto @@ -14,7 +14,6 @@ syntax = "proto3"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "lorawan-stack/api/end_device.proto"; @@ -24,9 +23,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // The EndDeviceRegistry service, exposed by the Identity Server, is used to manage // end device registrations. // diff --git a/api/enums.proto b/api/enums.proto index 1aade0c189..558ed051bb 100644 --- a/api/enums.proto +++ b/api/enums.proto @@ -15,15 +15,10 @@ syntax = "proto3"; package ttn.lorawan.v3; - -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - enum DownlinkPathConstraint { option (thethings.json.enum) = { marshal_as_string: true, prefix: "DOWNLINK_PATH_CONSTRAINT" }; diff --git a/api/error.proto b/api/error.proto index 348894a5ac..70ce7119f4 100644 --- a/api/error.proto +++ b/api/error.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/protobuf/any.proto"; import "google/protobuf/struct.proto"; @@ -23,9 +22,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // Error details that are communicated over gRPC (and HTTP) APIs. // The messages (for translation) are stored as "error::". message ErrorDetails { diff --git a/api/events.proto b/api/events.proto index 1ebb93d916..cdbe7046d2 100644 --- a/api/events.proto +++ b/api/events.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/any.proto"; import "google/protobuf/timestamp.proto"; @@ -26,9 +25,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message Event { // Name of the event. This can be used to find the (localized) event description. string name = 1; diff --git a/api/gateway.proto b/api/gateway.proto index 0f9b2766b9..59ad20d4c4 100644 --- a/api/gateway.proto +++ b/api/gateway.proto @@ -16,7 +16,6 @@ syntax = "proto3"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/field_mask.proto"; @@ -34,9 +33,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message GatewayBrand { string id = 1; string name = 2; diff --git a/api/gateway_services.proto b/api/gateway_services.proto index 049107c62d..4a3144acd8 100644 --- a/api/gateway_services.proto +++ b/api/gateway_services.proto @@ -14,7 +14,6 @@ syntax = "proto3"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; @@ -26,9 +25,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // The GatewayRegistry service, exposed by the Identity Server, is used to manage // gateway registrations. service GatewayRegistry { diff --git a/api/gatewayserver.proto b/api/gatewayserver.proto index d7b9e05960..5616cec78f 100644 --- a/api/gatewayserver.proto +++ b/api/gatewayserver.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/empty.proto"; @@ -32,9 +31,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // GatewayUp may contain zero or more uplink messages and/or a status message for the gateway. message GatewayUp { // Uplink messages received by the gateway. diff --git a/api/identifiers.proto b/api/identifiers.proto index 61bb5c19f9..221f8ea899 100644 --- a/api/identifiers.proto +++ b/api/identifiers.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; @@ -24,9 +23,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message ApplicationIdentifiers { option (thethings.flags.message) = { select: true, set: true }; string application_id = 1 [(validate.rules).string = {pattern: "^[a-z0-9](?:[-]?[a-z0-9]){2,}$" , max_len: 36}]; diff --git a/api/identityserver.proto b/api/identityserver.proto index 2fc104c02a..6fad88a0f1 100644 --- a/api/identityserver.proto +++ b/api/identityserver.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/empty.proto"; @@ -29,9 +28,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message AuthInfoResponse { message APIKeyAccess { APIKey api_key = 1 [(validate.rules).message.required = true]; diff --git a/api/join.proto b/api/join.proto index b188d621c3..d4ccb446e3 100644 --- a/api/join.proto +++ b/api/join.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "google/protobuf/duration.proto"; import "lorawan-stack/api/keys.proto"; @@ -26,9 +25,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message JoinRequest { bytes raw_payload = 1 [(validate.rules).bytes.len = 23]; Message payload = 2; diff --git a/api/joinserver.proto b/api/joinserver.proto index b690ad69dd..8b733a6d58 100644 --- a/api/joinserver.proto +++ b/api/joinserver.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "google/api/annotations.proto"; @@ -33,9 +32,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message SessionKeyRequest { // Join Server issued identifier for the session keys. bytes session_key_id = 1 [(validate.rules).bytes.max_len = 2048]; diff --git a/api/keys.proto b/api/keys.proto index 379eca117f..52398af330 100644 --- a/api/keys.proto +++ b/api/keys.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; @@ -24,9 +23,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message KeyEnvelope { option (thethings.flags.message) = { select: true, set: true }; // The unencrypted AES key. diff --git a/api/lorawan.proto b/api/lorawan.proto index 6ba33d7c02..6d9817f62b 100644 --- a/api/lorawan.proto +++ b/api/lorawan.proto @@ -16,7 +16,6 @@ syntax = "proto3"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; @@ -27,9 +26,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // Message represents a LoRaWAN message message Message { MHDR m_hdr = 1 [(validate.rules).message.required = true]; diff --git a/api/messages.proto b/api/messages.proto index 526e2b3915..8e3ccaf314 100644 --- a/api/messages.proto +++ b/api/messages.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "google/protobuf/struct.proto"; @@ -32,9 +31,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // Uplink message from the end device to the network message UplinkMessage { diff --git a/api/metadata.proto b/api/metadata.proto index 6df4cc4e12..3b6ca6e606 100644 --- a/api/metadata.proto +++ b/api/metadata.proto @@ -16,7 +16,6 @@ syntax = "proto3"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; @@ -29,9 +28,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // Contains metadata for a received message. Each antenna that receives // a message corresponds to one RxMetadata. message RxMetadata { diff --git a/api/mqtt.proto b/api/mqtt.proto index 6ef10f6d51..0007556347 100644 --- a/api/mqtt.proto +++ b/api/mqtt.proto @@ -15,15 +15,10 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; - package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // The connection information of an MQTT frontend. message MQTTConnectionInfo { // The public listen address of the frontend. diff --git a/api/networkserver.proto b/api/networkserver.proto index cdceb6158b..b2a64ea183 100644 --- a/api/networkserver.proto +++ b/api/networkserver.proto @@ -17,7 +17,6 @@ syntax = "proto3"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "lorawan-stack/api/end_device.proto"; @@ -30,9 +29,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // Response of GenerateDevAddr. message GenerateDevAddrResponse { bytes dev_addr = 1 [ diff --git a/api/notification_service.proto b/api/notification_service.proto index 6497504ad4..d165b67c5e 100644 --- a/api/notification_service.proto +++ b/api/notification_service.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "google/api/annotations.proto"; @@ -29,9 +28,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message Notification { // The immutable ID of the notification. Generated by the server. string id = 1; diff --git a/api/oauth.proto b/api/oauth.proto index 57e824c110..e4738b45e7 100644 --- a/api/oauth.proto +++ b/api/oauth.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/protobuf/timestamp.proto"; import "lorawan-stack/api/identifiers.proto"; import "lorawan-stack/api/rights.proto"; @@ -24,9 +23,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message OAuthClientAuthorizationIdentifiers { UserIdentifiers user_ids = 1 [(validate.rules).message.required = true]; ClientIdentifiers client_ids = 2 [(validate.rules).message.required = true]; diff --git a/api/oauth_services.proto b/api/oauth_services.proto index 6e63da8e7e..fa9939356f 100644 --- a/api/oauth_services.proto +++ b/api/oauth_services.proto @@ -14,7 +14,6 @@ syntax = "proto3"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "lorawan-stack/api/oauth.proto"; @@ -23,9 +22,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // The OAuthAuthorizationRegistry service, exposed by the Identity Server, // is used to manage OAuth client authorizations for users. service OAuthAuthorizationRegistry { diff --git a/api/organization.proto b/api/organization.proto index 599284fe29..701ccec7ab 100644 --- a/api/organization.proto +++ b/api/organization.proto @@ -16,7 +16,6 @@ syntax = "proto3"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; import "lorawan-stack/api/contact_info.proto"; @@ -27,9 +26,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message Organization { option (thethings.flags.message) = { select: true, set: true }; // The identifiers of the organization. These are public and can be seen by any authenticated user in the network. diff --git a/api/organization_services.proto b/api/organization_services.proto index cce48d0b52..a8870db4a2 100644 --- a/api/organization_services.proto +++ b/api/organization_services.proto @@ -14,7 +14,6 @@ syntax = "proto3"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "lorawan-stack/api/identifiers.proto"; @@ -25,9 +24,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // The OrganizationRegistry service, exposed by the Identity Server, is used to manage // organization registrations. service OrganizationRegistry { diff --git a/api/packetbrokeragent.proto b/api/packetbrokeragent.proto index 7f8a178b92..22636da992 100644 --- a/api/packetbrokeragent.proto +++ b/api/packetbrokeragent.proto @@ -17,7 +17,6 @@ syntax = "proto3"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/empty.proto"; @@ -35,9 +34,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // The GsPba service connects a Gateway Server to a Packet Broker Agent. service GsPba { rpc PublishUplink(GatewayUplinkMessage) returns (google.protobuf.Empty); diff --git a/api/picture.proto b/api/picture.proto index b0357385a2..2ebc2cb29b 100644 --- a/api/picture.proto +++ b/api/picture.proto @@ -15,15 +15,10 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; - package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message Picture { message Embedded { // MIME type of the picture. diff --git a/api/qrcodegenerator.proto b/api/qrcodegenerator.proto index b23402e34d..7e1b699092 100644 --- a/api/qrcodegenerator.proto +++ b/api/qrcodegenerator.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; @@ -26,9 +25,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message QRCodeFormat { string name = 1 [(validate.rules).string.max_len = 100]; string description = 2 [(validate.rules).string.max_len = 200]; diff --git a/api/regional.proto b/api/regional.proto index 2dbc25de40..b2563d9fa6 100644 --- a/api/regional.proto +++ b/api/regional.proto @@ -14,7 +14,6 @@ syntax = "proto3"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; import "lorawan-stack/api/gateway.proto"; @@ -22,9 +21,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - message ConcentratorConfig { message Channel { // Frequency (Hz). diff --git a/api/rights.proto b/api/rights.proto index ea37053de6..fc4665a91c 100644 --- a/api/rights.proto +++ b/api/rights.proto @@ -18,16 +18,12 @@ package ttn.lorawan.v3; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-json/annotations.proto"; import "google/protobuf/timestamp.proto"; import "lorawan-stack/api/identifiers.proto"; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // Right is the enum that defines all the different rights to do something in the network. enum Right { option (thethings.json.enum) = { marshal_as_string: true, prefix: "RIGHT" }; diff --git a/api/search_services.proto b/api/search_services.proto index f6ed195466..9ad7d2c450 100644 --- a/api/search_services.proto +++ b/api/search_services.proto @@ -15,7 +15,6 @@ syntax = "proto3"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "google/api/annotations.proto"; import "google/protobuf/field_mask.proto"; @@ -32,9 +31,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // This message is used for finding applications in the EntityRegistrySearch service. message SearchApplicationsRequest { option (thethings.flags.message) = { select: false, set: true }; diff --git a/api/secrets.proto b/api/secrets.proto index 22090abd8c..246eea7251 100644 --- a/api/secrets.proto +++ b/api/secrets.proto @@ -17,14 +17,10 @@ syntax = "proto3"; package ttn.lorawan.v3; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it. message Secret { option (thethings.flags.message) = { select: true, set: true }; diff --git a/api/third_party/github.com/gogo/protobuf/gogoproto/gogo.proto b/api/third_party/github.com/gogo/protobuf/gogoproto/gogo.proto deleted file mode 100644 index b80c85653f..0000000000 --- a/api/third_party/github.com/gogo/protobuf/gogoproto/gogo.proto +++ /dev/null @@ -1,144 +0,0 @@ -// Protocol Buffers for Go with Gadgets -// -// Copyright (c) 2013, The GoGo Authors. All rights reserved. -// http://github.com/gogo/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto2"; -package gogoproto; - -import "google/protobuf/descriptor.proto"; - -option java_package = "com.google.protobuf"; -option java_outer_classname = "GoGoProtos"; -option go_package = "github.com/gogo/protobuf/gogoproto"; - -extend google.protobuf.EnumOptions { - optional bool goproto_enum_prefix = 62001; - optional bool goproto_enum_stringer = 62021; - optional bool enum_stringer = 62022; - optional string enum_customname = 62023; - optional bool enumdecl = 62024; -} - -extend google.protobuf.EnumValueOptions { - optional string enumvalue_customname = 66001; -} - -extend google.protobuf.FileOptions { - optional bool goproto_getters_all = 63001; - optional bool goproto_enum_prefix_all = 63002; - optional bool goproto_stringer_all = 63003; - optional bool verbose_equal_all = 63004; - optional bool face_all = 63005; - optional bool gostring_all = 63006; - optional bool populate_all = 63007; - optional bool stringer_all = 63008; - optional bool onlyone_all = 63009; - - optional bool equal_all = 63013; - optional bool description_all = 63014; - optional bool testgen_all = 63015; - optional bool benchgen_all = 63016; - optional bool marshaler_all = 63017; - optional bool unmarshaler_all = 63018; - optional bool stable_marshaler_all = 63019; - - optional bool sizer_all = 63020; - - optional bool goproto_enum_stringer_all = 63021; - optional bool enum_stringer_all = 63022; - - optional bool unsafe_marshaler_all = 63023; - optional bool unsafe_unmarshaler_all = 63024; - - optional bool goproto_extensions_map_all = 63025; - optional bool goproto_unrecognized_all = 63026; - optional bool gogoproto_import = 63027; - optional bool protosizer_all = 63028; - optional bool compare_all = 63029; - optional bool typedecl_all = 63030; - optional bool enumdecl_all = 63031; - - optional bool goproto_registration = 63032; - optional bool messagename_all = 63033; - - optional bool goproto_sizecache_all = 63034; - optional bool goproto_unkeyed_all = 63035; -} - -extend google.protobuf.MessageOptions { - optional bool goproto_getters = 64001; - optional bool goproto_stringer = 64003; - optional bool verbose_equal = 64004; - optional bool face = 64005; - optional bool gostring = 64006; - optional bool populate = 64007; - optional bool stringer = 67008; - optional bool onlyone = 64009; - - optional bool equal = 64013; - optional bool description = 64014; - optional bool testgen = 64015; - optional bool benchgen = 64016; - optional bool marshaler = 64017; - optional bool unmarshaler = 64018; - optional bool stable_marshaler = 64019; - - optional bool sizer = 64020; - - optional bool unsafe_marshaler = 64023; - optional bool unsafe_unmarshaler = 64024; - - optional bool goproto_extensions_map = 64025; - optional bool goproto_unrecognized = 64026; - - optional bool protosizer = 64028; - optional bool compare = 64029; - - optional bool typedecl = 64030; - - optional bool messagename = 64033; - - optional bool goproto_sizecache = 64034; - optional bool goproto_unkeyed = 64035; -} - -extend google.protobuf.FieldOptions { - optional bool nullable = 65001; - optional bool embed = 65002; - optional string customtype = 65003; - optional string customname = 65004; - optional string jsontag = 65005; - optional string moretags = 65006; - optional string casttype = 65007; - optional string castkey = 65008; - optional string castvalue = 65009; - - optional bool stdtime = 65010; - optional bool stdduration = 65011; - optional bool wktpointer = 65012; - -} diff --git a/api/user.proto b/api/user.proto index f4ad5b7ab7..84787fa3c2 100644 --- a/api/user.proto +++ b/api/user.proto @@ -16,7 +16,6 @@ syntax = "proto3"; import "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations.proto"; import "github.com/envoyproxy/protoc-gen-validate/validate/validate.proto"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; import "lorawan-stack/api/contact_info.proto"; @@ -29,9 +28,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // User is the message that defines a user on the network. message User { option (thethings.flags.message) = { select: true, set: true }; diff --git a/api/user_services.proto b/api/user_services.proto index 3755c4d2b9..9ccc6f5f19 100644 --- a/api/user_services.proto +++ b/api/user_services.proto @@ -14,7 +14,6 @@ syntax = "proto3"; -import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "lorawan-stack/api/identifiers.proto"; @@ -25,9 +24,6 @@ package ttn.lorawan.v3; option go_package = "go.thethings.network/lorawan-stack/v3/pkg/ttnpb"; -// TODO: Migrate away from GoGo Protobuf (https://github.com/TheThingsNetwork/lorawan-stack/issues/2798). -option (gogoproto.goproto_registration) = true; - // The UserRegistry service, exposed by the Identity Server, is used to manage // user registrations. service UserRegistry { From 8d739fde952664d88a554637239933074d33c591 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Thu, 29 Sep 2022 13:16:16 +0200 Subject: [PATCH 04/30] api: Regenerate --- pkg/ttnpb/_api.pb.go | 14 +- pkg/ttnpb/application.pb.go | 588 ++-- pkg/ttnpb/application_services.pb.go | 363 ++- pkg/ttnpb/applicationserver.pb.go | 836 +++--- ...plicationserver_integrations_storage.pb.go | 306 +- pkg/ttnpb/applicationserver_packages.pb.go | 632 ++-- pkg/ttnpb/applicationserver_pubsub.pb.go | 758 +++-- pkg/ttnpb/applicationserver_web.pb.go | 874 +++--- pkg/ttnpb/client.pb.go | 394 ++- pkg/ttnpb/client_services.pb.go | 240 +- pkg/ttnpb/cluster.pb.go | 44 +- pkg/ttnpb/configuration_services.pb.go | 558 ++-- pkg/ttnpb/contact_info.pb.go | 192 +- pkg/ttnpb/deviceclaimingserver.pb.go | 768 +++-- pkg/ttnpb/devicerepository.pb.go | 1356 +++++---- pkg/ttnpb/end_device.pb.go | 2486 ++++++++-------- pkg/ttnpb/end_device_services.pb.go | 188 +- pkg/ttnpb/enums.pb.go | 99 +- pkg/ttnpb/error.pb.go | 62 +- pkg/ttnpb/events.pb.go | 188 +- pkg/ttnpb/gateway.pb.go | 1108 ++++--- pkg/ttnpb/gateway_services.pb.go | 362 ++- pkg/ttnpb/gatewayserver.pb.go | 300 +- pkg/ttnpb/identifiers.pb.go | 492 ++-- pkg/ttnpb/identityserver.pb.go | 472 ++- pkg/ttnpb/join.pb.go | 174 +- pkg/ttnpb/joinserver.pb.go | 1089 ++++--- pkg/ttnpb/keys.pb.go | 167 +- pkg/ttnpb/lorawan.pb.go | 2600 ++++++++--------- pkg/ttnpb/messages.pb.go | 1099 ++++--- pkg/ttnpb/metadata.pb.go | 402 ++- pkg/ttnpb/mqtt.pb.go | 66 +- pkg/ttnpb/networkserver.pb.go | 354 ++- pkg/ttnpb/notification_service.pb.go | 353 ++- pkg/ttnpb/oauth.pb.go | 274 +- pkg/ttnpb/oauth_services.pb.go | 112 +- pkg/ttnpb/organization.pb.go | 444 ++- pkg/ttnpb/organization_services.pb.go | 304 +- pkg/ttnpb/packetbrokeragent.pb.go | 1078 ++++--- pkg/ttnpb/picture.pb.go | 49 +- pkg/ttnpb/qrcodegenerator.pb.go | 248 +- pkg/ttnpb/regional.pb.go | 134 +- pkg/ttnpb/rights.pb.go | 407 ++- pkg/ttnpb/search_services.pb.go | 794 +++-- pkg/ttnpb/secrets.pb.go | 52 +- pkg/ttnpb/user.pb.go | 680 +++-- pkg/ttnpb/user_services.pb.go | 320 +- 47 files changed, 12342 insertions(+), 12538 deletions(-) diff --git a/pkg/ttnpb/_api.pb.go b/pkg/ttnpb/_api.pb.go index ae28896550..9cd67c5104 100644 --- a/pkg/ttnpb/_api.pb.go +++ b/pkg/ttnpb/_api.pb.go @@ -25,7 +25,6 @@ package ttnpb import ( - _ "github.com/gogo/protobuf/gogoproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -43,14 +42,11 @@ var File_lorawan_stack_api__api_proto protoreflect.FileDescriptor var file_lorawan_stack_api__api_proto_rawDesc = []byte{ 0x0a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x2d, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x35, 0x5a, - 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, - 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x42, 0x31, + 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, + 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_lorawan_stack_api__api_proto_goTypes = []interface{}{} diff --git a/pkg/ttnpb/application.pb.go b/pkg/ttnpb/application.pb.go index 877c360e8b..29c2577072 100644 --- a/pkg/ttnpb/application.pb.go +++ b/pkg/ttnpb/application.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -1048,311 +1047,308 @@ var file_lorawan_stack_api_application_proto_rawDesc = []byte{ 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, - 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, - 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, - 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, - 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, - 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xf1, 0x0b, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x4a, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, - 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, - 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, - 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, - 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, 0x01, 0x2f, 0x10, 0x0a, - 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, - 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, - 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, - 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x64, 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x52, 0x15, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x5a, 0x0a, 0x11, 0x74, - 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, + 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, + 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, + 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, + 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0xf1, 0x0b, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x4a, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, + 0x00, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, 0x01, 0x2f, 0x10, + 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0a, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, + 0x01, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x64, 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x10, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0xc5, 0x01, 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, - 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, - 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, - 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, - 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, - 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, - 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, - 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x14, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0xcd, 0x01, 0x0a, 0x1a, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, - 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, - 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, - 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, - 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, - 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, - 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, - 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, - 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, - 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x18, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0xbf, 0x01, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, - 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, - 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, - 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, - 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, - 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, - 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, - 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, - 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x11, - 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x30, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, - 0x08, 0x01, 0x10, 0x00, 0x52, 0x0d, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x0f, - 0x10, 0x10, 0x52, 0x10, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x22, 0x4f, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe6, 0x01, 0x0a, 0x13, 0x49, 0x73, 0x73, 0x75, 0x65, 0x44, - 0x65, 0x76, 0x45, 0x55, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xce, 0x01, - 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, - 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, - 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x15, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x5a, 0x0a, 0x11, + 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x10, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, + 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0xc5, 0x01, 0x0a, 0x16, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, + 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, + 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, + 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, + 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, + 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, + 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x14, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0xcd, 0x01, 0x0a, 0x1a, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, + 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, + 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, + 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, + 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, + 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, + 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, + 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x18, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0xbf, 0x01, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, + 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, + 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, + 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, + 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, + 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, + 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, + 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, + 0x11, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x30, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x01, 0x10, 0x00, 0x52, 0x0d, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, + 0x0f, 0x10, 0x10, 0x52, 0x10, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x4f, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe6, 0x01, 0x0a, 0x13, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x44, 0x65, 0x76, 0x45, 0x55, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xce, + 0x01, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, + 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, - 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, - 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x22, 0xad, - 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, - 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xed, - 0x02, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0c, 0x63, 0x6f, - 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, - 0x06, 0xf2, 0xaa, 0x19, 0x02, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, - 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, - 0x12, 0x64, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x4e, 0xfa, 0x42, 0x4b, 0x72, 0x49, 0x52, 0x00, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x52, 0x0f, 0x2d, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, - 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, - 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xc0, - 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x0b, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x22, 0x9e, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, - 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, - 0x73, 0x6b, 0x22, 0xaf, 0x02, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, - 0x75, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x5f, - 0xfa, 0x42, 0x5c, 0x72, 0x5a, 0x52, 0x00, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x69, 0x64, 0x52, 0x0b, 0x2d, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, - 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x52, - 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, - 0x08, 0x00, 0x10, 0x01, 0x22, 0x8f, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, - 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x22, 0x9f, 0x02, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, - 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, + 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, + 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, + 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x22, + 0xad, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x40, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x92, 0x01, 0x0b, - 0x08, 0x01, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x40, 0x01, 0x52, 0x09, 0x65, - 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0xf1, 0x01, 0x0a, 0x1e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, - 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, + 0xed, 0x02, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0c, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x06, 0xf2, 0xaa, 0x19, 0x02, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, + 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x12, 0x64, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x4e, 0xfa, 0x42, 0x4b, 0x72, 0x49, 0x52, 0x00, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x52, 0x0f, 0x2d, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, + 0xc0, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x0b, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x22, 0x9e, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x47, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, - 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, - 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xed, 0x01, 0x0a, - 0x23, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, - 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, - 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x21, 0xfa, 0x42, 0x1e, 0x72, 0x1c, 0x52, 0x00, 0x52, 0x02, 0x69, 0x64, 0x52, - 0x03, 0x2d, 0x69, 0x64, 0x52, 0x07, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x06, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xdb, 0x01, 0x0a, - 0x21, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x5b, 0x0a, - 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, - 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xca, 0x01, 0x0a, 0x21, 0x53, - 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, - 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, - 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, - 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, - 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x22, 0xaf, 0x02, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, + 0x12, 0x75, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x5f, 0xfa, 0x42, 0x5c, 0x72, 0x5a, 0x52, 0x00, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x69, 0x64, 0x52, 0x0b, 0x2d, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, + 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, + 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, + 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0x8f, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, + 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x22, 0x9f, 0x02, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, + 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x92, 0x01, + 0x0b, 0x08, 0x01, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, + 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x40, 0x01, 0x52, 0x09, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0xf1, 0x01, 0x0a, 0x1e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, + 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, + 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xed, 0x01, + 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, + 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x21, 0xfa, 0x42, 0x1e, 0x72, 0x1c, 0x52, 0x00, 0x52, 0x02, 0x69, 0x64, + 0x52, 0x03, 0x2d, 0x69, 0x64, 0x52, 0x07, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x06, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xdb, 0x01, + 0x0a, 0x21, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x5b, + 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xca, 0x01, 0x0a, 0x21, + 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0c, + 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/application_services.pb.go b/pkg/ttnpb/application_services.pb.go index 0513f5f571..1294fa97ce 100644 --- a/pkg/ttnpb/application_services.pb.go +++ b/pkg/ttnpb/application_services.pb.go @@ -21,7 +21,6 @@ package ttnpb import ( - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -42,196 +41,192 @@ var file_lorawan_stack_api_application_services_proto_rawDesc = []byte{ 0x0a, 0x2c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x2d, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, - 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x32, 0xec, 0x09, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xe3, 0x01, 0x0a, 0x06, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x91, 0x01, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x8a, 0x01, 0x22, 0x33, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x50, - 0x22, 0x4b, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x01, 0x2a, - 0x12, 0x81, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x36, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xec, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9c, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x95, 0x01, 0x12, 0x0d, - 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5a, 0x35, 0x12, - 0x33, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x5a, 0x4d, 0x12, 0x4b, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x28, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x1a, 0x2e, 0x2f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, - 0x12, 0x70, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x20, 0x2a, 0x1e, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x12, 0x79, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x26, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x22, 0x26, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x1c, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, + 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x32, 0xec, 0x09, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xe3, 0x01, 0x0a, 0x06, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x91, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8a, 0x01, 0x22, 0x33, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x01, 0x2a, 0x5a, + 0x50, 0x22, 0x4b, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x01, + 0x2a, 0x12, 0x81, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x36, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x75, 0x0a, - 0x05, 0x50, 0x75, 0x72, 0x67, 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xec, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9c, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x95, 0x01, 0x12, + 0x0d, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5a, 0x35, + 0x12, 0x33, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, + 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5a, 0x4d, 0x12, 0x4b, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, + 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x1a, 0x2e, + 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, + 0x2a, 0x12, 0x70, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x26, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x20, 0x2a, 0x1e, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x12, 0x79, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x26, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x22, 0x26, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x75, + 0x0a, 0x05, 0x50, 0x75, 0x72, 0x67, 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x2a, + 0x24, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x70, 0x75, 0x72, 0x67, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x0b, 0x49, 0x73, 0x73, 0x75, 0x65, 0x44, + 0x65, 0x76, 0x45, 0x55, 0x49, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x23, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x44, 0x65, 0x76, 0x45, 0x55, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x22, 0x26, 0x2f, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x2d, 0x65, + 0x75, 0x69, 0x32, 0xbf, 0x0b, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x7b, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x2a, 0x24, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, - 0x75, 0x72, 0x67, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x0b, 0x49, 0x73, 0x73, 0x75, 0x65, 0x44, 0x65, - 0x76, 0x45, 0x55, 0x49, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x23, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x44, 0x65, 0x76, 0x45, 0x55, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x22, 0x26, 0x2f, 0x61, 0x70, 0x70, 0x6c, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x9a, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x42, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x22, 0x37, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x3a, + 0x01, 0x2a, 0x12, 0x96, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, + 0x79, 0x73, 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x39, 0x12, 0x37, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x9a, 0x01, 0x0a, 0x09, + 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x48, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x12, 0x40, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x2f, + 0x7b, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa7, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, + 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, + 0x79, 0x22, 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x1a, 0x44, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x2d, 0x65, 0x75, - 0x69, 0x32, 0xbf, 0x0b, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x7b, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x12, 0x9a, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, - 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x42, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x22, 0x37, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x3a, 0x01, - 0x2a, 0x12, 0x96, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, - 0x73, 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x39, 0x12, 0x37, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x9a, 0x01, 0x0a, 0x09, 0x47, - 0x65, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x48, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x12, 0x40, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, - 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa7, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, - 0x22, 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x1a, 0x44, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, - 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x7d, 0x3a, 0x01, - 0x2a, 0x12, 0xd7, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x31, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, - 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0xe7, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xe0, 0x01, 0x5a, 0x62, 0x12, 0x60, 0x2f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, - 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, - 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x5a, - 0x7a, 0x12, 0x78, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, - 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa5, 0x01, 0x0a, 0x0f, - 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, - 0x31, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x41, 0x1a, 0x3c, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, + 0x79, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x7d, 0x3a, + 0x01, 0x2a, 0x12, 0xd7, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, + 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x31, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xe7, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xe0, 0x01, 0x5a, 0x62, 0x12, 0x60, + 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x75, 0x73, 0x65, 0x72, + 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, + 0x5a, 0x7a, 0x12, 0x78, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, - 0x3a, 0x01, 0x2a, 0x12, 0xad, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, - 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, - 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x44, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x73, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa5, 0x01, 0x0a, + 0x0f, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x12, 0x31, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x47, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x41, 0x1a, 0x3c, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xad, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x33, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x44, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x73, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_lorawan_stack_api_application_services_proto_goTypes = []interface{}{ diff --git a/pkg/ttnpb/applicationserver.pb.go b/pkg/ttnpb/applicationserver.pb.go index 73c550cc64..4605d74864 100644 --- a/pkg/ttnpb/applicationserver.pb.go +++ b/pkg/ttnpb/applicationserver.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -1100,452 +1099,449 @@ var file_lorawan_stack_api_applicationserver_proto_rawDesc = []byte{ 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, - 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, - 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, - 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0xd2, 0x01, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, - 0x69, 0x6e, 0x6b, 0x12, 0x57, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4a, 0x0a, 0x13, - 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x73, 0x6b, 0x69, 0x70, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, - 0x10, 0x01, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, - 0x08, 0x04, 0x10, 0x05, 0x22, 0xb1, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, - 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xf0, 0x01, 0x0a, 0x19, 0x53, 0x65, 0x74, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x73, 0x12, 0x3d, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, - 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, - 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xfd, 0x03, 0x0a, 0x14, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x41, 0x74, 0x12, 0xc5, 0x01, - 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, - 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, - 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, - 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, - 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, - 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, - 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, - 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, - 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, - 0x14, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, - 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, + 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, + 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0xd2, 0x01, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x57, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4a, 0x0a, + 0x13, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x73, 0x6b, 0x69, 0x70, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, + 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0xb1, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, + 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, - 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x19, 0x0a, 0x08, 0x75, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x07, 0x75, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x1a, 0x6c, - 0x61, 0x73, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x6f, 0x72, - 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x17, 0x6c, 0x61, 0x73, - 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x64, 0x6f, - 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xfe, 0x04, 0x0a, 0x0f, - 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x3e, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xf0, 0x01, 0x0a, 0x19, 0x53, 0x65, + 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x73, 0x12, 0x3d, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, + 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6c, 0x69, 0x6e, + 0x6b, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xfd, 0x03, 0x0a, + 0x14, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x41, 0x74, 0x12, 0xc5, + 0x01, 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, + 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, + 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, + 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, + 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, + 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, + 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, + 0x52, 0x14, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, + 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x10, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x07, 0x75, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x1a, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x17, 0x6c, 0x61, + 0x73, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x65, 0x64, 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, + 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xfe, 0x04, 0x0a, + 0x0f, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x3e, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x52, 0x06, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, + 0x12, 0x44, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x08, 0x77, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x1a, 0xc0, 0x02, 0x0a, 0x06, 0x50, 0x75, 0x62, 0x53, 0x75, + 0x62, 0x12, 0x4e, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x73, 0x1a, 0xe5, 0x01, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, + 0x4b, 0x0a, 0x04, 0x6d, 0x71, 0x74, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, + 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x04, 0x6d, 0x71, 0x74, 0x74, 0x12, 0x4b, 0x0a, 0x04, + 0x6e, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x73, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x53, + 0x75, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x04, 0x6e, 0x61, 0x74, 0x73, 0x22, 0x38, 0x0a, 0x06, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, + 0x08, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x1a, 0x06, 0xea, 0xaa, 0x19, + 0x02, 0x18, 0x01, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x1a, 0xa1, 0x01, 0x0a, 0x08, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x40, 0x0a, 0x1c, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x5f, 0x74, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1a, 0x75, 0x6e, + 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x54, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x53, 0x0a, 0x18, 0x75, 0x6e, 0x68, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x79, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, + 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x1b, 0x0a, + 0x19, 0x47, 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x63, 0x0a, 0x1a, 0x47, 0x65, + 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x52, 0x06, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x12, - 0x44, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x08, 0x77, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x1a, 0xc0, 0x02, 0x0a, 0x06, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, - 0x12, 0x4e, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, - 0x1a, 0xe5, 0x01, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x4b, - 0x0a, 0x04, 0x6d, 0x71, 0x74, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x73, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, - 0x62, 0x53, 0x75, 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x04, 0x6d, 0x71, 0x74, 0x74, 0x12, 0x4b, 0x0a, 0x04, 0x6e, - 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x73, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x62, 0x53, 0x75, - 0x62, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x04, 0x6e, 0x61, 0x74, 0x73, 0x22, 0x38, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, - 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x1a, 0x06, 0xea, 0xaa, 0x19, 0x02, - 0x18, 0x01, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x1a, 0xa1, 0x01, 0x0a, 0x08, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x40, 0x0a, 0x1c, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, - 0x68, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x5f, 0x74, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1a, 0x75, 0x6e, 0x68, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x54, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x53, 0x0a, 0x18, 0x75, 0x6e, 0x68, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x79, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x1b, 0x0a, 0x19, - 0x47, 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x63, 0x0a, 0x1a, 0x47, 0x65, 0x74, - 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, - 0x0a, 0x17, 0x4e, 0x73, 0x41, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x69, - 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x0f, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, - 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x73, 0x22, 0xee, 0x02, 0x0a, 0x15, - 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x49, 0x0a, 0x08, 0x64, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x48, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x12, 0x1c, - 0x0a, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x22, 0x59, 0x0a, 0x16, - 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, - 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x08, 0x64, - 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0xe6, 0x02, 0x0a, 0x13, 0x44, 0x65, 0x63, 0x6f, - 0x64, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x6b, 0x0a, 0x17, 0x4e, 0x73, 0x41, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x0f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x48, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x22, 0x51, 0x0a, 0x14, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, - 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x06, 0x75, 0x70, 0x6c, - 0x69, 0x6e, 0x6b, 0x22, 0xee, 0x02, 0x0a, 0x15, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, - 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, - 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x64, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x55, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x73, 0x22, 0xee, 0x02, 0x0a, + 0x15, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, + 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x4c, 0x0a, 0x0b, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x49, 0x0a, 0x08, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, + 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x48, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x12, + 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x22, 0x59, 0x0a, + 0x16, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x08, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0xe6, 0x02, 0x0a, 0x13, 0x44, 0x65, 0x63, + 0x6f, 0x64, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x73, 0x12, 0x49, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x48, 0x0a, 0x09, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x22, 0x59, 0x0a, 0x16, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, - 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, - 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x32, - 0xd1, 0x05, 0x0a, 0x02, 0x41, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4c, 0x69, - 0x6e, 0x6b, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x3e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x98, - 0x01, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x1a, 0x36, - 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x3a, 0x01, 0x2a, 0x12, 0x7c, 0x0a, 0x0a, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x2a, - 0x26, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x48, 0x0a, 0x09, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x22, 0x51, 0x0a, 0x14, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x75, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x06, 0x75, 0x70, + 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0xee, 0x02, 0x0a, 0x15, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, + 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x64, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x73, 0x12, 0x49, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x48, 0x0a, + 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x22, 0x59, 0x0a, 0x16, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3f, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x32, 0xd1, 0x05, 0x0a, 0x02, 0x41, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4c, + 0x69, 0x6e, 0x6b, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x22, + 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x12, + 0x98, 0x01, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x29, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x1a, + 0x36, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x92, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4c, - 0x69, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x3a, 0x01, 0x2a, 0x12, 0x7c, 0x0a, 0x0a, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, - 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, - 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x84, 0x01, 0x0a, - 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, - 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, - 0x12, 0x11, 0x2f, 0x61, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x32, 0x57, 0x0a, 0x04, 0x4e, 0x73, 0x41, 0x73, 0x12, 0x4f, 0x0a, 0x0c, 0x48, - 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x27, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x73, 0x41, - 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x32, 0xb3, 0x0d, 0x0a, - 0x05, 0x41, 0x70, 0x70, 0x41, 0x73, 0x12, 0x54, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x1d, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x30, 0x01, 0x12, 0xcb, 0x01, 0x0a, - 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x75, - 0x73, 0x68, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x22, 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x72, 0x22, 0x6d, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x6f, - 0x77, 0x6e, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x3a, 0x01, 0x2a, 0x12, 0xd1, 0x01, 0x0a, 0x14, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, + 0x2a, 0x26, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x92, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, + 0x4c, 0x69, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, + 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, + 0x2c, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x6c, 0x69, 0x6e, 0x6b, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x84, 0x01, + 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x13, 0x12, 0x11, 0x2f, 0x61, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x57, 0x0a, 0x04, 0x4e, 0x73, 0x41, 0x73, 0x12, 0x4f, 0x0a, 0x0c, + 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x27, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x73, + 0x41, 0x73, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x32, 0xb3, 0x0d, + 0x0a, 0x05, 0x41, 0x70, 0x70, 0x41, 0x73, 0x12, 0x54, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x1d, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x30, 0x01, 0x12, 0xcb, 0x01, + 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, + 0x75, 0x73, 0x68, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x22, 0x7b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x75, 0x22, 0x70, 0x2f, 0x61, 0x73, 0x2f, 0x61, + 0x79, 0x22, 0x78, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x72, 0x22, 0x6d, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, - 0x6f, 0x77, 0x6e, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0xb3, - 0x01, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, - 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x12, 0x4a, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x64, 0x6f, 0x77, 0x6e, 0x12, 0xa3, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4d, 0x51, 0x54, 0x54, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x51, 0x54, 0x54, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x38, 0x12, 0x36, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x53, - 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x1d, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x22, 0x7a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x22, 0x6f, 0x2f, 0x61, - 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x75, 0x70, 0x2f, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, - 0x12, 0xdb, 0x01, 0x0a, 0x0e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, - 0x69, 0x6e, 0x6b, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, - 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x63, 0x6f, - 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x7a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x22, 0x6f, 0x2f, 0x61, 0x73, 0x2f, + 0x6f, 0x77, 0x6e, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x3a, 0x01, 0x2a, 0x12, 0xd1, 0x01, 0x0a, 0x14, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x7b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x75, 0x22, 0x70, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x64, 0x6f, 0x77, 0x6e, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0xd3, - 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, - 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x6c, 0x69, - 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x72, 0x22, 0x6d, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, - 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x70, 0x2f, 0x64, 0x65, 0x63, 0x6f, 0x64, - 0x65, 0x3a, 0x01, 0x2a, 0x12, 0xdb, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x22, 0x6f, - 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, - 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, - 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x2f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x3a, - 0x01, 0x2a, 0x32, 0xeb, 0x04, 0x0a, 0x13, 0x41, 0x73, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xb2, 0x01, 0x0a, 0x03, 0x47, - 0x65, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x12, 0x63, 0x2f, 0x61, 0x73, 0x2f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, - 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x64, 0x6f, 0x77, 0x6e, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x3a, 0x01, 0x2a, 0x12, + 0xb3, 0x01, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, + 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x24, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x73, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x12, 0x4a, 0x2f, 0x61, 0x73, 0x2f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, - 0x86, 0x02, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, - 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0xbe, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb7, - 0x01, 0x1a, 0x63, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x4d, 0x22, 0x48, 0x2f, 0x61, 0x73, + 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0xa3, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4d, 0x51, 0x54, + 0x54, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x51, 0x54, 0x54, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x3e, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0xc3, 0x01, 0x0a, 0x0e, + 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x1d, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x7a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x22, 0x6f, 0x2f, + 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x75, 0x70, 0x2f, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x3a, 0x01, + 0x2a, 0x12, 0xdb, 0x01, 0x0a, 0x0e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x63, + 0x6f, 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x7a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x22, 0x6f, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, - 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x95, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x2a, 0x45, 0x2f, 0x61, 0x73, 0x2f, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, - 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, - 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x3a, 0x01, 0x2a, 0x12, + 0xd3, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, + 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x72, 0x22, 0x6d, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, + 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x70, 0x2f, 0x64, 0x65, 0x63, 0x6f, + 0x64, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0xdb, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x22, + 0x6f, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x2f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, + 0x3a, 0x01, 0x2a, 0x32, 0xeb, 0x04, 0x0a, 0x13, 0x41, 0x73, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xb2, 0x01, 0x0a, 0x03, + 0x47, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x12, 0x63, 0x2f, 0x61, 0x73, + 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, + 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x12, 0x86, 0x02, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0xbe, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0xb7, 0x01, 0x1a, 0x63, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, + 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x4d, 0x22, 0x48, 0x2f, 0x61, + 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x95, 0x01, 0x0a, 0x06, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x2a, 0x45, 0x2f, 0x61, 0x73, 0x2f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x7d, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, + 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/applicationserver_integrations_storage.pb.go b/pkg/ttnpb/applicationserver_integrations_storage.pb.go index 1aad8cf7ad..cd1f30dd4b 100644 --- a/pkg/ttnpb/applicationserver_integrations_storage.pb.go +++ b/pkg/ttnpb/applicationserver_integrations_storage.pb.go @@ -22,7 +22,6 @@ package ttnpb import ( _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -333,75 +332,23 @@ var file_lorawan_stack_api_applicationserver_integrations_storage_proto_rawDesc 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, - 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x89, 0x06, 0x0a, 0x1d, 0x47, - 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x0f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0e, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, - 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0c, 0x65, 0x6e, 0x64, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0xd7, 0x01, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0xc2, 0x01, 0xfa, 0x42, 0xbe, 0x01, 0x72, - 0xbb, 0x01, 0x52, 0x00, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x52, 0x11, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x6f, 0x72, - 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x52, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, - 0x63, 0x65, 0x70, 0x74, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, - 0x63, 0x6b, 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x63, - 0x6b, 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, - 0x52, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x52, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, - 0x65, 0x64, 0x52, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, - 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x0f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x52, - 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, - 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x33, 0x0a, - 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x66, 0x50, 0x6f, - 0x72, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x22, 0xfa, 0x42, 0x1f, 0x72, 0x1d, 0x52, 0x00, 0x52, 0x0c, 0x2d, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x2d, 0x0a, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x22, 0xd2, 0x04, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x53, 0x74, - 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, - 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, + 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x89, 0x06, 0x0a, 0x1d, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, @@ -411,92 +358,141 @@ var file_lorawan_stack_api_applicationserver_integrations_storage_proto_rawDesc 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0c, 0x65, 0x6e, - 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0xc4, 0x01, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0xaf, 0x01, 0xfa, 0x42, 0xab, 0x01, - 0x72, 0xa8, 0x01, 0x52, 0x00, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, - 0x70, 0x74, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x6b, - 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x63, 0x6b, 0x52, - 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0f, - 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, - 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, - 0x52, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, - 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x0f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x52, 0x0c, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, - 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2d, 0x0a, 0x04, - 0x6c, 0x61, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x22, 0xb5, 0x01, 0x0a, 0x23, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x38, 0x0a, 0x0a, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x32, 0xbf, 0x05, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0xbc, 0x02, 0x0a, - 0x16, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x22, 0xd1, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xca, 0x01, 0x12, - 0x7b, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x5a, 0x4b, 0x12, 0x49, - 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x30, 0x01, 0x12, 0xe7, 0x02, 0x0a, 0x1b, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, - 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0xd7, 0x01, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0xc2, 0x01, 0xfa, 0x42, 0xbe, 0x01, + 0x72, 0xbb, 0x01, 0x52, 0x00, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x11, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x6f, + 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x52, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, + 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, + 0x61, 0x63, 0x6b, 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, + 0x63, 0x6b, 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, + 0x74, 0x52, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, + 0x65, 0x64, 0x52, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, + 0x75, 0x65, 0x64, 0x52, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, + 0x65, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, + 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, + 0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, + 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, + 0x66, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x33, + 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x66, 0x50, + 0x6f, 0x72, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x22, 0xfa, 0x42, 0x1f, 0x72, 0x1d, 0x52, 0x00, 0x52, 0x0c, 0x2d, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x39, 0x0a, + 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x2d, 0x0a, 0x04, 0x6c, 0x61, 0x73, 0x74, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x22, 0xd2, 0x04, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, + 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, + 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, + 0x4a, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0c, 0x65, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0xc4, 0x01, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0xaf, 0x01, 0xfa, 0x42, 0xab, + 0x01, 0x72, 0xa8, 0x01, 0x52, 0x00, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, + 0x65, 0x70, 0x74, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x63, + 0x6b, 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x63, 0x6b, + 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x52, + 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x52, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, + 0x64, 0x52, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, + 0x65, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x0f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x52, 0x0c, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, + 0x66, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, + 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2d, 0x0a, + 0x04, 0x6c, 0x61, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x22, 0xb5, 0x01, 0x0a, + 0x23, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xde, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd7, 0x01, 0x12, 0x81, - 0x01, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5a, 0x51, 0x12, 0x4f, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, - 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, - 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x38, 0x0a, 0x0a, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x32, 0xbf, 0x05, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0xbc, 0x02, + 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x22, 0xd1, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xca, 0x01, + 0x12, 0x7b, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x5a, 0x4b, 0x12, + 0x49, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x30, 0x01, 0x12, 0xe7, 0x02, 0x0a, + 0x1b, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, + 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xde, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd7, 0x01, 0x12, + 0x81, 0x01, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5a, 0x51, 0x12, 0x4f, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x74, 0x79, 0x70, 0x65, 0x7d, + 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/pkg/ttnpb/applicationserver_packages.pb.go b/pkg/ttnpb/applicationserver_packages.pb.go index 7910ee622f..343fe88581 100644 --- a/pkg/ttnpb/applicationserver_packages.pb.go +++ b/pkg/ttnpb/applicationserver_packages.pb.go @@ -23,7 +23,6 @@ package ttnpb import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -889,344 +888,341 @@ var file_lorawan_stack_api_applicationserver_packages_proto_rawDesc = []byte{ 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, - 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, - 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x83, 0x01, - 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x30, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, - 0x18, 0xff, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x50, - 0x6f, 0x72, 0x74, 0x22, 0x55, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x08, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0xad, 0x01, 0x0a, 0x28, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, - 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, - 0x42, 0x07, 0x2a, 0x05, 0x18, 0xff, 0x01, 0x28, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, - 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x8a, 0x03, 0x0a, 0x1d, 0x41, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, + 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x83, + 0x01, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, + 0x05, 0x18, 0xff, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, + 0x50, 0x6f, 0x72, 0x74, 0x22, 0x55, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x08, 0x70, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x03, - 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0xad, 0x01, 0x0a, 0x28, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x21, + 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, + 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, 0xff, 0x01, 0x28, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, + 0x74, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x8a, 0x03, 0x0a, 0x1d, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, + 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, + 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4a, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, + 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, + 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, + 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x08, + 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x73, 0x0a, 0x1e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, + 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x51, 0x0a, 0x0c, 0x61, 0x73, + 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0c, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xba, 0x01, + 0x0a, 0x27, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x03, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, + 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, + 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xdb, 0x01, 0x0a, 0x28, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, + 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, + 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xbf, 0x01, 0x0a, 0x27, 0x53, 0x65, 0x74, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, - 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, - 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, - 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, + 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, - 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x4a, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, - 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, - 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, - 0x2c, 0x7d, 0x24, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x08, 0xf2, - 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x73, 0x0a, 0x1e, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, - 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x51, 0x0a, 0x0c, 0x61, 0x73, 0x73, - 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, - 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xba, 0x01, 0x0a, - 0x27, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x39, - 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xdb, 0x01, 0x0a, 0x28, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, - 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0a, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xbf, 0x01, 0x0a, 0x27, 0x53, 0x65, 0x74, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, - 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, - 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xb9, 0x01, 0x0a, 0x2f, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x59, 0x0a, - 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, - 0xff, 0x01, 0x28, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x3a, 0x08, 0xf2, 0xaa, 0x19, - 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x98, 0x03, 0x0a, 0x24, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x63, - 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, - 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, - 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, - 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4a, 0x0a, - 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, - 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x0b, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, - 0x22, 0x79, 0x0a, 0x25, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, - 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x08, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xc8, 0x01, 0x0a, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, - 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5b, - 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xe4, 0x01, 0x0a, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, + 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xb9, 0x01, 0x0a, 0x2f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x03, 0x69, 0x64, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x59, + 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x1e, - 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, - 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, - 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xc5, 0x01, - 0x0a, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x06, 0x66, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, + 0x18, 0xff, 0x01, 0x28, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x3a, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x98, 0x03, 0x0a, 0x24, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x63, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, + 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4a, + 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, + 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x0b, 0x70, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, + 0x01, 0x22, 0x79, 0x0a, 0x25, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, - 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x58, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, - 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x32, 0x9e, 0x11, 0x0a, 0x1a, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x72, 0x79, 0x12, 0xa9, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x1a, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x56, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, - 0x12, 0x4e, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, - 0x12, 0x93, 0x02, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x74, + 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x08, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x98, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x91, 0x01, 0x12, 0x8e, 0x01, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x65, 0x6e, - 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x61, 0x73, 0x73, - 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x66, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x12, 0xe9, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x12, 0x63, 0x2f, - 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, - 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0xba, 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, - 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xc8, 0x01, 0x0a, + 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x5b, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xe4, 0x01, 0x0a, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbf, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb8, 0x01, 0x1a, 0xb2, 0x01, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x73, 0x73, 0x6f, - 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x65, 0x6e, 0x64, 0x5f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x69, 0x64, 0x73, 0x2e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x3a, 0x01, 0x2a, 0x12, - 0xf4, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x8c, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x85, - 0x01, 0x2a, 0x82, 0x01, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x03, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, + 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xc5, + 0x01, 0x0a, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, + 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x58, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x32, 0x9e, 0x11, 0x0a, 0x1a, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xa9, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x1a, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x56, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x50, 0x12, 0x4e, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, - 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, - 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x66, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x12, 0xef, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, - 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, - 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x60, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5a, 0x12, 0x58, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x73, 0x12, 0x93, 0x02, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, + 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x98, 0x01, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x91, 0x01, 0x12, 0x8e, 0x01, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x65, + 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x65, 0x6e, 0x64, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x61, 0x73, + 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, + 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x12, 0xe9, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x12, 0x63, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x61, - 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, - 0x2e, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x12, 0xd6, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, - 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x43, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x73, 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x82, 0x02, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, + 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0xba, 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, + 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbf, + 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb8, 0x01, 0x1a, 0xb2, 0x01, 0x2f, 0x61, 0x73, 0x2f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x73, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x65, 0x6e, 0x64, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x3a, 0x01, 0x2a, + 0x12, 0xf4, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, + 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x8c, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x85, 0x01, 0x2a, 0x82, 0x01, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, + 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x73, 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x12, 0xef, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6d, 0x1a, 0x68, 0x2f, 0x61, 0x73, 0x2f, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x6e, 0x12, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, + 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, + 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x60, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5a, 0x12, + 0x58, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, + 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, + 0x73, 0x2e, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x12, 0xd6, 0x01, 0x0a, 0x17, 0x4c, 0x69, + 0x73, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x43, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x82, 0x02, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, + 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6d, 0x1a, 0x68, 0x2f, 0x61, 0x73, 0x2f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x73, 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xcd, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, + 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x58, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x2a, 0x50, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xcd, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x73, - 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x58, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x52, 0x2a, 0x50, 0x2f, 0x61, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, - 0x2f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x66, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, - 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/applicationserver_pubsub.pb.go b/pkg/ttnpb/applicationserver_pubsub.pb.go index ca6235c0f9..fffcad13e3 100644 --- a/pkg/ttnpb/applicationserver_pubsub.pb.go +++ b/pkg/ttnpb/applicationserver_pubsub.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -1174,196 +1173,180 @@ var file_lorawan_stack_api_applicationserver_pubsub_proto_rawDesc = []byte{ 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, - 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, - 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xca, 0x01, 0x0a, 0x1c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x45, - 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x5f, 0x73, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x08, 0x70, 0x75, 0x62, - 0x53, 0x75, 0x62, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, - 0xc1, 0x21, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, - 0x75, 0x62, 0x53, 0x75, 0x62, 0x12, 0x50, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, - 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, - 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, - 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, - 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x14, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x74, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, - 0x53, 0x75, 0x62, 0x2e, 0x4e, 0x41, 0x54, 0x53, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x04, 0x6d, 0x71, 0x74, 0x74, - 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x51, 0x54, 0x54, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x71, 0x74, 0x74, 0x12, 0x4b, - 0x0a, 0x07, 0x61, 0x77, 0x73, 0x5f, 0x69, 0x6f, 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x30, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, - 0x75, 0x62, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6f, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x48, 0x00, 0x52, 0x06, 0x61, 0x77, 0x73, 0x49, 0x6f, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x62, - 0x61, 0x73, 0x65, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x09, 0x62, 0x61, 0x73, 0x65, 0x54, 0x6f, - 0x70, 0x69, 0x63, 0x12, 0x4e, 0x0a, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, - 0x70, 0x75, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, - 0x75, 0x73, 0x68, 0x12, 0x54, 0x0a, 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, - 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xca, 0x01, 0x0a, 0x1c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, - 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, - 0x6e, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x0e, 0x75, 0x70, 0x6c, - 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, + 0x45, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x5f, 0x73, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x08, 0x70, 0x75, + 0x62, 0x53, 0x75, 0x62, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, + 0x22, 0xc1, 0x21, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x12, 0x50, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, + 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x14, 0x32, 0x1e, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x06, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x74, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, - 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x75, 0x70, - 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x56, 0x0a, 0x11, 0x75, - 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4e, 0x41, 0x54, 0x53, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x04, 0x6d, 0x71, 0x74, + 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x51, 0x54, 0x54, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x71, 0x74, 0x74, 0x12, + 0x4b, 0x0a, 0x07, 0x61, 0x77, 0x73, 0x5f, 0x69, 0x6f, 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, + 0x53, 0x75, 0x62, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6f, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x61, 0x77, 0x73, 0x49, 0x6f, 0x74, 0x12, 0x26, 0x0a, 0x0a, + 0x62, 0x61, 0x73, 0x65, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x09, 0x62, 0x61, 0x73, 0x65, 0x54, + 0x6f, 0x70, 0x69, 0x63, 0x12, 0x4e, 0x0a, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x5f, 0x70, 0x75, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x50, 0x75, 0x73, 0x68, 0x12, 0x54, 0x0a, 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, + 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x0e, 0x75, 0x70, + 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x75, + 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x56, 0x0a, 0x11, + 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, + 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x52, 0x10, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, + 0x65, 0x70, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, + 0x12, 0x4c, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x6b, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x10, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, - 0x7a, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, - 0x70, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, - 0x4c, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x6b, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x65, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x6b, 0x12, 0x4e, + 0x0a, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x63, 0x6b, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x6b, 0x12, 0x4e, 0x0a, - 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x63, 0x6b, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, - 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x61, 0x63, 0x6b, 0x12, 0x4e, 0x0a, - 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, - 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, - 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x12, 0x52, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, - 0x65, 0x75, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, - 0x75, 0x65, 0x75, 0x65, 0x64, 0x12, 0x67, 0x0a, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, - 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x52, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, - 0x65, 0x75, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x52, - 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, 0x76, 0x65, - 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x61, 0x63, 0x6b, 0x12, 0x4e, + 0x0a, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x52, + 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x6c, 0x76, - 0x65, 0x64, 0x12, 0x4c, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x1a, 0x41, 0x0a, 0x0c, 0x4e, 0x41, 0x54, 0x53, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x12, 0x27, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x09, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, - 0x01, 0x10, 0x01, 0x1a, 0xb4, 0x09, 0x0a, 0x0c, 0x4d, 0x51, 0x54, 0x54, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, - 0x01, 0x01, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x24, 0x0a, - 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x17, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x08, - 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x18, 0x64, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x57, 0x0a, - 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x5f, 0x71, 0x6f, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x51, 0x54, 0x54, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x2e, 0x51, 0x6f, 0x53, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x51, 0x6f, 0x73, 0x12, 0x53, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x5f, 0x71, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x74, 0x74, + 0x67, 0x65, 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, + 0x65, 0x64, 0x12, 0x52, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, + 0x75, 0x65, 0x75, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, - 0x51, 0x54, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x51, 0x6f, 0x53, 0x52, - 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x51, 0x6f, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x75, - 0x73, 0x65, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x73, - 0x65, 0x54, 0x6c, 0x73, 0x12, 0xbe, 0x01, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa6, 0x01, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x40, - 0xf2, 0xaa, 0x19, 0x99, 0x01, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, - 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4e, 0x65, 0x77, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, - 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x05, - 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0xcf, 0x01, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x42, - 0xa6, 0x01, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x40, 0xf2, 0xaa, 0x19, 0x99, 0x01, 0x1a, - 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, - 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, - 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, - 0x4e, 0x65, 0x77, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, - 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, - 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, - 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, - 0x47, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x12, 0xcd, 0x01, 0x0a, 0x0e, 0x74, 0x6c, 0x73, 0x5f, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x12, 0x67, 0x0a, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x52, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x6c, + 0x76, 0x65, 0x64, 0x12, 0x4c, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x1a, 0x41, 0x0a, 0x0c, 0x4e, 0x41, 0x54, 0x53, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x12, 0x27, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, + 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, + 0x08, 0x01, 0x10, 0x01, 0x1a, 0xb4, 0x09, 0x0a, 0x0c, 0x4d, 0x51, 0x54, 0x54, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, + 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, + 0x88, 0x01, 0x01, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x24, + 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x17, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x70, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x18, 0x64, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x57, + 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x5f, 0x71, 0x6f, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x51, 0x54, 0x54, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x51, 0x6f, 0x53, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x51, 0x6f, 0x73, 0x12, 0x53, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x5f, 0x71, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, + 0x4d, 0x51, 0x54, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x51, 0x6f, 0x53, + 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x51, 0x6f, 0x73, 0x12, 0x17, 0x0a, 0x07, + 0x75, 0x73, 0x65, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, + 0x73, 0x65, 0x54, 0x6c, 0x73, 0x12, 0xbe, 0x01, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa6, 0x01, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, + 0x40, 0xf2, 0xaa, 0x19, 0x99, 0x01, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, + 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, + 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4e, 0x65, 0x77, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, + 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, + 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, + 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0xcf, 0x01, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa6, 0x01, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x40, 0xf2, 0xaa, 0x19, 0x99, 0x01, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, @@ -1374,212 +1357,225 @@ var file_lorawan_stack_api_applicationserver_pubsub_proto_rawDesc = []byte{ 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x2e, 0x47, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x0c, 0x74, 0x6c, 0x73, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x55, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x51, 0x54, 0x54, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x3a, - 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x44, 0x0a, 0x03, 0x51, 0x6f, - 0x53, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x54, 0x5f, 0x4d, 0x4f, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x43, - 0x45, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x54, 0x5f, 0x4c, 0x45, 0x41, 0x53, 0x54, 0x5f, - 0x4f, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x58, 0x41, 0x43, 0x54, 0x4c, - 0x59, 0x5f, 0x4f, 0x4e, 0x43, 0x45, 0x10, 0x02, 0x1a, 0x06, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, - 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x1a, 0x87, 0x0a, 0x0a, 0x0e, 0x41, - 0x57, 0x53, 0x49, 0x6f, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x9b, 0x02, - 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x82, - 0x02, 0xfa, 0x42, 0xfe, 0x01, 0x72, 0xfb, 0x01, 0x52, 0x0a, 0x61, 0x66, 0x2d, 0x73, 0x6f, 0x75, - 0x74, 0x68, 0x2d, 0x31, 0x52, 0x09, 0x61, 0x70, 0x2d, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x31, 0x52, - 0x0e, 0x61, 0x70, 0x2d, 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x31, 0x52, - 0x0e, 0x61, 0x70, 0x2d, 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x32, 0x52, - 0x0a, 0x61, 0x70, 0x2d, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x2d, 0x31, 0x52, 0x0e, 0x61, 0x70, 0x2d, - 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x31, 0x52, 0x0e, 0x61, 0x70, 0x2d, - 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x32, 0x52, 0x0c, 0x63, 0x61, 0x2d, - 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x2d, 0x31, 0x52, 0x0c, 0x65, 0x75, 0x2d, 0x63, 0x65, - 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x2d, 0x31, 0x52, 0x0a, 0x65, 0x75, 0x2d, 0x6e, 0x6f, 0x72, 0x74, - 0x68, 0x2d, 0x31, 0x52, 0x0a, 0x65, 0x75, 0x2d, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x2d, 0x31, 0x52, - 0x09, 0x65, 0x75, 0x2d, 0x77, 0x65, 0x73, 0x74, 0x2d, 0x31, 0x52, 0x09, 0x65, 0x75, 0x2d, 0x77, - 0x65, 0x73, 0x74, 0x2d, 0x32, 0x52, 0x09, 0x65, 0x75, 0x2d, 0x77, 0x65, 0x73, 0x74, 0x2d, 0x33, - 0x52, 0x0a, 0x6d, 0x65, 0x2d, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x2d, 0x31, 0x52, 0x09, 0x73, 0x61, - 0x2d, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x31, 0x52, 0x09, 0x75, 0x73, 0x2d, 0x65, 0x61, 0x73, 0x74, - 0x2d, 0x31, 0x52, 0x09, 0x75, 0x73, 0x2d, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x32, 0x52, 0x09, 0x75, - 0x73, 0x2d, 0x77, 0x65, 0x73, 0x74, 0x2d, 0x31, 0x52, 0x09, 0x75, 0x73, 0x2d, 0x77, 0x65, 0x73, - 0x74, 0x2d, 0x32, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x0a, 0x61, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, - 0x75, 0x62, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6f, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x5c, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, - 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x41, - 0x57, 0x53, 0x49, 0x6f, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x73, - 0x73, 0x75, 0x6d, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x0a, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, - 0x52, 0x6f, 0x6c, 0x65, 0x12, 0xa3, 0x01, 0x0a, 0x10, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x78, 0xfa, 0x42, 0x75, 0x72, 0x73, 0x18, 0x80, 0x01, 0x32, 0x6e, 0x5e, 0x28, 0x28, 0x28, 0x5b, - 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, - 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, - 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, - 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, - 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, - 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7c, 0x29, 0x24, 0x52, 0x0f, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x5f, 0x0a, 0x07, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x41, - 0x57, 0x53, 0x49, 0x6f, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x44, 0x65, + 0x2e, 0x47, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x12, 0xcd, 0x01, 0x0a, 0x0e, 0x74, 0x6c, 0x73, + 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0xa6, 0x01, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x40, 0xf2, 0xaa, 0x19, 0x99, + 0x01, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, + 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x2e, 0x4e, 0x65, 0x77, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, + 0x67, 0x22, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, + 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x0c, 0x74, 0x6c, 0x73, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x55, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, 0x4d, 0x51, 0x54, + 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, + 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x44, 0x0a, 0x03, 0x51, + 0x6f, 0x53, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x54, 0x5f, 0x4d, 0x4f, 0x53, 0x54, 0x5f, 0x4f, 0x4e, + 0x43, 0x45, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x54, 0x5f, 0x4c, 0x45, 0x41, 0x53, 0x54, + 0x5f, 0x4f, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x58, 0x41, 0x43, 0x54, + 0x4c, 0x59, 0x5f, 0x4f, 0x4e, 0x43, 0x45, 0x10, 0x02, 0x1a, 0x06, 0xea, 0xaa, 0x19, 0x02, 0x18, + 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x1a, 0x87, 0x0a, 0x0a, 0x0e, + 0x41, 0x57, 0x53, 0x49, 0x6f, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x9b, + 0x02, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x82, 0x02, 0xfa, 0x42, 0xfe, 0x01, 0x72, 0xfb, 0x01, 0x52, 0x0a, 0x61, 0x66, 0x2d, 0x73, 0x6f, + 0x75, 0x74, 0x68, 0x2d, 0x31, 0x52, 0x09, 0x61, 0x70, 0x2d, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x31, + 0x52, 0x0e, 0x61, 0x70, 0x2d, 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x31, + 0x52, 0x0e, 0x61, 0x70, 0x2d, 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x32, + 0x52, 0x0a, 0x61, 0x70, 0x2d, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x2d, 0x31, 0x52, 0x0e, 0x61, 0x70, + 0x2d, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x31, 0x52, 0x0e, 0x61, 0x70, + 0x2d, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x32, 0x52, 0x0c, 0x63, 0x61, + 0x2d, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x2d, 0x31, 0x52, 0x0c, 0x65, 0x75, 0x2d, 0x63, + 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x2d, 0x31, 0x52, 0x0a, 0x65, 0x75, 0x2d, 0x6e, 0x6f, 0x72, + 0x74, 0x68, 0x2d, 0x31, 0x52, 0x0a, 0x65, 0x75, 0x2d, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x2d, 0x31, + 0x52, 0x09, 0x65, 0x75, 0x2d, 0x77, 0x65, 0x73, 0x74, 0x2d, 0x31, 0x52, 0x09, 0x65, 0x75, 0x2d, + 0x77, 0x65, 0x73, 0x74, 0x2d, 0x32, 0x52, 0x09, 0x65, 0x75, 0x2d, 0x77, 0x65, 0x73, 0x74, 0x2d, + 0x33, 0x52, 0x0a, 0x6d, 0x65, 0x2d, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x2d, 0x31, 0x52, 0x09, 0x73, + 0x61, 0x2d, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x31, 0x52, 0x09, 0x75, 0x73, 0x2d, 0x65, 0x61, 0x73, + 0x74, 0x2d, 0x31, 0x52, 0x09, 0x75, 0x73, 0x2d, 0x65, 0x61, 0x73, 0x74, 0x2d, 0x32, 0x52, 0x09, + 0x75, 0x73, 0x2d, 0x77, 0x65, 0x73, 0x74, 0x2d, 0x31, 0x52, 0x09, 0x75, 0x73, 0x2d, 0x77, 0x65, + 0x73, 0x74, 0x2d, 0x32, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x0a, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, + 0x53, 0x75, 0x62, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6f, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x5c, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x75, 0x6d, + 0x65, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, + 0x41, 0x57, 0x53, 0x49, 0x6f, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x41, + 0x73, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x0a, 0x61, 0x73, 0x73, 0x75, 0x6d, + 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0xa3, 0x01, 0x0a, 0x10, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x78, 0xfa, 0x42, 0x75, 0x72, 0x73, 0x18, 0x80, 0x01, 0x32, 0x6e, 0x5e, 0x28, 0x28, 0x28, + 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, + 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, + 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, + 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, + 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7c, 0x29, 0x24, 0x52, 0x0f, 0x65, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x5f, 0x0a, 0x07, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x2e, + 0x41, 0x57, 0x53, 0x49, 0x6f, 0x54, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x1a, 0xb2, 0x01, 0x0a, + 0x09, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x0d, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x13, 0xfa, 0x42, 0x10, 0x72, 0x0e, 0x10, 0x10, 0x18, 0x80, 0x01, 0x32, 0x07, 0x5e, + 0x5b, 0x5c, 0x77, 0x5d, 0x2a, 0x24, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, + 0x79, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x28, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, + 0x01, 0x1a, 0xe6, 0x01, 0x0a, 0x0a, 0x41, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x12, 0x4b, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xfa, + 0x42, 0x36, 0x72, 0x34, 0x32, 0x32, 0x5e, 0x61, 0x72, 0x6e, 0x3a, 0x61, 0x77, 0x73, 0x3a, 0x69, + 0x61, 0x6d, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x32, 0x7d, 0x3a, 0x72, 0x6f, + 0x6c, 0x65, 0x5c, 0x2f, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2b, + 0x3d, 0x2c, 0x2e, 0x40, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x3b, 0x0a, + 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x18, 0xc8, 0x09, 0x32, 0x10, 0x5e, 0x5b, + 0x5c, 0x77, 0x2b, 0x3d, 0x2c, 0x2e, 0x40, 0x3a, 0x5c, 0x2f, 0x2d, 0x5d, 0x2a, 0x24, 0x52, 0x0a, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x10, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x1a, 0x61, 0x0a, 0x12, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x1a, 0xb2, 0x01, 0x0a, 0x09, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x0d, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x13, 0xfa, 0x42, 0x10, 0x72, 0x0e, 0x10, 0x10, 0x18, 0x80, 0x01, 0x32, 0x07, 0x5e, 0x5b, - 0x5c, 0x77, 0x5d, 0x2a, 0x24, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, - 0x49, 0x64, 0x12, 0x33, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x18, 0x28, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, - 0x1a, 0xe6, 0x01, 0x0a, 0x0a, 0x41, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, - 0x4b, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xfa, 0x42, - 0x36, 0x72, 0x34, 0x32, 0x32, 0x5e, 0x61, 0x72, 0x6e, 0x3a, 0x61, 0x77, 0x73, 0x3a, 0x69, 0x61, - 0x6d, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x32, 0x7d, 0x3a, 0x72, 0x6f, 0x6c, - 0x65, 0x5c, 0x2f, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2b, 0x3d, - 0x2c, 0x2e, 0x40, 0x2d, 0x5d, 0x2b, 0x24, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, - 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x18, 0xc8, 0x09, 0x32, 0x10, 0x5e, 0x5b, 0x5c, - 0x77, 0x2b, 0x3d, 0x2c, 0x2e, 0x40, 0x3a, 0x5c, 0x2f, 0x2d, 0x5d, 0x2a, 0x24, 0x52, 0x0a, 0x65, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x10, 0x73, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, - 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x1a, 0x61, 0x0a, 0x12, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x41, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x22, 0xfa, 0x42, 0x1f, 0x72, 0x1d, 0x18, 0x80, 0x01, 0x32, 0x18, 0x5e, - 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x24, 0x52, 0x09, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x4e, 0x61, - 0x6d, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x3a, 0x08, 0xf2, 0xaa, - 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x32, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x1d, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x3a, 0x08, - 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, - 0x10, 0x01, 0x42, 0x0f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x03, - 0xf8, 0x42, 0x01, 0x22, 0x51, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x70, 0x75, 0x62, - 0x73, 0x75, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x52, 0x07, 0x70, - 0x75, 0x62, 0x73, 0x75, 0x62, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x18, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x46, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x2e, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xa2, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x48, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x12, 0x41, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x22, 0xfa, 0x42, 0x1f, 0x72, 0x1d, 0x18, 0x80, 0x01, 0x32, 0x18, + 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x24, 0x52, 0x09, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x4e, + 0x61, 0x6d, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x3a, 0x08, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x32, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x1d, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x3a, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x01, 0x10, 0x01, 0x42, 0x0f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, + 0x03, 0xf8, 0x42, 0x01, 0x22, 0x51, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x70, 0x75, + 0x62, 0x73, 0x75, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x52, 0x07, + 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x18, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x2e, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0xa2, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x48, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, + 0x62, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xbf, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xbf, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, - 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x3a, 0x08, 0xf2, - 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0x9d, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x41, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x3a, 0x08, + 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0x9d, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x74, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, + 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x73, + 0x75, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x12, 0x39, 0x0a, + 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x32, 0xbf, 0x06, 0x0a, 0x19, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x6a, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x28, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, + 0x2f, 0x61, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2d, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x73, 0x12, 0x9f, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x73, 0x75, - 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x12, 0x39, 0x0a, 0x0a, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x32, 0xbf, 0x06, 0x0a, 0x19, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x6a, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x28, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x46, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x73, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, - 0x61, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2d, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x73, 0x12, 0x9f, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x42, 0x12, 0x40, 0x2f, 0x61, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2f, 0x7b, 0x69, - 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x70, 0x75, 0x62, 0x5f, 0x73, 0x75, 0x62, 0x5f, - 0x69, 0x64, 0x7d, 0x12, 0x8e, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, - 0x53, 0x75, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x73, 0x22, - 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x61, 0x73, 0x2f, 0x70, 0x75, 0x62, - 0x73, 0x75, 0x62, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xef, 0x01, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x2b, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, - 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, - 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x22, 0x97, 0x01, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x90, 0x01, 0x1a, 0x4e, 0x2f, 0x61, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x73, - 0x75, 0x62, 0x2f, 0x7b, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, - 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x70, 0x75, 0x62, 0x5f, 0x73, - 0x75, 0x62, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x3b, 0x22, 0x36, 0x2f, 0x61, 0x73, - 0x2f, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2f, 0x7b, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2e, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x42, 0x12, 0x40, 0x2f, 0x61, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x90, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x12, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, - 0x62, 0x53, 0x75, 0x62, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x2a, - 0x38, 0x2f, 0x61, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2f, 0x7b, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x70, 0x75, - 0x62, 0x5f, 0x73, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x7d, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, - 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x70, 0x75, 0x62, 0x5f, 0x73, 0x75, 0x62, + 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8e, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, + 0x62, 0x53, 0x75, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x73, + 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x61, 0x73, 0x2f, 0x70, 0x75, + 0x62, 0x73, 0x75, 0x62, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xef, 0x01, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x2b, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, + 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, + 0x53, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x22, 0x97, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x90, 0x01, 0x1a, 0x4e, 0x2f, 0x61, 0x73, 0x2f, 0x70, 0x75, 0x62, + 0x73, 0x75, 0x62, 0x2f, 0x7b, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2e, 0x69, 0x64, 0x73, 0x2e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x7b, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x70, 0x75, 0x62, 0x5f, + 0x73, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x3b, 0x22, 0x36, 0x2f, 0x61, + 0x73, 0x2f, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2f, 0x7b, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, + 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x90, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x12, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, + 0x2a, 0x38, 0x2f, 0x61, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x2f, 0x7b, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x70, + 0x75, 0x62, 0x5f, 0x73, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x7d, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/applicationserver_web.pb.go b/pkg/ttnpb/applicationserver_web.pb.go index 0612e02dc8..f4c7efdd89 100644 --- a/pkg/ttnpb/applicationserver_web.pb.go +++ b/pkg/ttnpb/applicationserver_web.pb.go @@ -23,7 +23,6 @@ package ttnpb import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -1384,479 +1383,476 @@ var file_lorawan_stack_api_applicationserver_web_proto_rawDesc = []byte{ 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, - 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcc, 0x01, 0x0a, 0x1d, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x59, 0x0a, 0x0f, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, - 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, - 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, - 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, - 0x2c, 0x7d, 0x24, 0x52, 0x09, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x3a, 0x08, - 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x7b, 0x0a, 0x25, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x12, 0x48, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, - 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, - 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, - 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, - 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x84, 0x02, 0x0a, 0x1f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x37, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, - 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, - 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x14, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x29, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, - 0x18, 0x64, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0xa1, 0x0e, 0x0a, - 0x1a, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, - 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x51, 0x0a, 0x03, 0x69, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x1b, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x18, 0x14, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, - 0x01, 0x01, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x08, 0x69, - 0x6e, 0x66, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x07, 0x69, 0x6e, 0x66, 0x6f, 0x55, 0x72, 0x6c, - 0x12, 0x35, 0x0a, 0x11, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x10, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, - 0x88, 0x01, 0x01, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x68, 0x0a, 0x07, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcc, 0x01, 0x0a, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, - 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x15, 0xfa, 0x42, 0x12, 0x9a, 0x01, 0x0f, 0x10, 0x32, - 0x22, 0x04, 0x72, 0x02, 0x18, 0x40, 0x2a, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x07, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3f, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x14, 0x32, + 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x59, 0x0a, 0x0f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x77, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, + 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, + 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, + 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x09, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x3a, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x7b, 0x0a, 0x25, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x12, 0x48, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, + 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, + 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, + 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x84, 0x02, 0x0a, 0x1f, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x37, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, - 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x47, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, - 0x12, 0x35, 0x0a, 0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, - 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x14, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, - 0x6b, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x59, 0x0a, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, - 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, - 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x0d, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x5f, 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x6f, 0x72, - 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, - 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x10, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, - 0x7a, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, - 0x70, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x14, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x29, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x18, 0x64, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0xa1, 0x0e, + 0x0a, 0x1a, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x51, 0x0a, 0x03, + 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, + 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x18, 0x14, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, + 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, + 0x88, 0x01, 0x01, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x08, + 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x07, 0x69, 0x6e, 0x66, 0x6f, 0x55, 0x72, + 0x6c, 0x12, 0x35, 0x0a, 0x11, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x10, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, + 0x03, 0x88, 0x01, 0x01, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x68, 0x0a, + 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x15, 0xfa, 0x42, 0x12, 0x9a, 0x01, 0x0f, 0x10, + 0x32, 0x22, 0x04, 0x72, 0x02, 0x18, 0x40, 0x2a, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x07, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3f, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x14, + 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, + 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, + 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x47, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x6a, 0x6f, - 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x55, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, + 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x73, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x14, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x59, 0x0a, 0x0e, 0x75, 0x70, 0x6c, 0x69, + 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x5f, 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x6f, + 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x6b, 0x12, - 0x57, 0x0a, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x63, 0x6b, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x61, 0x63, 0x6b, 0x12, 0x57, 0x0a, 0x0d, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x67, 0x65, 0x52, 0x10, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, + 0x65, 0x70, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x6a, + 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x55, 0x0a, 0x0c, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x6e, - 0x74, 0x12, 0x5b, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, - 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x5b, - 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, - 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x61, 0x67, 0x65, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x6b, + 0x12, 0x57, 0x0a, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x63, + 0x6b, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x64, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x12, 0x70, 0x0a, 0x1a, 0x64, - 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x6e, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, - 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, - 0x75, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x5b, 0x0a, - 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, - 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x12, 0x55, 0x0a, 0x0c, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, + 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x61, 0x63, 0x6b, 0x12, 0x57, 0x0a, 0x0d, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, - 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, - 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x1a, 0x3a, 0x0a, 0x0c, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x26, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x22, 0x67, 0x0a, 0x1b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, - 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, - 0x48, 0x0a, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, - 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x09, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0xaa, 0x04, 0x0a, 0x18, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x5f, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, - 0x68, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x48, 0x00, 0x52, 0x07, - 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x65, 0x0a, 0x09, 0x75, 0x6e, 0x68, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x79, 0x48, 0x00, 0x52, 0x09, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x1a, 0x26, - 0x0a, 0x1a, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x3a, 0x08, 0xf2, 0xaa, - 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x1a, 0x89, 0x02, 0x0a, 0x1c, 0x57, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x6e, - 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, - 0x12, 0x59, 0x0a, 0x16, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x41, 0x74, 0x12, 0x5b, 0x0a, 0x1b, 0x6c, - 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, - 0x70, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x18, - 0x6c, 0x61, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, - 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, - 0x10, 0x00, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x42, 0x08, 0x0a, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x8f, 0x0f, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x51, 0x0a, - 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, - 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, - 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, - 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x62, 0x61, - 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x12, - 0x60, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x15, 0xfa, 0x42, 0x12, 0x9a, 0x01, 0x0f, 0x10, 0x32, 0x22, 0x04, 0x72, 0x02, 0x18, - 0x40, 0x2a, 0x05, 0x72, 0x03, 0x18, 0x80, 0x20, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x12, 0x3f, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x14, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x12, 0x58, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, + 0x6e, 0x74, 0x12, 0x5b, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, + 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, + 0x5b, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, + 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, - 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x12, 0x5f, 0x0a, 0x0f, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, - 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x32, 0x0a, - 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, - 0x01, 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x70, 0x69, 0x4b, 0x65, - 0x79, 0x12, 0x51, 0x0a, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x57, 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, - 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, - 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x75, 0x70, 0x6c, - 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x4b, 0x0a, - 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, - 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, - 0x6a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x4d, 0x0a, 0x0c, 0x64, 0x6f, - 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x12, 0x70, 0x0a, 0x1a, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, + 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x64, 0x6f, - 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x6b, 0x12, 0x4f, 0x0a, 0x0d, 0x64, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x5b, + 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, 0x76, 0x65, + 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x12, 0x55, 0x0a, 0x0c, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x1a, 0x3a, 0x0a, + 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x26, 0x0a, 0x07, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x22, 0x67, 0x0a, 0x1b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x12, 0x48, 0x0a, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0xaa, 0x04, 0x0a, 0x18, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x5f, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x48, 0x00, 0x52, + 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x65, 0x0a, 0x09, 0x75, 0x6e, 0x68, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x79, 0x48, 0x00, 0x52, 0x09, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x1a, + 0x26, 0x0a, 0x1a, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x3a, 0x08, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x1a, 0x89, 0x02, 0x0a, 0x1c, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, + 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x61, 0x69, 0x6c, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, + 0x73, 0x12, 0x59, 0x0a, 0x16, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x41, 0x74, 0x12, 0x5b, 0x0a, 0x1b, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, + 0x6d, 0x70, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, + 0x18, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x6d, + 0x70, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x01, 0x10, 0x00, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x42, 0x08, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x8f, 0x0f, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x51, + 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, + 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x08, 0x62, + 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, + 0x12, 0x60, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x42, 0x15, 0xfa, 0x42, 0x12, 0x9a, 0x01, 0x0f, 0x10, 0x32, 0x22, 0x04, 0x72, 0x02, + 0x18, 0x40, 0x2a, 0x05, 0x72, 0x03, 0x18, 0x80, 0x20, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x12, 0x3f, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x14, 0x32, 0x1e, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x06, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x12, 0x58, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x12, 0x5f, 0x0a, + 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x32, + 0x0a, 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, + 0x80, 0x01, 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x70, 0x69, 0x4b, + 0x65, 0x79, 0x12, 0x51, 0x0a, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x57, 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, + 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x64, 0x6f, - 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x61, 0x63, 0x6b, 0x12, 0x4f, 0x0a, 0x0d, 0x64, 0x6f, - 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x75, 0x70, + 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x4b, + 0x0a, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, + 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x4d, 0x0a, 0x0c, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x6b, 0x12, 0x4f, 0x0a, 0x0d, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x64, - 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x64, - 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, - 0x12, 0x53, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, - 0x75, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, - 0x75, 0x65, 0x75, 0x65, 0x64, 0x12, 0x68, 0x0a, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, - 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, - 0x75, 0x65, 0x75, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, - 0x53, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, 0x76, - 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, - 0x6c, 0x76, 0x65, 0x64, 0x12, 0x4d, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x61, 0x63, 0x6b, 0x12, 0x4f, 0x0a, 0x0d, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x0f, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x12, 0x53, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, + 0x65, 0x75, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x12, 0x68, 0x0a, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, - 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x1a, 0x3a, 0x0a, - 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x12, 0x53, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, + 0x76, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x12, 0x4d, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x48, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x1a, 0x3a, + 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x30, 0x0a, + 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x3a, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x55, 0x0a, 0x13, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, + 0x12, 0x3e, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x08, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, + 0x22, 0xa9, 0x01, 0x0a, 0x19, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x50, + 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x36, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, + 0x1a, 0x3a, 0x0a, 0x0c, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x30, 0x0a, 0x07, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x3a, 0x08, - 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x55, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, - 0x3e, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, - 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x08, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x22, - 0xa9, 0x01, 0x0a, 0x19, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, - 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x50, 0x0a, - 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa4, 0x01, 0x0a, + 0x1c, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, + 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x22, 0xb6, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xa1, 0x01, 0x0a, + 0x1c, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, + 0x07, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x1a, - 0x3a, 0x0a, 0x0c, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa4, 0x01, 0x0a, 0x1c, - 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, - 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x03, - 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, - 0x73, 0x6b, 0x22, 0xb6, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, - 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, - 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xa1, 0x01, 0x0a, 0x1c, - 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, - 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x07, - 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x6f, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x77, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x22, 0xb4, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x03, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x63, 0x0a, 0x26, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, - 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x77, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, - 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, - 0xb4, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x63, 0x0a, 0x26, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, - 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x32, 0x8f, 0x09, 0x0a, 0x1a, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x6c, 0x0a, 0x0a, 0x47, 0x65, - 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x1a, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x22, 0x1b, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x2d, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x29, 0x12, 0x27, 0x2f, 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2d, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x93, 0x01, 0x0a, 0x0d, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x36, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, - 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x61, 0x73, 0x2f, - 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x32, 0x8f, 0x09, 0x0a, + 0x1a, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x6c, 0x0a, 0x0a, 0x47, + 0x65, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x1a, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x22, 0x1b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x2d, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0b, 0x47, 0x65, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x4a, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x44, 0x12, 0x42, 0x2f, 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x77, 0x65, 0x62, 0x68, - 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x92, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, - 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x2d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x93, 0x01, 0x0a, + 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x36, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x73, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x61, 0x73, + 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x2c, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x4a, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x44, 0x12, 0x42, 0x2f, 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x69, 0x64, 0x73, 0x2e, 0x77, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x92, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, + 0x2f, 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xf8, 0x01, + 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x9e, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x97, + 0x01, 0x1a, 0x52, 0x2f, 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, + 0x7b, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xf8, 0x01, 0x0a, - 0x03, 0x53, 0x65, 0x74, 0x12, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, - 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x9e, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x97, 0x01, - 0x1a, 0x52, 0x2f, 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, - 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x77, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x3e, 0x22, 0x39, 0x2f, 0x61, 0x73, 0x2f, 0x77, - 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x93, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, - 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x3c, 0x2a, 0x3a, 0x2f, 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, - 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, - 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x7b, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x42, 0x35, 0x5a, - 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, - 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x77, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x3e, 0x22, 0x39, 0x2f, 0x61, 0x73, 0x2f, + 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x93, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x3c, 0x2a, 0x3a, 0x2f, 0x61, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, + 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x7b, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x42, 0x31, + 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, + 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/client.pb.go b/pkg/ttnpb/client.pb.go index 9c9b77a9bd..631c950f7a 100644 --- a/pkg/ttnpb/client.pb.go +++ b/pkg/ttnpb/client.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" @@ -837,212 +836,209 @@ var file_lorawan_stack_api_client_proto_rawDesc = []byte{ 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, - 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, - 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, - 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x91, 0x0a, 0x0a, 0x06, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, - 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, - 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, - 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, - 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7d, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, - 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, - 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, - 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, - 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, - 0x10, 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x64, 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x15, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x5a, 0x0a, 0x11, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, - 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, + 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, + 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, + 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x91, 0x0a, 0x0a, 0x06, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, + 0x00, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7d, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, + 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, + 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, + 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, + 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x92, 0x01, + 0x02, 0x10, 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x64, 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, - 0x10, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x12, 0x20, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x06, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x12, 0x34, 0x0a, 0x0d, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, - 0x75, 0x72, 0x69, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, - 0x01, 0x09, 0x10, 0x0a, 0x22, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x69, 0x73, 0x12, 0x41, 0x0a, 0x14, 0x6c, 0x6f, 0x67, - 0x6f, 0x75, 0x74, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x69, - 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, 0x01, 0x09, 0x10, - 0x0a, 0x22, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x12, 0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, - 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x69, 0x73, 0x12, 0x35, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x65, 0x44, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x6b, - 0x69, 0x70, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x6b, 0x69, 0x70, 0x41, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, - 0x6f, 0x72, 0x73, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x6e, 0x64, - 0x6f, 0x72, 0x73, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x18, - 0x0d, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x0d, - 0xfa, 0x42, 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x3b, - 0x0a, 0x07, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x07, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x99, 0x01, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xde, 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, - 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x42, 0x06, 0xf2, 0xaa, 0x19, 0x02, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, - 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x5a, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x44, 0xfa, 0x42, 0x41, 0x72, 0x3f, 0x52, 0x00, 0x52, 0x09, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x52, 0x0a, 0x2d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, - 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, - 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x3a, 0x08, - 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xac, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x38, 0x0a, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x5b, 0x0a, 0x0c, 0x63, 0x6f, - 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, - 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x38, 0x0a, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xd9, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, + 0x15, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x5a, 0x0a, 0x11, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, + 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x52, 0x10, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x12, 0x20, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x06, 0x73, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x12, 0x34, 0x0a, 0x0d, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x5f, 0x75, 0x72, 0x69, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0f, 0xfa, 0x42, 0x0c, + 0x92, 0x01, 0x09, 0x10, 0x0a, 0x22, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x0c, 0x72, 0x65, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x69, 0x73, 0x12, 0x41, 0x0a, 0x14, 0x6c, 0x6f, + 0x67, 0x6f, 0x75, 0x74, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, + 0x69, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, 0x01, 0x09, + 0x10, 0x0a, 0x22, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x12, 0x6c, 0x6f, 0x67, 0x6f, 0x75, + 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x69, 0x73, 0x12, 0x35, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x73, + 0x6b, 0x69, 0x70, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x6b, 0x69, 0x70, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, + 0x64, 0x6f, 0x72, 0x73, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x6e, + 0x64, 0x6f, 0x72, 0x73, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, + 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, + 0x0d, 0xfa, 0x42, 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, + 0x3b, 0x0a, 0x07, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x07, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xfa, 0x42, 0x1e, 0x72, 0x1c, 0x52, 0x00, 0x52, - 0x02, 0x69, 0x64, 0x52, 0x03, 0x2d, 0x69, 0x64, 0x52, 0x07, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x22, 0xc7, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x99, 0x01, 0x0a, + 0x10, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x5b, 0x0a, - 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, - 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xb6, 0x01, 0x0a, 0x1c, 0x53, - 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0a, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, - 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x2a, 0x65, 0x0a, 0x09, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1c, 0x0a, 0x18, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, - 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x12, - 0x0a, 0x0e, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, - 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x46, 0x52, - 0x45, 0x53, 0x48, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x02, 0x1a, 0x0d, 0xea, 0xaa, 0x19, - 0x09, 0x18, 0x01, 0x2a, 0x05, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, - 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, - 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, + 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xde, 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x59, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x06, 0xf2, 0xaa, 0x19, 0x02, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x5a, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x44, 0xfa, 0x42, 0x41, 0x72, 0x3f, 0x52, 0x00, 0x52, 0x09, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x52, 0x0a, 0x2d, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, + 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x3a, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xac, 0x01, 0x0a, 0x13, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x38, 0x0a, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x5b, 0x0a, 0x0c, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x8a, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x38, 0x0a, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xd9, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xfa, 0x42, 0x1e, 0x72, 0x1c, 0x52, 0x00, + 0x52, 0x02, 0x69, 0x64, 0x52, 0x03, 0x2d, 0x69, 0x64, 0x52, 0x07, 0x2d, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x22, 0xc7, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x5b, + 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xb6, 0x01, 0x0a, 0x1c, + 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0a, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x2a, 0x65, 0x0a, 0x09, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x4f, + 0x52, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, + 0x12, 0x0a, 0x0e, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, + 0x44, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x46, + 0x52, 0x45, 0x53, 0x48, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x02, 0x1a, 0x0d, 0xea, 0xaa, + 0x19, 0x09, 0x18, 0x01, 0x2a, 0x05, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x42, 0x31, 0x5a, 0x2f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/client_services.pb.go b/pkg/ttnpb/client_services.pb.go index 5e2f22ece6..b410cb1c4a 100644 --- a/pkg/ttnpb/client_services.pb.go +++ b/pkg/ttnpb/client_services.pb.go @@ -21,7 +21,6 @@ package ttnpb import ( - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -42,131 +41,128 @@ var file_lorawan_stack_api_client_services_proto_rawDesc = []byte{ 0x0a, 0x27, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, - 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xcc, 0x07, 0x0a, 0x0e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xcf, 0x01, 0x0a, 0x06, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x22, 0x87, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x80, 0x01, 0x22, 0x2e, 0x2f, - 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, - 0x5a, 0x4b, 0x22, 0x46, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x68, 0x0a, - 0x03, 0x47, 0x65, 0x74, 0x12, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x22, 0x27, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, - 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xd3, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x8d, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x86, 0x01, 0x12, 0x08, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x73, 0x5a, 0x30, 0x12, 0x2e, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, - 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x73, 0x5a, 0x48, 0x12, 0x46, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x71, 0x0a, - 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xcc, 0x07, 0x0a, 0x0e, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xcf, 0x01, 0x0a, + 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x1a, 0x1f, 0x2f, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x69, - 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, - 0x12, 0x61, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x2a, 0x14, 0x2f, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x7d, 0x12, 0x6a, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x21, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1e, 0x22, 0x1c, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, - 0x66, 0x0a, 0x05, 0x50, 0x75, 0x72, 0x67, 0x65, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x32, 0xe3, 0x05, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x6c, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0xb4, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, - 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2c, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, - 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0xc9, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xc2, 0x01, 0x5a, 0x53, 0x12, 0x51, 0x2f, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, - 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x75, 0x73, 0x65, 0x72, - 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, - 0x5a, 0x6b, 0x12, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x63, - 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x91, 0x01, - 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x12, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, - 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x1a, - 0x2d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x3a, 0x01, - 0x2a, 0x12, 0x99, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, - 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, + 0x69, 0x65, 0x6e, 0x74, 0x22, 0x87, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x80, 0x01, 0x22, 0x2e, + 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, + 0x2a, 0x5a, 0x4b, 0x22, 0x46, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x68, + 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x22, + 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xd3, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x8d, + 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x86, 0x01, 0x12, 0x08, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x73, 0x5a, 0x30, 0x12, 0x2e, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x73, 0x5a, 0x48, 0x12, 0x46, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x71, + 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x1a, 0x1f, 0x2f, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, + 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, + 0x2a, 0x12, 0x61, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x2a, 0x14, + 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x6a, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, + 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1e, 0x22, 0x1c, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x12, 0x66, 0x0a, 0x05, 0x50, 0x75, 0x72, 0x67, 0x65, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x32, 0xe3, 0x05, 0x0a, 0x0c, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x6c, 0x0a, 0x0a, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0xb4, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2c, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xc9, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xc2, 0x01, 0x5a, 0x53, 0x12, 0x51, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x35, 0x5a, - 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, - 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x75, 0x73, 0x65, + 0x72, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x7d, 0x5a, 0x6b, 0x12, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, + 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x91, + 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x12, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, + 0x1a, 0x2d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x3a, + 0x01, 0x2a, 0x12, 0x99, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, + 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, + 0x2d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x42, 0x31, + 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, + 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_lorawan_stack_api_client_services_proto_goTypes = []interface{}{ diff --git a/pkg/ttnpb/cluster.pb.go b/pkg/ttnpb/cluster.pb.go index 05ce1f1df8..9503360115 100644 --- a/pkg/ttnpb/cluster.pb.go +++ b/pkg/ttnpb/cluster.pb.go @@ -21,7 +21,6 @@ package ttnpb import ( - _ "github.com/gogo/protobuf/gogoproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -117,29 +116,26 @@ var file_lorawan_stack_api_cluster_proto_rawDesc = []byte{ 0x0a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, - 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0xdd, 0x01, 0x0a, 0x08, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, - 0x67, 0x72, 0x70, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x08, 0x67, 0x72, 0x70, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x31, 0x0a, 0x05, 0x72, - 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x36, - 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x65, - 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, - 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, - 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x33, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0xdd, 0x01, 0x0a, 0x08, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, + 0x09, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x08, 0x67, 0x72, 0x70, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x31, 0x0a, 0x05, + 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, + 0x36, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, + 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, + 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/configuration_services.pb.go b/pkg/ttnpb/configuration_services.pb.go index 280139f943..00feb82421 100644 --- a/pkg/ttnpb/configuration_services.pb.go +++ b/pkg/ttnpb/configuration_services.pb.go @@ -23,7 +23,6 @@ package ttnpb import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -1136,293 +1135,290 @@ var file_lorawan_stack_api_configuration_services_proto_rawDesc = []byte{ 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, - 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4c, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x46, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x62, 0x61, - 0x73, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x3a, 0x08, 0xf2, 0xaa, 0x19, - 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0x7e, 0x0a, 0x18, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, - 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x46, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x6f, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, - 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x22, 0x3a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x17, 0x0a, 0x07, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x62, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, - 0x10, 0x01, 0x22, 0xd6, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, - 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x65, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, - 0x70, 0x68, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, - 0x70, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7c, 0x0a, 0x10, 0x4c, - 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x17, 0x0a, 0x07, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x62, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x0b, 0x70, 0x68, 0x79, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, - 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xea, 0x14, 0x0a, 0x0f, 0x42, 0x61, - 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3e, 0x0a, - 0x06, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, - 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x52, 0x06, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x12, 0x32, 0x0a, - 0x15, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x04, 0x52, 0x13, 0x70, 0x69, - 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, - 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, - 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, - 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x73, 0x12, 0x50, 0x0a, 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, - 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x43, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x54, 0x0a, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, - 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x10, 0x64, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x4e, 0x0a, - 0x09, 0x73, 0x75, 0x62, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x31, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x42, 0x61, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x52, 0x08, 0x73, 0x75, 0x62, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x4d, 0x0a, - 0x0a, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4c, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, + 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x62, + 0x61, 0x73, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x3a, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0x7e, 0x0a, 0x18, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x25, 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x46, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x6f, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x22, 0x3a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x68, + 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x17, 0x0a, 0x07, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x00, 0x10, 0x01, 0x22, 0xd6, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, + 0x0a, 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x65, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x3d, 0x0a, + 0x0c, 0x70, 0x68, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x0b, 0x70, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7c, 0x0a, 0x10, + 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x17, 0x0a, 0x07, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x0b, 0x70, 0x68, 0x79, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xea, 0x14, 0x0a, 0x0f, 0x42, + 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3e, + 0x0a, 0x06, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x52, 0x06, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x12, 0x32, + 0x0a, 0x15, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x04, 0x52, 0x13, 0x70, + 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, + 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, + 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x11, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x73, 0x12, 0x50, 0x0a, 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6e, + 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x54, 0x0a, 0x11, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x10, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x4e, + 0x0a, 0x09, 0x73, 0x75, 0x62, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, - 0x66, 0x72, 0x65, 0x71, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x71, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x66, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x10, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x66, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x63, 0x66, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x46, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x63, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x6c, - 0x61, 0x79, 0x5f, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x44, 0x65, - 0x6c, 0x61, 0x79, 0x31, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x32, 0x12, 0x48, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, - 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x31, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x10, 0x6a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x44, 0x65, 0x6c, 0x61, 0x79, - 0x31, 0x12, 0x48, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, - 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x32, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x42, 0x61, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x73, 0x52, 0x08, 0x73, 0x75, 0x62, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x4d, + 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, 0x27, 0x0a, + 0x0f, 0x66, 0x72, 0x65, 0x71, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x71, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x66, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x10, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x66, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x63, 0x66, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x46, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x63, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x65, + 0x6c, 0x61, 0x79, 0x5f, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x44, + 0x65, 0x6c, 0x61, 0x79, 0x31, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6a, 0x6f, 0x69, 0x6e, 0x41, - 0x63, 0x63, 0x65, 0x70, 0x74, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x32, 0x12, 0x20, 0x0a, 0x0c, 0x6d, - 0x61, 0x78, 0x5f, 0x66, 0x63, 0x6e, 0x74, 0x5f, 0x67, 0x61, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x46, 0x63, 0x6e, 0x74, 0x47, 0x61, 0x70, 0x12, 0x30, 0x0a, - 0x14, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, - 0x63, 0x5f, 0x61, 0x64, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x41, 0x64, 0x72, 0x12, - 0x47, 0x0a, 0x0d, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x61, 0x64, 0x72, - 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x4f, 0x0a, 0x16, 0x6d, 0x69, 0x6e, 0x5f, - 0x72, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4f, 0x0a, 0x16, 0x6d, 0x61, 0x78, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x32, 0x12, 0x48, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, + 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x31, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x10, 0x6a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x44, 0x65, 0x6c, 0x61, + 0x79, 0x31, 0x12, 0x48, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, + 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x32, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6a, 0x6f, 0x69, 0x6e, + 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x32, 0x12, 0x20, 0x0a, 0x0c, + 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x63, 0x6e, 0x74, 0x5f, 0x67, 0x61, 0x70, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x46, 0x63, 0x6e, 0x74, 0x47, 0x61, 0x70, 0x12, 0x30, + 0x0a, 0x14, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, + 0x69, 0x63, 0x5f, 0x61, 0x64, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x41, 0x64, 0x72, + 0x12, 0x47, 0x0a, 0x0d, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x61, 0x64, + 0x72, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x4f, 0x0a, 0x16, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6f, 0x75, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, - 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x16, 0x20, 0x03, 0x28, 0x02, 0x52, 0x08, 0x74, - 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x53, 0x0a, 0x17, 0x6d, 0x61, 0x78, 0x5f, 0x61, - 0x64, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, - 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x41, 0x64, 0x72, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x3a, 0x0a, 0x1a, - 0x74, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x72, - 0x65, 0x71, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x16, 0x74, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, - 0x71, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x69, 0x72, 0x70, 0x18, 0x19, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x61, 0x78, 0x45, 0x69, - 0x72, 0x70, 0x12, 0x63, 0x0a, 0x16, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x78, - 0x32, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x1e, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x78, 0x32, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x52, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x78, 0x32, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x0f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, - 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x44, 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0d, 0x62, 0x6f, 0x6f, - 0x74, 0x44, 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x9e, 0x01, 0x0a, 0x06, 0x42, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, - 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0d, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x04, 0x52, 0x0b, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x4a, - 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x1a, 0xad, 0x01, 0x0a, 0x07, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x41, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0b, 0x6d, 0x69, 0x6e, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0b, - 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x1a, 0x97, 0x01, 0x0a, 0x11, - 0x53, 0x75, 0x62, 0x42, 0x61, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, - 0x61, 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x64, - 0x75, 0x74, 0x79, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x09, 0x64, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, - 0x78, 0x5f, 0x65, 0x69, 0x72, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x6d, 0x61, - 0x78, 0x45, 0x69, 0x72, 0x70, 0x1a, 0x42, 0x0a, 0x0c, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x04, 0x72, - 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x1a, 0x6a, 0x0a, 0x0e, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x42, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, - 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x61, - 0x6e, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x74, 0x0a, 0x0d, 0x52, 0x78, 0x32, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4f, 0x0a, 0x16, 0x6d, 0x61, + 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, + 0x78, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x16, 0x20, 0x03, 0x28, 0x02, 0x52, 0x08, + 0x74, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x53, 0x0a, 0x17, 0x6d, 0x61, 0x78, 0x5f, + 0x61, 0x64, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x41, 0x64, 0x72, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x3a, 0x0a, + 0x1a, 0x74, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, + 0x72, 0x65, 0x71, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x16, 0x74, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, + 0x65, 0x71, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x69, 0x72, 0x70, 0x18, 0x19, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x61, 0x78, 0x45, + 0x69, 0x72, 0x70, 0x12, 0x63, 0x0a, 0x16, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, + 0x78, 0x32, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x1e, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x78, 0x32, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x52, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x78, 0x32, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x0f, 0x62, 0x6f, 0x6f, 0x74, + 0x5f, 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x44, 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0d, 0x62, 0x6f, + 0x6f, 0x74, 0x44, 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x9e, 0x01, 0x0a, 0x06, + 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0d, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, - 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0x7b, 0x0a, 0x09, 0x44, - 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x75, 0x70, 0x6c, 0x69, - 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x38, - 0x0a, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x64, - 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, - 0x08, 0x1a, 0x10, 0x1b, 0x4a, 0x04, 0x08, 0x1b, 0x10, 0x1c, 0x4a, 0x04, 0x08, 0x1c, 0x10, 0x1d, - 0x4a, 0x04, 0x08, 0x1d, 0x10, 0x1e, 0x22, 0xba, 0x03, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x42, - 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0c, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xce, 0x01, 0x0a, 0x18, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x65, 0x64, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x04, 0x62, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x44, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x42, 0x61, 0x6e, - 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x61, 0x6e, - 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x62, 0x61, 0x6e, 0x64, 0x1a, 0x58, 0x0a, 0x09, - 0x42, 0x61, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6e, 0x64, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x7b, 0x0a, 0x11, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x50, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x32, 0xef, 0x03, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x93, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x29, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x66, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x79, 0x2d, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x0e, - 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x68, 0x79, 0x2d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0xc0, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, - 0x12, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x68, 0x12, 0x14, 0x2f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x61, - 0x6e, 0x64, 0x73, 0x5a, 0x20, 0x12, 0x1e, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x62, 0x61, 0x6e, - 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x5a, 0x2e, 0x12, 0x2c, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x62, - 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x70, 0x68, 0x79, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, - 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, + 0x0b, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x04, 0x52, 0x0b, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, + 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x1a, 0xad, 0x01, 0x0a, + 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x41, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0b, 0x6d, 0x69, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x0d, 0x6d, 0x61, 0x78, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x0b, 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x1a, 0x97, 0x01, 0x0a, + 0x11, 0x53, 0x75, 0x62, 0x42, 0x61, 0x6e, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x46, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x66, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, + 0x6d, 0x61, 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, + 0x64, 0x75, 0x74, 0x79, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x09, 0x64, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6d, + 0x61, 0x78, 0x5f, 0x65, 0x69, 0x72, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x6d, + 0x61, 0x78, 0x45, 0x69, 0x72, 0x70, 0x1a, 0x42, 0x0a, 0x0c, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x04, + 0x72, 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x1a, 0x6a, 0x0a, 0x0e, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x42, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, + 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, + 0x61, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x74, 0x0a, 0x0d, 0x52, 0x78, 0x32, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, + 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0x7b, 0x0a, 0x09, + 0x44, 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x75, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, + 0x38, 0x0a, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, + 0x04, 0x08, 0x1a, 0x10, 0x1b, 0x4a, 0x04, 0x08, 0x1b, 0x10, 0x1c, 0x4a, 0x04, 0x08, 0x1c, 0x10, + 0x1d, 0x4a, 0x04, 0x08, 0x1d, 0x10, 0x1e, 0x22, 0xba, 0x03, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, + 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, + 0x0c, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xce, 0x01, 0x0a, 0x18, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x65, 0x64, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x04, 0x62, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x44, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x42, 0x61, + 0x6e, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x61, + 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x62, 0x61, 0x6e, 0x64, 0x1a, 0x58, 0x0a, + 0x09, 0x42, 0x61, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6e, + 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x7b, 0x0a, 0x11, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x50, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x42, 0x61, 0x6e, 0x64, 0x44, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x32, 0xef, 0x03, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x93, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x46, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x29, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x66, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x2d, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x84, 0x01, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x68, 0x79, 0x2d, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0xc0, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, + 0x73, 0x12, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x68, 0x12, 0x14, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, + 0x61, 0x6e, 0x64, 0x73, 0x5a, 0x20, 0x12, 0x1e, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x62, 0x61, + 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x5a, 0x2e, 0x12, 0x2c, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, + 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x70, 0x68, 0x79, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/pkg/ttnpb/contact_info.pb.go b/pkg/ttnpb/contact_info.pb.go index f1224e06e4..dcbcc97ae2 100644 --- a/pkg/ttnpb/contact_info.pb.go +++ b/pkg/ttnpb/contact_info.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -318,103 +317,100 @@ var file_lorawan_stack_api_contact_info_proto_rawDesc = []byte{ 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, - 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, - 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, - 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, - 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, - 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa8, 0x02, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x48, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4e, - 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1e, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x3d, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, - 0xc4, 0x02, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x05, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x12, 0x3e, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x65, - 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x2a, 0x89, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x00, 0x12, 0x16, - 0x0a, 0x12, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, - 0x42, 0x55, 0x53, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x02, - 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x54, 0x45, 0x43, 0x48, 0x4e, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x03, 0x1a, 0x14, 0xea, 0xaa, - 0x19, 0x10, 0x18, 0x01, 0x2a, 0x0c, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x2a, 0x75, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x4d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x4d, - 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x00, 0x12, 0x18, 0x0a, - 0x14, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, - 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x54, 0x41, - 0x43, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x50, 0x48, 0x4f, 0x4e, 0x45, 0x10, - 0x02, 0x1a, 0x16, 0xea, 0xaa, 0x19, 0x12, 0x18, 0x01, 0x2a, 0x0e, 0x43, 0x4f, 0x4e, 0x54, 0x41, - 0x43, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x32, 0x8a, 0x02, 0x0a, 0x13, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, - 0x79, 0x12, 0x82, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x25, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x3a, 0x01, 0x2a, 0x12, 0x6e, 0x0a, 0x08, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x32, 0x18, 0x2f, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x3a, 0x01, 0x2a, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, - 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, + 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, + 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa8, 0x02, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x48, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x4e, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, + 0x1e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x3d, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, + 0x22, 0xc4, 0x02, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, + 0x40, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, + 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x12, 0x3e, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, + 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x2a, 0x89, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x4e, 0x54, 0x41, + 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x00, 0x12, + 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x41, 0x42, 0x55, 0x53, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x54, 0x41, + 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x10, + 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x54, 0x45, 0x43, 0x48, 0x4e, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x03, 0x1a, 0x14, 0xea, + 0xaa, 0x19, 0x10, 0x18, 0x01, 0x2a, 0x0c, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x2a, 0x75, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, + 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x00, 0x12, 0x18, + 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, + 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x54, + 0x41, 0x43, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x50, 0x48, 0x4f, 0x4e, 0x45, + 0x10, 0x02, 0x1a, 0x16, 0xea, 0xaa, 0x19, 0x12, 0x18, 0x01, 0x2a, 0x0e, 0x43, 0x4f, 0x4e, 0x54, + 0x41, 0x43, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x32, 0x8a, 0x02, 0x0a, 0x13, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x72, 0x79, 0x12, 0x82, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x25, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x01, 0x2a, 0x12, 0x6e, 0x0a, 0x08, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x32, 0x18, 0x2f, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x01, 0x2a, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/deviceclaimingserver.pb.go b/pkg/ttnpb/deviceclaimingserver.pb.go index fcf075fbfb..c939cb645a 100644 --- a/pkg/ttnpb/deviceclaimingserver.pb.go +++ b/pkg/ttnpb/deviceclaimingserver.pb.go @@ -23,7 +23,6 @@ package ttnpb import ( _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -976,207 +975,168 @@ var file_lorawan_stack_api_deviceclaimingserver_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, - 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, - 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, - 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, - 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, - 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0xe4, 0x0e, 0x0a, 0x15, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x45, 0x6e, 0x64, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x7d, 0x0a, - 0x19, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x48, 0x00, 0x52, 0x18, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x07, - 0x71, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0a, 0xfa, - 0x42, 0x07, 0x7a, 0x05, 0x10, 0x00, 0x18, 0x80, 0x08, 0x48, 0x00, 0x52, 0x06, 0x71, 0x72, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x66, 0x0a, 0x16, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x14, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x54, 0x0a, 0x10, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, - 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, - 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, - 0x24, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, - 0x64, 0x12, 0xd2, 0x01, 0x0a, 0x1d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, - 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, - 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, - 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, - 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, - 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, - 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, - 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, - 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x1a, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x1f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, - 0x6b, 0x65, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x1b, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4b, 0x65, - 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0xda, 0x01, 0x0a, 0x21, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, - 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, - 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, - 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, - 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, - 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, - 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, - 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, - 0x7c, 0x5e, 0x24, 0x52, 0x1e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x12, 0x56, 0x0a, 0x23, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x5f, 0x6b, 0x65, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x1f, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x4b, 0x65, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x48, 0x0a, 0x1c, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x19, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0xcf, 0x01, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xaa, 0x01, - 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, - 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, + 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, + 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, + 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe4, 0x0e, 0x0a, 0x15, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x7d, + 0x0a, 0x19, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x48, 0x00, 0x52, 0x18, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, + 0x07, 0x71, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0a, + 0xfa, 0x42, 0x07, 0x7a, 0x05, 0x10, 0x00, 0x18, 0x80, 0x08, 0x48, 0x00, 0x52, 0x06, 0x71, 0x72, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x66, 0x0a, 0x16, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x14, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x54, 0x0a, 0x10, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, + 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, + 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, + 0x5e, 0x24, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x64, 0x12, 0xd2, 0x01, 0x0a, 0x1d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, + 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, + 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, + 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, + 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, + 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, + 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, + 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x1a, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x1f, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x5f, 0x6b, 0x65, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x1b, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4b, + 0x65, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0xda, 0x01, 0x0a, 0x21, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, + 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, + 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, + 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, + 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, + 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, + 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, + 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x1e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x12, 0x56, 0x0a, 0x23, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x5f, 0x6b, 0x65, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x1f, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x48, 0x0a, 0x1c, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x19, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0xcf, 0x01, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xaa, + 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, - 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x4e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x1e, 0x69, 0x6e, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x1c, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, - 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x1a, 0x88, 0x04, - 0x0a, 0x18, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, - 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, - 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, - 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, + 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, + 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x1e, 0x69, 0x6e, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x1c, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, + 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x1a, 0x88, + 0x04, 0x0a, 0x18, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0xd0, 0x01, 0x0a, 0x08, + 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, + 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, - 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, 0xce, 0x01, - 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, - 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, - 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, + 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, 0xce, + 0x01, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, + 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, - 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, - 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x12, 0x48, - 0x0a, 0x13, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, - 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, - 0x33, 0x32, 0x7d, 0x24, 0x52, 0x12, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x4a, 0x04, - 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x22, 0x9d, 0x01, 0x0a, 0x1b, 0x41, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, - 0x80, 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x22, 0xec, 0x01, 0x0a, 0x17, 0x47, - 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, - 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, - 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, - 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, - 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, - 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, - 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, - 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, - 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, - 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x22, 0x9a, 0x02, 0x0a, 0x18, 0x47, 0x65, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, - 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, - 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, - 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, - 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, - 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, + 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, + 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, + 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x12, + 0x48, 0x0a, 0x13, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, + 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, + 0x2c, 0x33, 0x32, 0x7d, 0x24, 0x52, 0x12, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x0d, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x4a, + 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x22, 0x9d, 0x01, 0x0a, 0x1b, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, + 0x18, 0x80, 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x22, 0xec, 0x01, 0x0a, 0x17, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, + 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, + 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, - 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, - 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, - 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x43, 0x6c, - 0x61, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x22, 0xf8, 0x05, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x61, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0xcb, 0x01, 0x0a, 0x0b, 0x68, 0x6f, 0x6d, 0x65, - 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xaa, 0x01, - 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, - 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, - 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, - 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x68, 0x6f, 0x6d, 0x65, - 0x4e, 0x65, 0x74, 0x49, 0x64, 0x12, 0xd3, 0x01, 0x0a, 0x0a, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, - 0x73, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, + 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, + 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, + 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, + 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x22, 0x9a, 0x02, 0x0a, 0x18, 0x47, + 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, + 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, @@ -1188,207 +1148,243 @@ var file_lorawan_stack_api_deviceclaimingserver_proto_rawDesc = []byte{ 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x52, 0x08, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x73, 0x49, 0x64, 0x12, 0x5e, 0x0a, 0x0f, 0x76, - 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x65, 0x6e, - 0x64, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x52, 0x0e, 0x76, 0x65, 0x6e, - 0x64, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x1a, 0x83, 0x01, 0x0a, 0x0e, - 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x12, 0x44, - 0x0a, 0x1e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, - 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x22, 0x89, 0x03, 0x0a, 0x0f, 0x43, 0x55, 0x50, 0x53, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, - 0x63, 0x75, 0x70, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x13, - 0xfa, 0x42, 0x10, 0x72, 0x0e, 0x18, 0x80, 0x02, 0x32, 0x06, 0x5e, 0x68, 0x74, 0x74, 0x70, 0x73, - 0x88, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x75, 0x70, 0x73, 0x55, - 0x72, 0x69, 0x12, 0x38, 0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x11, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x75, 0x70, 0x73, 0x5f, 0x74, 0x72, 0x75, 0x73, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, - 0x75, 0x70, 0x73, 0x54, 0x72, 0x75, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x55, - 0x50, 0x53, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x54, 0x6c, 0x73, 0x12, 0x29, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, - 0x80, 0x10, 0x48, 0x00, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, - 0x45, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x12, 0x1c, 0x0a, 0x04, - 0x63, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, - 0x03, 0x18, 0x80, 0x40, 0x52, 0x04, 0x63, 0x65, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, - 0x40, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x99, 0x08, - 0x0a, 0x13, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x7b, 0x0a, 0x19, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x47, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x75, - 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x18, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, - 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x12, 0x25, 0x0a, 0x07, 0x71, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0c, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x7a, 0x05, 0x10, 0x00, 0x18, 0x80, 0x08, 0x48, - 0x00, 0x52, 0x06, 0x71, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x5b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, - 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, - 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x56, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x0f, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0xd2, - 0x01, 0x0a, 0x1d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, - 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, - 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, - 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, - 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, - 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, - 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, - 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, - 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x1a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x47, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x12, 0x4a, 0x0a, 0x10, 0x63, 0x75, 0x70, 0x73, 0x5f, 0x72, 0x65, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x43, + 0x6c, 0x61, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x22, 0xf8, 0x05, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, + 0x6c, 0x61, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0xcb, 0x01, 0x0a, 0x0b, 0x68, 0x6f, 0x6d, + 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xaa, + 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, + 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, + 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x68, 0x6f, 0x6d, + 0x65, 0x4e, 0x65, 0x74, 0x49, 0x64, 0x12, 0xd3, 0x01, 0x0a, 0x0a, 0x68, 0x6f, 0x6d, 0x65, 0x5f, + 0x6e, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, + 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, + 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, + 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, + 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, + 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x52, 0x08, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x73, 0x49, 0x64, 0x12, 0x5e, 0x0a, 0x0f, + 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x65, + 0x6e, 0x64, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x52, 0x0e, 0x76, 0x65, + 0x6e, 0x64, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x1a, 0x83, 0x01, 0x0a, + 0x0e, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x12, + 0x44, 0x0a, 0x1e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x22, 0x89, 0x03, 0x0a, 0x0f, 0x43, 0x55, 0x50, 0x53, 0x52, 0x65, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x5f, 0x63, 0x75, 0x70, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x13, 0xfa, 0x42, 0x10, 0x72, 0x0e, 0x18, 0x80, 0x02, 0x32, 0x06, 0x5e, 0x68, 0x74, 0x74, 0x70, + 0x73, 0x88, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x75, 0x70, 0x73, + 0x55, 0x72, 0x69, 0x12, 0x38, 0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x2a, 0x0a, + 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x75, 0x70, 0x73, 0x5f, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x43, 0x75, 0x70, 0x73, 0x54, 0x72, 0x75, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x55, 0x50, 0x53, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, - 0x63, 0x75, 0x70, 0x73, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x40, 0x0a, 0x18, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x15, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, - 0x64, 0x1a, 0xae, 0x02, 0x0a, 0x18, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0xd6, - 0x01, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, - 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, - 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x55, 0x50, 0x53, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x54, 0x6c, 0x73, 0x12, 0x29, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, + 0x18, 0x80, 0x10, 0x48, 0x00, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x1a, 0x45, 0x0a, 0x09, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x4c, 0x53, 0x12, 0x1c, 0x0a, + 0x04, 0x63, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x7a, 0x03, 0x18, 0x80, 0x40, 0x52, 0x04, 0x63, 0x65, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, + 0x80, 0x40, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x99, + 0x08, 0x0a, 0x13, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x7b, 0x0a, 0x19, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, + 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x18, 0x61, 0x75, 0x74, 0x68, 0x65, + 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x07, 0x71, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x7a, 0x05, 0x10, 0x00, 0x18, 0x80, 0x08, + 0x48, 0x00, 0x52, 0x06, 0x71, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x5b, 0x0a, 0x0c, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x56, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x0f, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, + 0xd2, 0x01, 0x0a, 0x1d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, + 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, + 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, + 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, + 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, + 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, + 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, + 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x1a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x12, 0x4a, 0x0a, 0x10, 0x63, 0x75, 0x70, 0x73, 0x5f, 0x72, 0x65, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x55, 0x50, 0x53, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0f, 0x63, 0x75, 0x70, 0x73, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x40, 0x0a, 0x18, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x15, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, + 0x49, 0x64, 0x1a, 0xae, 0x02, 0x0a, 0x18, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, + 0xd6, 0x01, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, + 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, - 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, - 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, - 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x45, 0x75, 0x69, 0x12, 0x39, 0x0a, 0x13, 0x61, 0x75, 0x74, 0x68, 0x65, - 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x12, - 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x64, 0x65, 0x42, 0x15, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x8a, 0x01, 0x0a, 0x17, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x49, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, - 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x32, 0x88, 0x07, 0x0a, 0x17, 0x45, 0x6e, 0x64, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x12, 0x6c, 0x0a, 0x05, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x25, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, - 0x69, 0x6d, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, - 0x22, 0x0b, 0x2f, 0x65, 0x64, 0x63, 0x73, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x3a, 0x01, 0x2a, - 0x12, 0x94, 0x01, 0x0a, 0x07, 0x55, 0x6e, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x24, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, - 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x45, 0x2a, 0x40, 0x2f, 0x65, 0x64, 0x63, 0x73, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x2f, - 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, - 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x82, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x12, 0x27, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, - 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x65, 0x64, 0x63, 0x73, 0x2f, 0x63, - 0x6c, 0x61, 0x69, 0x6d, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x3a, 0x01, 0x2a, 0x12, 0xa8, 0x01, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x12, 0x40, 0x2f, 0x65, 0x64, 0x63, 0x73, 0x2f, 0x63, 0x6c, 0x61, - 0x69, 0x6d, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, + 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, + 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, + 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, + 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x45, 0x75, 0x69, 0x12, 0x39, 0x0a, 0x13, 0x61, 0x75, 0x74, 0x68, + 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, + 0x12, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x64, 0x65, 0x42, 0x15, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x8a, 0x01, 0x0a, 0x17, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, + 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x32, 0x88, 0x07, 0x0a, 0x17, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x12, 0x6c, 0x0a, 0x05, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x25, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x10, 0x22, 0x0b, 0x2f, 0x65, 0x64, 0x63, 0x73, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x3a, 0x01, + 0x2a, 0x12, 0x94, 0x01, 0x0a, 0x07, 0x55, 0x6e, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x24, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4b, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x45, 0x2a, 0x40, 0x2f, 0x65, 0x64, 0x63, 0x73, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, + 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x82, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x12, 0x27, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, + 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, + 0x79, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x65, 0x64, 0x63, 0x73, 0x2f, + 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x3a, 0x01, 0x2a, 0x12, 0xa8, 0x01, + 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x12, 0x40, 0x2f, 0x65, 0x64, 0x63, 0x73, 0x2f, 0x63, 0x6c, + 0x61, 0x69, 0x6d, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa5, 0x01, 0x0a, 0x14, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x22, 0x3d, + 0x2f, 0x65, 0x64, 0x63, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa5, 0x01, 0x0a, 0x14, 0x41, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x22, 0x3d, 0x2f, - 0x65, 0x64, 0x63, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x3a, 0x01, 0x2a, 0x12, - 0x8f, 0x01, 0x0a, 0x16, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x2f, 0x2a, 0x2d, 0x2f, 0x65, 0x64, 0x63, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x65, 0x32, 0x96, 0x03, 0x0a, 0x15, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6c, 0x61, - 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x68, 0x0a, 0x05, 0x43, - 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x16, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x22, 0x0b, 0x2f, 0x67, 0x63, 0x6c, 0x73, 0x2f, 0x63, 0x6c, 0x61, - 0x69, 0x6d, 0x3a, 0x01, 0x2a, 0x12, 0x91, 0x01, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3c, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x36, 0x22, 0x31, 0x2f, 0x67, 0x63, 0x6c, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, - 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x7f, 0x0a, 0x12, 0x55, 0x6e, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, - 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x3a, 0x01, 0x2a, + 0x12, 0x8f, 0x01, 0x0a, 0x16, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2d, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x27, 0x2a, 0x25, 0x2f, 0x67, 0x63, 0x6c, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, - 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, - 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x35, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2f, 0x2a, 0x2d, 0x2f, 0x65, 0x64, 0x63, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x32, 0x96, 0x03, 0x0a, 0x15, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x68, 0x0a, 0x05, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x16, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x22, 0x0b, 0x2f, 0x67, 0x63, 0x6c, 0x73, 0x2f, 0x63, 0x6c, + 0x61, 0x69, 0x6d, 0x3a, 0x01, 0x2a, 0x12, 0x91, 0x01, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x27, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3c, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x36, 0x22, 0x31, 0x2f, 0x67, 0x63, 0x6c, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x7f, 0x0a, 0x12, 0x55, 0x6e, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2d, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x27, 0x2a, 0x25, 0x2f, 0x67, 0x63, 0x6c, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x42, 0x31, 0x5a, 0x2f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/devicerepository.pb.go b/pkg/ttnpb/devicerepository.pb.go index 72f5a9d2ed..bf553d6fc0 100644 --- a/pkg/ttnpb/devicerepository.pb.go +++ b/pkg/ttnpb/devicerepository.pb.go @@ -23,7 +23,6 @@ package ttnpb import ( _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -2319,675 +2318,713 @@ var file_lorawan_stack_api_devicerepository_proto_rawDesc = []byte{ 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd2, 0x03, 0x0a, 0x0e, 0x45, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x42, 0x0a, - 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, - 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, - 0x5f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x17, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x5f, 0x0a, 0x1f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x92, - 0x01, 0x11, 0x22, 0x0f, 0x72, 0x0d, 0x32, 0x0b, 0x5b, 0x30, 0x2d, 0x39, 0x41, 0x2d, 0x46, 0x5d, - 0x7b, 0x36, 0x7d, 0x52, 0x1d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x6c, 0x6f, 0x72, 0x61, 0x5f, 0x61, 0x6c, 0x6c, 0x69, 0x61, - 0x6e, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x14, 0x6c, 0x6f, 0x72, 0x61, 0x41, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x63, - 0x65, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x07, 0x77, 0x65, 0x62, - 0x73, 0x69, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, - 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, - 0x12, 0x20, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x60, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x12, 0x4b, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x37, 0xfa, 0x42, 0x34, 0x72, 0x32, 0x32, 0x30, 0x5e, 0x24, 0x7c, 0x5e, 0x28, 0x28, 0x5b, - 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5d, 0x2b, 0x5c, 0x2f, 0x29, 0x2b, 0x29, 0x3f, 0x28, - 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x5c, 0x2e, 0x29, 0x2b, 0x28, - 0x70, 0x6e, 0x67, 0x7c, 0x73, 0x76, 0x67, 0x29, 0x24, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x22, - 0xcb, 0x1d, 0x0a, 0x0e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x12, 0x42, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, - 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, - 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x62, - 0x72, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, - 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, - 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, - 0x24, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x5b, 0x0a, 0x11, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x48, 0x61, 0x72, 0x64, - 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x68, 0x61, 0x72, - 0x64, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5b, 0x0a, - 0x11, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd2, 0x03, 0x0a, 0x0e, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x42, + 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x62, 0x72, 0x61, 0x6e, 0x64, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x17, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x5f, 0x0a, 0x1f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x17, 0xfa, 0x42, 0x14, + 0x92, 0x01, 0x11, 0x22, 0x0f, 0x72, 0x0d, 0x32, 0x0b, 0x5b, 0x30, 0x2d, 0x39, 0x41, 0x2d, 0x46, + 0x5d, 0x7b, 0x36, 0x7d, 0x52, 0x1d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x6c, 0x6f, 0x72, 0x61, 0x5f, 0x61, 0x6c, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x6c, 0x6f, 0x72, 0x61, 0x41, 0x6c, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x07, 0x77, 0x65, + 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, + 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, + 0x65, 0x12, 0x20, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x60, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x12, 0x4b, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x37, 0xfa, 0x42, 0x34, 0x72, 0x32, 0x32, 0x30, 0x5e, 0x24, 0x7c, 0x5e, 0x28, 0x28, + 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5d, 0x2b, 0x5c, 0x2f, 0x29, 0x2b, 0x29, 0x3f, + 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x5c, 0x2e, 0x29, 0x2b, + 0x28, 0x70, 0x6e, 0x67, 0x7c, 0x73, 0x76, 0x67, 0x29, 0x24, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x6f, + 0x22, 0xcb, 0x1d, 0x0a, 0x0e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x12, 0x42, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, + 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, + 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, + 0x62, 0x72, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, + 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, + 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, + 0x7d, 0x24, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x5b, 0x0a, 0x11, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x48, 0x61, 0x72, + 0x64, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x68, 0x61, + 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5b, + 0x0a, 0x11, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, + 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x66, 0x69, 0x72, 0x6d, 0x77, + 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, 0x07, 0x73, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x92, 0x01, 0x02, 0x18, 0x01, 0x52, 0x07, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x12, + 0x49, 0x0a, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, + 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x77, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, + 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, + 0x40, 0x0a, 0x07, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x2e, 0x42, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x52, 0x07, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x79, 0x12, 0x65, 0x0a, 0x14, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x70, 0x5f, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x70, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x5b, 0x0a, 0x10, 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x42, 0x0f, 0xfa, 0x42, + 0x0c, 0x92, 0x01, 0x09, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6b, + 0x65, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x48, + 0x0a, 0x0c, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x6b, 0x65, 0x79, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x68, 0x6f, 0x74, + 0x6f, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, 0x07, 0x73, 0x65, - 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x92, 0x01, 0x02, 0x18, 0x01, 0x52, 0x07, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x49, - 0x0a, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x52, + 0x06, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x12, 0x3d, 0x0a, 0x06, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x52, 0x06, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x12, 0x2c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, + 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x55, 0x72, 0x6c, 0x12, 0x30, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x73, 0x68, 0x65, 0x65, + 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, + 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x73, 0x68, + 0x65, 0x65, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x45, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x65, 0x6c, 0x6c, + 0x65, 0x72, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x6c, 0x6c, + 0x65, 0x72, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x4c, 0x0a, + 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x14, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x64, - 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x77, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, - 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x40, - 0x0a, 0x07, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, - 0x42, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x52, 0x07, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, - 0x12, 0x65, 0x0a, 0x14, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, + 0x65, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x0b, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x11, 0x61, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x73, + 0x18, 0x15, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x18, 0x01, + 0x52, 0x10, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, + 0x6f, 0x73, 0x1a, 0x66, 0x0a, 0x0f, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, + 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x70, 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0xf2, 0x04, 0x0a, 0x0f, 0x46, + 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, + 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x65, + 0x72, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x65, 0x72, + 0x69, 0x63, 0x12, 0x48, 0x0a, 0x1b, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, + 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x18, + 0x01, 0x52, 0x19, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x48, 0x61, 0x72, 0x64, + 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x08, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x46, + 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x91, 0x02, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x12, 0x47, 0x0a, 0x09, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, + 0x5e, 0x24, 0x7c, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, + 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, + 0x24, 0x52, 0x08, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, 0x24, 0x7c, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x09, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x10, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, + 0x5e, 0x24, 0x7c, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, + 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, + 0x24, 0x52, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x49, 0x64, 0x1a, 0x73, 0x0a, 0x0d, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x46, 0x69, 0x72, + 0x6d, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0xe2, 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, + 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x12, 0x33, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x0a, 0x08, 0x64, 0x69, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x64, 0x69, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, + 0x33, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x1a, 0x5b, 0x0a, 0x07, 0x42, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, + 0x3c, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x1a, 0xc2, 0x02, 0x0a, 0x13, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5b, 0x0a, 0x0b, 0x74, 0x65, 0x6d, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x70, 0x5f, 0x63, 0x6f, - 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x70, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x5b, 0x0a, 0x10, 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x42, 0x0f, 0xfa, 0x42, 0x0c, - 0x92, 0x01, 0x09, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6b, 0x65, - 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x48, 0x0a, - 0x0c, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x6b, 0x65, 0x79, 0x53, - 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x68, 0x6f, 0x74, 0x6f, - 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x52, 0x06, - 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x12, 0x3d, 0x0a, 0x06, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x52, 0x06, 0x76, - 0x69, 0x64, 0x65, 0x6f, 0x73, 0x12, 0x2c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, - 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x55, 0x72, 0x6c, 0x12, 0x30, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x73, 0x68, 0x65, 0x65, 0x74, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, - 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x73, 0x68, 0x65, - 0x65, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x45, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, - 0x72, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, - 0x72, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x4c, 0x0a, 0x0b, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x66, 0x0a, 0x11, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x68, 0x75, 0x6d, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x39, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x0b, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x11, 0x61, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x73, 0x18, - 0x15, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x18, 0x01, 0x52, - 0x10, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, 0x6f, - 0x73, 0x1a, 0x66, 0x0a, 0x0f, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x07, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, - 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0xf2, 0x04, 0x0a, 0x0f, 0x46, 0x69, - 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x65, 0x72, - 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, - 0x63, 0x12, 0x48, 0x0a, 0x1b, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x68, - 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x18, 0x01, - 0x52, 0x19, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x48, 0x61, 0x72, 0x64, 0x77, - 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x08, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x46, 0x69, - 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x91, 0x02, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x12, 0x47, 0x0a, 0x09, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, - 0x24, 0x7c, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, - 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, - 0x52, 0x08, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x0a, 0x70, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, - 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, 0x24, 0x7c, 0x5e, 0x5b, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x10, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x12, 0x45, 0x0a, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, - 0x24, 0x7c, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, - 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, - 0x52, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x49, 0x64, 0x1a, 0x73, 0x0a, 0x0d, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x46, 0x69, 0x72, 0x6d, - 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xe2, - 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, - 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, - 0x12, 0x33, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x68, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x0a, 0x08, 0x64, 0x69, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x64, 0x69, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x33, - 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x1a, 0x5b, 0x0a, 0x07, 0x42, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x3c, - 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x1a, 0xc2, 0x02, 0x0a, 0x13, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5b, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x66, 0x0a, 0x11, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x68, 0x75, 0x6d, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x39, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x10, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x76, 0x65, 0x48, 0x75, 0x6d, 0x69, 0x64, 0x69, 0x74, 0x79, 0x1a, 0x66, 0x0a, - 0x06, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, + 0x6c, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x10, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x48, 0x75, 0x6d, 0x69, 0x64, 0x69, 0x74, 0x79, 0x1a, 0x66, + 0x0a, 0x06, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x2d, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x2d, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x03, 0x6d, 0x61, 0x78, 0x1a, 0xb5, 0x01, 0x0a, 0x06, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x73, - 0x12, 0x50, 0x0a, 0x04, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, - 0xfa, 0x42, 0x39, 0x72, 0x37, 0x32, 0x35, 0x5e, 0x24, 0x7c, 0x5e, 0x28, 0x28, 0x5b, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5d, 0x2b, 0x5c, 0x2f, 0x29, 0x2b, 0x29, 0x3f, 0x28, 0x5b, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x5c, 0x2e, 0x29, 0x2b, 0x28, 0x70, 0x6e, - 0x67, 0x7c, 0x6a, 0x70, 0x67, 0x7c, 0x6a, 0x70, 0x65, 0x67, 0x29, 0x24, 0x52, 0x04, 0x6d, 0x61, - 0x69, 0x6e, 0x12, 0x59, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x42, 0x43, 0xfa, 0x42, 0x40, 0x92, 0x01, 0x3d, 0x18, 0x01, 0x22, 0x39, 0x72, 0x37, 0x32, - 0x35, 0x5e, 0x24, 0x7c, 0x5e, 0x28, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5d, - 0x2b, 0x5c, 0x2f, 0x29, 0x2b, 0x29, 0x3f, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, - 0x2d, 0x5d, 0x2b, 0x5c, 0x2e, 0x29, 0x2b, 0x28, 0x70, 0x6e, 0x67, 0x7c, 0x6a, 0x70, 0x67, 0x7c, - 0x6a, 0x70, 0x65, 0x67, 0x29, 0x24, 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x1a, 0xeb, 0x03, - 0x0a, 0x06, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x12, 0xe9, 0x01, 0x0a, 0x04, 0x6d, 0x61, 0x69, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0xd4, 0x01, 0xfa, 0x42, 0xd0, 0x01, 0x72, 0xcd, - 0x01, 0x32, 0xca, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3f, 0x3a, 0x5c, - 0x2f, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x77, 0x77, 0x77, 0x5c, 0x2e, 0x29, 0x3f, 0x79, 0x6f, 0x75, - 0x74, 0x75, 0x28, 0x3f, 0x3a, 0x62, 0x65, 0x5c, 0x2e, 0x63, 0x6f, 0x6d, 0x5c, 0x2f, 0x77, 0x61, - 0x74, 0x63, 0x68, 0x5c, 0x3f, 0x76, 0x3d, 0x7c, 0x5c, 0x2e, 0x62, 0x65, 0x5c, 0x2f, 0x29, 0x28, - 0x3f, 0x3a, 0x5b, 0x5c, 0x77, 0x5c, 0x2d, 0x5f, 0x5d, 0x2a, 0x29, 0x28, 0x3f, 0x3a, 0x26, 0x28, - 0x61, 0x6d, 0x70, 0x3b, 0x29, 0x3f, 0x5b, 0x5c, 0x77, 0x5c, 0x3f, 0x3d, 0x5d, 0x2a, 0x29, 0x3f, - 0x29, 0x24, 0x7c, 0x5e, 0x28, 0x3f, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3f, 0x3a, 0x5c, 0x2f, - 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x77, 0x77, 0x77, 0x5c, 0x2e, 0x29, 0x3f, 0x76, 0x69, 0x6d, 0x65, - 0x6f, 0x5c, 0x2e, 0x63, 0x6f, 0x6d, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x63, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x73, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x5c, 0x77, 0x2b, 0x5c, 0x2f, 0x29, 0x3f, 0x7c, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x5c, 0x2f, 0x28, 0x5b, 0x5e, 0x5c, 0x2f, 0x5d, 0x2a, 0x29, - 0x5c, 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x5c, 0x2f, 0x7c, 0x29, 0x28, 0x3f, 0x3a, 0x5c, - 0x64, 0x2b, 0x29, 0x28, 0x3f, 0x3a, 0x7c, 0x5c, 0x2f, 0x5c, 0x3f, 0x29, 0x29, 0x24, 0x52, 0x04, - 0x6d, 0x61, 0x69, 0x6e, 0x12, 0xf4, 0x01, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x42, 0xdd, 0x01, 0xfa, 0x42, 0xd9, 0x01, 0x92, 0x01, 0xd5, 0x01, 0x18, - 0x01, 0x22, 0xd0, 0x01, 0x72, 0xcd, 0x01, 0x32, 0xca, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x68, 0x74, + 0x65, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x1a, 0xb5, 0x01, 0x0a, 0x06, 0x50, 0x68, 0x6f, 0x74, 0x6f, + 0x73, 0x12, 0x50, 0x0a, 0x04, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x3c, 0xfa, 0x42, 0x39, 0x72, 0x37, 0x32, 0x35, 0x5e, 0x24, 0x7c, 0x5e, 0x28, 0x28, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5d, 0x2b, 0x5c, 0x2f, 0x29, 0x2b, 0x29, 0x3f, 0x28, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2b, 0x5c, 0x2e, 0x29, 0x2b, 0x28, 0x70, + 0x6e, 0x67, 0x7c, 0x6a, 0x70, 0x67, 0x7c, 0x6a, 0x70, 0x65, 0x67, 0x29, 0x24, 0x52, 0x04, 0x6d, + 0x61, 0x69, 0x6e, 0x12, 0x59, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x43, 0xfa, 0x42, 0x40, 0x92, 0x01, 0x3d, 0x18, 0x01, 0x22, 0x39, 0x72, 0x37, + 0x32, 0x35, 0x5e, 0x24, 0x7c, 0x5e, 0x28, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, + 0x5d, 0x2b, 0x5c, 0x2f, 0x29, 0x2b, 0x29, 0x3f, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5f, 0x2d, 0x5d, 0x2b, 0x5c, 0x2e, 0x29, 0x2b, 0x28, 0x70, 0x6e, 0x67, 0x7c, 0x6a, 0x70, 0x67, + 0x7c, 0x6a, 0x70, 0x65, 0x67, 0x29, 0x24, 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x1a, 0xeb, + 0x03, 0x0a, 0x06, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x12, 0xe9, 0x01, 0x0a, 0x04, 0x6d, 0x61, + 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0xd4, 0x01, 0xfa, 0x42, 0xd0, 0x01, 0x72, + 0xcd, 0x01, 0x32, 0xca, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3f, 0x3a, + 0x5c, 0x2f, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x77, 0x77, 0x77, 0x5c, 0x2e, 0x29, 0x3f, 0x79, 0x6f, + 0x75, 0x74, 0x75, 0x28, 0x3f, 0x3a, 0x62, 0x65, 0x5c, 0x2e, 0x63, 0x6f, 0x6d, 0x5c, 0x2f, 0x77, + 0x61, 0x74, 0x63, 0x68, 0x5c, 0x3f, 0x76, 0x3d, 0x7c, 0x5c, 0x2e, 0x62, 0x65, 0x5c, 0x2f, 0x29, + 0x28, 0x3f, 0x3a, 0x5b, 0x5c, 0x77, 0x5c, 0x2d, 0x5f, 0x5d, 0x2a, 0x29, 0x28, 0x3f, 0x3a, 0x26, + 0x28, 0x61, 0x6d, 0x70, 0x3b, 0x29, 0x3f, 0x5b, 0x5c, 0x77, 0x5c, 0x3f, 0x3d, 0x5d, 0x2a, 0x29, + 0x3f, 0x29, 0x24, 0x7c, 0x5e, 0x28, 0x3f, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3f, 0x3a, 0x5c, + 0x2f, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x77, 0x77, 0x77, 0x5c, 0x2e, 0x29, 0x3f, 0x76, 0x69, 0x6d, + 0x65, 0x6f, 0x5c, 0x2e, 0x63, 0x6f, 0x6d, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x73, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x5c, 0x77, 0x2b, 0x5c, 0x2f, 0x29, 0x3f, + 0x7c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x5c, 0x2f, 0x28, 0x5b, 0x5e, 0x5c, 0x2f, 0x5d, 0x2a, + 0x29, 0x5c, 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x5c, 0x2f, 0x7c, 0x29, 0x28, 0x3f, 0x3a, + 0x5c, 0x64, 0x2b, 0x29, 0x28, 0x3f, 0x3a, 0x7c, 0x5c, 0x2f, 0x5c, 0x3f, 0x29, 0x29, 0x24, 0x52, + 0x04, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0xf4, 0x01, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0xdd, 0x01, 0xfa, 0x42, 0xd9, 0x01, 0x92, 0x01, 0xd5, 0x01, + 0x18, 0x01, 0x22, 0xd0, 0x01, 0x72, 0xcd, 0x01, 0x32, 0xca, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x68, + 0x74, 0x74, 0x70, 0x73, 0x3f, 0x3a, 0x5c, 0x2f, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x77, 0x77, 0x77, + 0x5c, 0x2e, 0x29, 0x3f, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x28, 0x3f, 0x3a, 0x62, 0x65, 0x5c, 0x2e, + 0x63, 0x6f, 0x6d, 0x5c, 0x2f, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5c, 0x3f, 0x76, 0x3d, 0x7c, 0x5c, + 0x2e, 0x62, 0x65, 0x5c, 0x2f, 0x29, 0x28, 0x3f, 0x3a, 0x5b, 0x5c, 0x77, 0x5c, 0x2d, 0x5f, 0x5d, + 0x2a, 0x29, 0x28, 0x3f, 0x3a, 0x26, 0x28, 0x61, 0x6d, 0x70, 0x3b, 0x29, 0x3f, 0x5b, 0x5c, 0x77, + 0x5c, 0x3f, 0x3d, 0x5d, 0x2a, 0x29, 0x3f, 0x29, 0x24, 0x7c, 0x5e, 0x28, 0x3f, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3f, 0x3a, 0x5c, 0x2f, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x77, 0x77, 0x77, 0x5c, - 0x2e, 0x29, 0x3f, 0x79, 0x6f, 0x75, 0x74, 0x75, 0x28, 0x3f, 0x3a, 0x62, 0x65, 0x5c, 0x2e, 0x63, - 0x6f, 0x6d, 0x5c, 0x2f, 0x77, 0x61, 0x74, 0x63, 0x68, 0x5c, 0x3f, 0x76, 0x3d, 0x7c, 0x5c, 0x2e, - 0x62, 0x65, 0x5c, 0x2f, 0x29, 0x28, 0x3f, 0x3a, 0x5b, 0x5c, 0x77, 0x5c, 0x2d, 0x5f, 0x5d, 0x2a, - 0x29, 0x28, 0x3f, 0x3a, 0x26, 0x28, 0x61, 0x6d, 0x70, 0x3b, 0x29, 0x3f, 0x5b, 0x5c, 0x77, 0x5c, - 0x3f, 0x3d, 0x5d, 0x2a, 0x29, 0x3f, 0x29, 0x24, 0x7c, 0x5e, 0x28, 0x3f, 0x3a, 0x68, 0x74, 0x74, - 0x70, 0x73, 0x3f, 0x3a, 0x5c, 0x2f, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x77, 0x77, 0x77, 0x5c, 0x2e, - 0x29, 0x3f, 0x76, 0x69, 0x6d, 0x65, 0x6f, 0x5c, 0x2e, 0x63, 0x6f, 0x6d, 0x5c, 0x2f, 0x28, 0x3f, - 0x3a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x5c, 0x77, - 0x2b, 0x5c, 0x2f, 0x29, 0x3f, 0x7c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x5c, 0x2f, 0x28, 0x5b, - 0x5e, 0x5c, 0x2f, 0x5d, 0x2a, 0x29, 0x5c, 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x5c, 0x2f, - 0x7c, 0x29, 0x28, 0x3f, 0x3a, 0x5c, 0x64, 0x2b, 0x29, 0x28, 0x3f, 0x3a, 0x7c, 0x5c, 0x2f, 0x5c, - 0x3f, 0x29, 0x29, 0x24, 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x1a, 0x55, 0x0a, 0x08, 0x52, - 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, - 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, - 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x03, 0x75, - 0x72, 0x6c, 0x1a, 0xa8, 0x02, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, - 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x06, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x43, - 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x73, 0x61, 0x66, 0x65, 0x74, - 0x79, 0x12, 0x5e, 0x0a, 0x0f, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x5f, 0x65, 0x71, 0x75, 0x69, 0x70, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, - 0x69, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, - 0x65, 0x52, 0x0e, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, - 0x74, 0x1a, 0x6a, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, - 0x6f, 0x64, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x6e, 0x64, - 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x61, 0x6e, 0x64, - 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xee, 0x01, - 0x0a, 0x18, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, - 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, - 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, - 0x42, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x2e, 0x29, 0x3f, 0x76, 0x69, 0x6d, 0x65, 0x6f, 0x5c, 0x2e, 0x63, 0x6f, 0x6d, 0x5c, 0x2f, 0x28, + 0x3f, 0x3a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x5c, 0x2f, 0x28, 0x3f, 0x3a, 0x5c, + 0x77, 0x2b, 0x5c, 0x2f, 0x29, 0x3f, 0x7c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x5c, 0x2f, 0x28, + 0x5b, 0x5e, 0x5c, 0x2f, 0x5d, 0x2a, 0x29, 0x5c, 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x5c, + 0x2f, 0x7c, 0x29, 0x28, 0x3f, 0x3a, 0x5c, 0x64, 0x2b, 0x29, 0x28, 0x3f, 0x3a, 0x7c, 0x5c, 0x2f, + 0x5c, 0x3f, 0x29, 0x29, 0x24, 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x1a, 0x55, 0x0a, 0x08, + 0x52, 0x65, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, + 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x03, + 0x75, 0x72, 0x6c, 0x1a, 0xa8, 0x02, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x06, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2e, + 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x73, 0x61, 0x66, 0x65, + 0x74, 0x79, 0x12, 0x5e, 0x0a, 0x0f, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x5f, 0x65, 0x71, 0x75, 0x69, + 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x0e, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, + 0x6e, 0x74, 0x1a, 0x6a, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x62, 0x6f, 0x64, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x6e, + 0x64, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x61, 0x6e, + 0x64, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xee, + 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, + 0x72, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, + 0x12, 0x42, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x62, 0x72, 0x61, + 0x6e, 0x64, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, + 0xc7, 0x02, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, + 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xfa, 0x42, 0x26, 0x72, 0x24, + 0x52, 0x00, 0x52, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x52, 0x09, 0x2d, 0x62, + 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, + 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x1f, 0x0a, + 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x39, + 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xb2, 0x02, 0x0a, 0x18, 0x47, 0x65, + 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x08, 0x62, + 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, + 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, + 0x42, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x62, 0x72, 0x61, 0x6e, - 0x64, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, - 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xc7, - 0x02, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x42, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, + 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xa4, + 0x03, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xfa, 0x42, 0x26, 0x72, 0x24, 0x52, - 0x00, 0x52, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x52, 0x09, 0x2d, 0x62, 0x72, - 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, - 0x61, 0x6d, 0x65, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x1f, 0x0a, 0x06, - 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x39, 0x0a, - 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xb2, 0x02, 0x0a, 0x18, 0x47, 0x65, 0x74, - 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x08, 0x62, 0x72, - 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, - 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, - 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, - 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x42, - 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, - 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xa4, 0x03, - 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, + 0x64, 0x73, 0x12, 0x46, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xfa, 0x42, 0x28, 0x72, 0x26, 0x18, 0x24, 0x32, 0x22, 0x5e, + 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, + 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x7c, 0x29, 0x3f, + 0x24, 0x52, 0x07, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, + 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x59, + 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x3e, 0xfa, 0x42, 0x3b, 0x72, 0x39, 0x52, 0x00, 0x52, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, + 0x5f, 0x69, 0x64, 0x52, 0x09, 0x2d, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x52, 0x08, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x52, 0x09, 0x2d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, + 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x18, 0x64, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x9d, 0x03, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x73, 0x12, 0x46, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x2b, 0xfa, 0x42, 0x28, 0x72, 0x26, 0x18, 0x24, 0x32, 0x22, 0x5e, 0x28, - 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, - 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x7c, 0x29, 0x3f, 0x24, - 0x52, 0x07, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, - 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x59, 0x0a, - 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x3e, 0xfa, 0x42, 0x3b, 0x72, 0x39, 0x52, 0x00, 0x52, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, - 0x69, 0x64, 0x52, 0x09, 0x2d, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x52, 0x08, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x52, 0x09, 0x2d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, - 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, - 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, - 0x64, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x9d, 0x03, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x02, 0x18, 0x01, - 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, - 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x73, - 0x0a, 0x16, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, + 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, + 0x73, 0x0a, 0x16, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, + 0x13, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x49, 0x64, 0x73, 0x1a, 0x6f, 0x0a, 0x1b, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x09, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x28, 0x01, 0x52, + 0x08, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x65, 0x6e, + 0x64, 0x6f, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x49, 0x64, 0x22, 0xfa, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x13, - 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x49, 0x64, 0x73, 0x1a, 0x6f, 0x0a, 0x1b, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x12, 0x24, 0x0a, 0x09, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x28, 0x01, 0x52, 0x08, - 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x65, 0x6e, 0x64, - 0x6f, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x49, 0x64, 0x22, 0xfa, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, - 0x6b, 0x22, 0x55, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x36, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, - 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x22, 0x55, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, - 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x22, - 0xad, 0x01, 0x0a, 0x15, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1f, 0x0a, 0x06, 0x66, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, - 0x18, 0xff, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, - 0x6d, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x0a, 0x66, 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2a, 0x0a, 0x08, 0x77, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, - 0x42, 0x0b, 0x92, 0x01, 0x08, 0x10, 0x0a, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x08, 0x77, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x10, - 0x0a, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, - 0x98, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, - 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, - 0x10, 0x0a, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, - 0x67, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x10, 0x0a, 0x22, 0x04, 0x72, 0x02, - 0x18, 0x64, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0xe3, 0x03, 0x0a, 0x15, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x63, - 0x6f, 0x64, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x12, 0x2f, - 0x0a, 0x13, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, - 0x46, 0x0a, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x2b, 0xfa, 0x42, 0x28, 0x72, 0x26, 0x18, 0x24, 0x32, 0x22, 0x5e, 0x28, 0x5b, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x7c, 0x29, 0x3f, 0x24, 0x52, 0x07, - 0x63, 0x6f, 0x64, 0x65, 0x63, 0x49, 0x64, 0x12, 0x53, 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, - 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, - 0x10, 0x14, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x1a, 0xb1, 0x01, 0x0a, - 0x07, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x22, 0xe3, 0x03, 0x0a, 0x15, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x09, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x13, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x12, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xfa, 0x42, 0x28, 0x72, 0x26, 0x18, 0x24, - 0x32, 0x22, 0x5e, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, - 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, - 0x7c, 0x29, 0x3f, 0x24, 0x52, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x49, 0x64, 0x12, 0x53, 0x0a, - 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, - 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x14, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x73, 0x1a, 0xb1, 0x01, 0x0a, 0x07, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x2a, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x05, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, - 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x06, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2a, 0xe7, 0x01, 0x0a, 0x0f, 0x4b, 0x65, 0x79, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x2b, 0x0a, 0x18, 0x4b, 0x45, - 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x0a, 0x07, - 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x29, 0x0a, 0x17, 0x4b, 0x45, 0x59, 0x5f, 0x50, - 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x55, 0x53, 0x54, - 0x4f, 0x4d, 0x10, 0x01, 0x1a, 0x0c, 0xea, 0xaa, 0x19, 0x08, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x12, 0x33, 0x0a, 0x1c, 0x4b, 0x45, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, - 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x45, 0x52, 0x10, 0x02, 0x1a, 0x11, 0xea, 0xaa, 0x19, 0x0d, 0x0a, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x19, 0x4b, 0x45, 0x59, 0x5f, 0x50, - 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x41, 0x4e, 0x49, - 0x46, 0x45, 0x53, 0x54, 0x10, 0x03, 0x1a, 0x0e, 0xea, 0xaa, 0x19, 0x0a, 0x0a, 0x08, 0x6d, 0x61, - 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x1a, 0x18, 0xea, 0xaa, 0x19, 0x14, 0x18, 0x01, 0x2a, 0x10, - 0x4b, 0x45, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x47, - 0x2a, 0xdd, 0x01, 0x0a, 0x0b, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x12, 0x27, 0x0a, 0x14, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, - 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, - 0x0a, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x21, 0x0a, 0x11, 0x4b, 0x45, 0x59, - 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, - 0x1a, 0x0a, 0xea, 0xaa, 0x19, 0x06, 0x0a, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x12, 0x35, 0x0a, 0x1b, - 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x41, - 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x02, 0x1a, 0x14, 0xea, - 0xaa, 0x19, 0x10, 0x0a, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x1b, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, - 0x49, 0x54, 0x59, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x45, 0x4c, 0x45, 0x4d, 0x45, - 0x4e, 0x54, 0x10, 0x03, 0x1a, 0x14, 0xea, 0xaa, 0x19, 0x10, 0x0a, 0x0e, 0x73, 0x65, 0x63, 0x75, - 0x72, 0x65, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x14, 0xea, 0xaa, 0x19, 0x10, - 0x18, 0x01, 0x2a, 0x0c, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, - 0x32, 0x8c, 0x17, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0xb5, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x72, - 0x61, 0x6e, 0x64, 0x73, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, - 0x72, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x12, 0x0a, 0x2f, 0x64, 0x72, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, - 0x73, 0x5a, 0x3a, 0x12, 0x38, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x12, 0xba, 0x01, - 0x0a, 0x08, 0x47, 0x65, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x45, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, - 0x72, 0x61, 0x6e, 0x64, 0x22, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5e, 0x12, 0x15, 0x2f, 0x64, - 0x72, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, - 0x69, 0x64, 0x7d, 0x5a, 0x45, 0x12, 0x43, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, - 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa5, 0x02, 0x0a, 0x0a, 0x4c, - 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x22, 0x55, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x36, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, + 0x64, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x22, 0x55, 0x0a, 0x1b, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, + 0x22, 0xad, 0x01, 0x0a, 0x15, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1f, 0x0a, 0x06, 0x66, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, + 0x03, 0x18, 0xff, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, + 0x72, 0x6d, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0a, 0x66, 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2a, 0x0a, 0x08, + 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0e, + 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x10, 0x0a, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x08, + 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, + 0x10, 0x0a, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, + 0x22, 0x98, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, + 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, + 0x08, 0x10, 0x0a, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x10, 0x0a, 0x22, 0x04, 0x72, + 0x02, 0x18, 0x64, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0xe3, 0x03, 0x0a, 0x15, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, + 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x12, + 0x2f, 0x0a, 0x13, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x12, 0x46, 0x0a, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x2b, 0xfa, 0x42, 0x28, 0x72, 0x26, 0x18, 0x24, 0x32, 0x22, 0x5e, 0x28, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x7c, 0x29, 0x3f, 0x24, 0x52, + 0x07, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x49, 0x64, 0x12, 0x53, 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, + 0x72, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, + 0x02, 0x10, 0x14, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x1a, 0xb1, 0x01, + 0x0a, 0x07, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x05, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x22, 0xe3, 0x03, 0x0a, 0x15, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x09, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x13, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x12, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xfa, 0x42, 0x28, 0x72, 0x26, 0x18, + 0x24, 0x32, 0x22, 0x5e, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, + 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, + 0x7d, 0x7c, 0x29, 0x3f, 0x24, 0x52, 0x07, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x49, 0x64, 0x12, 0x53, + 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x14, 0x52, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x73, 0x1a, 0xb1, 0x01, 0x0a, 0x07, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, + 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x05, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x63, 0x6f, + 0x64, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, + 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, + 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2a, 0xe7, 0x01, 0x0a, 0x0f, 0x4b, 0x65, 0x79, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x2b, 0x0a, 0x18, 0x4b, + 0x45, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x0a, + 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x29, 0x0a, 0x17, 0x4b, 0x45, 0x59, 0x5f, + 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x55, 0x53, + 0x54, 0x4f, 0x4d, 0x10, 0x01, 0x1a, 0x0c, 0xea, 0xaa, 0x19, 0x08, 0x0a, 0x06, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x12, 0x33, 0x0a, 0x1c, 0x4b, 0x45, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, + 0x53, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x53, 0x45, 0x52, + 0x56, 0x45, 0x52, 0x10, 0x02, 0x1a, 0x11, 0xea, 0xaa, 0x19, 0x0d, 0x0a, 0x0b, 0x6a, 0x6f, 0x69, + 0x6e, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x19, 0x4b, 0x45, 0x59, 0x5f, + 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x41, 0x4e, + 0x49, 0x46, 0x45, 0x53, 0x54, 0x10, 0x03, 0x1a, 0x0e, 0xea, 0xaa, 0x19, 0x0a, 0x0a, 0x08, 0x6d, + 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x1a, 0x18, 0xea, 0xaa, 0x19, 0x14, 0x18, 0x01, 0x2a, + 0x10, 0x4b, 0x45, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x49, 0x4e, + 0x47, 0x2a, 0xdd, 0x01, 0x0a, 0x0b, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x12, 0x27, 0x0a, 0x14, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, + 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x1a, 0x0d, 0xea, 0xaa, 0x19, + 0x09, 0x0a, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x21, 0x0a, 0x11, 0x4b, 0x45, + 0x59, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, + 0x01, 0x1a, 0x0a, 0xea, 0xaa, 0x19, 0x06, 0x0a, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x12, 0x35, 0x0a, + 0x1b, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, + 0x41, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x02, 0x1a, 0x14, + 0xea, 0xaa, 0x19, 0x10, 0x0a, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x1b, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x45, 0x43, 0x55, + 0x52, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x45, 0x4c, 0x45, 0x4d, + 0x45, 0x4e, 0x54, 0x10, 0x03, 0x1a, 0x14, 0xea, 0xaa, 0x19, 0x10, 0x0a, 0x0e, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x65, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x14, 0xea, 0xaa, 0x19, + 0x10, 0x18, 0x01, 0x2a, 0x0c, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, + 0x59, 0x32, 0x8c, 0x17, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0xb5, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x42, + 0x72, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xbd, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb6, 0x01, 0x12, 0x0a, 0x2f, 0x64, - 0x72, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x5a, 0x1e, 0x12, 0x1c, 0x2f, 0x64, 0x72, 0x2f, - 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x5a, 0x3a, 0x12, 0x38, 0x2f, 0x64, 0x72, 0x2f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x73, 0x5a, 0x4c, 0x12, 0x4a, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, + 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x42, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x12, 0x0a, 0x2f, 0x64, 0x72, 0x2f, 0x62, 0x72, 0x61, 0x6e, + 0x64, 0x73, 0x5a, 0x3a, 0x12, 0x38, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x12, 0xba, + 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x28, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x42, 0x72, 0x61, 0x6e, 0x64, 0x22, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5e, 0x12, 0x15, 0x2f, + 0x64, 0x72, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, + 0x5f, 0x69, 0x64, 0x7d, 0x5a, 0x45, 0x12, 0x43, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, + 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa5, 0x02, 0x0a, 0x0a, + 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0xbd, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb6, 0x01, 0x12, 0x0a, 0x2f, + 0x64, 0x72, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x5a, 0x1e, 0x12, 0x1c, 0x2f, 0x64, 0x72, + 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x5a, 0x3a, 0x12, 0x38, 0x2f, 0x64, 0x72, + 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x5a, 0x4c, 0x12, 0x4a, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, + 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x73, 0x12, 0xe0, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x89, 0x01, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x82, 0x01, 0x12, 0x27, 0x2f, 0x64, 0x72, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x73, 0x12, 0xe0, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, - 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x89, 0x01, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x82, 0x01, 0x12, 0x27, 0x2f, 0x64, 0x72, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, - 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x73, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x5a, 0x57, 0x12, 0x55, - 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9c, 0x05, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0xc5, 0x04, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0xbe, 0x04, 0x12, 0x7d, 0x2f, 0x64, 0x72, 0x2f, 0x62, 0x72, 0x61, 0x6e, - 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, - 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, - 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5a, 0x6d, 0x12, 0x6b, 0x2f, 0x64, 0x72, 0x2f, 0x76, 0x65, 0x6e, - 0x64, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x65, 0x6e, - 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, - 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x5a, 0xae, 0x01, 0x12, 0xab, 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, - 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, - 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, - 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5a, 0x9c, 0x01, 0x12, 0x99, 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x61, + 0x6c, 0x73, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x5a, 0x57, 0x12, + 0x55, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x62, 0x72, 0x61, 0x6e, 0x64, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9c, 0x05, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0xc5, 0x04, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xbe, 0x04, 0x12, 0x7d, 0x2f, 0x64, 0x72, 0x2f, 0x62, 0x72, 0x61, + 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5a, 0x6d, 0x12, 0x6b, 0x2f, 0x64, 0x72, 0x2f, 0x76, 0x65, + 0x6e, 0x64, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x65, + 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, + 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5a, 0xae, 0x01, 0x12, 0xab, 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x76, 0x65, 0x6e, - 0x64, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x65, 0x6e, - 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, - 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x12, 0xc2, 0x03, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x55, 0x70, 0x6c, 0x69, - 0x6e, 0x6b, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x22, 0xda, 0x02, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0xd3, 0x02, 0x12, 0x8e, 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x62, 0x72, 0x61, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x2f, - 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x5a, 0xbf, 0x01, 0x12, 0xbc, 0x01, 0x2f, 0x64, 0x72, - 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, - 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x73, 0x2e, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, - 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x75, 0x70, 0x6c, 0x69, 0x6e, - 0x6b, 0x2f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0xc8, 0x03, 0x0a, 0x12, 0x47, 0x65, - 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, - 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x63, 0x6f, - 0x64, 0x65, 0x72, 0x22, 0xde, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd7, 0x02, 0x12, 0x90, 0x01, - 0x2f, 0x64, 0x72, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5a, 0x9c, 0x01, 0x12, 0x99, 0x01, 0x2f, 0x64, 0x72, 0x2f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x76, 0x65, + 0x6e, 0x64, 0x6f, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x65, + 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, + 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0xc2, 0x03, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x55, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x22, 0xda, 0x02, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd3, 0x02, 0x12, 0x8e, 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x62, 0x72, + 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, + 0x2f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x5a, 0xbf, 0x01, 0x12, 0xbc, 0x01, 0x2f, 0x64, + 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, + 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x75, 0x70, 0x6c, 0x69, + 0x6e, 0x6b, 0x2f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0xc8, 0x03, 0x0a, 0x12, 0x47, + 0x65, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, + 0x72, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x63, + 0x6f, 0x64, 0x65, 0x72, 0x22, 0xde, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd7, 0x02, 0x12, 0x90, + 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, + 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, + 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x2f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, + 0x72, 0x5a, 0xc1, 0x01, 0x12, 0xbe, 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, + 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x72, 0x61, + 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x2f, 0x64, 0x65, + 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0xc8, 0x03, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, + 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x22, + 0xde, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd7, 0x02, 0x12, 0x90, 0x01, 0x2f, 0x64, 0x72, 0x2f, + 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, + 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x5a, 0xc1, 0x01, 0x12, + 0xbe, 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, @@ -2995,52 +3032,11 @@ var file_lorawan_stack_api_devicerepository_proto_rawDesc = []byte{ 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x2f, - 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x2f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, - 0x5a, 0xc1, 0x01, 0x12, 0xbe, 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x72, 0x61, 0x6e, - 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, - 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, - 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x73, 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x2f, 0x64, 0x65, 0x63, - 0x6f, 0x64, 0x65, 0x72, 0x12, 0xc8, 0x03, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x44, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x22, 0xde, - 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xd7, 0x02, 0x12, 0x90, 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x62, - 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x73, 0x2e, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, - 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, - 0x69, 0x6e, 0x6b, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x5a, 0xc1, 0x01, 0x12, 0xbe, - 0x01, 0x2f, 0x64, 0x72, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x66, 0x69, 0x72, 0x6d, - 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x7b, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x64, - 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x42, - 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, - 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, + 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, + 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/end_device.pb.go b/pkg/ttnpb/end_device.pb.go index bed9c16bcf..ecd9b16fa6 100644 --- a/pkg/ttnpb/end_device.pb.go +++ b/pkg/ttnpb/end_device.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -3942,662 +3941,45 @@ var file_lorawan_stack_api_end_device_proto_rawDesc = []byte{ 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, - 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, - 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, + 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, + 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x69, 0x63, - 0x74, 0x75, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, - 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x06, 0x0a, 0x07, 0x53, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xed, 0x02, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd1, 0x02, 0xfa, 0x42, 0x06, 0x7a, - 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, - 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, - 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, - 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, - 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, - 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, - 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, - 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, - 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, - 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, - 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, - 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x92, 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, - 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, - 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x39, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, - 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6b, 0x65, 0x79, - 0x73, 0x12, 0x21, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, - 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x43, - 0x6e, 0x74, 0x55, 0x70, 0x12, 0x28, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6e, 0x5f, 0x66, - 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4e, 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x28, - 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, - 0x6f, 0x77, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x41, - 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x2e, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x65, 0x0a, 0x1c, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, - 0x6e, 0x6b, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x1a, - 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, - 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x33, 0x0a, 0x09, 0x42, 0x6f, - 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, - 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, - 0xc5, 0x0f, 0x0a, 0x0d, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x69, 0x72, 0x70, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x45, 0x69, 0x72, 0x70, 0x12, 0x56, 0x0a, 0x13, - 0x61, 0x64, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x10, 0x61, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x12, 0x34, 0x0a, 0x12, 0x61, 0x64, 0x72, 0x5f, 0x74, 0x78, 0x5f, 0x70, - 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x0f, 0x61, 0x64, 0x72, 0x54, 0x78, - 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x29, 0x0a, 0x0c, 0x61, 0x64, - 0x72, 0x5f, 0x6e, 0x62, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x0a, 0x61, 0x64, 0x72, 0x4e, 0x62, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0d, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, - 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, - 0x52, 0x0b, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, - 0x0d, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, - 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x3e, 0x0a, 0x09, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x65, 0x6c, - 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, - 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x78, 0x31, - 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x59, 0x0a, 0x14, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x72, - 0x78, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x12, 0x56, 0x0a, 0x13, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, - 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x72, 0x78, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2e, 0x0a, 0x0d, 0x72, 0x78, 0x32, 0x5f, - 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x09, 0xfa, 0x42, 0x06, 0x32, 0x04, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x0c, 0x72, 0x78, 0x32, 0x46, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x53, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, - 0x64, 0x75, 0x74, 0x79, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, 0x74, 0x79, - 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x0c, 0x6d, 0x61, 0x78, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x64, 0x0a, - 0x17, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, - 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x15, 0x72, 0x65, - 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, - 0x69, 0x74, 0x79, 0x12, 0x67, 0x0a, 0x18, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x16, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x13, - 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, 0x06, - 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x11, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, - 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x5b, 0x0a, 0x19, 0x70, 0x69, 0x6e, - 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, - 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x02, 0x18, 0x01, 0x52, - 0x15, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x36, 0x0a, 0x10, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, 0x06, 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x0f, 0x62, - 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x4b, - 0x0a, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, - 0x01, 0x52, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x75, - 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, - 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x5d, 0x0a, - 0x16, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x65, - 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, - 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, - 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x5d, 0x0a, 0x16, - 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x65, 0x78, - 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, - 0x52, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, - 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x44, 0x65, - 0x6c, 0x61, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x67, 0x0a, 0x1f, 0x70, - 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, - 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x18, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, - 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xda, 0x02, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x12, 0x36, 0x0a, 0x10, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, - 0x06, 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x46, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x38, 0x0a, 0x12, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x32, 0x04, 0x28, 0xa0, 0x8d, 0x06, 0x52, - 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x79, 0x12, 0x56, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, - 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x56, 0x0a, 0x13, 0x6d, 0x61, - 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x10, 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x6c, - 0x69, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, - 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x02, 0x10, - 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xfa, 0x05, 0x0a, 0x10, 0x45, 0x6e, 0x64, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x03, - 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x4d, 0x0a, 0x0f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x13, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, - 0x70, 0x68, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x11, 0x66, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0f, - 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, - 0x20, 0x0a, 0x06, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x0a, 0x52, 0x06, 0x70, 0x68, 0x6f, 0x74, 0x6f, - 0x73, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x5f, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x12, 0x28, 0x0a, 0x10, 0x73, - 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x63, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x43, 0x12, 0x4d, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x52, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x61, 0x63, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6e, - 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, - 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, - 0x0a, 0x0d, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4a, - 0x6f, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x6a, 0x6f, - 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x10, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x4a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x6e, 0x63, 0x65, - 0x73, 0x12, 0x61, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x73, 0x22, 0xfc, 0x07, 0x0a, 0x0b, 0x41, 0x44, 0x52, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x40, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x12, 0x43, 0x0a, 0x07, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, - 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x6f, 0x64, 0x65, - 0x48, 0x00, 0x52, 0x07, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x12, 0x46, 0x0a, 0x08, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, - 0x44, 0x52, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x1a, 0xbc, 0x01, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4d, 0x6f, - 0x64, 0x65, 0x12, 0x4f, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x2d, 0x0a, 0x0e, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x0c, 0x74, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x12, 0x24, 0x0a, 0x08, 0x6e, 0x62, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x2a, 0x04, 0x18, 0x0f, 0x28, 0x01, 0x52, - 0x07, 0x6e, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, - 0x10, 0x01, 0x1a, 0xb0, 0x04, 0x0a, 0x0b, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x6f, - 0x64, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x51, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x51, 0x0a, 0x13, 0x6d, 0x61, - 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x6d, 0x61, 0x78, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x52, 0x0a, - 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, - 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0f, - 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x54, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x12, 0x52, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, - 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x54, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x49, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x62, 0x5f, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x2a, 0x04, - 0x18, 0x03, 0x28, 0x01, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x4e, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x12, 0x49, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x62, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x2a, 0x04, 0x18, 0x03, 0x28, 0x01, 0x52, - 0x0a, 0x6d, 0x61, 0x78, 0x4e, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, - 0x04, 0x08, 0x01, 0x10, 0x01, 0x1a, 0x18, 0x0a, 0x0c, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x3a, - 0x0a, 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x20, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x6d, - 0x6f, 0x64, 0x65, 0x22, 0xf2, 0x15, 0x0a, 0x0b, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x62, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x54, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x57, 0x0a, 0x15, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, - 0x6c, 0x6f, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x70, 0x69, 0x6e, 0x67, - 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x12, - 0x5c, 0x0a, 0x19, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x56, 0x0a, - 0x13, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x5a, 0x65, 0x72, 0x6f, - 0x61, 0x62, 0x6c, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x11, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x46, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x51, 0x0a, 0x10, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, - 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x5a, 0x65, 0x72, 0x6f, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x41, 0x0a, 0x0f, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x5f, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x43, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x72, - 0x78, 0x31, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x72, 0x78, - 0x31, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x54, 0x0a, 0x14, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x72, 0x78, 0x31, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x51, 0x0a, 0x13, - 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x72, - 0x78, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, - 0x43, 0x0a, 0x0d, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x72, 0x78, 0x32, 0x46, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x79, 0x12, 0x46, 0x0a, 0x1a, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, - 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, - 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x04, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, - 0x10, 0x60, 0x52, 0x18, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x72, 0x65, 0x73, 0x65, - 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0e, - 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, 0x74, 0x79, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, - 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, - 0x6d, 0x61, 0x78, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x15, - 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x33, 0x32, 0x5f, 0x62, 0x69, 0x74, 0x5f, - 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x6f, - 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, - 0x33, 0x32, 0x42, 0x69, 0x74, 0x46, 0x43, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x75, 0x73, 0x65, - 0x5f, 0x61, 0x64, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x75, 0x73, 0x65, 0x41, 0x64, - 0x72, 0x12, 0x3e, 0x0a, 0x0a, 0x61, 0x64, 0x72, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x61, 0x64, 0x72, 0x4d, 0x61, 0x72, 0x67, 0x69, - 0x6e, 0x12, 0x3b, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x66, 0x5f, 0x63, 0x6e, - 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x46, 0x43, 0x6e, 0x74, 0x12, 0x51, - 0x0a, 0x17, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, - 0x79, 0x12, 0x56, 0x0a, 0x18, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x16, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x12, 0x48, 0x0a, 0x11, 0x64, 0x65, 0x73, - 0x69, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x12, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x52, 0x78, 0x31, 0x44, 0x65, - 0x6c, 0x61, 0x79, 0x12, 0x63, 0x0a, 0x1c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x72, - 0x78, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, - 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x52, 0x78, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, - 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x60, 0x0a, 0x1b, 0x64, 0x65, 0x73, 0x69, - 0x72, 0x65, 0x64, 0x5f, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, - 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x17, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x52, 0x78, 0x32, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x52, 0x0a, 0x15, 0x64, 0x65, - 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x79, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x64, 0x65, 0x73, 0x69, 0x72, - 0x65, 0x64, 0x52, 0x78, 0x32, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x5d, - 0x0a, 0x16, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, - 0x74, 0x79, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, - 0x63, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, - 0x64, 0x4d, 0x61, 0x78, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x6c, 0x0a, - 0x1e, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, - 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, - 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x1a, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x41, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x6c, 0x0a, 0x1e, 0x64, - 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x64, - 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x18, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, - 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, 0x64, - 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x41, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, - 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x6b, 0x0a, 0x21, 0x64, 0x65, 0x73, - 0x69, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x1b, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, - 0x64, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x65, 0x0a, 0x1b, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, - 0x64, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x5a, 0x65, 0x72, - 0x6f, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x18, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x50, 0x69, 0x6e, 0x67, - 0x53, 0x6c, 0x6f, 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x60, 0x0a, - 0x18, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, - 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x5a, 0x65, 0x72, 0x6f, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, - 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, - 0x49, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65, - 0x69, 0x72, 0x70, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x45, 0x49, 0x52, 0x50, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x64, 0x65, 0x73, 0x69, - 0x72, 0x65, 0x64, 0x4d, 0x61, 0x78, 0x45, 0x69, 0x72, 0x70, 0x12, 0x57, 0x0a, 0x1b, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x5f, 0x62, 0x5f, 0x63, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, - 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x42, 0x43, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x12, 0x45, 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x77, - 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, - 0x6b, 0x44, 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x64, 0x6f, - 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x77, 0x65, 0x6c, - 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x03, 0x61, 0x64, 0x72, 0x18, 0x22, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, - 0x03, 0x61, 0x64, 0x72, 0x12, 0x48, 0x0a, 0x12, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x73, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x3a, 0x08, - 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x96, 0x28, 0x0a, 0x08, 0x4d, 0x41, 0x43, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x56, 0x0a, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x56, 0x0a, - 0x12, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x0f, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x1a, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, - 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, - 0x74, 0x12, 0x35, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x76, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x46, 0x43, 0x6e, 0x74, 0x55, 0x70, 0x12, 0x57, 0x0a, 0x15, 0x70, 0x69, 0x6e, 0x67, - 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, - 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, - 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x70, 0x69, - 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, - 0x79, 0x12, 0x65, 0x0a, 0x1c, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, - 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x1a, 0x70, 0x65, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x45, 0x0a, 0x10, 0x71, 0x75, 0x65, 0x75, - 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x0f, - 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, - 0x45, 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x12, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, - 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4a, 0x6f, 0x69, - 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x10, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x4a, - 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x56, 0x0a, 0x14, 0x70, 0x65, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x12, 0x70, - 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x78, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x5f, - 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x12, 0x72, 0x78, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x4d, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x70, - 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, 0x69, 0x6e, - 0x6b, 0x73, 0x12, 0x53, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, - 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x44, 0x6f, - 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x66, 0x0a, 0x22, 0x6c, 0x61, 0x73, 0x74, 0x5f, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x1e, 0x6c, 0x61, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x69, 0x74, - 0x69, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x74, 0x12, - 0x72, 0x0a, 0x1e, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x72, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, 0x01, 0x09, 0x10, 0x0f, - 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x1a, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x41, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x1d, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x64, 0x72, 0x5f, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, - 0x01, 0x08, 0x10, 0x0f, 0x22, 0x04, 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x19, 0x72, 0x65, 0x6a, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x41, 0x64, 0x72, 0x54, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x14, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x13, 0x20, - 0x03, 0x28, 0x04, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x22, 0x06, 0x32, 0x04, 0x28, - 0xa0, 0x8d, 0x06, 0x52, 0x13, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x46, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x74, 0x18, 0x14, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, - 0x6c, 0x61, 0x73, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x74, 0x12, 0x6f, - 0x0a, 0x19, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x72, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x6a, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, - 0x35, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x18, 0x16, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x64, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x46, 0x43, 0x6e, 0x74, 0x55, 0x70, 0x12, 0x69, 0x0a, 0x1e, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, - 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x52, 0x1b, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x63, 0x43, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x1a, 0x83, 0x02, 0x0a, 0x0b, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x51, 0x0a, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x4c, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x72, 0x78, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x72, 0x78, 0x44, 0x65, 0x6c, - 0x61, 0x79, 0x12, 0x2f, 0x0a, 0x07, 0x63, 0x66, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x46, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x06, 0x63, 0x66, 0x4c, - 0x69, 0x73, 0x74, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, - 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, - 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x09, 0x10, - 0x0a, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x1a, 0xd1, 0x07, 0x0a, 0x0a, 0x4a, 0x6f, 0x69, 0x6e, - 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x23, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x10, 0x11, - 0x18, 0x21, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, - 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, - 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, - 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0xed, 0x02, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd1, 0x02, 0xfa, 0x42, 0x06, + 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x69, + 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, + 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x06, 0x0a, 0x07, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xed, 0x02, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd1, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, @@ -4619,242 +4001,835 @@ var file_lorawan_stack_api_end_device_proto_rawDesc = []byte{ 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, - 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0xe7, 0x02, 0x0a, 0x06, 0x6e, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, - 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, - 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, - 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, - 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, - 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, - 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, - 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, - 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, - 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, - 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, - 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, - 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, - 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x6e, 0x65, 0x74, 0x49, - 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x1a, 0xf9, 0x07, 0x0a, 0x0d, - 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, - 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x39, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, + 0x79, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6b, 0x65, + 0x79, 0x73, 0x12, 0x21, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, + 0x5f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x46, + 0x43, 0x6e, 0x74, 0x55, 0x70, 0x12, 0x28, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6e, 0x5f, + 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4e, 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, + 0x28, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, + 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, + 0x41, 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x2e, 0x0a, 0x14, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, + 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x65, 0x0a, 0x1c, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, + 0x1a, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x33, 0x0a, 0x09, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, + 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, + 0x22, 0xc5, 0x0f, 0x0a, 0x0d, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x69, 0x72, 0x70, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x45, 0x69, 0x72, 0x70, 0x12, 0x56, 0x0a, + 0x13, 0x61, 0x64, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x10, 0x61, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x34, 0x0a, 0x12, 0x61, 0x64, 0x72, 0x5f, 0x74, 0x78, 0x5f, + 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x0f, 0x61, 0x64, 0x72, 0x54, + 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x29, 0x0a, 0x0c, 0x61, + 0x64, 0x72, 0x5f, 0x6e, 0x62, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x0a, 0x61, 0x64, 0x72, 0x4e, + 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0d, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, + 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x0b, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, + 0x0a, 0x0d, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x61, 0x64, 0x72, 0x41, 0x63, + 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x3e, 0x0a, 0x09, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x65, + 0x6c, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, + 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x78, + 0x31, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x59, 0x0a, 0x14, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, + 0x72, 0x78, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x12, 0x56, 0x0a, 0x13, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x57, 0x0a, 0x08, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, - 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x2e, 0x54, 0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x12, 0x52, 0x0a, 0x0b, 0x72, 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x2e, 0x52, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x72, 0x78, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, - 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, - 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, - 0x18, 0xff, 0x01, 0x52, 0x12, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0x53, 0x0a, 0x0a, 0x54, 0x78, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, - 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, - 0x74, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x0a, 0x1a, 0xe0, 0x03, 0x0a, - 0x0a, 0x52, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x0b, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x73, 0x73, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x73, 0x73, 0x69, 0x12, 0x10, 0x0a, - 0x03, 0x73, 0x6e, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x73, 0x6e, 0x72, 0x12, - 0x6a, 0x0a, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, - 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x43, - 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x16, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, - 0x68, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x75, - 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x0b, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x6b, - 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x18, - 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, - 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x52, 0x78, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, - 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x1a, 0x1c, 0x0a, 0x14, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x09, 0x4a, - 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x0d, 0x10, - 0x0e, 0x4a, 0x04, 0x08, 0x10, 0x10, 0x11, 0x4a, 0x04, 0x08, 0x11, 0x10, 0x12, 0x4a, 0x04, 0x08, - 0x13, 0x10, 0x14, 0x4a, 0x04, 0x08, 0x14, 0x10, 0x15, 0x4a, 0x04, 0x08, 0x63, 0x10, 0x64, 0x4a, - 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x08, 0x10, - 0x09, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x1a, 0x97, 0x04, 0x0a, 0x0f, 0x44, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4a, 0x0a, 0x07, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, - 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, - 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, - 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x1a, 0xee, - 0x02, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x54, 0x0a, 0x05, 0x6d, 0x5f, - 0x68, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x48, 0x44, 0x52, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6d, 0x48, 0x64, 0x72, - 0x12, 0x5c, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, - 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0x44, - 0x0a, 0x04, 0x4d, 0x48, 0x44, 0x52, 0x12, 0x36, 0x0a, 0x06, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x4a, 0x04, - 0x08, 0x02, 0x10, 0x03, 0x1a, 0x5d, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x12, 0x1f, 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x05, 0x66, 0x50, - 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x66, 0x5f, 0x63, 0x6e, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x46, 0x43, 0x6e, - 0x74, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, - 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x08, 0x4a, - 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x07, 0x10, - 0x08, 0x1a, 0xc9, 0x01, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x12, 0x56, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x72, 0x78, 0x32, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2e, 0x0a, 0x0d, 0x72, 0x78, 0x32, + 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x09, 0xfa, 0x42, 0x06, 0x32, 0x04, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x0c, 0x72, 0x78, 0x32, + 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x53, 0x0a, 0x0e, 0x6d, 0x61, 0x78, + 0x5f, 0x64, 0x75, 0x74, 0x79, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, 0x74, + 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x64, + 0x0a, 0x17, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x15, 0x72, + 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, + 0x63, 0x69, 0x74, 0x79, 0x12, 0x67, 0x0a, 0x18, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x16, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, + 0x13, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, + 0x06, 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x11, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, + 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x5b, 0x0a, 0x19, 0x70, 0x69, + 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, + 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x15, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x36, 0x0a, 0x10, 0x62, 0x65, 0x61, 0x63, 0x6f, + 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, 0x06, 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x0f, + 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, + 0x4b, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, + 0x08, 0x01, 0x52, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x45, 0x0a, 0x11, + 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x77, 0x65, 0x6c, 0x6c, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, + 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x5d, + 0x0a, 0x16, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, + 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x5d, 0x0a, + 0x16, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x65, + 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x44, 0x52, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x44, + 0x65, 0x6c, 0x61, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x67, 0x0a, 0x1f, + 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, 0x70, 0x69, 0x6e, 0x67, 0x53, + 0x6c, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xda, 0x02, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x12, 0x36, 0x0a, 0x10, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0b, 0xfa, 0x42, 0x08, + 0x32, 0x06, 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, + 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x38, 0x0a, 0x12, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x32, 0x04, 0x28, 0xa0, 0x8d, 0x06, + 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x12, 0x56, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x56, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x1a, 0x64, 0x0a, - 0x0e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, - 0x48, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, - 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, - 0x01, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, - 0x01, 0x10, 0x01, 0x1a, 0x72, 0x0a, 0x1b, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, - 0x01, 0x22, 0xcb, 0x01, 0x0a, 0x1b, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, - 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x32, 0x13, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, - 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x33, 0x32, 0x7d, 0x24, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x66, 0x72, 0x6f, - 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x35, - 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x54, 0x6f, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, - 0xd7, 0x21, 0x0a, 0x09, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, 0x0a, - 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, + 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, + 0x10, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x02, + 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xfa, 0x05, 0x0a, 0x10, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, + 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, - 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, - 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, - 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x80, 0x01, 0x0a, 0x0a, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, - 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, - 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4c, 0x0a, - 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, - 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x12, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, - 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x49, 0x64, 0x12, 0xc5, 0x01, 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, - 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, - 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, - 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, - 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, - 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, - 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, - 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, - 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x14, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x41, 0x0a, 0x18, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x6b, - 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x15, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0xcd, 0x01, - 0x0a, 0x1a, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, - 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, - 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, - 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, - 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, - 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, - 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, - 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, - 0x7c, 0x5e, 0x24, 0x52, 0x18, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, - 0x1c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x30, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x19, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x4b, 0x65, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x3b, 0x0a, 0x15, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x18, 0x31, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, - 0x52, 0x13, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0xbf, 0x01, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0b, 0x20, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x4d, 0x0a, 0x0f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x13, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x5f, 0x70, 0x68, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x11, 0x66, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, + 0x0f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, 0x64, + 0x12, 0x20, 0x0a, 0x06, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x0a, 0x52, 0x06, 0x70, 0x68, 0x6f, 0x74, + 0x6f, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, + 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x12, 0x28, 0x0a, 0x10, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x63, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x12, 0x4d, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x52, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x61, 0x63, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, + 0x6e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, + 0x78, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, + 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, + 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x6a, + 0x6f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x10, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x4a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x6e, 0x63, + 0x65, 0x73, 0x12, 0x61, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x73, 0x22, 0xfc, 0x07, 0x0a, 0x0b, 0x41, 0x44, 0x52, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x40, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x12, 0x43, 0x0a, 0x07, 0x64, 0x79, 0x6e, 0x61, 0x6d, + 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x6f, 0x64, + 0x65, 0x48, 0x00, 0x52, 0x07, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x12, 0x46, 0x0a, 0x08, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x44, 0x52, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x1a, 0xbc, 0x01, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x4f, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2d, 0x0a, 0x0e, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x0c, 0x74, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x08, 0x6e, 0x62, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x2a, 0x04, 0x18, 0x0f, 0x28, 0x01, + 0x52, 0x07, 0x6e, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x01, 0x10, 0x01, 0x1a, 0xb0, 0x04, 0x0a, 0x0b, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x51, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x51, 0x0a, 0x13, 0x6d, + 0x61, 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x6d, 0x61, + 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x52, + 0x0a, 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, + 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, + 0x0f, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x54, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x12, 0x52, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, + 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x54, 0x78, 0x50, 0x6f, 0x77, 0x65, + 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x49, 0x0a, 0x0c, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x62, + 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, + 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x2a, + 0x04, 0x18, 0x03, 0x28, 0x01, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x4e, 0x62, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x12, 0x49, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x62, 0x5f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x2a, 0x04, 0x18, 0x03, 0x28, 0x01, + 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x4e, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x3a, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x1a, 0x18, 0x0a, 0x0c, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, + 0x3a, 0x0a, 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x20, 0x01, 0x42, 0x06, 0x0a, 0x04, + 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xf2, 0x15, 0x0a, 0x0b, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x62, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, + 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x57, 0x0a, 0x15, 0x70, 0x69, 0x6e, 0x67, 0x5f, + 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, + 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x70, 0x69, 0x6e, + 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, + 0x12, 0x5c, 0x0a, 0x19, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x56, + 0x0a, 0x13, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x5a, 0x65, 0x72, + 0x6f, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x11, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x46, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x51, 0x0a, 0x10, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x5a, 0x65, 0x72, 0x6f, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x41, 0x0a, 0x0f, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x5f, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, + 0x6c, 0x61, 0x73, 0x73, 0x43, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x39, 0x0a, 0x09, + 0x72, 0x78, 0x31, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x72, + 0x78, 0x31, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x54, 0x0a, 0x14, 0x72, 0x78, 0x31, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x72, 0x78, 0x31, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x51, 0x0a, + 0x13, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, + 0x72, 0x78, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x12, 0x43, 0x0a, 0x0d, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x72, 0x78, 0x32, 0x46, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x46, 0x0a, 0x1a, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x79, + 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x69, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x04, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, + 0x02, 0x10, 0x60, 0x52, 0x18, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x72, 0x65, 0x73, + 0x65, 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x4e, 0x0a, + 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, 0x74, 0x79, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, + 0x64, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0c, 0x6d, 0x61, 0x78, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x4b, 0x0a, + 0x15, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x33, 0x32, 0x5f, 0x62, 0x69, 0x74, + 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, + 0x73, 0x33, 0x32, 0x42, 0x69, 0x74, 0x46, 0x43, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x75, 0x73, + 0x65, 0x5f, 0x61, 0x64, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x6f, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x75, 0x73, 0x65, 0x41, + 0x64, 0x72, 0x12, 0x3e, 0x0a, 0x0a, 0x61, 0x64, 0x72, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x61, 0x64, 0x72, 0x4d, 0x61, 0x72, 0x67, + 0x69, 0x6e, 0x12, 0x3b, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x66, 0x5f, 0x63, + 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x46, 0x43, 0x6e, 0x74, 0x12, + 0x51, 0x0a, 0x17, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, + 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, + 0x74, 0x79, 0x12, 0x56, 0x0a, 0x18, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x16, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50, + 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, 0x74, 0x79, 0x12, 0x48, 0x0a, 0x11, 0x64, 0x65, + 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x52, 0x78, 0x31, 0x44, + 0x65, 0x6c, 0x61, 0x79, 0x12, 0x63, 0x0a, 0x1c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, + 0x72, 0x78, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x18, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x52, 0x78, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x60, 0x0a, 0x1b, 0x64, 0x65, 0x73, + 0x69, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x17, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x52, 0x78, 0x32, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x52, 0x0a, 0x15, 0x64, + 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x64, 0x65, 0x73, 0x69, + 0x72, 0x65, 0x64, 0x52, 0x78, 0x32, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, + 0x5d, 0x0a, 0x16, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x64, + 0x75, 0x74, 0x79, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, 0x74, 0x79, 0x43, + 0x79, 0x63, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x64, 0x65, 0x73, 0x69, 0x72, + 0x65, 0x64, 0x4d, 0x61, 0x78, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x6c, + 0x0a, 0x1e, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, + 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, + 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x1a, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x41, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x6c, 0x0a, 0x1e, + 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, + 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x18, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, + 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, + 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x41, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, + 0x61, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x6b, 0x0a, 0x21, 0x64, 0x65, + 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1c, 0x64, 0x65, 0x73, 0x69, 0x72, + 0x65, 0x64, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x65, 0x0a, 0x1b, 0x64, 0x65, 0x73, 0x69, 0x72, + 0x65, 0x64, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x66, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x5a, 0x65, + 0x72, 0x6f, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x50, 0x69, 0x6e, + 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x60, + 0x0a, 0x18, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x5a, 0x65, 0x72, 0x6f, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, + 0x64, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x12, 0x49, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, + 0x65, 0x69, 0x72, 0x70, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x45, 0x49, 0x52, 0x50, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x64, 0x65, 0x73, + 0x69, 0x72, 0x65, 0x64, 0x4d, 0x61, 0x78, 0x45, 0x69, 0x72, 0x70, 0x12, 0x57, 0x0a, 0x1b, 0x63, + 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x62, 0x5f, 0x63, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, + 0x6b, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x42, 0x43, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x12, 0x45, 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, + 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x75, 0x70, 0x6c, 0x69, + 0x6e, 0x6b, 0x44, 0x77, 0x65, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x77, 0x65, + 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x03, 0x61, 0x64, 0x72, 0x18, 0x22, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x03, 0x61, 0x64, 0x72, 0x12, 0x48, 0x0a, 0x12, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x3a, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x96, 0x28, 0x0a, 0x08, 0x4d, 0x41, + 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x56, 0x0a, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x56, + 0x0a, 0x12, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x0f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x1a, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x41, 0x74, 0x12, 0x35, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x76, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x46, 0x43, 0x6e, 0x74, 0x55, 0x70, 0x12, 0x57, 0x0a, 0x15, 0x70, 0x69, 0x6e, + 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, + 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, + 0x6f, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x70, + 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x69, + 0x74, 0x79, 0x12, 0x65, 0x0a, 0x1c, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x1a, 0x70, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x45, 0x0a, 0x10, 0x71, 0x75, 0x65, + 0x75, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, + 0x0f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, + 0x12, 0x45, 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x12, 0x71, 0x75, 0x65, 0x75, 0x65, + 0x64, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4a, 0x6f, + 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x10, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, + 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x56, 0x0a, 0x14, 0x70, 0x65, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x12, + 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x78, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, + 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x12, 0x72, 0x78, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x12, 0x4d, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x75, + 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, + 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, 0x69, + 0x6e, 0x6b, 0x73, 0x12, 0x53, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, + 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x66, 0x0a, 0x22, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x74, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x1e, 0x6c, 0x61, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x74, + 0x12, 0x72, 0x0a, 0x1e, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x72, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, 0x01, 0x09, 0x10, + 0x0f, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x1a, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x41, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x1d, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x64, 0x72, 0x5f, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x0e, 0xfa, 0x42, 0x0b, + 0x92, 0x01, 0x08, 0x10, 0x0f, 0x22, 0x04, 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x19, 0x72, 0x65, 0x6a, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x64, 0x72, 0x54, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x14, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x13, + 0x20, 0x03, 0x28, 0x04, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x22, 0x06, 0x32, 0x04, + 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x13, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x46, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x10, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x74, 0x18, 0x14, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x74, 0x12, + 0x6f, 0x0a, 0x19, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x6a, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, + 0x12, 0x35, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x72, 0x5f, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x18, 0x16, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x64, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x46, 0x43, 0x6e, 0x74, 0x55, 0x70, 0x12, 0x69, 0x0a, 0x1e, 0x72, 0x65, 0x63, 0x65, 0x6e, + 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x1b, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x63, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x1a, 0x83, 0x02, 0x0a, 0x0b, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x51, 0x0a, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, + 0x4c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x72, 0x78, 0x5f, 0x64, 0x65, 0x6c, 0x61, + 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x72, 0x78, 0x44, 0x65, + 0x6c, 0x61, 0x79, 0x12, 0x2f, 0x0a, 0x07, 0x63, 0x66, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x46, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x06, 0x63, 0x66, + 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, + 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, + 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x09, + 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x1a, 0xd1, 0x07, 0x0a, 0x0a, 0x4a, 0x6f, 0x69, + 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x23, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x10, + 0x11, 0x18, 0x21, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x48, 0x0a, 0x07, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, + 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, + 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6b, 0x65, 0x79, + 0x73, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, + 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0xed, 0x02, 0x0a, 0x08, 0x64, 0x65, 0x76, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd1, 0x02, 0xfa, 0x42, + 0x06, 0x7a, 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, + 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, + 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, + 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, + 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, + 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, + 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x92, 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, + 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, + 0x07, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0xe7, 0x02, 0x0a, 0x06, 0x6e, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, 0xfa, 0x42, 0x06, 0x7a, + 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, + 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, + 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, + 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, + 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, + 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, + 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, + 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x6e, 0x65, 0x74, + 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x1a, 0xf9, 0x07, 0x0a, + 0x0d, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3b, + 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x57, 0x0a, 0x08, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, + 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x54, 0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x52, 0x0a, 0x0b, 0x72, 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x2e, 0x52, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x72, 0x78, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, + 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, + 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x3a, 0x0a, 0x14, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, + 0x03, 0x18, 0xff, 0x01, 0x52, 0x12, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0x53, 0x0a, 0x0a, 0x54, 0x78, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x61, 0x74, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x0a, 0x1a, 0xe0, 0x03, + 0x0a, 0x0a, 0x52, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x0b, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x73, 0x73, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x73, 0x73, 0x69, 0x12, 0x10, + 0x0a, 0x03, 0x73, 0x6e, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x73, 0x6e, 0x72, + 0x12, 0x6a, 0x0a, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x70, 0x61, 0x74, + 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, + 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x16, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, + 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, + 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0b, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, + 0x6b, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, + 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x52, + 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x1a, 0x1c, 0x0a, 0x14, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x09, + 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x0d, + 0x10, 0x0e, 0x4a, 0x04, 0x08, 0x10, 0x10, 0x11, 0x4a, 0x04, 0x08, 0x11, 0x10, 0x12, 0x4a, 0x04, + 0x08, 0x13, 0x10, 0x14, 0x4a, 0x04, 0x08, 0x14, 0x10, 0x15, 0x4a, 0x04, 0x08, 0x63, 0x10, 0x64, + 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x08, + 0x10, 0x09, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x1a, 0x97, 0x04, 0x0a, 0x0f, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4a, 0x0a, 0x07, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, + 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, + 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, + 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x1a, + 0xee, 0x02, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x54, 0x0a, 0x05, 0x6d, + 0x5f, 0x68, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x48, 0x44, + 0x52, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6d, 0x48, 0x64, + 0x72, 0x12, 0x5c, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x1a, + 0x44, 0x0a, 0x04, 0x4d, 0x48, 0x44, 0x52, 0x12, 0x36, 0x0a, 0x06, 0x6d, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x4a, + 0x04, 0x08, 0x02, 0x10, 0x03, 0x1a, 0x5d, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x12, 0x1f, 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x05, 0x66, + 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x66, 0x5f, 0x63, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x46, 0x43, + 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, + 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x08, + 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x07, + 0x10, 0x08, 0x1a, 0xc9, 0x01, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x12, 0x56, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x56, 0x0a, 0x13, + 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x1a, 0x64, + 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, + 0x12, 0x48, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, + 0x08, 0x01, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, + 0x08, 0x01, 0x10, 0x01, 0x1a, 0x72, 0x0a, 0x1b, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, + 0x10, 0x01, 0x22, 0xcb, 0x01, 0x0a, 0x1b, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x32, 0x13, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, + 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x33, 0x32, 0x7d, 0x24, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x66, 0x72, + 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x12, + 0x35, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x54, 0x6f, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, + 0x22, 0xd7, 0x21, 0x0a, 0x09, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, + 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, + 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x80, 0x01, 0x0a, 0x0a, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, + 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, + 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4c, + 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x12, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, + 0x40, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x49, 0x64, 0x12, 0xc5, 0x01, 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, + 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, + 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, + 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, + 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, + 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, + 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x14, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x41, 0x0a, 0x18, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6b, 0x65, + 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x15, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0xcd, + 0x01, 0x0a, 0x1a, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, @@ -4864,395 +4839,416 @@ var file_lorawan_stack_api_end_device_proto_rawDesc = []byte{ 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, - 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x11, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x74, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x42, 0x2c, 0xfa, 0x42, 0x29, 0x9a, 0x01, 0x26, 0x22, 0x24, 0x72, 0x22, - 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, - 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, - 0x7d, 0x24, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, - 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, - 0x12, 0x28, 0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, 0x61, - 0x73, 0x73, 0x5f, 0x62, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x63, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x43, 0x12, 0x4d, 0x0a, 0x0f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, - 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x0e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x13, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, 0x70, - 0x68, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x50, - 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x11, 0x66, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0f, 0x66, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x23, - 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, - 0x12, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x2c, 0x0a, - 0x12, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, - 0x63, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72, 0x65, 0x73, 0x65, 0x74, - 0x73, 0x4a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x72, - 0x6f, 0x6f, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x18, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x49, + 0x0a, 0x1c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x30, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x19, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x4b, 0x65, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x3b, 0x0a, 0x15, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x31, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, + 0x64, 0x52, 0x13, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0xbf, 0x01, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, + 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, + 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, + 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, + 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, + 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, + 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x11, 0x6a, 0x6f, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x74, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x2c, 0xfa, 0x42, 0x29, 0x9a, 0x01, 0x26, 0x22, 0x24, 0x72, + 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, + 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, + 0x2c, 0x7d, 0x24, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, + 0x0a, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, + 0x65, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x5f, 0x62, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x12, 0x28, 0x0a, 0x10, 0x73, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x63, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x43, 0x12, 0x4d, 0x0a, 0x0f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x52, 0x6f, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x4b, 0x65, - 0x79, 0x73, 0x12, 0xe7, 0x02, 0x0a, 0x06, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x17, 0x20, - 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, - 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, - 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x13, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, + 0x70, 0x68, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x11, 0x66, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0f, + 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, + 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x61, 0x78, + 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x2c, + 0x0a, 0x12, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, + 0x6e, 0x63, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72, 0x65, 0x73, 0x65, + 0x74, 0x73, 0x4a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x09, + 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x52, 0x6f, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x4b, + 0x65, 0x79, 0x73, 0x12, 0xe7, 0x02, 0x0a, 0x06, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x17, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, + 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, - 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, - 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, - 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, - 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, - 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, - 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, - 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, - 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0c, - 0x6d, 0x61, 0x63, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x18, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, - 0x0b, 0x6d, 0x61, 0x63, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x35, 0x0a, 0x09, - 0x6d, 0x61, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, + 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, + 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, + 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, + 0x65, 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, + 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, + 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, + 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, + 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3e, 0x0a, + 0x0c, 0x6d, 0x61, 0x63, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x18, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x35, 0x0a, + 0x09, 0x6d, 0x61, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x6d, 0x61, 0x63, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, + 0x6d, 0x61, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x6d, 0x61, 0x63, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, - 0x61, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x4d, 0x61, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x73, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0f, - 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0e, - 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, - 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, - 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x76, 0x4e, - 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x76, - 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0d, 0x75, - 0x73, 0x65, 0x64, 0x44, 0x65, 0x76, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, - 0x1e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x4e, - 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x6a, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x30, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6c, - 0x61, 0x73, 0x74, 0x52, 0x6a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x30, 0x12, 0x25, 0x0a, 0x0f, 0x6c, - 0x61, 0x73, 0x74, 0x5f, 0x72, 0x6a, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x31, 0x18, 0x20, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x6a, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x31, 0x12, 0x58, 0x0a, 0x1b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x76, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4b, 0x0a, 0x0b, - 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0e, 0xfa, - 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x02, 0x10, 0x00, 0x52, 0x0a, 0x70, - 0x6f, 0x77, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x62, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, - 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x0a, 0x0a, 0x1d, 0x00, 0x00, 0x80, 0x3f, 0x2d, 0x00, - 0x00, 0x00, 0x00, 0x52, 0x11, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x50, 0x65, 0x72, 0x63, - 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, - 0x6e, 0x6b, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x24, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, - 0x65, 0x0a, 0x1c, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, - 0x28, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x1a, 0x71, 0x75, 0x65, 0x75, - 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x73, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, - 0x12, 0x51, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, - 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, - 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, - 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, - 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x75, 0x6c, - 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x75, - 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x12, 0x67, 0x0a, 0x19, 0x63, 0x6c, 0x61, 0x69, 0x6d, - 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x17, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x41, 0x75, - 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, - 0x6b, 0x69, 0x70, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, - 0x12, 0x5b, 0x0a, 0x1c, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x19, 0x73, 0x6b, 0x69, 0x70, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, - 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x3d, 0x0a, - 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x35, 0x20, + 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x4d, 0x61, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, + 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x0e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, + 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x76, + 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x64, 0x65, + 0x76, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0d, + 0x75, 0x73, 0x65, 0x64, 0x44, 0x65, 0x76, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x26, 0x0a, + 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, + 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4a, 0x6f, 0x69, 0x6e, + 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x6a, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x30, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, + 0x6c, 0x61, 0x73, 0x74, 0x52, 0x6a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x30, 0x12, 0x25, 0x0a, 0x0f, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x6a, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x31, 0x18, + 0x20, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x6a, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x31, 0x12, 0x58, 0x0a, 0x1b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x76, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4b, 0x0a, + 0x0b, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x22, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0e, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x02, 0x10, 0x00, 0x52, 0x0a, + 0x70, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x62, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, + 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x0a, 0x0a, 0x1d, 0x00, 0x00, 0x80, 0x3f, 0x2d, + 0x00, 0x00, 0x00, 0x00, 0x52, 0x11, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x50, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x24, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, + 0x12, 0x65, 0x0a, 0x1c, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, + 0x18, 0x28, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x1a, 0x71, 0x75, 0x65, + 0x75, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x73, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x73, 0x12, 0x51, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, + 0x18, 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, + 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, + 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x75, + 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x12, 0x67, 0x0a, 0x19, 0x63, 0x6c, 0x61, 0x69, + 0x6d, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x17, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x41, + 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x5f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, + 0x73, 0x6b, 0x69, 0x70, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x72, 0x79, 0x70, 0x74, + 0x6f, 0x12, 0x5b, 0x0a, 0x1c, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x5f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x65, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x19, 0x73, 0x6b, 0x69, 0x70, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x3d, + 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x35, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3c, 0x0a, + 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3c, 0x0a, 0x0c, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x36, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, - 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x41, 0x74, 0x12, 0x4f, 0x0a, 0x0d, 0x73, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x37, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x0c, 0x73, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x69, 0x0a, 0x19, 0x6c, - 0x6f, 0x72, 0x61, 0x5f, 0x61, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x4c, 0x6f, 0x52, 0x61, 0x41, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x16, - 0x6c, 0x6f, 0x72, 0x61, 0x41, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x56, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, - 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x25, 0x10, 0x26, 0x4a, 0x04, 0x08, - 0x26, 0x10, 0x27, 0x4a, 0x04, 0x08, 0x27, 0x10, 0x28, 0x22, 0x48, 0x0a, 0x0a, 0x45, 0x6e, 0x64, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, - 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0a, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x73, 0x22, 0xf2, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x50, - 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0xc8, 0x01, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xac, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, - 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, - 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, - 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, + 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x41, 0x74, 0x12, 0x4f, 0x0a, 0x0d, 0x73, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x37, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x0c, + 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x69, 0x0a, 0x19, + 0x6c, 0x6f, 0x72, 0x61, 0x5f, 0x61, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4c, 0x6f, 0x52, 0x61, 0x41, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, + 0x16, 0x6c, 0x6f, 0x72, 0x61, 0x41, 0x6c, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x56, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, + 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x25, 0x10, 0x26, 0x4a, 0x04, + 0x08, 0x26, 0x10, 0x27, 0x4a, 0x04, 0x08, 0x27, 0x10, 0x28, 0x22, 0x48, 0x0a, 0x0a, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0a, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x22, 0xf2, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, + 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0xc8, 0x01, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xac, 0x01, 0xfa, 0x42, 0x06, 0x7a, + 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, - 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, - 0x72, 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x19, 0x4a, 0x0a, - 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, - 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, - 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x5c, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, + 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, + 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x19, 0x4a, + 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, + 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, + 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x5c, 0x0a, 0x16, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x64, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, - 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, - 0x22, 0xa8, 0x02, 0x0a, 0x23, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x22, 0xa8, 0x02, 0x0a, 0x23, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x65, + 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x65, 0x0a, 0x07, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x4c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x65, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, - 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, - 0x99, 0x01, 0x0a, 0x17, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x73, - 0x74, 0x53, 0x65, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x03, 0x69, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x3c, 0x0a, - 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x41, 0x74, 0x22, 0xa6, 0x01, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, + 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, + 0x1a, 0x99, 0x01, 0x0a, 0x17, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, + 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x03, + 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x3c, + 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x41, 0x74, 0x22, 0xa6, 0x01, 0x0a, + 0x13, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xcb, 0x03, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xcb, 0x03, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x46, 0x6f, 0x72, 0x45, 0x55, 0x49, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0xd0, - 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, - 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, - 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x46, 0x6f, 0x72, 0x45, 0x55, 0x49, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, + 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, - 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, - 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, - 0x69, 0x12, 0xce, 0x01, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, - 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, - 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, + 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, + 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, + 0x75, 0x69, 0x12, 0xce, 0x01, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, + 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, - 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, - 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, - 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, - 0x75, 0x69, 0x22, 0x97, 0x03, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x0f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0e, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, - 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0xbd, 0x01, 0x0a, 0x05, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0xa6, 0x01, 0xfa, 0x42, 0xa2, 0x01, 0x72, - 0x9f, 0x01, 0x52, 0x00, 0x52, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x52, - 0x0a, 0x2d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x52, 0x08, 0x6a, 0x6f, 0x69, - 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x09, 0x2d, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, - 0x52, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x08, 0x2d, 0x64, 0x65, 0x76, 0x5f, - 0x65, 0x75, 0x69, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x2d, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, - 0x61, 0x74, 0x52, 0x0d, 0x2d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61, - 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, - 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x22, 0x94, 0x01, 0x0a, - 0x13, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x61, 0x73, 0x6b, 0x22, 0xae, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x41, 0x6e, 0x64, - 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xbc, 0x01, 0x0a, 0x11, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x65, 0x6e, - 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x39, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, + 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, + 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, + 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, + 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x64, 0x65, 0x76, + 0x45, 0x75, 0x69, 0x22, 0x97, 0x03, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, + 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x28, 0x0a, 0x0b, 0x6d, 0x61, 0x70, - 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0a, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x4b, 0x65, 0x79, 0x22, 0xb8, 0x01, 0x0a, 0x17, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, - 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x0f, 0x66, 0x69, 0x6c, 0x65, - 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x09, 0x42, 0x2b, 0xfa, 0x42, 0x28, 0x92, 0x01, 0x25, 0x10, 0x64, 0x18, 0x01, 0x22, 0x1f, 0x72, - 0x1d, 0x32, 0x1b, 0x5e, 0x28, 0x3f, 0x3a, 0x5c, 0x2e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, - 0x5d, 0x7b, 0x31, 0x2c, 0x31, 0x36, 0x7d, 0x29, 0x7b, 0x31, 0x2c, 0x32, 0x7d, 0x24, 0x52, 0x0e, - 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xfe, - 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x7d, 0x0a, 0x07, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0xbd, 0x01, 0x0a, 0x05, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0xa6, 0x01, 0xfa, 0x42, 0xa2, 0x01, + 0x72, 0x9f, 0x01, 0x52, 0x00, 0x52, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x52, 0x0a, 0x2d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x52, 0x08, 0x6a, 0x6f, + 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x09, 0x2d, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, + 0x69, 0x52, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x08, 0x2d, 0x64, 0x65, 0x76, + 0x5f, 0x65, 0x75, 0x69, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, + 0x65, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, + 0x2d, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, + 0x5f, 0x61, 0x74, 0x52, 0x0d, 0x2d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, + 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, + 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x22, 0x94, 0x01, + 0x0a, 0x13, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, + 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xae, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x41, 0x6e, + 0x64, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, - 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x42, 0x2c, 0xfa, 0x42, 0x29, 0x9a, 0x01, 0x26, 0x22, 0x24, 0x72, 0x22, 0x18, - 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, - 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, - 0x24, 0x52, 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x1a, 0x63, 0x0a, 0x0c, 0x46, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0xdd, 0x01, 0x0a, 0x1f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, - 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, - 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, - 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x60, 0x0a, - 0x16, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xbc, 0x01, 0x0a, 0x11, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x65, + 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, + 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x28, 0x0a, 0x0b, 0x6d, 0x61, + 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0a, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x4b, 0x65, 0x79, 0x22, 0xb8, 0x01, 0x0a, 0x17, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x0f, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x2b, 0xfa, 0x42, 0x28, 0x92, 0x01, 0x25, 0x10, 0x64, 0x18, 0x01, 0x22, 0x1f, + 0x72, 0x1d, 0x32, 0x1b, 0x5e, 0x28, 0x3f, 0x3a, 0x5c, 0x2e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x31, 0x36, 0x7d, 0x29, 0x7b, 0x31, 0x2c, 0x32, 0x7d, 0x24, 0x52, + 0x0e, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, + 0xfe, 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x7d, 0x0a, 0x07, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x13, 0x65, 0x6e, 0x64, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x2a, - 0x55, 0x0a, 0x0a, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x11, 0x0a, - 0x0d, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x42, 0x41, 0x54, 0x54, 0x45, 0x52, - 0x59, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x45, 0x58, 0x54, - 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x18, 0x01, 0x2a, - 0x05, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, - 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x42, 0x2c, 0xfa, 0x42, 0x29, 0x9a, 0x01, 0x26, 0x22, 0x24, 0x72, 0x22, + 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, + 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, + 0x7d, 0x24, 0x52, 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x1a, 0x63, 0x0a, 0x0c, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0xdd, 0x01, 0x0a, 0x1f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, + 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, + 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, + 0x52, 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x60, + 0x0a, 0x16, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x13, 0x65, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, + 0x2a, 0x55, 0x0a, 0x0a, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x11, + 0x0a, 0x0d, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x42, 0x41, 0x54, 0x54, 0x45, + 0x52, 0x59, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x45, 0x58, + 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x18, 0x01, + 0x2a, 0x05, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/end_device_services.pb.go b/pkg/ttnpb/end_device_services.pb.go index ec1780013d..2eadc91789 100644 --- a/pkg/ttnpb/end_device_services.pb.go +++ b/pkg/ttnpb/end_device_services.pb.go @@ -21,7 +21,6 @@ package ttnpb import ( - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -42,104 +41,101 @@ var file_lorawan_stack_api_end_device_services_proto_rawDesc = []byte{ 0x0a, 0x2b, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x2d, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, - 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x32, 0x9b, 0x08, 0x0a, 0x11, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x9d, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x1c, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, + 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x32, 0x9b, 0x08, 0x0a, 0x11, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x9d, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x22, 0x45, 0x2f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, + 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xaf, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, + 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, + 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x62, 0x12, 0x60, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x74, 0x0a, 0x15, 0x47, 0x65, 0x74, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x55, + 0x49, 0x73, 0x12, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x55, + 0x49, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x22, 0x45, 0x2f, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, + 0x89, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0x3e, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0xb8, 0x01, 0x0a, 0x06, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x65, 0x1a, 0x60, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, + 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x62, 0x0a, 0x13, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x33, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x92, 0x01, 0x0a, 0x06, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x2a, 0x42, 0x2f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xaf, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x23, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x68, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x62, 0x12, 0x60, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, - 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x74, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x55, 0x49, - 0x73, 0x12, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x55, 0x49, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x89, - 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x64, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x38, 0x12, 0x36, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0xb8, 0x01, 0x0a, 0x06, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, - 0x1a, 0x60, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x62, 0x0a, 0x13, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x33, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x92, 0x01, 0x0a, 0x06, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x2a, 0x42, 0x2f, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x32, 0xff, - 0x01, 0x0a, 0x1a, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x72, 0x12, 0x66, 0x0a, - 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x22, 0x15, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x65, 0x64, 0x74, 0x63, 0x2f, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x79, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, - 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x22, 0x0d, 0x2f, 0x65, - 0x64, 0x74, 0x63, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x30, 0x01, - 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, - 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x32, + 0xff, 0x01, 0x0a, 0x1a, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x72, 0x12, 0x66, + 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x22, + 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x65, 0x64, 0x74, 0x63, 0x2f, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x79, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x74, 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x22, 0x0d, 0x2f, + 0x65, 0x64, 0x74, 0x63, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x30, + 0x01, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, + 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_lorawan_stack_api_end_device_services_proto_goTypes = []interface{}{ diff --git a/pkg/ttnpb/enums.pb.go b/pkg/ttnpb/enums.pb.go index 38ffcbc529..c3f04160d3 100644 --- a/pkg/ttnpb/enums.pb.go +++ b/pkg/ttnpb/enums.pb.go @@ -22,7 +22,6 @@ package ttnpb import ( _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" - _ "github.com/gogo/protobuf/gogoproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -237,57 +236,53 @@ var file_lorawan_stack_api_enums_proto_rawDesc = []byte{ 0x0a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, - 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, - 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, - 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2a, 0xac, 0x01, 0x0a, 0x16, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, - 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x21, - 0x0a, 0x1d, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, - 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, - 0x00, 0x12, 0x29, 0x0a, 0x25, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x50, 0x41, - 0x54, 0x48, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x52, - 0x45, 0x46, 0x45, 0x52, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, - 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x43, 0x4f, - 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54, 0x5f, 0x4e, 0x45, 0x56, 0x45, 0x52, 0x10, 0x02, - 0x1a, 0x20, 0xea, 0xaa, 0x19, 0x1c, 0x18, 0x01, 0x2a, 0x18, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x49, - 0x4e, 0x4b, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, - 0x4e, 0x54, 0x2a, 0x7b, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, - 0x45, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, - 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, - 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x04, - 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x18, 0x01, 0x2a, 0x05, 0x53, 0x54, 0x41, 0x54, 0x45, 0x2a, - 0xc0, 0x02, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x12, - 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x54, - 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x59, 0x10, 0x01, 0x12, 0x0a, - 0x0a, 0x06, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x47, 0x41, - 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x03, 0x12, 0x12, - 0x0a, 0x0e, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, - 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x4a, 0x4f, - 0x49, 0x4e, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x43, - 0x52, 0x59, 0x50, 0x54, 0x4f, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x07, 0x12, 0x1d, - 0x0a, 0x19, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x4c, 0x41, 0x54, - 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x54, 0x45, 0x52, 0x10, 0x08, 0x12, 0x1a, 0x0a, - 0x16, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x49, 0x4e, 0x47, - 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x09, 0x12, 0x20, 0x0a, 0x1c, 0x47, 0x41, 0x54, - 0x45, 0x57, 0x41, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x0a, 0x12, 0x15, 0x0a, 0x11, 0x51, - 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, - 0x10, 0x0b, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x42, 0x52, 0x4f, - 0x4b, 0x45, 0x52, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x10, 0x0c, 0x12, 0x15, 0x0a, 0x11, 0x44, - 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x4f, 0x52, 0x59, - 0x10, 0x0d, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, + 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2a, 0xac, 0x01, 0x0a, 0x16, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, + 0x6b, 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, + 0x21, 0x0a, 0x1d, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x50, 0x41, 0x54, 0x48, + 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, + 0x10, 0x00, 0x12, 0x29, 0x0a, 0x25, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x50, + 0x41, 0x54, 0x48, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54, 0x5f, 0x50, + 0x52, 0x45, 0x46, 0x45, 0x52, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x01, 0x12, 0x22, 0x0a, + 0x1e, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x43, + 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54, 0x5f, 0x4e, 0x45, 0x56, 0x45, 0x52, 0x10, + 0x02, 0x1a, 0x20, 0xea, 0xaa, 0x19, 0x1c, 0x18, 0x01, 0x2a, 0x18, 0x44, 0x4f, 0x57, 0x4e, 0x4c, + 0x49, 0x4e, 0x4b, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, + 0x49, 0x4e, 0x54, 0x2a, 0x7b, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x0f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x52, 0x4f, + 0x56, 0x45, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, + 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, + 0x04, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x18, 0x01, 0x2a, 0x05, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x2a, 0xc0, 0x02, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, + 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, + 0x54, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x59, 0x10, 0x01, 0x12, + 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x47, + 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x03, 0x12, + 0x12, 0x0a, 0x0e, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, + 0x52, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x4a, + 0x4f, 0x49, 0x4e, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, + 0x43, 0x52, 0x59, 0x50, 0x54, 0x4f, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x07, 0x12, + 0x1d, 0x0a, 0x19, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x4c, 0x41, + 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x54, 0x45, 0x52, 0x10, 0x08, 0x12, 0x1a, + 0x0a, 0x16, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x49, 0x4d, 0x49, 0x4e, + 0x47, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x09, 0x12, 0x20, 0x0a, 0x1c, 0x47, 0x41, + 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x0a, 0x12, 0x15, 0x0a, 0x11, + 0x51, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x4f, + 0x52, 0x10, 0x0b, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x42, 0x52, + 0x4f, 0x4b, 0x45, 0x52, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x10, 0x0c, 0x12, 0x15, 0x0a, 0x11, + 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x4f, 0x52, + 0x59, 0x10, 0x0d, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/error.pb.go b/pkg/ttnpb/error.pb.go index 721f529fd3..90a4b6c157 100644 --- a/pkg/ttnpb/error.pb.go +++ b/pkg/ttnpb/error.pb.go @@ -22,7 +22,6 @@ package ttnpb import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" - _ "github.com/gogo/protobuf/gogoproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" anypb "google.golang.org/protobuf/types/known/anypb" @@ -164,38 +163,35 @@ var file_lorawan_stack_api_error_proto_rawDesc = []byte{ 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd1, 0x02, - 0x0a, 0x0c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1c, - 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x37, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x42, 0x06, 0xf2, 0xaa, 0x19, 0x02, 0x08, 0x00, 0x52, 0x05, 0x63, 0x61, - 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, - 0x00, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, - 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd1, + 0x02, 0x0a, 0x0c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, + 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x37, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x05, 0x63, 0x61, 0x75, 0x73, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x06, 0xf2, 0xaa, 0x19, 0x02, 0x08, 0x00, 0x52, 0x05, 0x63, + 0x61, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, + 0x10, 0x00, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/events.pb.go b/pkg/ttnpb/events.pb.go index 2096ac5140..f670b4dff0 100644 --- a/pkg/ttnpb/events.pb.go +++ b/pkg/ttnpb/events.pb.go @@ -22,7 +22,6 @@ package ttnpb import ( _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -436,104 +435,101 @@ var file_lorawan_stack_api_events_proto_rawDesc = []byte{ 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, - 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0xcc, 0x05, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x38, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xcc, 0x05, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x38, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, + 0x01, 0x02, 0x08, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, + 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, - 0x02, 0x08, 0x01, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, + 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, + 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, + 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x3c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x36, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x4c, + 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x75, + 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x61, 0x75, + 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, + 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x6e, 0x69, 0x71, + 0x75, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x6e, 0x69, + 0x71, 0x75, 0x65, 0x49, 0x64, 0x1a, 0x3a, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x5e, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, + 0x64, 0x22, 0xb6, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x28, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, - 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, - 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x3c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x36, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x4c, 0x0a, - 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x75, 0x74, - 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x61, 0x75, 0x74, - 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, - 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, - 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x6e, 0x69, 0x71, 0x75, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x6e, 0x69, 0x71, - 0x75, 0x65, 0x49, 0x64, 0x1a, 0x3a, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x5e, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, - 0x22, 0xb6, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, - 0x04, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x61, 0x69, - 0x6c, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, 0x66, - 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x4c, 0x0a, 0x18, 0x46, 0x69, 0x6e, - 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, - 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x19, 0x46, 0x69, 0x6e, 0x64, 0x52, - 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x32, 0xe1, 0x01, 0x0a, 0x06, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x5a, - 0x0a, 0x06, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x22, 0x07, 0x2f, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x30, 0x01, 0x12, 0x7b, 0x0a, 0x0b, 0x46, 0x69, - 0x6e, 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, - 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, - 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, - 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x61, + 0x69, 0x6c, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x61, + 0x66, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x4c, 0x0a, 0x18, 0x46, 0x69, + 0x6e, 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, + 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x64, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x19, 0x46, 0x69, 0x6e, 0x64, + 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x32, 0xe1, 0x01, 0x0a, 0x06, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x5a, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x22, 0x07, 0x2f, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x30, 0x01, 0x12, 0x7b, 0x0a, 0x0b, 0x46, + 0x69, 0x6e, 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x69, 0x6e, 0x64, + 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/gateway.pb.go b/pkg/ttnpb/gateway.pb.go index 32991f6191..824322656a 100644 --- a/pkg/ttnpb/gateway.pb.go +++ b/pkg/ttnpb/gateway.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -2237,580 +2236,577 @@ var file_lorawan_stack_api_gateway_proto_rawDesc = []byte{ 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, - 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, - 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, - 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5a, 0x0a, 0x0c, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x22, 0xa5, 0x01, 0x0a, 0x0c, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x45, 0x0a, 0x08, 0x62, 0x72, 0x61, - 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, - 0x72, 0x25, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, - 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, - 0x32, 0x2c, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x07, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x49, 0x64, - 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, + 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, + 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5a, 0x0a, + 0x0c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x05, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x22, 0xa5, 0x01, 0x0a, 0x0c, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x45, 0x0a, 0x08, 0x62, 0x72, + 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, - 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x9b, 0x02, 0x0a, 0x19, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x45, - 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x07, 0x62, 0x72, - 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, - 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, - 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, - 0xd0, 0x01, 0x01, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x10, - 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x20, 0x52, - 0x0f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x32, 0x0a, 0x10, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x18, 0x20, 0x52, 0x0f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xe2, - 0x02, 0x0a, 0x0c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x61, 0x64, 0x69, 0x6f, 0x12, - 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x68, 0x69, 0x70, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x69, 0x70, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x73, 0x73, 0x69, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x72, 0x73, 0x73, 0x69, 0x4f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x12, 0x57, 0x0a, 0x10, 0x74, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x61, 0x64, 0x69, 0x6f, 0x2e, 0x54, 0x78, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, 0x78, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x84, 0x01, 0x0a, - 0x0f, 0x54, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x61, - 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x6f, - 0x74, 0x63, 0x68, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x79, 0x22, 0xcc, 0x01, 0x0a, 0x1e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, - 0x6c, 0x61, 0x69, 0x6d, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x06, - 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, - 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x72, 0x6f, - 0x6d, 0x12, 0x35, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x07, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x6f, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, - 0x10, 0x01, 0x22, 0xb9, 0x12, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x46, - 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, - 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, - 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, - 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x43, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x1a, + 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x07, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x49, + 0x64, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, + 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x9b, 0x02, 0x0a, 0x19, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, + 0x45, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x07, 0x62, + 0x72, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, + 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, + 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, + 0x24, 0xd0, 0x01, 0x01, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x32, 0x0a, + 0x10, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x20, + 0x52, 0x0f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x32, 0x0a, 0x10, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x18, 0x20, 0x52, 0x0f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, + 0xe2, 0x02, 0x0a, 0x0c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x61, 0x64, 0x69, 0x6f, + 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x68, 0x69, 0x70, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x69, + 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x73, 0x73, 0x69, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x72, 0x73, 0x73, 0x69, 0x4f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x12, 0x57, 0x0a, 0x10, 0x74, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x61, 0x64, 0x69, 0x6f, 0x2e, 0x54, 0x78, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, 0x78, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x84, 0x01, + 0x0a, 0x0f, 0x54, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, + 0x61, 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x6e, + 0x6f, 0x74, 0x63, 0x68, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x22, 0xcc, 0x01, 0x0a, 0x1e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, + 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x72, + 0x6f, 0x6d, 0x12, 0x35, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, - 0x0f, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7e, - 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, - 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, - 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4a, - 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x0a, 0x52, 0x0b, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x64, 0x0a, 0x16, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x63, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x15, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, - 0x12, 0x5a, 0x0a, 0x11, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, + 0x52, 0x07, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x6f, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x01, 0x10, 0x01, 0x22, 0xb9, 0x12, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, + 0x46, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, + 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, + 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x52, 0x09, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, + 0xd0, 0x0f, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x7e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, + 0x32, 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, + 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, + 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, + 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x0a, 0x52, 0x0b, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x64, 0x0a, 0x16, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x10, 0x74, 0x65, 0x63, 0x68, - 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x4a, 0x0a, 0x0b, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0xd5, 0x01, 0x0a, 0x16, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x9e, 0x01, 0xfa, 0x42, 0x9a, 0x01, - 0x72, 0x97, 0x01, 0x32, 0x94, 0x01, 0x5e, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x5d, 0x7b, 0x32, 0x2c, - 0x35, 0x7d, 0x3a, 0x2f, 0x2f, 0x29, 0x3f, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, - 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, - 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, - 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, - 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, - 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, - 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, - 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x14, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x12, 0x2f, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, - 0x18, 0x80, 0x01, 0x52, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x12, 0x33, 0x0a, 0x11, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, - 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x12, 0x66, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x14, 0x20, - 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x10, 0x08, 0x22, 0x04, 0x72, - 0x02, 0x18, 0x40, 0x52, 0x10, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, - 0x61, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, - 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, - 0x08, 0x52, 0x08, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x12, 0x27, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6c, - 0x61, 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4c, 0x61, 0x74, 0x65, 0x12, - 0x2c, 0x0a, 0x12, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x75, 0x74, 0x79, 0x5f, - 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x6e, 0x66, - 0x6f, 0x72, 0x63, 0x65, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x6a, 0x0a, - 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x6e, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x16, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x43, - 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x16, 0x73, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x61, 0x6e, 0x79, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x64, 0x65, - 0x6c, 0x61, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x41, 0x6e, - 0x79, 0x74, 0x69, 0x6d, 0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x3d, 0x0a, 0x1b, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x72, - 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x18, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, - 0x72, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x0e, 0x6c, 0x62, 0x73, - 0x5f, 0x6c, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0c, 0x6c, 0x62, 0x73, 0x4c, 0x6e, - 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x6a, 0x0a, 0x19, 0x63, 0x6c, 0x61, 0x69, 0x6d, - 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x17, 0x63, 0x6c, 0x61, 0x69, - 0x6d, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x33, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x75, - 0x70, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, - 0x08, 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x43, 0x75, 0x70, 0x73, 0x55, 0x72, 0x69, 0x12, 0x3e, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x5f, 0x63, 0x75, 0x70, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x19, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x43, 0x75, 0x70, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x20, 0x72, 0x65, 0x71, 0x75, - 0x69, 0x72, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1b, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x1e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, - 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x06, 0x6c, 0x72, 0x66, 0x68, 0x73, 0x73, 0x18, 0x1c, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x52, 0x46, 0x48, - 0x53, 0x53, 0x52, 0x06, 0x6c, 0x72, 0x66, 0x68, 0x73, 0x73, 0x12, 0x47, 0x0a, 0x20, 0x64, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x62, 0x72, 0x6f, - 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x1d, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x30, 0x0a, 0x06, 0x4c, 0x52, 0x46, 0x48, 0x53, 0x53, 0x12, 0x1c, 0x0a, 0x09, - 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x09, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, - 0x08, 0x01, 0x10, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x3f, - 0x0a, 0x08, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x22, - 0x9d, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, - 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, - 0xee, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x55, 0x49, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0xc7, 0x01, 0x0a, 0x03, 0x65, 0x75, 0x69, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, - 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, - 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x15, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x12, 0x5a, 0x0a, 0x11, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x10, 0x74, 0x65, 0x63, + 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x4a, 0x0a, + 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0xd5, 0x01, 0x0a, 0x16, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x9e, 0x01, 0xfa, 0x42, 0x9a, + 0x01, 0x72, 0x97, 0x01, 0x32, 0x94, 0x01, 0x5e, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x5d, 0x7b, 0x32, + 0x2c, 0x35, 0x7d, 0x3a, 0x2f, 0x2f, 0x29, 0x3f, 0x28, 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, + 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, + 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, + 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, + 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, + 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, + 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x14, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, + 0x03, 0x18, 0x80, 0x01, 0x52, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x12, 0x33, 0x0a, 0x11, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x12, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x14, + 0x20, 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x10, 0x08, 0x22, 0x04, + 0x72, 0x02, 0x18, 0x40, 0x52, 0x10, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, + 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, + 0x61, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, + 0x10, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x73, 0x12, 0x23, 0x0a, 0x0d, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x12, 0x27, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, + 0x6c, 0x61, 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4c, 0x61, 0x74, 0x65, + 0x12, 0x2c, 0x0a, 0x12, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x75, 0x74, 0x79, + 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x6e, + 0x66, 0x6f, 0x72, 0x63, 0x65, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x6a, + 0x0a, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, + 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x16, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, + 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x16, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x61, 0x6e, 0x79, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x64, + 0x65, 0x6c, 0x61, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x41, + 0x6e, 0x79, 0x74, 0x69, 0x6d, 0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x3d, 0x0a, 0x1b, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, + 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x18, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x46, 0x72, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x0e, 0x6c, 0x62, + 0x73, 0x5f, 0x6c, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x16, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0c, 0x6c, 0x62, 0x73, 0x4c, + 0x6e, 0x73, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x6a, 0x0a, 0x19, 0x63, 0x6c, 0x61, 0x69, + 0x6d, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x17, 0x63, 0x6c, 0x61, + 0x69, 0x6d, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x33, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x63, + 0x75, 0x70, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, + 0x42, 0x08, 0x72, 0x06, 0x88, 0x01, 0x01, 0xd0, 0x01, 0x01, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x43, 0x75, 0x70, 0x73, 0x55, 0x72, 0x69, 0x12, 0x3e, 0x0a, 0x0f, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x5f, 0x63, 0x75, 0x70, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x19, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x43, 0x75, 0x70, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x20, 0x72, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1b, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x1e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, + 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x06, 0x6c, 0x72, 0x66, 0x68, 0x73, 0x73, 0x18, 0x1c, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x52, 0x46, + 0x48, 0x53, 0x53, 0x52, 0x06, 0x6c, 0x72, 0x66, 0x68, 0x73, 0x73, 0x12, 0x47, 0x0a, 0x20, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x62, 0x72, + 0x6f, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, + 0x1d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x30, 0x0a, 0x06, 0x4c, 0x52, 0x46, 0x48, 0x53, 0x53, 0x12, 0x1c, 0x0a, + 0x09, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x01, 0x10, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, + 0x3f, 0x0a, 0x08, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, + 0x22, 0x9d, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x22, 0xee, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x55, 0x49, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0xc7, 0x01, 0x0a, 0x03, 0x65, 0x75, 0x69, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, + 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, - 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, - 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, - 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x65, 0x75, 0x69, - 0x22, 0xfc, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, - 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x06, 0xf2, - 0xaa, 0x19, 0x02, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, - 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x77, - 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x61, 0xfa, - 0x42, 0x5e, 0x72, 0x5c, 0x52, 0x00, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, - 0x69, 0x64, 0x52, 0x0b, 0x2d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x52, - 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x0c, 0x2d, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, - 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, - 0xb0, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x5b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, + 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, + 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, + 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, + 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x65, 0x75, + 0x69, 0x22, 0xfc, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x06, + 0xf2, 0xaa, 0x19, 0x02, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, + 0x77, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x61, + 0xfa, 0x42, 0x5e, 0x72, 0x5c, 0x52, 0x00, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x5f, 0x69, 0x64, 0x52, 0x0b, 0x2d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, + 0x52, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x0c, 0x2d, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, + 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, + 0x22, 0xb0, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x5b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, + 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x9f, 0x02, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, + 0x73, 0x12, 0x75, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x5f, 0xfa, 0x42, 0x5c, 0x72, 0x5a, 0x52, 0x00, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x0b, 0x2d, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, + 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x73, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, + 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, + 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x3a, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0x7f, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x07, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x61, 0x73, 0x6b, 0x22, 0x9f, 0x02, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, + 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x22, 0x8f, 0x02, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x92, 0x01, + 0x0b, 0x08, 0x01, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, + 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x40, 0x01, 0x52, 0x09, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0xe1, 0x01, 0x0a, 0x1a, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, + 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xdd, 0x01, + 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, - 0x12, 0x75, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x5f, 0xfa, 0x42, 0x5c, 0x72, 0x5a, 0x52, 0x00, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, - 0x79, 0x5f, 0x69, 0x64, 0x52, 0x0b, 0x2d, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, - 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, - 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, - 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, - 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, - 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0x7f, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, - 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x22, 0x8f, 0x02, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, + 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x21, 0xfa, 0x42, 0x1e, 0x72, 0x1c, 0x52, 0x00, 0x52, 0x02, 0x69, 0x64, + 0x52, 0x03, 0x2d, 0x69, 0x64, 0x52, 0x07, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x06, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xcb, 0x01, + 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x5b, + 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xba, 0x01, 0x0a, 0x1d, + 0x53, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, + 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, + 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0c, + 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xf4, 0x02, 0x0a, 0x0e, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x67, + 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x04, 0x67, 0x61, 0x69, 0x6e, 0x12, + 0x34, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x87, 0x01, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x40, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x92, 0x01, 0x0b, - 0x08, 0x01, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x40, 0x01, 0x52, 0x09, 0x65, - 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0xe1, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, + 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x37, 0x18, 0x01, 0xfa, 0x42, + 0x32, 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, + 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, + 0x45, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, + 0x6e, 0x61, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, + 0x8f, 0x05, 0x0a, 0x0d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x12, 0x37, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x08, 0x62, 0x6f, 0x6f, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x7f, 0x0a, 0x08, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, - 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x36, 0xfa, 0x42, 0x33, 0x9a, 0x01, + 0x30, 0x10, 0x0a, 0x22, 0x25, 0x72, 0x23, 0x18, 0x24, 0x32, 0x1f, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x5f, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0x80, + 0x01, 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x11, 0x61, + 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x08, 0x52, 0x10, 0x61, 0x6e, 0x74, 0x65, + 0x6e, 0x6e, 0x61, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x02, + 0x69, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, + 0x10, 0x0a, 0x22, 0x04, 0x72, 0x02, 0x70, 0x01, 0x52, 0x02, 0x69, 0x70, 0x12, 0x75, 0x0a, 0x07, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x2f, 0xfa, 0x42, 0x2c, 0x9a, 0x01, + 0x29, 0x10, 0x20, 0x22, 0x25, 0x72, 0x23, 0x18, 0x24, 0x32, 0x1f, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x5f, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x18, + 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x08, + 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x26, 0x0a, 0x14, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0xe4, 0x09, 0x0a, 0x16, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x51, 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, - 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xdd, 0x01, 0x0a, - 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, 0x6c, - 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, - 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, - 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x21, 0xfa, 0x42, 0x1e, 0x72, 0x1c, 0x52, 0x00, 0x52, 0x02, 0x69, 0x64, 0x52, - 0x03, 0x2d, 0x69, 0x64, 0x52, 0x07, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x06, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xcb, 0x01, 0x0a, - 0x1d, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, 0x6c, 0x61, - 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, - 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x5b, 0x0a, - 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, - 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xba, 0x01, 0x0a, 0x1d, 0x53, - 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0b, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, - 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, - 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xf4, 0x02, 0x0a, 0x0e, 0x47, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x61, - 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x04, 0x67, 0x61, 0x69, 0x6e, 0x12, 0x34, - 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x87, 0x01, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x37, 0x18, 0x01, 0xfa, 0x42, 0x32, - 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, - 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x45, - 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, - 0x61, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x8f, - 0x05, 0x0a, 0x0d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, - 0x12, 0x37, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x08, 0x62, 0x6f, 0x6f, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x7f, 0x0a, 0x08, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x36, 0xfa, 0x42, 0x33, 0x9a, 0x01, 0x30, - 0x10, 0x0a, 0x22, 0x25, 0x72, 0x23, 0x18, 0x24, 0x32, 0x1f, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x5f, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, - 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x11, 0x61, 0x6e, - 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x08, 0x52, 0x10, 0x61, 0x6e, 0x74, 0x65, 0x6e, - 0x6e, 0x61, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x02, 0x69, - 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x10, - 0x0a, 0x22, 0x04, 0x72, 0x02, 0x70, 0x01, 0x52, 0x02, 0x69, 0x70, 0x12, 0x75, 0x0a, 0x07, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3e, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x2f, 0xfa, 0x42, 0x2c, 0x9a, 0x01, 0x29, - 0x10, 0x20, 0x22, 0x25, 0x72, 0x23, 0x18, 0x24, 0x32, 0x1f, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x5f, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x18, 0x63, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x08, 0x61, - 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x26, 0x0a, 0x14, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0xe4, 0x09, 0x0a, 0x16, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x12, 0x51, 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3e, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x51, 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, - 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x6c, - 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0b, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x55, 0x0a, 0x19, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x16, 0x6c, 0x61, 0x73, - 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x64, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x5f, 0x0a, 0x10, 0x72, 0x6f, - 0x75, 0x6e, 0x64, 0x5f, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x52, 0x6f, 0x75, - 0x6e, 0x64, 0x54, 0x72, 0x69, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x0e, 0x72, 0x6f, 0x75, - 0x6e, 0x64, 0x54, 0x72, 0x69, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x09, 0x73, - 0x75, 0x62, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x42, 0x61, 0x6e, 0x64, 0x52, 0x08, - 0x73, 0x75, 0x62, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x5a, 0x0a, 0x16, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x14, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x1a, 0xd1, 0x01, 0x0a, 0x0e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, - 0x69, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x01, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x35, - 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x01, - 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x3b, 0x0a, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0a, 0x6c, 0x61, 0x73, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x51, 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, + 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0b, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x55, 0x0a, + 0x19, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x72, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x16, 0x6c, 0x61, + 0x73, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x5f, 0x0a, 0x10, 0x72, + 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x52, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x72, 0x69, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x0e, 0x72, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x72, 0x69, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x09, + 0x73, 0x75, 0x62, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x42, 0x61, 0x6e, 0x64, 0x52, + 0x08, 0x73, 0x75, 0x62, 0x42, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x5a, 0x0a, 0x16, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, + 0x14, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0xd1, 0x01, 0x0a, 0x0e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x54, + 0x72, 0x69, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x01, 0x52, 0x06, 0x6d, 0x65, 0x64, 0x69, - 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xc4, 0x01, 0x0a, 0x07, 0x53, 0x75, 0x62, - 0x42, 0x61, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, 0x6e, - 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, - 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x3c, - 0x0a, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x55, 0x74, 0x69, 0x6c, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x31, 0x0a, 0x14, - 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2a, - 0x5c, 0x0a, 0x17, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, - 0x61, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x4c, - 0x41, 0x43, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, - 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x44, 0x4f, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, - 0x07, 0x4f, 0x55, 0x54, 0x44, 0x4f, 0x4f, 0x52, 0x10, 0x02, 0x1a, 0x11, 0xea, 0xaa, 0x19, 0x0d, - 0x18, 0x01, 0x2a, 0x09, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x42, 0x35, 0x5a, - 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, - 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x01, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, + 0x35, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, + 0x01, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x3b, 0x0a, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x01, 0x52, 0x06, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xc4, 0x01, 0x0a, 0x07, 0x53, 0x75, + 0x62, 0x42, 0x61, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x69, + 0x6e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, + 0x78, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, + 0x3c, 0x0a, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x75, 0x74, 0x69, 0x6c, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x55, 0x74, 0x69, + 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x31, 0x0a, + 0x14, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2a, 0x5c, 0x0a, 0x17, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, + 0x6e, 0x61, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x15, 0x0a, 0x11, 0x50, + 0x4c, 0x41, 0x43, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x44, 0x4f, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x0b, + 0x0a, 0x07, 0x4f, 0x55, 0x54, 0x44, 0x4f, 0x4f, 0x52, 0x10, 0x02, 0x1a, 0x11, 0xea, 0xaa, 0x19, + 0x0d, 0x18, 0x01, 0x2a, 0x09, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x42, 0x31, + 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, + 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/gateway_services.pb.go b/pkg/ttnpb/gateway_services.pb.go index 73f37c085b..5f9c2a6b8c 100644 --- a/pkg/ttnpb/gateway_services.pb.go +++ b/pkg/ttnpb/gateway_services.pb.go @@ -21,7 +21,6 @@ package ttnpb import ( - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -99,197 +98,194 @@ var file_lorawan_stack_api_gateway_services_proto_rawDesc = []byte{ 0x0a, 0x28, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, - 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa1, 0x01, 0x0a, - 0x1f, 0x50, 0x75, 0x6c, 0x6c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x43, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, - 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, - 0x32, 0xd9, 0x08, 0x0a, 0x0f, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x72, 0x79, 0x12, 0xd3, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa1, 0x01, + 0x0a, 0x1f, 0x50, 0x75, 0x6c, 0x6c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x32, 0xd9, 0x08, 0x0a, 0x0f, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xd3, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x22, + 0x89, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x82, 0x01, 0x22, 0x2f, 0x2f, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x4c, 0x22, + 0x47, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x6d, 0x0a, 0x03, 0x47, + 0x65, 0x74, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x22, 0x2a, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x6e, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x45, + 0x55, 0x49, 0x12, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x55, 0x49, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0xd8, 0x01, 0x0a, 0x04, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x73, 0x22, 0x90, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x89, 0x01, 0x12, 0x09, 0x2f, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x5a, 0x31, 0x12, 0x2f, 0x2f, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x5a, 0x49, 0x12, 0x47, 0x2f, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x76, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x22, 0x89, - 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x82, 0x01, 0x22, 0x2f, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x4c, 0x22, 0x47, - 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x6d, 0x0a, 0x03, 0x47, 0x65, - 0x74, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x22, 0x2a, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, - 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x6e, 0x0a, 0x14, 0x47, 0x65, 0x74, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x55, - 0x49, 0x12, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x45, 0x55, 0x49, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0xd8, 0x01, 0x0a, 0x04, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x22, 0x2d, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x1a, 0x22, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x64, 0x0a, + 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x73, 0x22, 0x90, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x89, 0x01, 0x12, 0x09, 0x2f, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x5a, 0x31, 0x12, 0x2f, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x5a, 0x49, 0x12, 0x47, 0x2f, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, - 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x73, 0x12, 0x76, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x24, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, + 0x69, 0x64, 0x7d, 0x12, 0x6d, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x22, 0x2d, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x1a, 0x22, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, - 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x64, 0x0a, 0x06, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, - 0x64, 0x7d, 0x12, 0x6d, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x2e, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x20, 0x22, 0x1e, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x12, 0x69, 0x0a, 0x05, 0x50, 0x75, 0x72, 0x67, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x2a, + 0x1c, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x32, 0xb3, 0x0a, + 0x0a, 0x0d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, + 0x6f, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x20, 0x22, 0x1e, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x12, 0x69, 0x0a, 0x05, 0x50, 0x75, 0x72, 0x67, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x2a, 0x1c, - 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x32, 0xb3, 0x0a, 0x0a, - 0x0d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x6f, - 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x22, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, - 0x12, 0x1d, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, - 0x8a, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, - 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, - 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, - 0x49, 0x4b, 0x65, 0x79, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x22, 0x2b, 0x2f, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x86, 0x01, 0x0a, - 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x29, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, - 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, - 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, - 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, - 0x4b, 0x65, 0x79, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, - 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, - 0x49, 0x4b, 0x65, 0x79, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x5f, 0x69, - 0x64, 0x7d, 0x12, 0x97, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, - 0x4b, 0x65, 0x79, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x1a, - 0x38, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x61, 0x70, - 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xbb, 0x02, 0x0a, - 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, 0x6c, - 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcf, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0xc8, 0x01, 0x5a, 0x56, 0x12, 0x54, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, - 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, - 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x5a, 0x6e, 0x12, 0x6c, 0x2f, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, - 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x95, 0x01, 0x0a, 0x0f, 0x53, - 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2d, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x53, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, - 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x1a, 0x30, 0x2f, + 0x73, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1f, 0x12, 0x1d, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x12, 0x8a, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, + 0x79, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x22, 0x2b, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x3a, - 0x01, 0x2a, 0x12, 0x9d, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, - 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, - 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, - 0x12, 0x30, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, + 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x86, 0x01, + 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x29, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, + 0x73, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, + 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x41, 0x50, + 0x49, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x5f, + 0x69, 0x64, 0x7d, 0x12, 0x97, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, + 0x49, 0x4b, 0x65, 0x79, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, + 0x1a, 0x38, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x73, 0x32, 0x76, 0x0a, 0x13, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x5f, 0x0a, 0x11, 0x50, 0x75, 0x6c, - 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x50, 0x75, 0x6c, 0x6c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x30, 0x01, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, - 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, - 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x61, + 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xbb, 0x02, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcf, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0xc8, 0x01, 0x5a, 0x56, 0x12, 0x54, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, + 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, + 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x5a, 0x6e, 0x12, 0x6c, 0x2f, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x95, 0x01, 0x0a, 0x0f, + 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, + 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x53, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x1a, 0x30, + 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, + 0x3a, 0x01, 0x2a, 0x12, 0x9d, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x32, 0x12, 0x30, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x73, 0x32, 0x76, 0x0a, 0x13, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x5f, 0x0a, 0x11, 0x50, 0x75, + 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x30, 0x01, 0x42, 0x31, 0x5a, 0x2f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/gatewayserver.pb.go b/pkg/ttnpb/gatewayserver.pb.go index 50f0cbc28e..b2c4e33619 100644 --- a/pkg/ttnpb/gatewayserver.pb.go +++ b/pkg/ttnpb/gatewayserver.pb.go @@ -22,7 +22,6 @@ package ttnpb import ( _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -396,159 +395,156 @@ var file_lorawan_stack_api_gatewayserver_proto_rawDesc = []byte{ 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, - 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, + 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe8, - 0x01, 0x0a, 0x09, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x70, 0x12, 0x46, 0x0a, 0x0f, - 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4d, 0x0a, 0x11, 0x74, 0x78, - 0x5f, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, - 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x74, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, - 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x59, 0x0a, 0x0b, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x4a, 0x0a, 0x10, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x18, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x39, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0xaa, 0x01, 0x02, 0x08, 0x01, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x41, 0x0a, 0x0d, - 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, - 0x68, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, - 0x10, 0x0a, 0x03, 0x72, 0x78, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x72, 0x78, - 0x31, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x78, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, - 0x72, 0x78, 0x32, 0x22, 0x5d, 0x0a, 0x1c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x74, 0x68, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x25, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x47, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xe8, 0x01, 0x0a, 0x09, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x70, 0x12, 0x46, 0x0a, + 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4d, 0x0a, 0x11, 0x74, + 0x78, 0x5f, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, + 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x74, 0x78, 0x41, 0x63, 0x6b, 0x6e, + 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x59, 0x0a, 0x0b, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x4a, 0x0a, 0x10, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x18, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0xaa, 0x01, 0x02, 0x08, 0x01, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x41, 0x0a, + 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, + 0x74, 0x68, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, + 0x12, 0x10, 0x0a, 0x03, 0x72, 0x78, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x72, + 0x78, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x78, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x03, 0x72, 0x78, 0x32, 0x22, 0x5d, 0x0a, 0x1c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x74, 0x68, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x25, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, + 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, 0x08, 0x01, + 0x10, 0x64, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x39, + 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xeb, 0x01, 0x0a, 0x26, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, + 0x69, 0x65, 0x73, 0x1a, 0x62, 0x0a, 0x0c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32, 0xdf, 0x03, 0x0a, 0x05, 0x47, 0x74, 0x77, 0x47, + 0x73, 0x12, 0x49, 0x0a, 0x0b, 0x4c, 0x69, 0x6e, 0x6b, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x12, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x70, 0x1a, 0x1b, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x28, 0x01, 0x30, 0x01, 0x12, 0x53, 0x0a, 0x15, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x97, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4d, 0x51, 0x54, 0x54, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, + 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x51, 0x54, 0x54, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x67, 0x73, + 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x9b, 0x01, 0x0a, 0x17, + 0x47, 0x65, 0x74, 0x4d, 0x51, 0x54, 0x54, 0x56, 0x32, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x22, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x51, 0x54, + 0x54, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, + 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x67, 0x73, 0x2f, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x76, 0x32, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x69, 0x6e, 0x66, 0x6f, 0x32, 0x65, 0x0a, 0x04, 0x4e, 0x73, 0x47, + 0x73, 0x12, 0x5d, 0x0a, 0x10, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x32, 0xde, 0x02, 0x0a, 0x02, 0x47, 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x0b, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, 0x08, 0x01, 0x10, - 0x64, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, - 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xeb, 0x01, 0x0a, 0x26, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x6e, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x1a, 0x62, 0x0a, 0x0c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32, 0xdf, 0x03, 0x0a, 0x05, 0x47, 0x74, 0x77, 0x47, 0x73, - 0x12, 0x49, 0x0a, 0x0b, 0x4c, 0x69, 0x6e, 0x6b, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, - 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x70, 0x1a, 0x1b, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x28, 0x01, 0x30, 0x01, 0x12, 0x53, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x22, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, - 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x97, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4d, 0x51, 0x54, 0x54, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x22, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x4d, 0x51, 0x54, 0x54, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x66, 0x6f, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x67, 0x73, 0x2f, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x9b, 0x01, 0x0a, 0x17, 0x47, - 0x65, 0x74, 0x4d, 0x51, 0x54, 0x54, 0x56, 0x32, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x22, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x51, 0x54, 0x54, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x38, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x67, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x76, 0x32, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2d, 0x69, 0x6e, 0x66, 0x6f, 0x32, 0x65, 0x0a, 0x04, 0x4e, 0x73, 0x47, 0x73, - 0x12, 0x5d, 0x0a, 0x10, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, - 0xde, 0x02, 0x0a, 0x02, 0x47, 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x67, 0x73, 0x2f, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x12, 0xb9, 0x01, 0x0a, 0x1e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, - 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, - 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, - 0x2f, 0x67, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x3a, 0x01, 0x2a, - 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, - 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x67, 0x73, 0x2f, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0xb9, 0x01, 0x0a, 0x1e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, + 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, + 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x36, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, + 0x1d, 0x2f, 0x67, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x3a, 0x01, + 0x2a, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, + 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/identifiers.pb.go b/pkg/ttnpb/identifiers.pb.go index 97efb2a17a..a4ee346cc4 100644 --- a/pkg/ttnpb/identifiers.pb.go +++ b/pkg/ttnpb/identifiers.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -826,49 +825,93 @@ var file_lorawan_stack_api_identifiers_proto_rawDesc = []byte{ 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, - 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, - 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, - 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, - 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, - 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, - 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0x72, 0x0a, 0x16, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x4e, 0x0a, 0x0e, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, - 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, - 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x0d, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, - 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x63, 0x0a, 0x11, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, - 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, - 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, - 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x9f, 0x0a, 0x0a, 0x14, - 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, - 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, - 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, - 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0xf3, 0x02, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, - 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd9, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, - 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, + 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, + 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, + 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x72, 0x0a, 0x16, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x4e, 0x0a, + 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, + 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, + 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x0d, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x3a, 0x08, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x63, 0x0a, 0x11, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x09, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x9f, 0x0a, 0x0a, + 0x14, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, + 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, + 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, + 0x24, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x59, 0x0a, 0x0f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0xf3, 0x02, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, + 0x75, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd9, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, + 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, + 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, + 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, + 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, + 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, + 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, + 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, + 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, + 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, + 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x12, 0xf5, 0x02, 0x0a, + 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0xd9, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, + 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, + 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, + 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, + 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, + 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, + 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, + 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, + 0x6e, 0x45, 0x75, 0x69, 0x12, 0xed, 0x02, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd1, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, + 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, @@ -876,224 +919,177 @@ var file_lorawan_stack_api_identifiers_proto_rawDesc = []byte{ 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, - 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, + 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, - 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, + 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, - 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, - 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x12, 0xf5, 0x02, 0x0a, 0x08, - 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd9, - 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, - 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, - 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, - 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, - 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, - 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, - 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, - 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, - 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, - 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, - 0x45, 0x75, 0x69, 0x12, 0xed, 0x02, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd1, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x04, - 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, - 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, - 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, - 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, - 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, - 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, - 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, - 0x2e, 0x4e, 0x65, 0x77, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, - 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, - 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, - 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, - 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, - 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, - 0x64, 0x64, 0x72, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xd5, 0x03, - 0x0a, 0x12, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, - 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, - 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, - 0x24, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0xec, 0x02, 0x0a, - 0x03, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd9, 0x02, 0xfa, 0x42, 0x06, - 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, - 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, - 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, - 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, - 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, - 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, - 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, - 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, - 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, - 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, - 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, - 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, - 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x65, 0x75, 0x69, 0x3a, 0x08, 0xf2, 0xaa, 0x19, - 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x75, 0x0a, 0x17, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x12, 0x50, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, + 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, + 0x41, 0x64, 0x64, 0x72, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xd5, + 0x03, 0x0a, 0x12, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, - 0x7d, 0x24, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x7b, 0x0a, 0x0f, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, - 0x40, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x31, 0x2c, 0x7d, 0x24, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x1c, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x06, 0xf2, 0xaa, 0x19, 0x02, 0x28, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x3a, - 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xc9, 0x01, 0x0a, 0x1d, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x54, 0x0a, 0x10, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, - 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x3a, - 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x42, 0x0a, 0x0a, 0x03, 0x69, 0x64, 0x73, - 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0xd8, 0x03, 0x0a, 0x11, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x0f, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0e, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x42, - 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x73, 0x12, 0x45, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x09, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, - 0x12, 0x54, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x73, 0x42, 0x0a, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x12, 0x03, 0xf8, 0x42, 0x01, - 0x22, 0xd1, 0x02, 0x0a, 0x1b, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x12, 0x45, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x07, - 0x62, 0x72, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, - 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, - 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, - 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x32, - 0x0a, 0x10, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, - 0x20, 0x52, 0x0f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x10, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x18, 0x20, 0x52, 0x0f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x07, 0x62, 0x61, 0x6e, 0x64, 0x5f, 0x69, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x20, - 0x52, 0x06, 0x62, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, - 0x10, 0x01, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, - 0x08, 0x08, 0x10, 0x09, 0x22, 0xdd, 0x04, 0x0a, 0x12, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0xe7, 0x02, 0x0a, 0x06, - 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, 0x92, - 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, - 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, - 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, - 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, - 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x7d, 0x24, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0xec, 0x02, + 0x0a, 0x03, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd9, 0x02, 0xfa, 0x42, + 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, + 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, + 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, + 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, + 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, + 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, + 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, + 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, + 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x65, 0x75, 0x69, 0x3a, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x75, 0x0a, 0x17, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x12, 0x50, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, + 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, + 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, + 0x2c, 0x7d, 0x24, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x7b, 0x0a, + 0x0f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x12, 0x40, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x31, 0x2c, 0x7d, 0x24, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x06, 0xf2, 0xaa, 0x19, 0x02, 0x28, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xc9, 0x01, 0x0a, 0x1d, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x54, 0x0a, 0x10, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, + 0x00, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, + 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x42, 0x0a, 0x0a, 0x03, 0x69, 0x64, + 0x73, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0xd8, 0x03, 0x0a, 0x11, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x0f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, + 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, + 0x42, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x73, 0x12, 0x45, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, + 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, + 0x73, 0x12, 0x54, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x07, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x73, 0x42, 0x0a, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x12, 0x03, 0xf8, 0x42, + 0x01, 0x22, 0xd1, 0x02, 0x0a, 0x1b, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x12, 0x45, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, + 0x07, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, + 0x25, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, + 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, + 0x2c, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, + 0x32, 0x0a, 0x10, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x18, 0x20, 0x52, 0x0f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x10, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x18, 0x20, 0x52, 0x0f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x07, 0x62, 0x61, 0x6e, 0x64, 0x5f, + 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, + 0x20, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, + 0x04, 0x08, 0x08, 0x10, 0x09, 0x22, 0xdd, 0x04, 0x0a, 0x12, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0xe7, 0x02, 0x0a, + 0x06, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, + 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, + 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, + 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, - 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, - 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, - 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, - 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, - 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, - 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, - 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x05, - 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, - 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, - 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, - 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, - 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x09, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2f, 0x0a, 0x0e, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0d, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, - 0x08, 0x01, 0x10, 0x00, 0x22, 0x69, 0x0a, 0x1e, 0x4c, 0x6f, 0x52, 0x61, 0x41, 0x6c, 0x6c, 0x69, - 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x76, 0x65, 0x6e, 0x64, 0x6f, - 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x70, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, - 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x42, - 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, - 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, + 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, + 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, + 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, + 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, + 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, + 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, + 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, + 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, + 0x05, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, + 0x18, 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, + 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, + 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x26, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x09, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2f, 0x0a, 0x0e, 0x74, 0x65, + 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x02, 0x52, 0x0d, 0x74, 0x65, + 0x6e, 0x61, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0x69, 0x0a, 0x1e, 0x4c, 0x6f, 0x52, 0x61, 0x41, 0x6c, 0x6c, + 0x69, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x65, 0x6e, 0x64, 0x6f, + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x76, 0x65, 0x6e, 0x64, + 0x6f, 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, + 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, + 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/identityserver.pb.go b/pkg/ttnpb/identityserver.pb.go index 73e0b11cb7..fcd7310e5f 100644 --- a/pkg/ttnpb/identityserver.pb.go +++ b/pkg/ttnpb/identityserver.pb.go @@ -22,7 +22,6 @@ package ttnpb import ( _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -1034,252 +1033,249 @@ var file_lorawan_stack_api_identityserver_proto_rawDesc = []byte{ 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, - 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x61, 0x75, 0x74, - 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdc, 0x05, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x68, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x07, - 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, - 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x06, - 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x50, 0x0a, 0x12, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x40, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, - 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x75, + 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x61, 0x75, + 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdc, 0x05, 0x0a, 0x10, 0x41, 0x75, 0x74, + 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, + 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x75, - 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x0d, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x48, 0x00, 0x52, 0x0c, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x41, 0x0a, 0x10, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x5f, 0x72, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x52, 0x0f, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x52, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x1a, 0x95, - 0x01, 0x0a, 0x0c, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, - 0x39, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x4a, 0x0a, 0x0a, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x49, 0x64, 0x73, 0x1a, 0x8c, 0x01, 0x0a, 0x0c, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x49, 0x73, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x88, 0x13, 0x0a, 0x0f, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x11, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x5f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, - 0x0e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, - 0x5e, 0x0a, 0x12, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x69, - 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x64, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x10, 0x65, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, - 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x48, 0x0a, 0x0a, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, + 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x50, 0x0a, 0x12, 0x6f, 0x61, 0x75, 0x74, 0x68, + 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x40, 0x0a, 0x0c, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, + 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x0d, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x41, 0x0a, 0x10, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x5f, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x52, 0x0f, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x52, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x1a, + 0x95, 0x01, 0x0a, 0x0c, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x12, 0x39, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x4a, 0x0a, 0x0a, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x73, 0x1a, 0x8c, 0x01, 0x0a, 0x0c, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x49, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x88, 0x13, 0x0a, 0x0f, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x11, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x5f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x09, 0x75, 0x73, 0x65, - 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x4e, 0x0a, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, + 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, + 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, + 0x12, 0x5e, 0x0a, 0x12, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, + 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x1a, 0xd6, 0x08, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0a, 0x69, - 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x69, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7e, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x65, 0x0a, 0x0e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x10, + 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, + 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x48, 0x0a, + 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x09, 0x75, 0x73, + 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x4e, 0x0a, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, + 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, + 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x0b, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x1a, 0xd6, 0x08, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0a, + 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, - 0x52, 0x0d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, - 0x7a, 0x0a, 0x15, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, - 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x14, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0x7c, 0x0a, 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x09, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x54, 0x74, 0x6c, 0x1a, 0x4f, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x08, - 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, - 0x69, 0x72, 0x65, 0x64, 0x1a, 0x47, 0x0a, 0x0d, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, 0x70, - 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x1a, 0xcf, 0x02, - 0x0a, 0x14, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, - 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x4c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x12, 0x3b, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x12, 0x41, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x63, 0x61, 0x73, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x63, - 0x61, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x69, 0x67, 0x69, 0x74, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x44, 0x69, 0x67, 0x69, 0x74, 0x73, - 0x12, 0x3d, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x1a, - 0x92, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, - 0x72, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, - 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x55, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x5f, 0x67, 0x72, 0x61, - 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x69, + 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7e, 0x0a, 0x17, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x65, 0x0a, 0x0e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, + 0x6c, 0x52, 0x0d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, + 0x12, 0x7a, 0x0a, 0x15, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x72, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x45, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x14, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0x7c, 0x0a, 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x09, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x54, 0x74, 0x6c, 0x1a, 0x4f, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, + 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x72, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x64, 0x1a, 0x47, 0x0a, 0x0d, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x1a, 0xcf, + 0x02, 0x0a, 0x14, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x12, 0x3b, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, + 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x12, 0x41, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x63, 0x61, + 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, + 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, + 0x63, 0x61, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x69, 0x67, 0x69, + 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, + 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x44, 0x69, 0x67, 0x69, 0x74, + 0x73, 0x12, 0x3d, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, + 0x1a, 0x92, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, + 0x75, 0x72, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, - 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x47, 0x72, 0x61, 0x76, - 0x61, 0x74, 0x61, 0x72, 0x1a, 0x55, 0x0a, 0x10, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x5f, 0x67, 0x72, + 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x47, 0x72, 0x61, + 0x76, 0x61, 0x74, 0x61, 0x72, 0x1a, 0x55, 0x0a, 0x10, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0xb0, 0x02, 0x0a, + 0x0a, 0x55, 0x73, 0x65, 0x72, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x13, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x64, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0xb0, 0x02, 0x0a, 0x0a, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x13, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, - 0x4d, 0x0a, 0x14, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x63, - 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x56, 0x0a, 0x19, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, + 0x12, 0x4d, 0x0a, 0x14, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x17, 0x64, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x4c, 0x6f, - 0x67, 0x69, 0x6e, 0x1a, 0x3b, 0x0a, 0x0b, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, + 0x63, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x56, 0x0a, 0x19, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x61, 0x6c, 0x6c, - 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0b, - 0x10, 0x0c, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x52, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x12, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x13, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x73, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x22, 0x63, - 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0d, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x32, 0x68, 0x0a, 0x0c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x12, 0x58, 0x0a, 0x08, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x0c, 0x12, 0x0a, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x32, 0x8b, 0x01, - 0x0a, 0x02, 0x49, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x73, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x69, 0x73, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x35, 0x5a, 0x2f, 0x67, - 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, - 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x17, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x4c, + 0x6f, 0x67, 0x69, 0x6e, 0x1a, 0x3b, 0x0a, 0x0b, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x61, 0x6c, + 0x6c, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, + 0x0b, 0x10, 0x0c, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x52, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x12, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x13, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x73, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x22, + 0x63, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, + 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x68, 0x0a, 0x0c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x12, 0x58, 0x0a, 0x08, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x32, 0x8b, + 0x01, 0x0a, 0x02, 0x49, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, + 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x73, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x69, 0x73, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x31, 0x5a, 0x2f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/join.pb.go b/pkg/ttnpb/join.pb.go index 0163dc0d3e..ea8e93a163 100644 --- a/pkg/ttnpb/join.pb.go +++ b/pkg/ttnpb/join.pb.go @@ -23,7 +23,6 @@ package ttnpb import ( _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -241,99 +240,96 @@ var file_lorawan_stack_api_join_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, - 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, - 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, - 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, - 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x07, 0x0a, 0x0b, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x7a, 0x02, - 0x68, 0x17, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x31, - 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x12, 0xc8, 0x01, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0c, 0x42, 0xac, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x04, 0x70, 0x01, - 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, - 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, + 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, + 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, + 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x07, 0x0a, 0x0b, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x7a, + 0x02, 0x68, 0x17, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x31, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x12, 0xc8, 0x01, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xac, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x04, 0x70, + 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, - 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, - 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x4c, 0x0a, 0x14, - 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x4d, 0x61, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xc2, 0x01, 0x0a, 0x06, 0x6e, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xaa, 0x01, 0xfa, 0x42, - 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, - 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, - 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, + 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, + 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, + 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, + 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x4c, 0x0a, + 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x4d, 0x61, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xc2, 0x01, 0x0a, 0x06, + 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xaa, 0x01, 0xfa, + 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, - 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, - 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, - 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, - 0x51, 0x0a, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x4c, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x72, 0x78, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x72, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, - 0x12, 0x2f, 0x0a, 0x07, 0x63, 0x66, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x46, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x06, 0x63, 0x66, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, - 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, - 0x75, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, - 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x41, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x4a, 0x04, - 0x08, 0x09, 0x10, 0x0a, 0x22, 0xf2, 0x01, 0x0a, 0x0c, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x7a, - 0x04, 0x10, 0x11, 0x18, 0x21, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x12, 0x48, 0x0a, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x4b, 0x65, 0x79, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x6c, - 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, - 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, + 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, + 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, + 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x6e, 0x65, 0x74, 0x49, 0x64, + 0x12, 0x51, 0x0a, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x4c, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x72, 0x78, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x72, 0x78, 0x44, 0x65, 0x6c, 0x61, + 0x79, 0x12, 0x2f, 0x0a, 0x07, 0x63, 0x66, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x46, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x06, 0x63, 0x66, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, - 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, + 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x41, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x4a, + 0x04, 0x08, 0x09, 0x10, 0x0a, 0x22, 0xf2, 0x01, 0x0a, 0x0c, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x09, 0xfa, 0x42, 0x06, + 0x7a, 0x04, 0x10, 0x11, 0x18, 0x21, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x12, 0x48, 0x0a, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, + 0x79, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x35, 0x0a, 0x08, + 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x69, 0x66, 0x65, 0x74, + 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, + 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/joinserver.pb.go b/pkg/ttnpb/joinserver.pb.go index 52b6d088c3..3428e1adbb 100644 --- a/pkg/ttnpb/joinserver.pb.go +++ b/pkg/ttnpb/joinserver.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -1277,181 +1276,281 @@ var file_lorawan_stack_api_joinserver_proto_rawDesc = []byte{ 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, - 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, - 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, - 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, + 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, + 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xe7, 0x03, 0x0a, 0x11, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0xce, 0x01, 0x0a, 0x07, 0x64, 0x65, 0x76, - 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, - 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, - 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, - 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, + 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xe7, 0x03, 0x0a, 0x11, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, + 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0xce, 0x01, 0x0a, 0x07, 0x64, 0x65, + 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, + 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, - 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, - 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, - 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, - 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, - 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, + 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, - 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, + 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, + 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, + 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, + 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, + 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, - 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, - 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x22, 0xf6, 0x01, 0x0a, - 0x10, 0x4e, 0x77, 0x6b, 0x53, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x4b, 0x0a, 0x0f, 0x66, 0x5f, 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x69, 0x6e, 0x74, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, - 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x0b, 0x66, 0x4e, 0x77, 0x6b, 0x53, 0x49, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x4b, - 0x0a, 0x0f, 0x73, 0x5f, 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, - 0x6c, 0x6f, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, - 0x73, 0x4e, 0x77, 0x6b, 0x53, 0x49, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x0d, 0x6e, - 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x65, 0x6e, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x6e, 0x77, 0x6b, 0x53, 0x45, - 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x54, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, - 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, + 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, + 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, + 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x22, 0xf6, 0x01, + 0x0a, 0x10, 0x4e, 0x77, 0x6b, 0x53, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0f, 0x66, 0x5f, 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x69, 0x6e, + 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x07, 0x61, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, 0x22, 0xeb, 0x02, 0x0a, 0x1b, - 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x03, 0x69, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x4d, 0x0a, - 0x0f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x07, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x02, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x12, 0x51, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, - 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, - 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, - 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, - 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x22, 0x38, 0x0a, 0x1c, 0x43, 0x72, 0x79, - 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x22, 0x96, 0x03, 0x0a, 0x14, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, - 0x70, 0x74, 0x4d, 0x49, 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x0f, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x55, 0x0a, 0x11, - 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa8, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, - 0x02, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, - 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, - 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x10, 0x01, 0x52, 0x0b, 0x66, 0x4e, 0x77, 0x6b, 0x53, 0x49, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, + 0x4b, 0x0a, 0x0f, 0x73, 0x5f, 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, + 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x0b, 0x73, 0x4e, 0x77, 0x6b, 0x53, 0x49, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x0d, + 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x65, 0x6e, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x6e, 0x77, 0x6b, 0x53, + 0x45, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x54, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x53, 0x4b, 0x65, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x61, 0x70, 0x70, + 0x5f, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, + 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, 0x22, 0xeb, 0x02, 0x0a, + 0x1b, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x03, + 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x4d, + 0x0a, 0x0f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, + 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x02, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x12, 0x51, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, + 0x18, 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, + 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, + 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x22, 0x38, 0x0a, 0x1c, 0x43, 0x72, + 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x96, 0x03, 0x0a, 0x14, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, + 0x65, 0x70, 0x74, 0x4d, 0x49, 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, + 0x0f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x55, 0x0a, + 0x11, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x5f, 0x6e, 0x6f, 0x6e, + 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa8, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, + 0x68, 0x02, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, - 0x73, 0x68, 0x61, 0x6c, 0x32, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x15, 0x4a, 0x06, 0x22, - 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x52, 0x08, 0x64, 0x65, 0x76, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x22, 0x9f, 0x07, 0x0a, - 0x18, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, - 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x03, 0x69, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x4d, 0x0a, 0x0f, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xca, 0x01, 0x0a, 0x0a, 0x6a, - 0x6f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, - 0xaa, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, - 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, + 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, + 0x72, 0x73, 0x68, 0x61, 0x6c, 0x32, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x15, 0x4a, 0x06, + 0x22, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x08, 0x64, 0x65, 0x76, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x22, 0x9f, 0x07, + 0x0a, 0x18, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, + 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x03, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x4d, 0x0a, 0x0f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xca, 0x01, 0x0a, 0x0a, + 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0xaa, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, + 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x22, 0x9a, - 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x6a, 0x6f, - 0x69, 0x6e, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x5f, - 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa8, 0x01, 0xfa, 0x42, - 0x06, 0x7a, 0x04, 0x68, 0x02, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, - 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, - 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, + 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x22, + 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x6a, + 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0xc6, 0x01, 0x0a, 0x09, 0x64, 0x65, 0x76, + 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa8, 0x01, 0xfa, + 0x42, 0x06, 0x7a, 0x04, 0x68, 0x02, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, - 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x32, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, - 0x15, 0x4a, 0x06, 0x22, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, - 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x64, 0x65, 0x76, 0x4e, 0x6f, 0x6e, 0x63, 0x65, - 0x12, 0xc2, 0x01, 0x0a, 0x06, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0c, 0x42, 0xaa, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, + 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x32, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, + 0x41, 0x15, 0x4a, 0x06, 0x22, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, + 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x64, 0x65, 0x76, 0x4e, 0x6f, 0x6e, 0x63, + 0x65, 0x12, 0xc2, 0x01, 0x0a, 0x06, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0c, 0x42, 0xaa, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, + 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, + 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, + 0x05, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, + 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x11, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x22, + 0xef, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x51, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x0d, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x11, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, + 0x10, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, + 0x61, 0x22, 0xef, 0x0b, 0x0a, 0x1a, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x4e, 0x0a, 0x0e, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x0d, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x50, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x05, 0x72, 0x61, + 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, + 0x5d, 0x0a, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x61, + 0x74, 0x61, 0x48, 0x00, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x1a, 0xb0, + 0x02, 0x0a, 0x0f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, + 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, + 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, + 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, + 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, + 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, + 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, 0x4a, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, + 0x73, 0x1a, 0xc1, 0x03, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, + 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, + 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, + 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, + 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, + 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, + 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, + 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, 0xd9, 0x01, 0x0a, 0x0d, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, @@ -1459,101 +1558,13 @@ var file_lorawan_stack_api_joinserver_proto_rawDesc = []byte{ 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, - 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, - 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, - 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, - 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, - 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x22, 0xef, - 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x51, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, - 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x0d, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x11, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, - 0x22, 0xef, 0x0b, 0x0a, 0x1a, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, - 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x4e, 0x0a, 0x0e, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x0d, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x50, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x05, 0x72, 0x61, 0x6e, - 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x5d, - 0x0a, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x1a, 0xb0, 0x02, - 0x0a, 0x0f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, - 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, - 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, - 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, - 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, - 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, - 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, - 0x6e, 0x45, 0x75, 0x69, 0x12, 0x4a, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, - 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, - 0x1a, 0xc1, 0x03, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, - 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, - 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, - 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, - 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, - 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, - 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, - 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, - 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, - 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, - 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, 0xd9, 0x01, 0x0a, 0x0d, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, + 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, + 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, + 0x65, 0x76, 0x45, 0x75, 0x69, 0x1a, 0xe8, 0x01, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x12, 0xd0, 0x01, + 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, @@ -1565,311 +1576,295 @@ var file_lorawan_stack_api_joinserver_proto_rawDesc = []byte{ 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, - 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, - 0x76, 0x45, 0x75, 0x69, 0x1a, 0xe8, 0x01, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x12, 0xd0, 0x01, 0x0a, - 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, - 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, - 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, - 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, - 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x3a, - 0x02, 0x18, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x22, 0xaf, 0x04, 0x0a, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x25, 0x0a, 0x09, 0x6b, 0x65, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, - 0x10, 0x52, 0x08, 0x6b, 0x65, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x2d, 0x0a, 0x03, 0x6b, - 0x65, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, - 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x03, 0x6b, 0x65, 0x6b, 0x12, 0xf0, 0x02, 0x0a, 0x0b, 0x68, - 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, - 0x42, 0xcf, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, - 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, + 0x3a, 0x02, 0x18, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x22, 0xaf, 0x04, 0x0a, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x25, 0x0a, 0x09, 0x6b, 0x65, 0x6b, 0x5f, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, + 0x80, 0x10, 0x52, 0x08, 0x6b, 0x65, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x2d, 0x0a, 0x03, + 0x6b, 0x65, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, + 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x03, 0x6b, 0x65, 0x6b, 0x12, 0xf0, 0x02, 0x0a, 0x0b, + 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0xcf, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, + 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, - 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, - 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, - 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, - 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, - 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, - 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, - 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x52, 0x09, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3b, 0x0a, - 0x15, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x13, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, - 0x08, 0x01, 0x10, 0x01, 0x22, 0xbf, 0x01, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x9e, 0x02, 0x0a, 0x27, 0x53, 0x65, 0x74, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x53, 0x0a, - 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, - 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x3a, 0x08, 0xf2, - 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x87, 0x01, 0x0a, 0x2a, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x73, 0x22, 0xfa, 0x01, 0x0a, 0x0d, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x50, 0x72, 0x65, - 0x66, 0x69, 0x78, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, - 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, - 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, - 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, + 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x33, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, + 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, + 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x09, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3b, + 0x0a, 0x15, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x13, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xbf, 0x01, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x9e, 0x02, 0x0a, 0x27, 0x53, 0x65, 0x74, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x53, + 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x3a, 0x08, + 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x87, 0x01, 0x0a, 0x2a, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x73, 0x22, 0xfa, 0x01, 0x0a, 0x0d, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x50, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, + 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, + 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, - 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, - 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, - 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, - 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x4c, - 0x0a, 0x0f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, - 0x73, 0x12, 0x39, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x50, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x22, 0xee, 0x01, 0x0a, - 0x19, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x45, - 0x55, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xd0, 0x01, 0x0a, 0x08, 0x6a, - 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, - 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, - 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, + 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, + 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, + 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, + 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, + 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, + 0x4c, 0x0a, 0x0f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x65, 0x73, 0x12, 0x39, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x50, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x22, 0xee, 0x01, + 0x0a, 0x19, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4a, 0x6f, 0x69, 0x6e, + 0x45, 0x55, 0x49, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xd0, 0x01, 0x0a, 0x08, + 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, + 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, - 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x32, 0xa3, 0x01, - 0x0a, 0x04, 0x4e, 0x73, 0x4a, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x52, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4e, 0x77, 0x6b, 0x53, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x21, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x4e, 0x77, 0x6b, 0x53, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x32, 0x58, 0x0a, 0x04, 0x41, 0x73, 0x4a, 0x73, 0x12, 0x50, 0x0a, 0x0a, 0x47, - 0x65, 0x74, 0x41, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, - 0x70, 0x53, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x59, 0x0a, - 0x05, 0x41, 0x70, 0x70, 0x4a, 0x73, 0x12, 0x50, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, - 0x53, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xf6, 0x04, 0x0a, 0x14, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x6b, 0x0a, 0x0e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x4d, 0x49, 0x43, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, - 0x0a, 0x0d, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x4d, 0x49, 0x43, 0x12, - 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x4d, 0x49, 0x43, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x11, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, 0x6f, - 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, + 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x32, 0xa3, + 0x01, 0x0a, 0x04, 0x4e, 0x73, 0x4a, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x48, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x52, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4e, 0x77, 0x6b, 0x53, 0x4b, 0x65, 0x79, 0x73, 0x12, + 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x77, 0x6b, 0x53, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x58, 0x0a, 0x04, 0x41, 0x73, 0x4a, 0x73, 0x12, 0x50, 0x0a, 0x0a, + 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x59, + 0x0a, 0x05, 0x41, 0x70, 0x70, 0x4a, 0x73, 0x12, 0x50, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x70, + 0x70, 0x53, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x53, 0x4b, 0x65, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xf6, 0x04, 0x0a, 0x14, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x6b, 0x0a, 0x0e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x4d, 0x49, 0x43, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x63, 0x0a, 0x0d, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x4d, 0x49, 0x43, + 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x4d, 0x49, 0x43, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x11, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4a, + 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, + 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x13, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x52, + 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x2b, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, + 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x13, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x52, 0x65, - 0x6a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, - 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x4e, - 0x77, 0x6b, 0x53, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x53, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x4e, 0x77, 0x6b, 0x53, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4e, 0x77, 0x6b, 0x4b, 0x65, 0x79, - 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, - 0x65, 0x32, 0xc4, 0x01, 0x0a, 0x18, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5a, - 0x0a, 0x0d, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x41, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, 0x12, - 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, - 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x53, 0x4b, - 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x09, 0x47, 0x65, - 0x74, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x74, - 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, - 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x32, 0x95, 0x06, 0x0a, 0x13, 0x4a, 0x73, 0x45, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, - 0x12, 0xb2, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, - 0x12, 0x63, 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x86, 0x02, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x23, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, - 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0xbe, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb7, 0x01, 0x1a, 0x63, 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, - 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, - 0x4d, 0x22, 0x48, 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, + 0x4e, 0x77, 0x6b, 0x53, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x77, 0x6b, 0x53, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4e, 0x77, 0x6b, 0x4b, 0x65, + 0x79, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, + 0x70, 0x65, 0x32, 0xc4, 0x01, 0x0a, 0x18, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x5a, 0x0a, 0x0d, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x41, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, + 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, + 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x53, + 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x09, 0x47, + 0x65, 0x74, 0x41, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, + 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, + 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x32, 0x95, 0x06, 0x0a, 0x13, 0x4a, 0x73, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, + 0x79, 0x12, 0xb2, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x65, 0x12, 0x63, 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xa7, - 0x01, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x22, 0x51, 0x88, 0x02, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x1a, 0x43, - 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2d, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x30, 0x01, 0x12, 0x95, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x2a, 0x45, 0x2f, 0x6a, 0x73, 0x2f, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, - 0x32, 0xb4, 0x04, 0x0a, 0x24, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xb1, 0x01, 0x0a, 0x03, 0x47, 0x65, - 0x74, 0x12, 0x37, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x3c, 0x12, 0x3a, 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xb4, 0x01, - 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x37, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, + 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x86, 0x02, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x45, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x22, 0x3a, 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xa0, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, - 0x3a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x53, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0xbe, + 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb7, 0x01, 0x1a, 0x63, 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, + 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, + 0x5a, 0x4d, 0x22, 0x48, 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, + 0xa7, 0x01, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x22, 0x51, 0x88, 0x02, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x1a, + 0x43, 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2d, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x30, 0x01, 0x12, 0x95, 0x01, 0x0a, 0x06, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x2a, 0x45, 0x2f, 0x6a, 0x73, 0x2f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x7d, 0x32, 0xb4, 0x04, 0x0a, 0x24, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xb1, 0x01, 0x0a, 0x03, 0x47, + 0x65, 0x74, 0x12, 0x37, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x2a, 0x3a, 0x2f, 0x6a, 0x73, - 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x32, 0xe8, 0x01, 0x0a, 0x02, 0x4a, 0x73, 0x12, 0x6c, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x50, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1f, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x6f, - 0x69, 0x6e, 0x45, 0x55, 0x49, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x22, 0x1d, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x6a, 0x73, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, - 0x65, 0x75, 0x69, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x74, 0x0a, 0x11, - 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, - 0x49, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x6a, - 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, - 0x75, 0x69, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xb4, + 0x01, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x37, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x45, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x22, 0x3a, 0x2f, 0x6a, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xa0, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x12, 0x3a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x2a, 0x3a, 0x2f, 0x6a, + 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x32, 0xe8, 0x01, 0x0a, 0x02, 0x4a, 0x73, 0x12, + 0x6c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x50, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1f, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, + 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x22, 0x1d, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x6a, 0x73, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, + 0x5f, 0x65, 0x75, 0x69, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x74, 0x0a, + 0x11, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x45, + 0x55, 0x49, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x29, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x55, 0x49, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, + 0x6a, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, + 0x65, 0x75, 0x69, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/keys.pb.go b/pkg/ttnpb/keys.pb.go index 561baa1c14..e5e63f14ed 100644 --- a/pkg/ttnpb/keys.pb.go +++ b/pkg/ttnpb/keys.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -273,98 +272,94 @@ var file_lorawan_stack_api_keys_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, - 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, - 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, - 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, - 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, - 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, - 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8e, 0x05, 0x0a, 0x0b, - 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x12, 0xfe, 0x02, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xeb, 0x02, 0xfa, 0x42, 0x06, 0x7a, - 0x04, 0x68, 0x10, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x83, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, - 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, - 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, - 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x40, 0x67, 0x6f, 0x2e, + 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, + 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, + 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, + 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8e, 0x05, 0x0a, + 0x0b, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x12, 0xfe, 0x02, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xeb, 0x02, 0xfa, 0x42, 0x06, + 0x7a, 0x04, 0x68, 0x10, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x83, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, - 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x31, 0x36, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, - 0xa1, 0x01, 0x1a, 0x4f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, - 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, - 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x31, 0x36, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, - 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, + 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x40, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, + 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x31, 0x36, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, + 0x19, 0xa1, 0x01, 0x1a, 0x4f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, - 0x74, 0x65, 0x73, 0x92, 0x41, 0x31, 0x4a, 0x22, 0x22, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, - 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, - 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, - 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x09, - 0x6b, 0x65, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x08, 0x6b, 0x65, 0x6b, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x12, 0xcc, 0x01, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, - 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa6, 0x01, 0xfa, 0x42, - 0x05, 0x7a, 0x03, 0x18, 0x80, 0x08, 0xf2, 0xaa, 0x19, 0x99, 0x01, 0x1a, 0x4e, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, - 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, - 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4e, 0x65, 0x77, 0x48, - 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x47, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, - 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, - 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4b, - 0x65, 0x79, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xaa, 0x01, 0x0a, - 0x08, 0x52, 0x6f, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x28, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, - 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x09, 0x72, 0x6f, 0x6f, 0x74, 0x4b, 0x65, - 0x79, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, - 0x65, 0x52, 0x06, 0x61, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x07, 0x6e, 0x77, 0x6b, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, - 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x06, 0x6e, 0x77, 0x6b, 0x4b, 0x65, 0x79, 0x3a, - 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xc6, 0x02, 0x0a, 0x0b, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x0f, 0x66, 0x5f, 0x6e, - 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, - 0x0b, 0x66, 0x4e, 0x77, 0x6b, 0x53, 0x49, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x41, 0x0a, 0x0f, - 0x73, 0x5f, 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x31, 0x36, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, + 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x31, 0x4a, 0x22, 0x22, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, + 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x25, 0x0a, + 0x09, 0x6b, 0x65, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x08, 0x6b, 0x65, 0x6b, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x12, 0xcc, 0x01, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x65, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa6, 0x01, 0xfa, + 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x08, 0xf2, 0xaa, 0x19, 0x99, 0x01, 0x1a, 0x4e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4e, 0x65, 0x77, + 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x47, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, + 0x4b, 0x65, 0x79, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xaa, 0x01, + 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x28, 0x0a, 0x0b, 0x72, 0x6f, + 0x6f, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x10, 0x52, 0x09, 0x72, 0x6f, 0x6f, 0x74, 0x4b, + 0x65, 0x79, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, - 0x70, 0x65, 0x52, 0x0b, 0x73, 0x4e, 0x77, 0x6b, 0x53, 0x49, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, - 0x3e, 0x0a, 0x0d, 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x65, 0x6e, 0x63, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x70, 0x65, 0x52, 0x06, 0x61, 0x70, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x07, 0x6e, 0x77, + 0x6b, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, + 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x06, 0x6e, 0x77, 0x6b, 0x4b, 0x65, 0x79, + 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xc6, 0x02, 0x0a, 0x0b, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x0f, 0x66, 0x5f, + 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, + 0x52, 0x0b, 0x66, 0x4e, 0x77, 0x6b, 0x53, 0x49, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x41, 0x0a, + 0x0f, 0x73, 0x5f, 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, - 0x6f, 0x70, 0x65, 0x52, 0x0a, 0x6e, 0x77, 0x6b, 0x53, 0x45, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x12, - 0x37, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, - 0x07, 0x61, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, - 0x10, 0x01, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x6f, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x4e, 0x77, 0x6b, 0x53, 0x49, 0x6e, 0x74, 0x4b, 0x65, 0x79, + 0x12, 0x3e, 0x0a, 0x0d, 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x65, 0x6e, 0x63, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, + 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x0a, 0x6e, 0x77, 0x6b, 0x53, 0x45, 0x6e, 0x63, 0x4b, 0x65, 0x79, + 0x12, 0x37, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, + 0x52, 0x07, 0x61, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x01, 0x10, 0x01, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/lorawan.pb.go b/pkg/ttnpb/lorawan.pb.go index a375106849..d6fc78283b 100644 --- a/pkg/ttnpb/lorawan.pb.go +++ b/pkg/ttnpb/lorawan.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -5987,192 +5986,113 @@ var file_lorawan_stack_api_lorawan_proto_rawDesc = []byte{ 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, - 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, - 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, - 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xbb, 0x03, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x33, - 0x0a, 0x05, 0x6d, 0x5f, 0x68, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, - 0x48, 0x44, 0x52, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6d, - 0x48, 0x64, 0x72, 0x12, 0x1b, 0x0a, 0x03, 0x6d, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x42, 0x09, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x10, 0x00, 0x18, 0x04, 0x52, 0x03, 0x6d, 0x69, 0x63, - 0x12, 0x3d, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x48, 0x00, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, - 0x56, 0x0a, 0x14, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, - 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x48, 0x00, 0x52, 0x12, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x53, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, - 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x11, 0x6a, 0x6f, 0x69, 0x6e, 0x41, - 0x63, 0x63, 0x65, 0x70, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x5c, 0x0a, 0x16, - 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, - 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x48, 0x00, 0x52, 0x14, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x0e, 0x0a, 0x07, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, - 0x22, 0x75, 0x0a, 0x04, 0x4d, 0x48, 0x44, 0x52, 0x12, 0x36, 0x0a, 0x06, 0x6d, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6d, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x35, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x22, 0xe3, 0x01, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x33, 0x0a, 0x05, 0x66, 0x5f, 0x68, 0x64, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x48, 0x44, 0x52, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x66, 0x48, 0x64, 0x72, 0x12, 0x1f, 0x0a, 0x06, 0x66, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, - 0x66, 0x72, 0x6d, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x0a, 0x66, 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x40, 0x0a, - 0x0f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, - 0x0e, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, - 0x1c, 0x0a, 0x0a, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x46, 0x43, 0x6e, 0x74, 0x22, 0xee, 0x03, - 0x0a, 0x04, 0x46, 0x48, 0x44, 0x52, 0x12, 0xed, 0x02, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd1, 0x02, 0xfa, 0x42, 0x06, 0x7a, - 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, - 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, - 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, - 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, - 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, - 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, - 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, - 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, - 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, - 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, - 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, - 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x92, 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, - 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, - 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x36, 0x0a, 0x06, 0x66, 0x5f, 0x63, 0x74, 0x72, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x43, 0x74, 0x72, 0x6c, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x66, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x1e, - 0x0a, 0x05, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xfa, - 0x42, 0x06, 0x2a, 0x04, 0x18, 0xff, 0xff, 0x03, 0x52, 0x04, 0x66, 0x43, 0x6e, 0x74, 0x12, 0x1e, - 0x0a, 0x06, 0x66, 0x5f, 0x6f, 0x70, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x7a, 0x02, 0x18, 0x0f, 0x52, 0x05, 0x66, 0x4f, 0x70, 0x74, 0x73, 0x22, 0x81, - 0x01, 0x0a, 0x05, 0x46, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x64, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x64, 0x72, 0x12, 0x1e, 0x0a, 0x0b, 0x61, 0x64, - 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x09, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, - 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09, - 0x66, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x08, 0x66, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, 0x61, - 0x73, 0x73, 0x5f, 0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x42, 0x22, 0xf0, 0x08, 0x0a, 0x12, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0xf5, 0x02, 0x0a, 0x08, 0x6a, 0x6f, - 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd9, 0x02, 0xfa, - 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, - 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, - 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, - 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, - 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, - 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, - 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, - 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, - 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, - 0x69, 0x12, 0xf3, 0x02, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0c, 0x42, 0xd9, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, - 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, - 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, - 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, - 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, - 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, - 0x77, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, + 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x03, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x33, 0x0a, 0x05, 0x6d, 0x5f, 0x68, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x48, 0x44, 0x52, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, + 0x6d, 0x48, 0x64, 0x72, 0x12, 0x1b, 0x0a, 0x03, 0x6d, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x10, 0x00, 0x18, 0x04, 0x52, 0x03, 0x6d, 0x69, + 0x63, 0x12, 0x3d, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x12, 0x56, 0x0a, 0x14, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x48, 0x00, 0x52, 0x12, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x53, 0x0a, 0x13, 0x6a, 0x6f, 0x69, 0x6e, + 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, + 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x11, 0x6a, 0x6f, 0x69, 0x6e, + 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x5c, 0x0a, + 0x16, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, + 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x14, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x0e, 0x0a, 0x07, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x4a, 0x04, 0x08, 0x07, 0x10, + 0x08, 0x22, 0x75, 0x0a, 0x04, 0x4d, 0x48, 0x44, 0x52, 0x12, 0x36, 0x0a, 0x06, 0x6d, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x54, 0x79, 0x70, 0x65, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6d, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x35, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x22, 0xe3, 0x01, 0x0a, 0x0a, 0x4d, 0x41, 0x43, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x33, 0x0a, 0x05, 0x66, 0x5f, 0x68, 0x64, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x48, 0x44, 0x52, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x66, 0x48, 0x64, 0x72, 0x12, 0x1f, 0x0a, 0x06, + 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, + 0x0b, 0x66, 0x72, 0x6d, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x40, + 0x0a, 0x0f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x52, 0x0e, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x12, 0x1c, 0x0a, 0x0a, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x46, 0x43, 0x6e, 0x74, 0x22, 0xee, + 0x03, 0x0a, 0x04, 0x46, 0x48, 0x44, 0x52, 0x12, 0xed, 0x02, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd1, 0x02, 0xfa, 0x42, 0x06, + 0x7a, 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, - 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, - 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, - 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, - 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, - 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x12, 0xeb, 0x02, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x5f, - 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcd, 0x02, 0xfa, 0x42, - 0x06, 0x7a, 0x04, 0x68, 0x02, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, + 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, - 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, - 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, - 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x32, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, - 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, - 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x32, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, - 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, - 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, - 0x74, 0x65, 0x73, 0x92, 0x41, 0x15, 0x4a, 0x06, 0x22, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, - 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x64, 0x65, 0x76, - 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x22, 0xdb, 0x09, 0x0a, 0x14, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x4c, - 0x0a, 0x0b, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x0a, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0xe7, 0x02, 0x0a, - 0x06, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, - 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, + 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, + 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, + 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, + 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, + 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x92, 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, + 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, + 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x36, 0x0a, 0x06, 0x66, 0x5f, 0x63, 0x74, 0x72, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x43, 0x74, 0x72, 0x6c, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x66, 0x43, 0x74, 0x72, 0x6c, 0x12, + 0x1e, 0x0a, 0x05, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, + 0xfa, 0x42, 0x06, 0x2a, 0x04, 0x18, 0xff, 0xff, 0x03, 0x52, 0x04, 0x66, 0x43, 0x6e, 0x74, 0x12, + 0x1e, 0x0a, 0x06, 0x66, 0x5f, 0x6f, 0x70, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x7a, 0x02, 0x18, 0x0f, 0x52, 0x05, 0x66, 0x4f, 0x70, 0x74, 0x73, 0x22, + 0x81, 0x01, 0x0a, 0x05, 0x46, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x64, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x64, 0x72, 0x12, 0x1e, 0x0a, 0x0b, 0x61, + 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x61, + 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x63, 0x6b, 0x12, 0x1b, 0x0a, + 0x09, 0x66, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x08, 0x66, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x5f, 0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x42, 0x22, 0xf0, 0x08, 0x0a, 0x12, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0xf5, 0x02, 0x0a, 0x08, 0x6a, + 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd9, 0x02, + 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, @@ -6180,74 +6100,46 @@ var file_lorawan_stack_api_lorawan_proto_rawDesc = []byte{ 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, + 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, - 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, - 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, - 0x05, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0xf5, 0x02, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, - 0x65, 0x75, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd9, 0x02, 0xfa, 0x42, 0x06, 0x7a, - 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, - 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, - 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, - 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, - 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, - 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, - 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, - 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, - 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, - 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, - 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, - 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, - 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, 0xf3, - 0x02, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, - 0x42, 0xd9, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, - 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, - 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, - 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, - 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, - 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, - 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, - 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, - 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, - 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x64, 0x65, - 0x76, 0x45, 0x75, 0x69, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, - 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, - 0x43, 0x6e, 0x74, 0x22, 0xb3, 0x0a, 0x0a, 0x11, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, - 0x70, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x65, 0x6e, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x12, 0xef, 0x02, 0x0a, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, - 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, 0xfa, - 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, + 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, + 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, + 0x75, 0x69, 0x12, 0xf3, 0x02, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd9, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, + 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, + 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, + 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, + 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, + 0x65, 0x77, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, + 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, + 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, + 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, + 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x12, 0xeb, 0x02, 0x0a, 0x09, 0x64, 0x65, 0x76, + 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcd, 0x02, 0xfa, + 0x42, 0x06, 0x7a, 0x04, 0x68, 0x02, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, @@ -6255,22 +6147,51 @@ var file_lorawan_stack_api_lorawan_proto_rawDesc = []byte{ 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, + 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x32, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x32, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, - 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, - 0x6a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0xe7, 0x02, 0x0a, 0x06, 0x6e, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, 0xfa, 0x42, 0x06, - 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, + 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x15, 0x4a, 0x06, 0x22, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, + 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x64, 0x65, + 0x76, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x22, 0xdb, 0x09, 0x0a, 0x14, 0x52, 0x65, 0x6a, 0x6f, 0x69, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x4c, 0x0a, 0x0b, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x0a, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0xe7, 0x02, + 0x0a, 0x06, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcf, + 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, + 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, + 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, + 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, + 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, + 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, + 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x05, 0x6e, 0x65, 0x74, 0x49, 0x64, 0x12, 0xf5, 0x02, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, + 0x5f, 0x65, 0x75, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd9, 0x02, 0xfa, 0x42, 0x06, + 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, @@ -6278,1097 +6199,1172 @@ var file_lorawan_stack_api_lorawan_proto_rawDesc = []byte{ 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, - 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, + 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, - 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, + 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, - 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x6e, 0x65, - 0x74, 0x49, 0x64, 0x12, 0xed, 0x02, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd1, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x04, - 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, - 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, - 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, - 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, - 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, - 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, - 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, - 0x2e, 0x4e, 0x65, 0x77, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, + 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, + 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, + 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, + 0xf3, 0x02, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0xd9, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, + 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, + 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x38, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, + 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, + 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, + 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x64, + 0x65, 0x76, 0x45, 0x75, 0x69, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, + 0x63, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6a, 0x6f, 0x69, + 0x6e, 0x43, 0x6e, 0x74, 0x22, 0xb3, 0x0a, 0x0a, 0x11, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, + 0x65, 0x70, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x65, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x12, 0xef, 0x02, 0x0a, 0x0a, 0x6a, 0x6f, 0x69, + 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, + 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, - 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, - 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, - 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, - 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, - 0x64, 0x64, 0x72, 0x12, 0x45, 0x0a, 0x0b, 0x64, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x4c, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, - 0x64, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x72, 0x78, - 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, - 0x44, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x07, 0x72, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x2f, 0x0a, 0x07, 0x63, 0x66, 0x5f, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x46, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x06, 0x63, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xbd, 0x01, 0x0a, 0x0a, 0x44, 0x4c, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4c, 0x0a, 0x0d, 0x72, 0x78, 0x31, 0x5f, - 0x64, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x72, 0x78, 0x31, 0x44, 0x72, - 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x05, 0x72, 0x78, 0x32, 0x44, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, - 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x67, 0x3a, - 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x7b, 0x0a, 0x06, 0x43, 0x46, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x46, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x66, 0x72, 0x65, 0x71, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x04, 0x66, 0x72, 0x65, - 0x71, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x08, 0x52, 0x07, 0x63, 0x68, 0x4d, 0x61, 0x73, 0x6b, 0x73, 0x3a, 0x08, 0xf2, 0xaa, - 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x82, 0x01, 0x0a, 0x0c, 0x4c, 0x6f, 0x52, 0x61, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, - 0x69, 0x64, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x61, 0x6e, 0x64, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0f, 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, - 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0x32, 0x0a, 0x0b, 0x46, - 0x53, 0x4b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x69, - 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x62, 0x69, - 0x74, 0x52, 0x61, 0x74, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, - 0x9c, 0x01, 0x0a, 0x0e, 0x4c, 0x52, 0x46, 0x48, 0x53, 0x53, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, - 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6d, 0x6f, 0x64, - 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, - 0x64, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, - 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, - 0x52, 0x61, 0x74, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0xc6, - 0x01, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x6c, - 0x6f, 0x72, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x52, 0x61, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x6f, 0x72, 0x61, 0x12, - 0x2f, 0x0a, 0x03, 0x66, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x53, - 0x4b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x03, 0x66, 0x73, 0x6b, - 0x12, 0x38, 0x0a, 0x06, 0x6c, 0x72, 0x66, 0x68, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, + 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, + 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, + 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, + 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x41, 0x42, 0x43, 0x44, 0x45, + 0x46, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, + 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0xe7, 0x02, 0x0a, 0x06, 0x6e, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xcf, 0x02, 0xfa, 0x42, + 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, + 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, + 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, + 0x19, 0xa0, 0x01, 0x1a, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, + 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, + 0x6c, 0x61, 0x67, 0x22, 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, + 0x74, 0x6e, 0x2d, 0x6c, 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, + 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x6e, + 0x65, 0x74, 0x49, 0x64, 0x12, 0xed, 0x02, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xd1, 0x02, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, + 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, + 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, + 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0xf2, 0xaa, 0x19, 0xa0, 0x01, 0x1a, + 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, + 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, + 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, + 0x4e, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x74, 0x6e, 0x2d, 0x6c, + 0x77, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x66, 0x6c, 0x61, 0x67, + 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x61, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, + 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, + 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, + 0x41, 0x64, 0x64, 0x72, 0x12, 0x45, 0x0a, 0x0b, 0x64, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x4c, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x0a, 0x64, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x72, + 0x78, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, + 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x07, 0x72, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x2f, 0x0a, 0x07, 0x63, 0x66, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x46, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x06, 0x63, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xbd, 0x01, 0x0a, 0x0a, 0x44, + 0x4c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4c, 0x0a, 0x0d, 0x72, 0x78, 0x31, + 0x5f, 0x64, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x4c, 0x52, 0x46, 0x48, 0x53, 0x53, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, - 0x48, 0x00, 0x52, 0x06, 0x6c, 0x72, 0x66, 0x68, 0x73, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, - 0x08, 0x01, 0x10, 0x00, 0x42, 0x11, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0xee, 0x03, 0x0a, 0x0a, 0x54, 0x78, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, - 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x61, 0x74, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x63, 0x72, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x43, 0x72, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, - 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, - 0x69, 0x6e, 0x6b, 0x12, 0x35, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x1a, 0x85, 0x01, 0x0a, 0x08, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x74, 0x65, 0x6e, - 0x6e, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, - 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x19, 0x0a, 0x08, - 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, - 0x74, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x13, 0x69, 0x6e, 0x76, 0x65, 0x72, - 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x50, 0x6f, 0x6c, 0x61, - 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, - 0x10, 0x00, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x4a, 0x04, 0x08, 0x02, - 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x8f, 0x01, 0x0a, 0x19, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, - 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x61, 0x6e, - 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xb0, 0x01, 0x0a, 0x19, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x42, 0x43, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x74, 0x65, 0x6e, - 0x6e, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, - 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x9b, 0x02, - 0x0a, 0x0b, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x45, 0x0a, - 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x03, 0x69, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x12, 0x3b, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x63, - 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x0c, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x0c, - 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0c, - 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x41, 0x0a, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x05, 0x66, - 0x69, 0x78, 0x65, 0x64, 0x42, 0x0b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x03, 0xf8, 0x42, - 0x01, 0x22, 0x8a, 0x05, 0x0a, 0x09, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2b, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, + 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x72, 0x78, 0x31, 0x44, + 0x72, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x78, 0x32, 0x5f, 0x64, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x05, 0x72, 0x78, 0x32, 0x44, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f, 0x6e, + 0x65, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x67, + 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x7b, 0x0a, 0x06, 0x43, 0x46, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x46, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x66, 0x72, 0x65, 0x71, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x04, 0x66, 0x72, + 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x08, 0x52, 0x07, 0x63, 0x68, 0x4d, 0x61, 0x73, 0x6b, 0x73, 0x3a, 0x08, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x82, 0x01, 0x0a, 0x0c, 0x4c, 0x6f, 0x52, 0x61, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x64, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x61, 0x6e, + 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, + 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0f, 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x63, 0x74, 0x6f, + 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x74, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, + 0x74, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0x32, 0x0a, 0x0b, + 0x46, 0x53, 0x4b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x62, + 0x69, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x62, + 0x69, 0x74, 0x52, 0x61, 0x74, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, + 0x22, 0x9c, 0x01, 0x0a, 0x0e, 0x4c, 0x52, 0x46, 0x48, 0x53, 0x53, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x17, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x57, + 0x69, 0x64, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x64, 0x69, 0x6e, + 0x67, 0x52, 0x61, 0x74, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, + 0xc6, 0x01, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x04, + 0x6c, 0x6f, 0x72, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x52, 0x61, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x6f, 0x72, 0x61, + 0x12, 0x2f, 0x0a, 0x03, 0x66, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x46, + 0x53, 0x4b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x03, 0x66, 0x73, + 0x6b, 0x12, 0x38, 0x0a, 0x06, 0x6c, 0x72, 0x66, 0x68, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4c, 0x52, 0x46, 0x48, 0x53, 0x53, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, + 0x65, 0x48, 0x00, 0x52, 0x06, 0x6c, 0x72, 0x66, 0x68, 0x73, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x01, 0x10, 0x00, 0x42, 0x11, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0xee, 0x03, 0x0a, 0x0a, 0x54, 0x78, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x61, 0x74, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x63, 0x72, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x43, 0x72, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, + 0x69, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x35, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x1a, 0x85, 0x01, 0x0a, 0x08, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x74, 0x65, + 0x6e, 0x6e, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0c, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x19, 0x0a, + 0x08, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x07, 0x74, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x13, 0x69, 0x6e, 0x76, 0x65, + 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x50, 0x6f, 0x6c, + 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x01, 0x10, 0x00, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x4a, 0x04, 0x08, + 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x8f, 0x01, 0x0a, 0x19, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, + 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x61, + 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xb0, 0x01, 0x0a, 0x19, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x43, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x43, 0x0a, 0x0e, - 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, - 0x74, 0x68, 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, - 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x78, 0x31, 0x44, 0x65, 0x6c, 0x61, - 0x79, 0x12, 0x3c, 0x0a, 0x0d, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, - 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, - 0x74, 0x65, 0x52, 0x0b, 0x72, 0x78, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x12, - 0x23, 0x0a, 0x0d, 0x72, 0x78, 0x31, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x72, 0x78, 0x31, 0x46, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x79, 0x12, 0x3c, 0x0a, 0x0d, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x72, 0x78, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, - 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x72, 0x78, 0x32, 0x46, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x48, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x53, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x12, 0x3f, 0x0a, 0x0d, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x74, 0x65, + 0x6e, 0x6e, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0c, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, + 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x9b, + 0x02, 0x0a, 0x0b, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x45, + 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x3b, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x11, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, - 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x08, 0x61, 0x64, 0x76, 0x61, 0x6e, - 0x63, 0x65, 0x64, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x52, 0x08, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x4a, 0x04, 0x08, 0x04, - 0x10, 0x05, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x22, 0xc2, - 0x33, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x42, 0x0a, - 0x03, 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x03, 0x63, 0x69, - 0x64, 0x12, 0x21, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x42, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6e, + 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3d, 0x0a, + 0x0c, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x83, 0x01, 0x0a, + 0x0c, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, 0x23, 0x0a, + 0x0c, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x12, 0x41, 0x0a, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, 0x65, 0x6e, 0x6e, + 0x61, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x05, + 0x66, 0x69, 0x78, 0x65, 0x64, 0x42, 0x0b, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x03, 0xf8, + 0x42, 0x01, 0x22, 0x8a, 0x05, 0x0a, 0x09, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x2b, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x43, 0x0a, + 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, + 0x61, 0x74, 0x68, 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, + 0x68, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x72, 0x78, 0x31, 0x44, 0x65, 0x6c, + 0x61, 0x79, 0x12, 0x3c, 0x0a, 0x0d, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x61, 0x74, 0x65, 0x52, 0x0b, 0x72, 0x78, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, + 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x78, 0x31, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x72, 0x78, 0x31, 0x46, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x3c, 0x0a, 0x0d, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x72, 0x78, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x72, 0x78, 0x32, 0x46, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x48, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x0d, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x11, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x08, 0x61, 0x64, 0x76, 0x61, + 0x6e, 0x63, 0x65, 0x64, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x52, 0x08, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x4a, 0x04, 0x08, + 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x22, + 0xc2, 0x33, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x42, + 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, 0x03, 0x63, + 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x42, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x69, + 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x48, 0x00, 0x52, + 0x08, 0x72, 0x65, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x72, 0x65, 0x73, + 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, + 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x12, 0x4f, 0x0a, 0x0e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x61, + 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6e, + 0x73, 0x48, 0x00, 0x52, 0x0c, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6e, + 0x73, 0x12, 0x49, 0x0a, 0x0c, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x64, 0x72, 0x5f, 0x72, 0x65, + 0x71, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x65, - 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, + 0x61, 0x6e, 0x64, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x41, 0x44, 0x52, 0x52, 0x65, 0x71, 0x48, 0x00, + 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x64, 0x72, 0x52, 0x65, 0x71, 0x12, 0x49, 0x0a, 0x0c, + 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x4c, + 0x69, 0x6e, 0x6b, 0x41, 0x44, 0x52, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x6c, 0x69, 0x6e, + 0x6b, 0x41, 0x64, 0x72, 0x41, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x64, 0x75, 0x74, 0x79, 0x5f, + 0x63, 0x79, 0x63, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x44, 0x75, 0x74, 0x79, + 0x43, 0x79, 0x63, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x75, 0x74, 0x79, + 0x43, 0x79, 0x63, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x59, 0x0a, 0x12, 0x72, 0x78, 0x5f, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x2e, 0x52, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x48, 0x00, 0x52, 0x0f, 0x72, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, + 0x52, 0x65, 0x71, 0x12, 0x59, 0x0a, 0x12, 0x72, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, + 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x78, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, + 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x6e, 0x73, 0x12, 0x4f, + 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x61, 0x6e, 0x73, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x2e, 0x44, 0x65, 0x76, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x41, 0x6e, 0x73, 0x48, + 0x00, 0x52, 0x0c, 0x64, 0x65, 0x76, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x41, 0x6e, 0x73, 0x12, + 0x52, 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, + 0x65, 0x71, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, + 0x65, 0x71, 0x48, 0x00, 0x52, 0x0d, 0x6e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x52, 0x65, 0x71, 0x12, 0x52, 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, - 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x12, - 0x4f, 0x0a, 0x0e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x61, 0x6e, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6e, 0x73, - 0x48, 0x00, 0x52, 0x0c, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6e, 0x73, - 0x12, 0x49, 0x0a, 0x0c, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x64, 0x72, 0x5f, 0x72, 0x65, 0x71, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x6e, 0x65, 0x77, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x64, 0x6c, 0x5f, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x44, 0x4c, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x6c, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x4f, 0x0a, 0x0e, 0x64, 0x6c, 0x5f, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x44, 0x4c, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x6c, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x5c, 0x0a, 0x13, 0x72, 0x78, 0x5f, + 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x71, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x41, 0x44, 0x52, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, - 0x0a, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x64, 0x72, 0x52, 0x65, 0x71, 0x12, 0x49, 0x0a, 0x0c, 0x6c, - 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x4c, 0x69, - 0x6e, 0x6b, 0x41, 0x44, 0x52, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x6b, - 0x41, 0x64, 0x72, 0x41, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x64, 0x75, 0x74, 0x79, 0x5f, 0x63, - 0x79, 0x63, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x44, 0x75, 0x74, 0x79, 0x43, - 0x79, 0x63, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x75, 0x74, 0x79, 0x43, - 0x79, 0x63, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x59, 0x0a, 0x12, 0x72, 0x78, 0x5f, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x09, 0x20, + 0x6e, 0x64, 0x2e, 0x52, 0x78, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x75, 0x70, + 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x10, 0x72, 0x78, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53, + 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x59, 0x0a, 0x12, 0x74, 0x78, 0x5f, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, - 0x52, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x48, - 0x00, 0x52, 0x0f, 0x72, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, - 0x65, 0x71, 0x12, 0x59, 0x0a, 0x12, 0x72, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, - 0x65, 0x74, 0x75, 0x70, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x78, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x78, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x6e, 0x73, 0x12, 0x4f, 0x0a, - 0x0e, 0x64, 0x65, 0x76, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x61, 0x6e, 0x73, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x2e, 0x44, 0x65, 0x76, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x41, 0x6e, 0x73, 0x48, 0x00, - 0x52, 0x0c, 0x64, 0x65, 0x76, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x41, 0x6e, 0x73, 0x12, 0x52, - 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, - 0x71, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, - 0x71, 0x48, 0x00, 0x52, 0x0d, 0x6e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, - 0x65, 0x71, 0x12, 0x52, 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, - 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x6e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x64, 0x6c, 0x5f, 0x63, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x44, 0x4c, 0x43, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x6c, 0x43, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x4f, 0x0a, 0x0e, 0x64, 0x6c, 0x5f, 0x63, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x44, 0x4c, 0x43, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x6c, 0x43, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x5c, 0x0a, 0x13, 0x72, 0x78, 0x5f, 0x74, - 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x54, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x48, + 0x00, 0x52, 0x0f, 0x74, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, + 0x65, 0x71, 0x12, 0x42, 0x0a, 0x09, 0x72, 0x65, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x2e, 0x52, 0x78, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, - 0x65, 0x71, 0x48, 0x00, 0x52, 0x10, 0x72, 0x78, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, - 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x59, 0x0a, 0x12, 0x74, 0x78, 0x5f, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x54, - 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x48, 0x00, - 0x52, 0x0f, 0x74, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, - 0x71, 0x12, 0x42, 0x0a, 0x09, 0x72, 0x65, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x18, 0x12, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x64, 0x2e, 0x52, 0x65, 0x6b, 0x65, 0x79, 0x49, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, + 0x6b, 0x65, 0x79, 0x49, 0x6e, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x72, 0x65, 0x6b, 0x65, 0x79, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x6b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x66, + 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x6b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x5c, 0x0a, + 0x13, 0x61, 0x64, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, + 0x5f, 0x72, 0x65, 0x71, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x44, 0x52, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, + 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x10, 0x61, 0x64, 0x72, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x52, 0x0a, 0x0f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x15, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x2e, 0x52, 0x65, 0x6b, 0x65, 0x79, 0x49, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6b, - 0x65, 0x79, 0x49, 0x6e, 0x64, 0x12, 0x45, 0x0a, 0x0a, 0x72, 0x65, 0x6b, 0x65, 0x79, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x6b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x48, - 0x00, 0x52, 0x09, 0x72, 0x65, 0x6b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x5c, 0x0a, 0x13, - 0x61, 0x64, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, - 0x72, 0x65, 0x71, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x44, 0x52, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, - 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x10, 0x61, 0x64, 0x72, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x52, 0x0a, 0x0f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x15, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, - 0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x41, 0x6e, 0x73, 0x12, 0x55, - 0x0a, 0x10, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, - 0x65, 0x71, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, - 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x6a, 0x6f, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x65, 0x0a, 0x16, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x18, - 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, - 0x75, 0x70, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x13, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x65, 0x0a, 0x16, - 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, - 0x75, 0x70, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, - 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x13, - 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, - 0x41, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x12, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x50, 0x69, 0x6e, 0x67, - 0x53, 0x6c, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0f, 0x70, - 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x62, - 0x0a, 0x15, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, - 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, - 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x12, - 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, - 0x65, 0x71, 0x12, 0x62, 0x0a, 0x15, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, - 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x1b, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x50, 0x69, - 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, - 0x48, 0x00, 0x52, 0x12, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x11, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x42, 0x65, - 0x61, 0x63, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, - 0x0f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x41, 0x6e, 0x73, - 0x12, 0x52, 0x0a, 0x0f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x5f, - 0x72, 0x65, 0x71, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x41, 0x6e, 0x73, 0x48, 0x00, + 0x52, 0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x41, 0x6e, 0x73, 0x12, + 0x55, 0x0a, 0x10, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, + 0x72, 0x65, 0x71, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, 0x72, 0x65, 0x71, - 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, 0x72, 0x65, - 0x71, 0x52, 0x65, 0x71, 0x12, 0x52, 0x0a, 0x0f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x66, - 0x72, 0x65, 0x71, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, - 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x46, 0x72, 0x65, 0x71, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x65, 0x61, 0x63, 0x6f, - 0x6e, 0x46, 0x72, 0x65, 0x71, 0x41, 0x6e, 0x73, 0x12, 0x52, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x64, 0x12, 0x55, 0x0a, 0x10, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x6a, 0x6f, 0x69, + 0x6e, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x6a, + 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x65, 0x0a, 0x16, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x71, + 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x48, 0x00, 0x52, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x1a, 0x52, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x12, - 0x46, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x69, 0x6e, 0x6f, 0x72, 0x42, 0x0a, 0xfa, - 0x42, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x18, 0x01, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x6f, 0x72, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x53, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x46, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x69, 0x6e, - 0x6f, 0x72, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x18, 0x01, 0x52, 0x0c, - 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x5f, 0x0a, 0x0c, - 0x4c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x06, - 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x2a, 0x03, 0x18, 0xfe, 0x01, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x2d, - 0x0a, 0x0d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, - 0x0c, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x9e, 0x02, - 0x0a, 0x0a, 0x4c, 0x69, 0x6e, 0x6b, 0x41, 0x44, 0x52, 0x52, 0x65, 0x71, 0x12, 0x4f, 0x0a, 0x0f, - 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0d, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2d, 0x0a, - 0x0e, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0f, 0x52, 0x0c, - 0x74, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2b, 0x0a, 0x0c, - 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x08, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x10, 0x52, 0x0b, 0x63, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x39, 0x0a, 0x14, 0x63, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x07, - 0x52, 0x12, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x22, 0x0a, 0x08, 0x6e, 0x62, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0f, 0x52, - 0x07, 0x6e, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x1a, 0x92, - 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x6e, 0x6b, 0x41, 0x44, 0x52, 0x41, 0x6e, 0x73, 0x12, 0x28, 0x0a, - 0x10, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x61, 0x63, - 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x4d, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x6b, 0x12, 0x2d, 0x0a, 0x13, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x41, 0x63, 0x6b, 0x12, 0x2b, 0x0a, 0x12, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, - 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0f, 0x74, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x41, 0x63, 0x6b, 0x1a, 0x63, 0x0a, 0x0c, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, - 0x52, 0x65, 0x71, 0x12, 0x53, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, 0x74, 0x79, 0x5f, - 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x67, 0x67, - 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x44, - 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x1a, 0xf4, 0x01, 0x0a, 0x0f, 0x52, 0x78, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x56, 0x0a, 0x13, - 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x10, 0x72, 0x78, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x12, 0x59, 0x0a, 0x14, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x72, 0x78, - 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, - 0x2e, 0x0a, 0x0d, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x32, 0x04, 0x28, 0xa0, 0x8d, - 0x06, 0x52, 0x0c, 0x72, 0x78, 0x32, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x1a, - 0xab, 0x01, 0x0a, 0x0f, 0x52, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, - 0x41, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x17, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x72, 0x78, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x41, 0x63, 0x6b, 0x12, 0x36, 0x0a, 0x18, 0x72, 0x78, 0x31, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x72, 0x78, 0x31, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x41, 0x63, - 0x6b, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x79, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x72, 0x78, - 0x32, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x41, 0x63, 0x6b, 0x1a, 0x5e, 0x0a, - 0x0c, 0x44, 0x65, 0x76, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x41, 0x6e, 0x73, 0x12, 0x22, 0x0a, - 0x07, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x07, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x79, 0x12, 0x2a, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x42, 0x12, 0xfa, 0x42, 0x0f, 0x1a, 0x0d, 0x18, 0x1f, 0x28, 0xe0, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x1a, 0x99, 0x02, - 0x0a, 0x0d, 0x4e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, - 0x2d, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xff, 0x01, - 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x29, - 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, 0x06, 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x09, - 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x56, 0x0a, 0x13, 0x6d, 0x69, 0x6e, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, + 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x13, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x65, 0x0a, + 0x16, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x65, + 0x74, 0x75, 0x70, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, + 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, + 0x13, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, + 0x70, 0x41, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x12, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, + 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x50, 0x69, 0x6e, + 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0f, + 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, + 0x62, 0x0a, 0x15, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x53, + 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, + 0x12, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x52, 0x65, 0x71, 0x12, 0x62, 0x0a, 0x15, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, 0x74, + 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x1b, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x50, + 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, + 0x73, 0x48, 0x00, 0x52, 0x12, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x11, 0x62, 0x65, 0x61, 0x63, 0x6f, + 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x1c, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x42, + 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x41, 0x6e, 0x73, 0x48, 0x00, + 0x52, 0x0f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x41, 0x6e, + 0x73, 0x12, 0x52, 0x0a, 0x0f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, + 0x5f, 0x72, 0x65, 0x71, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, 0x72, 0x65, + 0x71, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, 0x72, + 0x65, 0x71, 0x52, 0x65, 0x71, 0x12, 0x52, 0x0a, 0x0f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, + 0x66, 0x72, 0x65, 0x71, 0x5f, 0x61, 0x6e, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, + 0x6e, 0x46, 0x72, 0x65, 0x71, 0x41, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x46, 0x72, 0x65, 0x71, 0x41, 0x6e, 0x73, 0x12, 0x52, 0x0a, 0x0f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x18, 0x1f, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x0d, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x64, 0x12, 0x55, 0x0a, + 0x10, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x48, 0x00, 0x52, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x1a, 0x52, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x64, + 0x12, 0x46, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x69, 0x6e, 0x6f, 0x72, 0x42, 0x0a, + 0xfa, 0x42, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x18, 0x01, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x6f, + 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x53, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x46, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x69, + 0x6e, 0x6f, 0x72, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x18, 0x01, 0x52, + 0x0c, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x5f, 0x0a, + 0x0c, 0x4c, 0x69, 0x6e, 0x6b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6e, 0x73, 0x12, 0x20, 0x0a, + 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x2a, 0x03, 0x18, 0xfe, 0x01, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, + 0x2d, 0x0a, 0x0d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xff, 0x01, + 0x52, 0x0c, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x9e, + 0x02, 0x0a, 0x0a, 0x4c, 0x69, 0x6e, 0x6b, 0x41, 0x44, 0x52, 0x52, 0x65, 0x71, 0x12, 0x4f, 0x0a, + 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x10, 0x6d, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x12, 0x56, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, - 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0x58, 0x0a, 0x0d, 0x4e, 0x65, 0x77, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x41, 0x63, 0x6b, 0x12, - 0x22, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x6b, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, - 0x41, 0x63, 0x6b, 0x1a, 0x66, 0x0a, 0x0c, 0x44, 0x4c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x52, 0x65, 0x71, 0x12, 0x2d, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, - 0x03, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x12, 0x27, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x32, 0x04, 0x28, 0xa0, 0x8d, 0x06, - 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0x5f, 0x0a, 0x0c, 0x44, - 0x4c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x61, 0x63, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x41, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, - 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x41, 0x63, 0x6b, 0x1a, 0x4b, 0x0a, 0x10, - 0x52, 0x78, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, - 0x12, 0x37, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x1a, 0xb9, 0x01, 0x0a, 0x0f, 0x54, 0x78, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x4a, 0x0a, - 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x69, 0x72, 0x70, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x49, 0x52, - 0x50, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6d, 0x61, 0x78, - 0x45, 0x69, 0x72, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2a, 0x0a, 0x11, 0x75, 0x70, 0x6c, - 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x77, 0x65, 0x6c, - 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, - 0x6b, 0x5f, 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x77, 0x65, 0x6c, - 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x50, 0x0a, 0x08, 0x52, 0x65, 0x6b, 0x65, 0x79, 0x49, 0x6e, - 0x64, 0x12, 0x44, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x69, 0x6e, 0x6f, 0x72, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x6f, 0x72, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x51, 0x0a, 0x09, 0x52, 0x65, 0x6b, 0x65, 0x79, - 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x44, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x69, 0x6e, - 0x6f, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6d, 0x69, - 0x6e, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0xda, 0x01, 0x0a, 0x10, 0x41, - 0x44, 0x52, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, - 0x62, 0x0a, 0x16, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x13, - 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, - 0x65, 0x6e, 0x74, 0x12, 0x62, 0x0a, 0x16, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x64, - 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, - 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x13, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x45, - 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x1a, 0x49, 0x0a, 0x0d, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x41, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x04, 0x74, 0x69, - 0x6d, 0x65, 0x1a, 0xb2, 0x02, 0x0a, 0x0e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x6a, 0x6f, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x4c, 0x0a, 0x0b, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, 0x6f, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x4f, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, - 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x12, 0x28, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, - 0x18, 0x07, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x57, - 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x50, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, - 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x1a, 0xcc, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x6a, 0x6f, - 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, - 0x5b, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x78, 0x70, - 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, - 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x11, - 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x54, - 0x69, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x78, - 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x1a, 0x48, 0x0a, 0x13, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x6e, 0x73, 0x12, 0x31, 0x0a, - 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, - 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x6d, 0x61, - 0x78, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x6b, - 0x1a, 0x53, 0x0a, 0x0f, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x71, 0x12, 0x40, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x01, 0x20, + 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2d, + 0x0a, 0x0e, 0x74, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0f, 0x52, + 0x0c, 0x74, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2b, 0x0a, + 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x08, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x10, 0x52, 0x0b, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x39, 0x0a, 0x14, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, + 0x07, 0x52, 0x12, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x73, 0x6b, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x22, 0x0a, 0x08, 0x6e, 0x62, 0x5f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0f, + 0x52, 0x07, 0x6e, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x1a, + 0x92, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x6e, 0x6b, 0x41, 0x44, 0x52, 0x41, 0x6e, 0x73, 0x12, 0x28, + 0x0a, 0x10, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x5f, 0x61, + 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x4d, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x6b, 0x12, 0x2d, 0x0a, 0x13, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x61, 0x63, 0x6b, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x41, 0x63, 0x6b, 0x12, 0x2b, 0x0a, 0x12, 0x74, 0x78, 0x5f, 0x70, 0x6f, + 0x77, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0f, 0x74, 0x78, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x41, 0x63, 0x6b, 0x1a, 0x63, 0x0a, 0x0c, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x12, 0x53, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, 0x74, 0x79, + 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, + 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6d, 0x61, 0x78, + 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x1a, 0xf4, 0x01, 0x0a, 0x0f, 0x52, 0x78, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x56, 0x0a, + 0x13, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x10, 0x72, 0x78, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x59, 0x0a, 0x14, 0x72, 0x78, 0x31, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x1a, 0x90, 0x01, 0x0a, 0x12, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, - 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x29, 0x0a, 0x09, - 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x0b, 0xfa, 0x42, 0x08, 0x32, 0x06, 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x09, 0x66, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x4f, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, - 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0x68, 0x0a, 0x12, 0x50, 0x69, 0x6e, 0x67, - 0x53, 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x23, - 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x61, 0x63, 0x6b, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, - 0x41, 0x63, 0x6b, 0x12, 0x2d, 0x0a, 0x13, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, - 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x10, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x41, - 0x63, 0x6b, 0x1a, 0x61, 0x0a, 0x0f, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x69, - 0x6e, 0x67, 0x41, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x2a, 0x04, 0x18, 0xff, 0xff, 0x03, 0x52, - 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x2d, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0x3a, 0x0a, 0x0d, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, - 0x72, 0x65, 0x71, 0x52, 0x65, 0x71, 0x12, 0x29, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, 0x06, - 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x79, 0x1a, 0x34, 0x0a, 0x0d, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, 0x72, 0x65, 0x71, 0x41, - 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, - 0x61, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x79, 0x41, 0x63, 0x6b, 0x1a, 0x46, 0x0a, 0x0d, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x64, 0x12, 0x35, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x1a, - 0x47, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x12, 0x35, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x22, 0x45, 0x0a, 0x0b, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x22, 0x43, 0x0a, 0x0e, 0x46, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x09, 0xfa, 0x42, 0x06, - 0x32, 0x04, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, - 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, - 0x4d, 0x0a, 0x16, 0x5a, 0x65, 0x72, 0x6f, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, 0x06, 0x18, - 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, - 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x67, - 0x0a, 0x13, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, - 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x65, 0x0a, 0x12, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3d, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, - 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x67, - 0x0a, 0x13, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, - 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x71, 0x0a, 0x18, 0x41, 0x67, 0x67, 0x72, 0x65, - 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, - 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, - 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x59, 0x0a, 0x0c, 0x52, 0x78, - 0x44, 0x65, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, - 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, - 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x71, 0x0a, 0x18, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x72, + 0x78, 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x12, 0x2e, 0x0a, 0x0d, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x32, 0x04, 0x28, 0xa0, + 0x8d, 0x06, 0x52, 0x0c, 0x72, 0x78, 0x32, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x1a, 0xab, 0x01, 0x0a, 0x0f, 0x52, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, + 0x70, 0x41, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x17, 0x72, 0x78, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x61, 0x63, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x72, 0x78, 0x32, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x41, 0x63, 0x6b, 0x12, 0x36, 0x0a, 0x18, 0x72, 0x78, + 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x72, 0x78, + 0x31, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x41, + 0x63, 0x6b, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x78, 0x32, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x72, + 0x78, 0x32, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x41, 0x63, 0x6b, 0x1a, 0x5e, + 0x0a, 0x0c, 0x44, 0x65, 0x76, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x41, 0x6e, 0x73, 0x12, 0x22, + 0x0a, 0x07, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x07, 0x62, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x79, 0x12, 0x2a, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x42, 0x12, 0xfa, 0x42, 0x0f, 0x1a, 0x0d, 0x18, 0x1f, 0x28, 0xe0, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x1a, 0x99, + 0x02, 0x0a, 0x0d, 0x4e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, + 0x12, 0x2d, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xff, + 0x01, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, + 0x29, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, 0x06, 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, + 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x56, 0x0a, 0x13, 0x6d, 0x69, + 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x12, 0x56, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0x58, 0x0a, 0x0d, 0x4e, 0x65, + 0x77, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x66, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x41, 0x63, 0x6b, + 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x63, + 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, + 0x65, 0x41, 0x63, 0x6b, 0x1a, 0x66, 0x0a, 0x0c, 0x44, 0x4c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x52, 0x65, 0x71, 0x12, 0x2d, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x27, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x32, 0x04, 0x28, 0xa0, 0x8d, + 0x06, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0x5f, 0x0a, 0x0c, + 0x44, 0x4c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, + 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x61, 0x63, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x41, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x41, 0x63, 0x6b, 0x1a, 0x4b, 0x0a, + 0x10, 0x52, 0x78, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, + 0x71, 0x12, 0x37, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x1a, 0xb9, 0x01, 0x0a, 0x0f, 0x54, + 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x4a, + 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x69, 0x72, 0x70, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x49, + 0x52, 0x50, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6d, 0x61, + 0x78, 0x45, 0x69, 0x72, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2a, 0x0a, 0x11, 0x75, 0x70, + 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x77, 0x65, + 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x5f, 0x64, 0x77, 0x65, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x44, 0x77, 0x65, + 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x50, 0x0a, 0x08, 0x52, 0x65, 0x6b, 0x65, 0x79, 0x49, + 0x6e, 0x64, 0x12, 0x44, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x69, 0x6e, 0x6f, 0x72, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x6f, + 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x51, 0x0a, 0x09, 0x52, 0x65, 0x6b, 0x65, + 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x44, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x69, + 0x6e, 0x6f, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6d, + 0x69, 0x6e, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0xda, 0x01, 0x0a, 0x10, + 0x41, 0x44, 0x52, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x12, 0x62, 0x0a, 0x16, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x13, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, + 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x62, 0x0a, 0x16, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, + 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, + 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x13, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, + 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x1a, 0x49, 0x0a, 0x0d, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x41, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x04, 0x74, + 0x69, 0x6d, 0x65, 0x1a, 0xb2, 0x02, 0x0a, 0x0e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x6a, + 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x4c, 0x0a, 0x0b, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, + 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x4f, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, + 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x28, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, + 0x02, 0x18, 0x07, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, + 0x57, 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x1a, 0xcc, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x6a, + 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x12, 0x5b, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x78, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, + 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, + 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x58, 0x0a, + 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x54, 0x69, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x45, + 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x1a, 0x48, 0x0a, 0x13, 0x52, 0x65, 0x6a, 0x6f, 0x69, + 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x6e, 0x73, 0x12, 0x31, + 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x6d, + 0x61, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x41, 0x63, + 0x6b, 0x1a, 0x53, 0x0a, 0x0f, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x71, 0x12, 0x40, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, + 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x1a, 0x90, 0x01, 0x0a, 0x12, 0x50, 0x69, 0x6e, 0x67, 0x53, + 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x29, 0x0a, + 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, 0x06, 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x09, 0x66, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x4f, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, + 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0x68, 0x0a, 0x12, 0x50, 0x69, 0x6e, + 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x6e, 0x73, 0x12, + 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x61, 0x63, 0x6b, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x41, 0x63, 0x6b, 0x12, 0x2d, 0x0a, 0x13, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, + 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x10, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x41, 0x63, 0x6b, 0x1a, 0x61, 0x0a, 0x0f, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x54, 0x69, 0x6d, + 0x69, 0x6e, 0x67, 0x41, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x2a, 0x04, 0x18, 0xff, 0xff, 0x03, + 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x2d, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0x3a, 0x0a, 0x0d, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x46, 0x72, 0x65, 0x71, 0x52, 0x65, 0x71, 0x12, 0x29, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, + 0x06, 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x1a, 0x34, 0x0a, 0x0d, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x46, 0x72, 0x65, 0x71, + 0x41, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x41, 0x63, 0x6b, 0x1a, 0x46, 0x0a, 0x0d, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x64, 0x12, 0x35, 0x0a, 0x05, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x1a, 0x47, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x12, 0x35, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x45, 0x0a, 0x0b, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x22, 0x43, 0x0a, 0x0e, 0x46, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x09, 0xfa, 0x42, + 0x06, 0x32, 0x04, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, + 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, + 0x22, 0x4d, 0x0a, 0x16, 0x5a, 0x65, 0x72, 0x6f, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x32, 0x06, + 0x18, 0x00, 0x28, 0xa0, 0x8d, 0x06, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, + 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, + 0x67, 0x0a, 0x13, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, + 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x65, 0x0a, 0x12, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3d, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, + 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, + 0x67, 0x0a, 0x13, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, + 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, + 0x65, 0x72, 0x69, 0x6f, 0x64, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, - 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x71, 0x0a, 0x18, 0x41, 0x44, 0x52, 0x41, - 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x56, + 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x71, 0x0a, 0x18, 0x41, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, - 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, + 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, 0x08, - 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x5f, 0x0a, 0x0f, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x49, 0x52, 0x50, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3a, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x49, 0x52, 0x50, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, + 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x59, 0x0a, 0x0c, 0x52, + 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x44, 0x65, + 0x6c, 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, + 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x71, 0x0a, 0x18, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, 0x08, 0x01, 0x10, + 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x71, 0x0a, 0x18, 0x41, 0x44, 0x52, + 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, + 0x79, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, 0x06, - 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x2a, 0xa7, 0x01, 0x0a, - 0x05, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x52, - 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4a, 0x4f, 0x49, 0x4e, - 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x43, - 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x45, 0x44, 0x5f, 0x55, 0x50, 0x10, 0x02, 0x12, 0x14, 0x0a, - 0x10, 0x55, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x45, 0x44, 0x5f, 0x44, 0x4f, 0x57, - 0x4e, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x45, 0x44, - 0x5f, 0x55, 0x50, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, - 0x45, 0x44, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, - 0x4f, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x06, 0x12, 0x0f, 0x0a, - 0x0b, 0x50, 0x52, 0x4f, 0x50, 0x52, 0x49, 0x45, 0x54, 0x41, 0x52, 0x59, 0x10, 0x07, 0x1a, 0x06, - 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x2a, 0x28, 0x0a, 0x05, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x12, - 0x0e, 0x0a, 0x0a, 0x4c, 0x4f, 0x52, 0x41, 0x57, 0x41, 0x4e, 0x5f, 0x52, 0x31, 0x10, 0x00, 0x1a, - 0x0f, 0xea, 0xaa, 0x19, 0x0b, 0x18, 0x01, 0x2a, 0x07, 0x4c, 0x4f, 0x52, 0x41, 0x57, 0x41, 0x4e, - 0x2a, 0xb9, 0x02, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x1e, 0x0a, 0x0b, 0x4d, 0x41, 0x43, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x12, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, - 0x1e, 0x0a, 0x08, 0x4d, 0x41, 0x43, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x10, 0x01, 0x1a, 0x10, 0xea, - 0xaa, 0x19, 0x0c, 0x12, 0x03, 0x31, 0x2e, 0x30, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x30, 0x12, - 0x1b, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x31, 0x10, 0x02, 0x1a, - 0x0b, 0xea, 0xaa, 0x19, 0x07, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x31, 0x12, 0x1b, 0x0a, 0x0a, - 0x4d, 0x41, 0x43, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x10, 0x03, 0x1a, 0x0b, 0xea, 0xaa, - 0x19, 0x07, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x32, 0x12, 0x1e, 0x0a, 0x08, 0x4d, 0x41, 0x43, - 0x5f, 0x56, 0x31, 0x5f, 0x31, 0x10, 0x04, 0x1a, 0x10, 0xea, 0xaa, 0x19, 0x0c, 0x12, 0x03, 0x31, - 0x2e, 0x31, 0x12, 0x05, 0x31, 0x2e, 0x31, 0x2e, 0x30, 0x12, 0x1b, 0x0a, 0x0a, 0x4d, 0x41, 0x43, - 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x33, 0x10, 0x05, 0x1a, 0x0b, 0xea, 0xaa, 0x19, 0x07, 0x12, - 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x33, 0x12, 0x1b, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x5f, 0x56, 0x31, - 0x5f, 0x30, 0x5f, 0x34, 0x10, 0x06, 0x1a, 0x0b, 0xea, 0xaa, 0x19, 0x07, 0x12, 0x05, 0x31, 0x2e, - 0x30, 0x2e, 0x34, 0x1a, 0x57, 0xea, 0xaa, 0x19, 0x07, 0x18, 0x01, 0x2a, 0x03, 0x4d, 0x41, 0x43, - 0xf2, 0xaa, 0x19, 0x48, 0x0a, 0x46, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x5f, 0x0a, 0x0f, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x49, 0x52, 0x50, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x49, 0x52, 0x50, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x10, 0xf2, 0xaa, 0x19, + 0x06, 0x08, 0x01, 0x10, 0x01, 0x18, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x2a, 0xa7, 0x01, + 0x0a, 0x05, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, + 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4a, 0x4f, 0x49, + 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, + 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x45, 0x44, 0x5f, 0x55, 0x50, 0x10, 0x02, 0x12, 0x14, + 0x0a, 0x10, 0x55, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x45, 0x44, 0x5f, 0x44, 0x4f, + 0x57, 0x4e, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x45, + 0x44, 0x5f, 0x55, 0x50, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, + 0x4d, 0x45, 0x44, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x06, 0x12, 0x0f, + 0x0a, 0x0b, 0x50, 0x52, 0x4f, 0x50, 0x52, 0x49, 0x45, 0x54, 0x41, 0x52, 0x59, 0x10, 0x07, 0x1a, + 0x06, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x2a, 0x28, 0x0a, 0x05, 0x4d, 0x61, 0x6a, 0x6f, 0x72, + 0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x4f, 0x52, 0x41, 0x57, 0x41, 0x4e, 0x5f, 0x52, 0x31, 0x10, 0x00, + 0x1a, 0x0f, 0xea, 0xaa, 0x19, 0x0b, 0x18, 0x01, 0x2a, 0x07, 0x4c, 0x4f, 0x52, 0x41, 0x57, 0x41, + 0x4e, 0x2a, 0xb9, 0x02, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x1e, 0x0a, 0x0b, 0x4d, 0x41, 0x43, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x12, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, + 0x12, 0x1e, 0x0a, 0x08, 0x4d, 0x41, 0x43, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x10, 0x01, 0x1a, 0x10, + 0xea, 0xaa, 0x19, 0x0c, 0x12, 0x03, 0x31, 0x2e, 0x30, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x30, + 0x12, 0x1b, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x31, 0x10, 0x02, + 0x1a, 0x0b, 0xea, 0xaa, 0x19, 0x07, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x31, 0x12, 0x1b, 0x0a, + 0x0a, 0x4d, 0x41, 0x43, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x10, 0x03, 0x1a, 0x0b, 0xea, + 0xaa, 0x19, 0x07, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x32, 0x12, 0x1e, 0x0a, 0x08, 0x4d, 0x41, + 0x43, 0x5f, 0x56, 0x31, 0x5f, 0x31, 0x10, 0x04, 0x1a, 0x10, 0xea, 0xaa, 0x19, 0x0c, 0x12, 0x03, + 0x31, 0x2e, 0x31, 0x12, 0x05, 0x31, 0x2e, 0x31, 0x2e, 0x30, 0x12, 0x1b, 0x0a, 0x0a, 0x4d, 0x41, + 0x43, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x33, 0x10, 0x05, 0x1a, 0x0b, 0xea, 0xaa, 0x19, 0x07, + 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x33, 0x12, 0x1b, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x5f, 0x56, + 0x31, 0x5f, 0x30, 0x5f, 0x34, 0x10, 0x06, 0x1a, 0x0b, 0xea, 0xaa, 0x19, 0x07, 0x12, 0x05, 0x31, + 0x2e, 0x30, 0x2e, 0x34, 0x1a, 0x57, 0xea, 0xaa, 0x19, 0x07, 0x18, 0x01, 0x2a, 0x03, 0x4d, 0x41, + 0x43, 0xf2, 0xaa, 0x19, 0x48, 0x0a, 0x46, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x2e, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0xb9, 0x05, + 0x0a, 0x0a, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0b, + 0x50, 0x48, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x1a, 0x0d, 0xea, + 0xaa, 0x19, 0x09, 0x12, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x24, 0x0a, 0x08, + 0x50, 0x48, 0x59, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x10, 0x01, 0x1a, 0x16, 0xea, 0xaa, 0x19, 0x12, + 0x12, 0x03, 0x31, 0x2e, 0x30, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x30, 0x12, 0x04, 0x56, 0x31, + 0x5f, 0x30, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x53, 0x30, 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x30, + 0x10, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x50, 0x48, 0x59, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x31, + 0x10, 0x02, 0x1a, 0x13, 0xea, 0xaa, 0x19, 0x0f, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x31, 0x12, + 0x06, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x31, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x53, 0x30, 0x30, 0x31, + 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x31, 0x10, 0x02, 0x12, 0x40, 0x0a, 0x10, 0x50, 0x48, 0x59, + 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x41, 0x10, 0x03, 0x1a, + 0x2a, 0xea, 0xaa, 0x19, 0x26, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x32, 0x12, 0x07, 0x31, 0x2e, + 0x30, 0x2e, 0x32, 0x2d, 0x61, 0x12, 0x06, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x12, 0x0c, 0x56, + 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x41, 0x12, 0x10, 0x0a, 0x0c, 0x52, + 0x50, 0x30, 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x10, 0x03, 0x12, 0x31, 0x0a, + 0x10, 0x50, 0x48, 0x59, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x5f, 0x52, 0x45, 0x56, 0x5f, + 0x42, 0x10, 0x04, 0x1a, 0x1b, 0xea, 0xaa, 0x19, 0x17, 0x12, 0x07, 0x31, 0x2e, 0x30, 0x2e, 0x32, + 0x2d, 0x62, 0x12, 0x0c, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x42, + 0x12, 0x16, 0x0a, 0x12, 0x52, 0x50, 0x30, 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, + 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x42, 0x10, 0x04, 0x12, 0x34, 0x0a, 0x0e, 0x50, 0x48, 0x59, 0x5f, + 0x56, 0x31, 0x5f, 0x31, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x41, 0x10, 0x05, 0x1a, 0x20, 0xea, 0xaa, + 0x19, 0x1c, 0x12, 0x05, 0x31, 0x2e, 0x31, 0x2d, 0x61, 0x12, 0x07, 0x31, 0x2e, 0x31, 0x2e, 0x30, + 0x2d, 0x61, 0x12, 0x0a, 0x56, 0x31, 0x5f, 0x31, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x41, 0x12, 0x14, + 0x0a, 0x10, 0x52, 0x50, 0x30, 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x31, 0x5f, 0x52, 0x45, 0x56, + 0x5f, 0x41, 0x10, 0x05, 0x12, 0x34, 0x0a, 0x0e, 0x50, 0x48, 0x59, 0x5f, 0x56, 0x31, 0x5f, 0x31, + 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x42, 0x10, 0x06, 0x1a, 0x20, 0xea, 0xaa, 0x19, 0x1c, 0x12, 0x05, + 0x31, 0x2e, 0x31, 0x2d, 0x62, 0x12, 0x07, 0x31, 0x2e, 0x31, 0x2e, 0x30, 0x2d, 0x62, 0x12, 0x0a, + 0x56, 0x31, 0x5f, 0x31, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x42, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x50, + 0x30, 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x31, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x42, 0x10, 0x06, + 0x12, 0x31, 0x0a, 0x10, 0x50, 0x48, 0x59, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x33, 0x5f, 0x52, + 0x45, 0x56, 0x5f, 0x41, 0x10, 0x07, 0x1a, 0x1b, 0xea, 0xaa, 0x19, 0x17, 0x12, 0x07, 0x31, 0x2e, + 0x30, 0x2e, 0x33, 0x2d, 0x61, 0x12, 0x0c, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x33, 0x5f, 0x52, 0x45, + 0x56, 0x5f, 0x41, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x50, 0x30, 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, + 0x30, 0x5f, 0x33, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x41, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x52, + 0x50, 0x30, 0x30, 0x32, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x30, 0x10, 0x08, 0x12, 0x10, 0x0a, + 0x0c, 0x52, 0x50, 0x30, 0x30, 0x32, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x31, 0x10, 0x09, 0x12, + 0x10, 0x0a, 0x0c, 0x52, 0x50, 0x30, 0x30, 0x32, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x10, + 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x50, 0x30, 0x30, 0x32, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, + 0x33, 0x10, 0x0b, 0x1a, 0x54, 0x10, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0xf2, 0xaa, 0x19, + 0x48, 0x0a, 0x46, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, + 0x70, 0x62, 0x2e, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0x87, 0x03, 0x0a, 0x0d, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x0f, 0x0a, 0x0b, 0x44, + 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x0f, 0x0a, + 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x0f, + 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x33, 0x10, 0x03, 0x12, + 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x34, 0x10, 0x04, + 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x35, 0x10, + 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x36, + 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, + 0x37, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, + 0x5f, 0x38, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, + 0x45, 0x5f, 0x39, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, + 0x54, 0x45, 0x5f, 0x31, 0x30, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, + 0x52, 0x41, 0x54, 0x45, 0x5f, 0x31, 0x31, 0x10, 0x0b, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, + 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x31, 0x32, 0x10, 0x0c, 0x12, 0x10, 0x0a, 0x0c, 0x44, + 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x31, 0x33, 0x10, 0x0d, 0x12, 0x10, 0x0a, + 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x31, 0x34, 0x10, 0x0e, 0x12, + 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x31, 0x35, 0x10, + 0x0f, 0x1a, 0x60, 0xea, 0xaa, 0x19, 0x0d, 0x10, 0x01, 0x2a, 0x09, 0x44, 0x41, 0x54, 0x41, 0x5f, + 0x52, 0x41, 0x54, 0x45, 0xf2, 0xaa, 0x19, 0x4b, 0x0a, 0x49, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x2a, 0xba, 0x02, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, + 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, + 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x16, + 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, + 0x45, 0x54, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, + 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x16, + 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, + 0x45, 0x54, 0x5f, 0x33, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, + 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x34, 0x10, 0x04, 0x12, 0x16, + 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, + 0x45, 0x54, 0x5f, 0x35, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, + 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x36, 0x10, 0x06, 0x12, 0x16, + 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, + 0x45, 0x54, 0x5f, 0x37, 0x10, 0x07, 0x1a, 0x68, 0xea, 0xaa, 0x19, 0x14, 0x10, 0x01, 0x2a, 0x10, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, + 0xf2, 0xaa, 0x19, 0x4c, 0x0a, 0x4a, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x74, 0x74, 0x6e, 0x70, 0x62, 0x2e, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0xb9, 0x05, 0x0a, - 0x0a, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0b, 0x50, - 0x48, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x1a, 0x0d, 0xea, 0xaa, - 0x19, 0x09, 0x12, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x24, 0x0a, 0x08, 0x50, - 0x48, 0x59, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x10, 0x01, 0x1a, 0x16, 0xea, 0xaa, 0x19, 0x12, 0x12, - 0x03, 0x31, 0x2e, 0x30, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x30, 0x12, 0x04, 0x56, 0x31, 0x5f, - 0x30, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x53, 0x30, 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x10, - 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x50, 0x48, 0x59, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x31, 0x10, - 0x02, 0x1a, 0x13, 0xea, 0xaa, 0x19, 0x0f, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x31, 0x12, 0x06, - 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x31, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x53, 0x30, 0x30, 0x31, 0x5f, - 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x31, 0x10, 0x02, 0x12, 0x40, 0x0a, 0x10, 0x50, 0x48, 0x59, 0x5f, - 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x41, 0x10, 0x03, 0x1a, 0x2a, - 0xea, 0xaa, 0x19, 0x26, 0x12, 0x05, 0x31, 0x2e, 0x30, 0x2e, 0x32, 0x12, 0x07, 0x31, 0x2e, 0x30, - 0x2e, 0x32, 0x2d, 0x61, 0x12, 0x06, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x12, 0x0c, 0x56, 0x31, - 0x5f, 0x30, 0x5f, 0x32, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x41, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x50, - 0x30, 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x10, 0x03, 0x12, 0x31, 0x0a, 0x10, - 0x50, 0x48, 0x59, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x42, - 0x10, 0x04, 0x1a, 0x1b, 0xea, 0xaa, 0x19, 0x17, 0x12, 0x07, 0x31, 0x2e, 0x30, 0x2e, 0x32, 0x2d, - 0x62, 0x12, 0x0c, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x42, 0x12, - 0x16, 0x0a, 0x12, 0x52, 0x50, 0x30, 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x5f, - 0x52, 0x45, 0x56, 0x5f, 0x42, 0x10, 0x04, 0x12, 0x34, 0x0a, 0x0e, 0x50, 0x48, 0x59, 0x5f, 0x56, - 0x31, 0x5f, 0x31, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x41, 0x10, 0x05, 0x1a, 0x20, 0xea, 0xaa, 0x19, - 0x1c, 0x12, 0x05, 0x31, 0x2e, 0x31, 0x2d, 0x61, 0x12, 0x07, 0x31, 0x2e, 0x31, 0x2e, 0x30, 0x2d, - 0x61, 0x12, 0x0a, 0x56, 0x31, 0x5f, 0x31, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x41, 0x12, 0x14, 0x0a, - 0x10, 0x52, 0x50, 0x30, 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x31, 0x5f, 0x52, 0x45, 0x56, 0x5f, - 0x41, 0x10, 0x05, 0x12, 0x34, 0x0a, 0x0e, 0x50, 0x48, 0x59, 0x5f, 0x56, 0x31, 0x5f, 0x31, 0x5f, - 0x52, 0x45, 0x56, 0x5f, 0x42, 0x10, 0x06, 0x1a, 0x20, 0xea, 0xaa, 0x19, 0x1c, 0x12, 0x05, 0x31, - 0x2e, 0x31, 0x2d, 0x62, 0x12, 0x07, 0x31, 0x2e, 0x31, 0x2e, 0x30, 0x2d, 0x62, 0x12, 0x0a, 0x56, - 0x31, 0x5f, 0x31, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x42, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x50, 0x30, - 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x31, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x42, 0x10, 0x06, 0x12, - 0x31, 0x0a, 0x10, 0x50, 0x48, 0x59, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x33, 0x5f, 0x52, 0x45, - 0x56, 0x5f, 0x41, 0x10, 0x07, 0x1a, 0x1b, 0xea, 0xaa, 0x19, 0x17, 0x12, 0x07, 0x31, 0x2e, 0x30, - 0x2e, 0x33, 0x2d, 0x61, 0x12, 0x0c, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x33, 0x5f, 0x52, 0x45, 0x56, - 0x5f, 0x41, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x50, 0x30, 0x30, 0x31, 0x5f, 0x56, 0x31, 0x5f, 0x30, - 0x5f, 0x33, 0x5f, 0x52, 0x45, 0x56, 0x5f, 0x41, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x50, - 0x30, 0x30, 0x32, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x30, 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, - 0x52, 0x50, 0x30, 0x30, 0x32, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x31, 0x10, 0x09, 0x12, 0x10, - 0x0a, 0x0c, 0x52, 0x50, 0x30, 0x30, 0x32, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x32, 0x10, 0x0a, - 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x50, 0x30, 0x30, 0x32, 0x5f, 0x56, 0x31, 0x5f, 0x30, 0x5f, 0x33, - 0x10, 0x0b, 0x1a, 0x54, 0x10, 0x01, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0xf2, 0xaa, 0x19, 0x48, - 0x0a, 0x46, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, - 0x62, 0x2e, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0x87, 0x03, 0x0a, 0x0d, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x41, - 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x44, - 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, - 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x0f, 0x0a, - 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x33, 0x10, 0x03, 0x12, 0x0f, - 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x34, 0x10, 0x04, 0x12, - 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x35, 0x10, 0x05, - 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x36, 0x10, - 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x37, - 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, - 0x38, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, - 0x5f, 0x39, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, - 0x45, 0x5f, 0x31, 0x30, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, - 0x41, 0x54, 0x45, 0x5f, 0x31, 0x31, 0x10, 0x0b, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, - 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x31, 0x32, 0x10, 0x0c, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, - 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x31, 0x33, 0x10, 0x0d, 0x12, 0x10, 0x0a, 0x0c, - 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x31, 0x34, 0x10, 0x0e, 0x12, 0x10, - 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x31, 0x35, 0x10, 0x0f, - 0x1a, 0x60, 0xea, 0xaa, 0x19, 0x0d, 0x10, 0x01, 0x2a, 0x09, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, - 0x41, 0x54, 0x45, 0xf2, 0xaa, 0x19, 0x4b, 0x0a, 0x49, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, - 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x2a, 0xba, 0x02, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, - 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x16, 0x0a, - 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, - 0x54, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, - 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x16, 0x0a, - 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, - 0x54, 0x5f, 0x33, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, - 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x34, 0x10, 0x04, 0x12, 0x16, 0x0a, - 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, - 0x54, 0x5f, 0x35, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, - 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x36, 0x10, 0x06, 0x12, 0x16, 0x0a, - 0x12, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, - 0x54, 0x5f, 0x37, 0x10, 0x07, 0x1a, 0x68, 0xea, 0xaa, 0x19, 0x14, 0x10, 0x01, 0x2a, 0x10, 0x44, - 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0xf2, - 0xaa, 0x19, 0x4c, 0x0a, 0x4a, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, - 0x74, 0x6e, 0x70, 0x62, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, - 0x5d, 0x0a, 0x0f, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, - 0x54, 0x45, 0x58, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, - 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, - 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x04, 0x4a, - 0x4f, 0x49, 0x4e, 0x10, 0xff, 0x01, 0x1a, 0x06, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x2a, 0x3f, - 0x0a, 0x11, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x10, 0x00, - 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x08, 0x0a, - 0x04, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x02, 0x1a, 0x06, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x2a, - 0x38, 0x0a, 0x0a, 0x43, 0x46, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, - 0x0b, 0x46, 0x52, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x49, 0x45, 0x53, 0x10, 0x00, 0x12, 0x11, - 0x0a, 0x0d, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x53, 0x4b, 0x53, 0x10, - 0x01, 0x1a, 0x06, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x2a, 0x3d, 0x0a, 0x05, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x41, 0x10, 0x00, 0x12, - 0x0b, 0x0a, 0x07, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x42, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, - 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x43, 0x10, 0x02, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x18, - 0x01, 0x2a, 0x05, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x2a, 0x78, 0x0a, 0x12, 0x54, 0x78, 0x53, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0a, - 0x0a, 0x06, 0x4c, 0x4f, 0x57, 0x45, 0x53, 0x54, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, - 0x57, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x45, 0x4c, 0x4f, 0x57, 0x5f, 0x4e, 0x4f, 0x52, - 0x4d, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, - 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x42, 0x4f, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, - 0x4c, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, 0x05, 0x12, 0x0b, 0x0a, - 0x07, 0x48, 0x49, 0x47, 0x48, 0x45, 0x53, 0x54, 0x10, 0x06, 0x1a, 0x06, 0xea, 0xaa, 0x19, 0x02, - 0x18, 0x01, 0x2a, 0xe4, 0x03, 0x0a, 0x14, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x0d, 0x0a, 0x09, 0x43, - 0x49, 0x44, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x49, - 0x44, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x49, 0x44, - 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, 0x02, 0x12, 0x10, 0x0a, - 0x0c, 0x43, 0x49, 0x44, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x41, 0x44, 0x52, 0x10, 0x03, 0x12, - 0x12, 0x0a, 0x0e, 0x43, 0x49, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, - 0x45, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x49, 0x44, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, - 0x52, 0x41, 0x4d, 0x5f, 0x53, 0x45, 0x54, 0x55, 0x50, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x43, - 0x49, 0x44, 0x5f, 0x44, 0x45, 0x56, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x06, 0x12, - 0x13, 0x0a, 0x0f, 0x43, 0x49, 0x44, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, - 0x45, 0x4c, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x49, 0x44, 0x5f, 0x52, 0x58, 0x5f, 0x54, - 0x49, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x45, 0x54, 0x55, 0x50, 0x10, 0x08, 0x12, 0x16, 0x0a, - 0x12, 0x43, 0x49, 0x44, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x53, 0x45, - 0x54, 0x55, 0x50, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x49, 0x44, 0x5f, 0x44, 0x4c, 0x5f, - 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x49, 0x44, - 0x5f, 0x52, 0x45, 0x4b, 0x45, 0x59, 0x10, 0x0b, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x49, 0x44, 0x5f, - 0x41, 0x44, 0x52, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x53, 0x45, 0x54, 0x55, 0x50, 0x10, - 0x0c, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x49, 0x44, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, - 0x54, 0x49, 0x4d, 0x45, 0x10, 0x0d, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x49, 0x44, 0x5f, 0x46, 0x4f, - 0x52, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x0e, 0x12, 0x1a, 0x0a, 0x16, - 0x43, 0x49, 0x44, 0x5f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, - 0x5f, 0x53, 0x45, 0x54, 0x55, 0x50, 0x10, 0x0f, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x49, 0x44, 0x5f, - 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x4c, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x10, - 0x12, 0x19, 0x0a, 0x15, 0x43, 0x49, 0x44, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x4c, 0x4f, - 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x11, 0x12, 0x15, 0x0a, 0x11, 0x43, - 0x49, 0x44, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x49, 0x4e, 0x47, - 0x10, 0x12, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x49, 0x44, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, - 0x5f, 0x46, 0x52, 0x45, 0x51, 0x10, 0x13, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x49, 0x44, 0x5f, 0x44, - 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x20, 0x1a, 0x0b, 0xea, 0xaa, - 0x19, 0x07, 0x18, 0x01, 0x2a, 0x03, 0x43, 0x49, 0x44, 0x2a, 0xe6, 0x02, 0x0a, 0x13, 0x41, 0x67, - 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, 0x6c, - 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, - 0x31, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, - 0x45, 0x5f, 0x32, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, - 0x43, 0x4c, 0x45, 0x5f, 0x34, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x55, 0x54, 0x59, 0x5f, - 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x38, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x55, 0x54, - 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x31, 0x36, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, - 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x33, 0x32, 0x10, 0x05, 0x12, - 0x11, 0x0a, 0x0d, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x36, 0x34, - 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, - 0x5f, 0x31, 0x32, 0x38, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, - 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x32, 0x35, 0x36, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x55, - 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x35, 0x31, 0x32, 0x10, 0x09, 0x12, 0x13, - 0x0a, 0x0f, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x31, 0x30, 0x32, - 0x34, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, - 0x45, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x55, 0x54, 0x59, - 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x34, 0x30, 0x39, 0x36, 0x10, 0x0c, 0x12, 0x13, 0x0a, - 0x0f, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x38, 0x31, 0x39, 0x32, - 0x10, 0x0d, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, - 0x5f, 0x31, 0x36, 0x33, 0x38, 0x34, 0x10, 0x0e, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x55, 0x54, 0x59, - 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x33, 0x32, 0x37, 0x36, 0x38, 0x10, 0x0f, 0x1a, 0x12, - 0xea, 0xaa, 0x19, 0x0e, 0x18, 0x01, 0x2a, 0x0a, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, - 0x4c, 0x45, 0x2a, 0xc1, 0x01, 0x0a, 0x0e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x50, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x56, - 0x45, 0x52, 0x59, 0x5f, 0x31, 0x53, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x49, 0x4e, 0x47, - 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x32, 0x53, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x50, - 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x34, 0x53, 0x10, 0x02, 0x12, 0x11, - 0x0a, 0x0d, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x38, 0x53, 0x10, - 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, - 0x31, 0x36, 0x53, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x56, - 0x45, 0x52, 0x59, 0x5f, 0x33, 0x32, 0x53, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x49, 0x4e, - 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x36, 0x34, 0x53, 0x10, 0x06, 0x12, 0x13, 0x0a, - 0x0f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x31, 0x32, 0x38, 0x53, - 0x10, 0x07, 0x1a, 0x12, 0xea, 0xaa, 0x19, 0x0e, 0x18, 0x01, 0x2a, 0x0a, 0x50, 0x49, 0x4e, 0x47, - 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x2a, 0x9b, 0x03, 0x0a, 0x13, 0x52, 0x65, 0x6a, 0x6f, 0x69, - 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x13, - 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x31, - 0x36, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, - 0x55, 0x4e, 0x54, 0x5f, 0x33, 0x32, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, - 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x36, 0x34, 0x10, 0x02, 0x12, 0x14, 0x0a, - 0x10, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x31, 0x32, - 0x38, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, - 0x55, 0x4e, 0x54, 0x5f, 0x32, 0x35, 0x36, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x4a, - 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x35, 0x31, 0x32, 0x10, 0x05, 0x12, - 0x15, 0x0a, 0x11, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, - 0x31, 0x30, 0x32, 0x34, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, - 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x10, 0x07, 0x12, 0x15, 0x0a, - 0x11, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x34, 0x30, - 0x39, 0x36, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, - 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x38, 0x31, 0x39, 0x32, 0x10, 0x09, 0x12, 0x16, 0x0a, 0x12, 0x52, - 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x31, 0x36, 0x33, 0x38, - 0x34, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, - 0x55, 0x4e, 0x54, 0x5f, 0x33, 0x32, 0x37, 0x36, 0x38, 0x10, 0x0b, 0x12, 0x16, 0x0a, 0x12, 0x52, - 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x36, 0x35, 0x35, 0x33, - 0x36, 0x10, 0x0c, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, - 0x55, 0x4e, 0x54, 0x5f, 0x31, 0x33, 0x31, 0x30, 0x37, 0x32, 0x10, 0x0d, 0x12, 0x17, 0x0a, 0x13, - 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x32, 0x36, 0x32, - 0x31, 0x34, 0x34, 0x10, 0x0e, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, - 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x35, 0x32, 0x34, 0x32, 0x38, 0x38, 0x10, 0x0f, 0x1a, 0x14, - 0xea, 0xaa, 0x19, 0x10, 0x18, 0x01, 0x2a, 0x0c, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, - 0x4f, 0x55, 0x4e, 0x54, 0x2a, 0xdf, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x54, - 0x69, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x11, 0x0a, 0x0d, 0x52, - 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x11, - 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x10, - 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, - 0x5f, 0x32, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, - 0x49, 0x4d, 0x45, 0x5f, 0x33, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, - 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x34, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, - 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x35, 0x10, 0x05, 0x12, 0x11, 0x0a, - 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x36, 0x10, 0x06, - 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, - 0x37, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, - 0x4d, 0x45, 0x5f, 0x38, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, - 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x39, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, - 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x30, 0x10, 0x0a, 0x12, 0x12, 0x0a, - 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x31, 0x10, - 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, - 0x5f, 0x31, 0x32, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, - 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x33, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, - 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x34, 0x10, 0x0e, 0x12, 0x12, 0x0a, - 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x35, 0x10, - 0x0f, 0x1a, 0x13, 0xea, 0xaa, 0x19, 0x0f, 0x18, 0x01, 0x2a, 0x0b, 0x52, 0x45, 0x4a, 0x4f, 0x49, - 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x2a, 0xd5, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x6a, 0x6f, 0x69, - 0x6e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, + 0x74, 0x74, 0x6e, 0x70, 0x62, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, 0x4f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x2a, 0x5d, 0x0a, 0x0f, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, + 0x4e, 0x54, 0x45, 0x58, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, + 0x4e, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x52, + 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x04, + 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0xff, 0x01, 0x1a, 0x06, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x2a, + 0x3f, 0x0a, 0x11, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x10, + 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x08, + 0x0a, 0x04, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x02, 0x1a, 0x06, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, + 0x2a, 0x38, 0x0a, 0x0a, 0x43, 0x46, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, + 0x0a, 0x0b, 0x46, 0x52, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x49, 0x45, 0x53, 0x10, 0x00, 0x12, + 0x11, 0x0a, 0x0d, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x53, 0x4b, 0x53, + 0x10, 0x01, 0x1a, 0x06, 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x2a, 0x3d, 0x0a, 0x05, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x41, 0x10, 0x00, + 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x42, 0x10, 0x01, 0x12, 0x0b, 0x0a, + 0x07, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x43, 0x10, 0x02, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, + 0x18, 0x01, 0x2a, 0x05, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x2a, 0x78, 0x0a, 0x12, 0x54, 0x78, 0x53, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, + 0x0a, 0x0a, 0x06, 0x4c, 0x4f, 0x57, 0x45, 0x53, 0x54, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4c, + 0x4f, 0x57, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x45, 0x4c, 0x4f, 0x57, 0x5f, 0x4e, 0x4f, + 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, + 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x42, 0x4f, 0x56, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, + 0x41, 0x4c, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, 0x05, 0x12, 0x0b, + 0x0a, 0x07, 0x48, 0x49, 0x47, 0x48, 0x45, 0x53, 0x54, 0x10, 0x06, 0x1a, 0x06, 0xea, 0xaa, 0x19, + 0x02, 0x18, 0x01, 0x2a, 0xe4, 0x03, 0x0a, 0x14, 0x4d, 0x41, 0x43, 0x43, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x0d, 0x0a, 0x09, + 0x43, 0x49, 0x44, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, + 0x49, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x49, + 0x44, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, 0x02, 0x12, 0x10, + 0x0a, 0x0c, 0x43, 0x49, 0x44, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x41, 0x44, 0x52, 0x10, 0x03, + 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x49, 0x44, 0x5f, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, + 0x4c, 0x45, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x49, 0x44, 0x5f, 0x52, 0x58, 0x5f, 0x50, + 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x53, 0x45, 0x54, 0x55, 0x50, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, + 0x43, 0x49, 0x44, 0x5f, 0x44, 0x45, 0x56, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x06, + 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x49, 0x44, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x43, 0x48, 0x41, 0x4e, + 0x4e, 0x45, 0x4c, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x49, 0x44, 0x5f, 0x52, 0x58, 0x5f, + 0x54, 0x49, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x45, 0x54, 0x55, 0x50, 0x10, 0x08, 0x12, 0x16, + 0x0a, 0x12, 0x43, 0x49, 0x44, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x53, + 0x45, 0x54, 0x55, 0x50, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x49, 0x44, 0x5f, 0x44, 0x4c, + 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x49, + 0x44, 0x5f, 0x52, 0x45, 0x4b, 0x45, 0x59, 0x10, 0x0b, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x49, 0x44, + 0x5f, 0x41, 0x44, 0x52, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x53, 0x45, 0x54, 0x55, 0x50, + 0x10, 0x0c, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x49, 0x44, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, + 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x0d, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x49, 0x44, 0x5f, 0x46, + 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x0e, 0x12, 0x1a, 0x0a, + 0x16, 0x43, 0x49, 0x44, 0x5f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x52, 0x41, + 0x4d, 0x5f, 0x53, 0x45, 0x54, 0x55, 0x50, 0x10, 0x0f, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x49, 0x44, + 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x4c, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, + 0x10, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x49, 0x44, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x4c, + 0x4f, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x11, 0x12, 0x15, 0x0a, 0x11, + 0x43, 0x49, 0x44, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x49, 0x4e, + 0x47, 0x10, 0x12, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x49, 0x44, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, + 0x4e, 0x5f, 0x46, 0x52, 0x45, 0x51, 0x10, 0x13, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x49, 0x44, 0x5f, + 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x20, 0x1a, 0x0b, 0xea, + 0xaa, 0x19, 0x07, 0x18, 0x01, 0x2a, 0x03, 0x43, 0x49, 0x44, 0x2a, 0xe6, 0x02, 0x0a, 0x13, 0x41, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x44, 0x75, 0x74, 0x79, 0x43, 0x79, 0x63, + 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, + 0x5f, 0x31, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, + 0x4c, 0x45, 0x5f, 0x32, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, + 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x34, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x55, 0x54, 0x59, + 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x38, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x55, + 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x31, 0x36, 0x10, 0x04, 0x12, 0x11, 0x0a, + 0x0d, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x33, 0x32, 0x10, 0x05, + 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x36, + 0x34, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, + 0x45, 0x5f, 0x31, 0x32, 0x38, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x55, 0x54, 0x59, 0x5f, + 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x32, 0x35, 0x36, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x44, + 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x35, 0x31, 0x32, 0x10, 0x09, 0x12, + 0x13, 0x0a, 0x0f, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x31, 0x30, + 0x32, 0x34, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, + 0x4c, 0x45, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x55, 0x54, + 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x34, 0x30, 0x39, 0x36, 0x10, 0x0c, 0x12, 0x13, + 0x0a, 0x0f, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x38, 0x31, 0x39, + 0x32, 0x10, 0x0d, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, + 0x45, 0x5f, 0x31, 0x36, 0x33, 0x38, 0x34, 0x10, 0x0e, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x55, 0x54, + 0x59, 0x5f, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x33, 0x32, 0x37, 0x36, 0x38, 0x10, 0x0f, 0x1a, + 0x12, 0xea, 0xaa, 0x19, 0x0e, 0x18, 0x01, 0x2a, 0x0a, 0x44, 0x55, 0x54, 0x59, 0x5f, 0x43, 0x59, + 0x43, 0x4c, 0x45, 0x2a, 0xc1, 0x01, 0x0a, 0x0e, 0x50, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, + 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, + 0x56, 0x45, 0x52, 0x59, 0x5f, 0x31, 0x53, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x49, 0x4e, + 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x32, 0x53, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, + 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x34, 0x53, 0x10, 0x02, 0x12, + 0x11, 0x0a, 0x0d, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x38, 0x53, + 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, + 0x5f, 0x31, 0x36, 0x53, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, + 0x56, 0x45, 0x52, 0x59, 0x5f, 0x33, 0x32, 0x53, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x49, + 0x4e, 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x36, 0x34, 0x53, 0x10, 0x06, 0x12, 0x13, + 0x0a, 0x0f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x31, 0x32, 0x38, + 0x53, 0x10, 0x07, 0x1a, 0x12, 0xea, 0xaa, 0x19, 0x0e, 0x18, 0x01, 0x2a, 0x0a, 0x50, 0x49, 0x4e, + 0x47, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x2a, 0x9b, 0x03, 0x0a, 0x13, 0x52, 0x65, 0x6a, 0x6f, + 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, + 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, + 0x31, 0x36, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x33, 0x32, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, + 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x36, 0x34, 0x10, 0x02, 0x12, 0x14, + 0x0a, 0x10, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x31, + 0x32, 0x38, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x32, 0x35, 0x36, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x35, 0x31, 0x32, 0x10, 0x05, + 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, + 0x5f, 0x31, 0x30, 0x32, 0x34, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x4a, 0x4f, 0x49, + 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x10, 0x07, 0x12, 0x15, + 0x0a, 0x11, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x34, + 0x30, 0x39, 0x36, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x38, 0x31, 0x39, 0x32, 0x10, 0x09, 0x12, 0x16, 0x0a, 0x12, + 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x31, 0x36, 0x33, + 0x38, 0x34, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x33, 0x32, 0x37, 0x36, 0x38, 0x10, 0x0b, 0x12, 0x16, 0x0a, 0x12, + 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x36, 0x35, 0x35, + 0x33, 0x36, 0x10, 0x0c, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x31, 0x33, 0x31, 0x30, 0x37, 0x32, 0x10, 0x0d, 0x12, 0x17, 0x0a, + 0x13, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x32, 0x36, + 0x32, 0x31, 0x34, 0x34, 0x10, 0x0e, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, + 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x35, 0x32, 0x34, 0x32, 0x38, 0x38, 0x10, 0x0f, 0x1a, + 0x14, 0xea, 0xaa, 0x19, 0x10, 0x18, 0x01, 0x2a, 0x0c, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x2a, 0xdf, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x6a, 0x6f, 0x69, 0x6e, + 0x54, 0x69, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x11, 0x0a, 0x0d, + 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x30, 0x10, 0x00, 0x12, + 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, + 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, + 0x45, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, + 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x33, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, + 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x34, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x52, + 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x35, 0x10, 0x05, 0x12, 0x11, + 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x36, 0x10, + 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, + 0x5f, 0x37, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, + 0x49, 0x4d, 0x45, 0x5f, 0x38, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, + 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x39, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x30, 0x10, 0x0a, 0x12, 0x12, + 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x31, + 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, + 0x45, 0x5f, 0x31, 0x32, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, + 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x33, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x34, 0x10, 0x0e, 0x12, 0x12, + 0x0a, 0x0e, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x31, 0x35, + 0x10, 0x0f, 0x1a, 0x13, 0xea, 0xaa, 0x19, 0x0f, 0x18, 0x01, 0x2a, 0x0b, 0x52, 0x45, 0x4a, 0x4f, + 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x2a, 0xd5, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x6a, 0x6f, + 0x69, 0x6e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, + 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, + 0x44, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, + 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, - 0x5f, 0x30, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, - 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, - 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x13, + 0x5f, 0x33, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, + 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x34, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, + 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x35, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, - 0x33, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, - 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x34, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, - 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x35, 0x10, 0x05, 0x12, 0x13, 0x0a, - 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x36, - 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, - 0x49, 0x4f, 0x44, 0x5f, 0x37, 0x10, 0x07, 0x1a, 0x15, 0xea, 0xaa, 0x19, 0x11, 0x18, 0x01, 0x2a, - 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x2a, 0xe0, - 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x49, 0x52, 0x50, 0x12, 0x11, 0x0a, - 0x0d, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x38, 0x10, 0x00, - 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, - 0x31, 0x30, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, - 0x49, 0x52, 0x50, 0x5f, 0x31, 0x32, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, - 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x31, 0x33, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, - 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x31, 0x34, 0x10, 0x04, - 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, - 0x31, 0x36, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, - 0x49, 0x52, 0x50, 0x5f, 0x31, 0x38, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, - 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x32, 0x30, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, - 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x32, 0x31, 0x10, 0x08, - 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, - 0x32, 0x34, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, - 0x49, 0x52, 0x50, 0x5f, 0x32, 0x36, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, - 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x32, 0x37, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, - 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x32, 0x39, 0x10, 0x0c, - 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, - 0x33, 0x30, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, - 0x49, 0x52, 0x50, 0x5f, 0x33, 0x33, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, - 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x33, 0x36, 0x10, 0x0f, 0x1a, 0x13, 0xea, 0xaa, - 0x19, 0x0f, 0x18, 0x01, 0x2a, 0x0b, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, - 0x50, 0x2a, 0x99, 0x03, 0x0a, 0x13, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, - 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x31, 0x10, 0x00, 0x12, 0x13, - 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, - 0x32, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, - 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x34, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, - 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x38, 0x10, 0x03, 0x12, 0x14, 0x0a, - 0x10, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x31, - 0x36, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, - 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x33, 0x32, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, 0x52, - 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x36, 0x34, 0x10, 0x06, 0x12, - 0x15, 0x0a, 0x11, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, - 0x5f, 0x31, 0x32, 0x38, 0x10, 0x07, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, - 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x32, 0x35, 0x36, 0x10, 0x08, 0x12, 0x15, 0x0a, - 0x11, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x35, - 0x31, 0x32, 0x10, 0x09, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, - 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x31, 0x30, 0x32, 0x34, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, - 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x32, 0x30, - 0x34, 0x38, 0x10, 0x0b, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, - 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x34, 0x30, 0x39, 0x36, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, - 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x38, 0x31, - 0x39, 0x32, 0x10, 0x0d, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, - 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x31, 0x36, 0x33, 0x38, 0x34, 0x10, 0x0e, 0x12, 0x17, 0x0a, - 0x13, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x33, - 0x32, 0x37, 0x36, 0x38, 0x10, 0x0f, 0x1a, 0x15, 0xea, 0xaa, 0x19, 0x11, 0x18, 0x01, 0x2a, 0x0d, - 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x2a, 0x99, 0x03, - 0x0a, 0x13, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x45, 0x78, 0x70, - 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, - 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, - 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x32, 0x10, 0x01, 0x12, - 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, - 0x5f, 0x34, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, - 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x38, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, 0x52, - 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x36, 0x10, 0x04, 0x12, - 0x14, 0x0a, 0x10, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, - 0x5f, 0x33, 0x32, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, - 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x36, 0x34, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x41, - 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x32, 0x38, - 0x10, 0x07, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, - 0x4c, 0x41, 0x59, 0x5f, 0x32, 0x35, 0x36, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x44, 0x52, - 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x35, 0x31, 0x32, 0x10, 0x09, - 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, - 0x59, 0x5f, 0x31, 0x30, 0x32, 0x34, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, 0x5f, - 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x10, 0x0b, - 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, - 0x59, 0x5f, 0x34, 0x30, 0x39, 0x36, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, 0x5f, - 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x38, 0x31, 0x39, 0x32, 0x10, 0x0d, - 0x12, 0x17, 0x0a, 0x13, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, - 0x59, 0x5f, 0x31, 0x36, 0x33, 0x38, 0x34, 0x10, 0x0e, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x44, 0x52, - 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x33, 0x32, 0x37, 0x36, 0x38, - 0x10, 0x0f, 0x1a, 0x15, 0xea, 0xaa, 0x19, 0x11, 0x18, 0x01, 0x2a, 0x0d, 0x41, 0x44, 0x52, 0x5f, - 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x2a, 0xea, 0x02, 0x0a, 0x07, 0x52, 0x78, - 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, - 0x59, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, - 0x59, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, - 0x59, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, - 0x59, 0x5f, 0x33, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, - 0x59, 0x5f, 0x34, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, - 0x59, 0x5f, 0x35, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, - 0x59, 0x5f, 0x36, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, - 0x59, 0x5f, 0x37, 0x10, 0x07, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, - 0x59, 0x5f, 0x38, 0x10, 0x08, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, - 0x59, 0x5f, 0x39, 0x10, 0x09, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, - 0x59, 0x5f, 0x31, 0x30, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, - 0x41, 0x59, 0x5f, 0x31, 0x31, 0x10, 0x0b, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, 0x5f, 0x44, 0x45, - 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x32, 0x10, 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, 0x5f, 0x44, - 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x33, 0x10, 0x0d, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, 0x5f, - 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x34, 0x10, 0x0e, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, - 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x35, 0x10, 0x0f, 0x1a, 0x59, 0xea, 0xaa, 0x19, - 0x0c, 0x10, 0x01, 0x2a, 0x08, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0xf2, 0xaa, 0x19, - 0x45, 0x0a, 0x43, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, - 0x70, 0x62, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0xa8, 0x02, 0x0a, 0x05, 0x4d, 0x69, 0x6e, 0x6f, 0x72, - 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x30, 0x10, - 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x0f, - 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x32, 0x10, 0x02, 0x12, - 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x33, 0x10, 0x03, - 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x34, 0x10, - 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x35, - 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, - 0x36, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, - 0x5f, 0x37, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, - 0x55, 0x5f, 0x38, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, - 0x46, 0x55, 0x5f, 0x39, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, - 0x52, 0x46, 0x55, 0x5f, 0x31, 0x30, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x49, 0x4e, 0x4f, - 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x31, 0x31, 0x10, 0x0b, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x49, - 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x31, 0x32, 0x10, 0x0c, 0x12, 0x10, 0x0a, 0x0c, - 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x31, 0x33, 0x10, 0x0d, 0x12, 0x10, - 0x0a, 0x0c, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x31, 0x34, 0x10, 0x0e, - 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x31, 0x35, - 0x10, 0x0f, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x18, 0x01, 0x2a, 0x05, 0x4d, 0x49, 0x4e, 0x4f, - 0x52, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, - 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x36, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, + 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x37, 0x10, 0x07, 0x1a, 0x15, 0xea, 0xaa, 0x19, 0x11, 0x18, 0x01, + 0x2a, 0x0d, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x2a, + 0xe0, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x49, 0x52, 0x50, 0x12, 0x11, + 0x0a, 0x0d, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x38, 0x10, + 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, + 0x5f, 0x31, 0x30, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, + 0x45, 0x49, 0x52, 0x50, 0x5f, 0x31, 0x32, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, + 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x31, 0x33, 0x10, 0x03, 0x12, 0x12, 0x0a, + 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x31, 0x34, 0x10, + 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, + 0x5f, 0x31, 0x36, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, + 0x45, 0x49, 0x52, 0x50, 0x5f, 0x31, 0x38, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, + 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x32, 0x30, 0x10, 0x07, 0x12, 0x12, 0x0a, + 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x32, 0x31, 0x10, + 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, + 0x5f, 0x32, 0x34, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, + 0x45, 0x49, 0x52, 0x50, 0x5f, 0x32, 0x36, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, + 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x32, 0x37, 0x10, 0x0b, 0x12, 0x12, 0x0a, + 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x32, 0x39, 0x10, + 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, + 0x5f, 0x33, 0x30, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, + 0x45, 0x49, 0x52, 0x50, 0x5f, 0x33, 0x33, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x56, + 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, 0x52, 0x50, 0x5f, 0x33, 0x36, 0x10, 0x0f, 0x1a, 0x13, 0xea, + 0xaa, 0x19, 0x0f, 0x18, 0x01, 0x2a, 0x0b, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x49, + 0x52, 0x50, 0x2a, 0x99, 0x03, 0x0a, 0x13, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, + 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x31, 0x10, 0x00, 0x12, + 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, + 0x5f, 0x32, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, + 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x34, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, + 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x38, 0x10, 0x03, 0x12, 0x14, + 0x0a, 0x10, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, + 0x31, 0x36, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, + 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x33, 0x32, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, + 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x36, 0x34, 0x10, 0x06, + 0x12, 0x15, 0x0a, 0x11, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, + 0x54, 0x5f, 0x31, 0x32, 0x38, 0x10, 0x07, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x44, 0x52, 0x5f, 0x41, + 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x32, 0x35, 0x36, 0x10, 0x08, 0x12, 0x15, + 0x0a, 0x11, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, + 0x35, 0x31, 0x32, 0x10, 0x09, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, + 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x31, 0x30, 0x32, 0x34, 0x10, 0x0a, 0x12, 0x16, 0x0a, + 0x12, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x32, + 0x30, 0x34, 0x38, 0x10, 0x0b, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, + 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x34, 0x30, 0x39, 0x36, 0x10, 0x0c, 0x12, 0x16, 0x0a, + 0x12, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x38, + 0x31, 0x39, 0x32, 0x10, 0x0d, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, + 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x31, 0x36, 0x33, 0x38, 0x34, 0x10, 0x0e, 0x12, 0x17, + 0x0a, 0x13, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, + 0x33, 0x32, 0x37, 0x36, 0x38, 0x10, 0x0f, 0x1a, 0x15, 0xea, 0xaa, 0x19, 0x11, 0x18, 0x01, 0x2a, + 0x0d, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x2a, 0x99, + 0x03, 0x0a, 0x13, 0x41, 0x44, 0x52, 0x41, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x45, 0x78, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, + 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x41, + 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x32, 0x10, 0x01, + 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x34, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, + 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x38, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, + 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x36, 0x10, 0x04, + 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x5f, 0x33, 0x32, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, + 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x36, 0x34, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, + 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x32, + 0x38, 0x10, 0x07, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, + 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x32, 0x35, 0x36, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x44, + 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x35, 0x31, 0x32, 0x10, + 0x09, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, + 0x41, 0x59, 0x5f, 0x31, 0x30, 0x32, 0x34, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, + 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x10, + 0x0b, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, + 0x41, 0x59, 0x5f, 0x34, 0x30, 0x39, 0x36, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x52, + 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x38, 0x31, 0x39, 0x32, 0x10, + 0x0d, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x44, 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, + 0x41, 0x59, 0x5f, 0x31, 0x36, 0x33, 0x38, 0x34, 0x10, 0x0e, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x44, + 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x33, 0x32, 0x37, 0x36, + 0x38, 0x10, 0x0f, 0x1a, 0x15, 0xea, 0xaa, 0x19, 0x11, 0x18, 0x01, 0x2a, 0x0d, 0x41, 0x44, 0x52, + 0x5f, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x2a, 0xea, 0x02, 0x0a, 0x07, 0x52, + 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, + 0x41, 0x59, 0x5f, 0x30, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, + 0x41, 0x59, 0x5f, 0x31, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, + 0x41, 0x59, 0x5f, 0x32, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, + 0x41, 0x59, 0x5f, 0x33, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, + 0x41, 0x59, 0x5f, 0x34, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, + 0x41, 0x59, 0x5f, 0x35, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, + 0x41, 0x59, 0x5f, 0x36, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, + 0x41, 0x59, 0x5f, 0x37, 0x10, 0x07, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, + 0x41, 0x59, 0x5f, 0x38, 0x10, 0x08, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, + 0x41, 0x59, 0x5f, 0x39, 0x10, 0x09, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, + 0x41, 0x59, 0x5f, 0x31, 0x30, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, 0x5f, 0x44, 0x45, + 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x31, 0x10, 0x0b, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, 0x5f, 0x44, + 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x32, 0x10, 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, 0x5f, + 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x33, 0x10, 0x0d, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x58, + 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x34, 0x10, 0x0e, 0x12, 0x0f, 0x0a, 0x0b, 0x52, + 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x31, 0x35, 0x10, 0x0f, 0x1a, 0x59, 0xea, 0xaa, + 0x19, 0x0c, 0x10, 0x01, 0x2a, 0x08, 0x52, 0x58, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0xf2, 0xaa, + 0x19, 0x45, 0x0a, 0x43, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, + 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0xa8, 0x02, 0x0a, 0x05, 0x4d, 0x69, 0x6e, 0x6f, + 0x72, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x30, + 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x31, 0x10, 0x01, 0x12, + 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x32, 0x10, 0x02, + 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x33, 0x10, + 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x34, + 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, + 0x35, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, + 0x5f, 0x36, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, + 0x55, 0x5f, 0x37, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, + 0x46, 0x55, 0x5f, 0x38, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, + 0x52, 0x46, 0x55, 0x5f, 0x39, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x49, 0x4e, 0x4f, 0x52, + 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x31, 0x30, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x49, 0x4e, + 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x31, 0x31, 0x10, 0x0b, 0x12, 0x10, 0x0a, 0x0c, 0x4d, + 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x31, 0x32, 0x10, 0x0c, 0x12, 0x10, 0x0a, + 0x0c, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x31, 0x33, 0x10, 0x0d, 0x12, + 0x10, 0x0a, 0x0c, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x31, 0x34, 0x10, + 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x52, 0x46, 0x55, 0x5f, 0x31, + 0x35, 0x10, 0x0f, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x18, 0x01, 0x2a, 0x05, 0x4d, 0x49, 0x4e, + 0x4f, 0x52, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/messages.pb.go b/pkg/ttnpb/messages.pb.go index 93a61926e0..10480c2ccb 100644 --- a/pkg/ttnpb/messages.pb.go +++ b/pkg/ttnpb/messages.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -1989,569 +1988,565 @@ var file_lorawan_stack_api_messages_proto_rawDesc = []byte{ 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, - 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, - 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, + 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, - 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0xe4, 0x03, 0x0a, 0x0d, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x40, 0x0a, 0x08, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x72, - 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x52, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x72, 0x78, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, - 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, - 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x3a, 0x0a, 0x14, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, - 0x03, 0x18, 0xff, 0x01, 0x52, 0x12, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, - 0x75, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, - 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x41, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x4a, 0x04, - 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x22, 0x9c, 0x03, 0x0a, 0x0f, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, - 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, - 0x31, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x12, 0x4a, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x35, - 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x07, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x64, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, - 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x42, 0x0f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x89, 0x03, 0x0a, 0x10, 0x54, 0x78, - 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x35, - 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, - 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x49, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, - 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x4a, 0x0a, 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x64, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa6, 0x01, 0x0a, - 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, - 0x53, 0x53, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x4f, 0x4f, 0x5f, 0x4c, - 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x4f, 0x4f, 0x5f, 0x45, 0x41, 0x52, - 0x4c, 0x59, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4c, 0x4c, 0x49, 0x53, 0x49, 0x4f, - 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, - 0x4c, 0x4c, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x10, 0x05, - 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x58, 0x5f, 0x46, 0x52, 0x45, 0x51, 0x10, 0x06, 0x12, 0x0c, 0x0a, - 0x08, 0x54, 0x58, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x47, - 0x50, 0x53, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x08, 0x1a, 0x06, 0xea, - 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x97, 0x01, 0x0a, 0x17, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x37, 0x0a, 0x06, 0x74, 0x78, 0x5f, 0x61, 0x63, 0x6b, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, - 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x74, 0x78, 0x41, 0x63, 0x6b, 0x22, - 0x72, 0x0a, 0x14, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x61, - 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x6e, - 0x64, 0x49, 0x64, 0x22, 0xe9, 0x08, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x66, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x2a, 0x06, - 0x18, 0xff, 0x01, 0x38, 0xe0, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x13, 0x0a, - 0x05, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x66, 0x43, - 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6d, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x12, 0x40, 0x0a, 0x0f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0e, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, - 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, - 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x46, 0x0a, 0x12, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x52, 0x11, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3e, 0x0a, 0x1b, 0x6e, 0x6f, 0x72, 0x6d, 0x61, - 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x77, 0x61, - 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x19, 0x6e, 0x6f, - 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x57, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x78, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x72, 0x78, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x73, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, - 0x6f, 0x70, 0x65, 0x52, 0x07, 0x61, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x11, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, - 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x46, 0x43, - 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, - 0x6d, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x72, 0x6d, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, - 0x5f, 0x61, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x75, - 0x6d, 0x65, 0x64, 0x41, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x09, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, - 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0b, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x52, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x73, 0x1a, 0x56, 0x0a, - 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, - 0xb4, 0x07, 0x0a, 0x1b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, - 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, - 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, - 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, - 0x24, 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x0d, 0xfa, 0x42, 0x0a, 0x2a, 0x08, 0x18, 0xff, 0x01, 0x28, 0x01, 0x38, 0xe0, 0x01, 0x52, 0x05, - 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x66, 0x43, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, - 0x6d, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x0a, 0x66, 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x50, 0x0a, 0x12, 0x6e, - 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x6e, 0x6f, 0x72, 0x6d, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3e, 0x0a, - 0x1b, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x19, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, - 0x0b, 0x72, 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0a, - 0x72, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x08, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, + 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, + 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe4, 0x03, 0x0a, 0x0d, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x72, 0x61, 0x77, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x40, 0x0a, 0x08, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x45, 0x0a, 0x0b, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, - 0x64, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x69, - 0x72, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, - 0x41, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x72, - 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, - 0x43, 0x0a, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x49, 0x64, 0x73, 0x1a, 0x56, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, - 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0xc5, 0x02, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x8a, 0x01, 0x0a, 0x0a, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, - 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, - 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, - 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0xd4, - 0x02, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, - 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, - 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, - 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x07, 0x61, 0x70, 0x70, 0x53, 0x4b, 0x65, - 0x79, 0x12, 0x58, 0x0a, 0x15, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x14, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70, - 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, - 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x3a, 0x08, 0xf2, 0xaa, 0x19, - 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0xed, 0x07, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0xcd, 0x01, - 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa6, 0x01, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, - 0x10, 0xf2, 0xaa, 0x19, 0x99, 0x01, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, - 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, - 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4e, 0x65, 0x77, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, - 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, - 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, - 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x22, 0x0a, - 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0b, 0xfa, - 0x42, 0x08, 0x2a, 0x06, 0x18, 0xff, 0x01, 0x38, 0xe0, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, - 0x74, 0x12, 0x13, 0x0a, 0x05, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x04, 0x66, 0x43, 0x6e, 0x74, 0x12, 0xc0, 0x01, 0x0a, 0x0b, 0x66, 0x72, 0x6d, 0x5f, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x9e, 0x01, 0xf2, - 0xaa, 0x19, 0x99, 0x01, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, - 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4e, 0x65, 0x77, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x46, 0x6c, 0x61, 0x67, 0x22, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, - 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x0a, 0x66, - 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x40, 0x0a, 0x0f, 0x64, 0x65, 0x63, - 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0e, 0x64, 0x65, 0x63, - 0x6f, 0x64, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x64, - 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x77, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x64, - 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x57, 0x61, 0x72, - 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, - 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, - 0x6d, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x62, 0x5f, 0x63, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x42, 0x43, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x43, 0x12, 0x48, 0x0a, 0x08, - 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x54, 0x78, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x10, 0x01, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x0b, + 0x72, 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x52, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x72, + 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, - 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x1a, 0x9b, 0x01, - 0x0a, 0x07, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x43, 0x12, 0x45, 0x0a, 0x08, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x42, 0x43, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, - 0x12, 0x3f, 0x0a, 0x0d, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, - 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x59, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x41, 0x0a, - 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, - 0x22, 0xae, 0x01, 0x0a, 0x19, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x49, - 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x3c, 0x0a, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, - 0x00, 0x22, 0xc5, 0x01, 0x0a, 0x1f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, - 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x09, 0x64, - 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x25, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, - 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, - 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x3a, - 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0x91, 0x05, 0x0a, 0x22, 0x44, 0x6f, - 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x12, 0xc8, 0x01, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x42, 0xac, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, - 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, - 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, - 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, - 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x2e, 0x0a, 0x0e, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0e, 0x6d, - 0x69, 0x6e, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, - 0x12, 0xd7, 0x01, 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x76, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xac, 0x01, 0xfa, 0x42, - 0x06, 0x7a, 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, - 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, - 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, - 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, - 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, - 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, - 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x70, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x3d, 0x0a, 0x16, 0x70, 0x65, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, - 0x79, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, - 0x03, 0x18, 0x80, 0x10, 0x52, 0x13, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x16, 0x70, 0x65, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, - 0x6f, 0x77, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x70, 0x65, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x4d, 0x69, 0x6e, 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x22, 0x69, 0x0a, - 0x16, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x08, - 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0x94, 0x09, 0x0a, 0x0d, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, - 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, - 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, - 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x3a, 0x0a, + 0x14, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x12, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6e, + 0x73, 0x75, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, + 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x41, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x4a, + 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x22, 0x9c, 0x03, 0x0a, 0x0f, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x12, 0x31, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x12, 0x4a, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, + 0x35, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x07, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x64, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, + 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x42, 0x0f, 0x0a, 0x08, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x89, 0x03, 0x0a, 0x10, 0x54, + 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, + 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x49, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, + 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x4a, 0x0a, 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa6, 0x01, + 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, + 0x45, 0x53, 0x53, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x4f, 0x4f, 0x5f, + 0x4c, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x4f, 0x4f, 0x5f, 0x45, 0x41, + 0x52, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4c, 0x4c, 0x49, 0x53, 0x49, + 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x43, + 0x4f, 0x4c, 0x4c, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x10, + 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x58, 0x5f, 0x46, 0x52, 0x45, 0x51, 0x10, 0x06, 0x12, 0x0c, + 0x0a, 0x08, 0x54, 0x58, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, + 0x47, 0x50, 0x53, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x08, 0x1a, 0x06, + 0xea, 0xaa, 0x19, 0x02, 0x18, 0x01, 0x22, 0x97, 0x01, 0x0a, 0x17, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x37, 0x0a, 0x06, 0x74, 0x78, 0x5f, 0x61, 0x63, + 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, + 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x74, 0x78, 0x41, 0x63, 0x6b, + 0x22, 0x72, 0x0a, 0x14, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x70, 0x6c, 0x69, 0x6e, + 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, + 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x62, + 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, + 0x6e, 0x64, 0x49, 0x64, 0x22, 0xe9, 0x08, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x06, 0x66, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x2a, + 0x06, 0x18, 0xff, 0x01, 0x38, 0xe0, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x13, + 0x0a, 0x05, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x66, + 0x43, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6d, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x72, 0x6d, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x40, 0x0a, 0x0f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x5f, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0e, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, + 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, + 0x67, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, + 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, + 0x12, 0x46, 0x0a, 0x12, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x11, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, + 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3e, 0x0a, 0x1b, 0x6e, 0x6f, 0x72, 0x6d, + 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x77, + 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x19, 0x6e, + 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x78, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, + 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x72, 0x78, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x78, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x4a, 0x0a, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x48, - 0x00, 0x52, 0x0d, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x5a, 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, - 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x73, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, + 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x07, 0x61, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, + 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, + 0x77, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x46, + 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x72, 0x6d, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x72, 0x6d, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, + 0x64, 0x5f, 0x61, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x73, + 0x75, 0x6d, 0x65, 0x64, 0x41, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x09, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, + 0x6b, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0b, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x52, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x73, 0x1a, 0x56, + 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, + 0x22, 0xb4, 0x07, 0x0a, 0x1b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, + 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, + 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, + 0x12, 0x24, 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x2a, 0x08, 0x18, 0xff, 0x01, 0x28, 0x01, 0x38, 0xe0, 0x01, 0x52, + 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x66, 0x43, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, + 0x72, 0x6d, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0a, 0x66, 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x50, 0x0a, 0x12, + 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x6e, 0x6f, 0x72, + 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3e, + 0x0a, 0x1b, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x19, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, + 0x0a, 0x0b, 0x72, 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x0a, 0x72, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x08, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x54, + 0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x45, 0x0a, + 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, + 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, + 0x65, 0x64, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x5f, 0x61, + 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, + 0x64, 0x41, 0x69, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, - 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x48, 0x00, 0x52, 0x10, 0x75, 0x70, 0x6c, 0x69, - 0x6e, 0x6b, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x0b, - 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, - 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, - 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x48, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, - 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, - 0x6b, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x63, 0x6b, - 0x12, 0x4a, 0x0a, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x63, - 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x0c, - 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x61, 0x63, 0x6b, 0x12, 0x4a, 0x0a, 0x0d, - 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x54, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, + 0x12, 0x43, 0x0a, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x49, 0x64, 0x73, 0x1a, 0x56, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0xc5, 0x02, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x8a, 0x01, 0x0a, 0x0a, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, 0x72, + 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, + 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, + 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, + 0xd4, 0x02, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, + 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x61, 0x70, 0x70, + 0x5f, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, + 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x07, 0x61, 0x70, 0x70, 0x53, 0x4b, + 0x65, 0x79, 0x12, 0x58, 0x0a, 0x15, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, - 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0e, - 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x4e, - 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, - 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x14, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x27, 0x0a, 0x0f, + 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, + 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x3a, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0xed, 0x07, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0xcd, + 0x01, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa6, 0x01, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, + 0x80, 0x10, 0xf2, 0xaa, 0x19, 0x99, 0x01, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, + 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, + 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, + 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4e, 0x65, 0x77, 0x48, 0x65, 0x78, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, + 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, + 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, + 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x22, + 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0b, + 0xfa, 0x42, 0x08, 0x2a, 0x06, 0x18, 0xff, 0x01, 0x38, 0xe0, 0x01, 0x52, 0x05, 0x66, 0x50, 0x6f, + 0x72, 0x74, 0x12, 0x13, 0x0a, 0x05, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x04, 0x66, 0x43, 0x6e, 0x74, 0x12, 0xc0, 0x01, 0x0a, 0x0b, 0x66, 0x72, 0x6d, 0x5f, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x9e, 0x01, + 0xf2, 0xaa, 0x19, 0x99, 0x01, 0x1a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, + 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4e, 0x65, 0x77, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, + 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x0a, + 0x66, 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x40, 0x0a, 0x0f, 0x64, 0x65, + 0x63, 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0e, 0x64, 0x65, + 0x63, 0x6f, 0x64, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x38, 0x0a, 0x18, + 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, + 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x57, 0x61, + 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, + 0x6d, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x72, 0x6d, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x62, 0x5f, + 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x0e, - 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x12, 0x6f, - 0x0a, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, - 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, - 0x6e, 0x6b, 0x73, 0x48, 0x00, 0x52, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, - 0x75, 0x65, 0x75, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, - 0x4e, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, 0x76, - 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x42, 0x43, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x43, 0x12, 0x48, 0x0a, + 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x54, 0x78, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, + 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, + 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x1a, 0x9b, + 0x01, 0x0a, 0x07, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x43, 0x12, 0x45, 0x0a, 0x08, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x42, 0x43, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x08, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x73, 0x12, 0x3f, 0x0a, 0x0d, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x3a, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x59, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x41, + 0x0a, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x73, 0x22, 0xae, 0x01, 0x0a, 0x19, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, + 0x49, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x3c, 0x0a, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, + 0x10, 0x00, 0x22, 0xc5, 0x01, 0x0a, 0x1f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x09, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x25, 0x0a, 0x0f, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, + 0x12, 0x2e, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, + 0x80, 0x10, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, + 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0x91, 0x05, 0x0a, 0x22, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x12, 0xc8, 0x01, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0xac, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x04, 0x70, 0x01, + 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, + 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, + 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, + 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x2e, 0x0a, 0x0e, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x0c, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0e, + 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, + 0x6e, 0x12, 0xd7, 0x01, 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, + 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xac, 0x01, 0xfa, + 0x42, 0x06, 0x7a, 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, + 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, + 0x41, 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, + 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x70, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x3d, 0x0a, 0x16, 0x70, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x7a, 0x03, 0x18, 0x80, 0x10, 0x52, 0x13, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x16, 0x70, 0x65, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x5f, + 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x70, 0x65, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x4d, 0x69, 0x6e, 0x46, 0x43, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x22, 0x69, + 0x0a, 0x16, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x3a, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x22, 0x94, 0x09, 0x0a, 0x0d, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x12, 0x54, 0x0a, 0x0e, 0x65, + 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, + 0x73, 0x12, 0x35, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x92, + 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4a, 0x0a, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, + 0x48, 0x00, 0x52, 0x0d, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x5a, 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, + 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, + 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x48, 0x00, 0x52, 0x10, 0x75, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x48, 0x0a, + 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, + 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x6a, 0x6f, 0x69, + 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x12, 0x48, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x63, + 0x6b, 0x12, 0x4a, 0x0a, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, + 0x63, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x12, - 0x4b, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, - 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, - 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x09, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, - 0x08, 0x01, 0x10, 0x00, 0x42, 0x09, 0x0a, 0x02, 0x75, 0x70, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, - 0xcc, 0x02, 0x0a, 0x18, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x0c, - 0x75, 0x70, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, - 0x75, 0x70, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x16, 0x75, - 0x70, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, - 0x72, 0x04, 0x18, 0x80, 0xc0, 0x02, 0x52, 0x14, 0x75, 0x70, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x0e, - 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x12, - 0x43, 0x0a, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x18, 0x80, 0xc0, 0x02, 0x52, 0x16, 0x64, 0x6f, - 0x77, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xbb, - 0x01, 0x0a, 0x14, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x4d, 0x0a, - 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, 0x10, 0xa0, 0x8d, - 0x06, 0x52, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x2a, 0xa3, 0x01, 0x0a, - 0x10, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, 0x45, 0x52, 0x5f, 0x4e, - 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, - 0x45, 0x52, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x4f, 0x52, 0x59, 0x10, 0x01, 0x12, - 0x1a, 0x0a, 0x16, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, 0x45, 0x52, 0x5f, 0x47, 0x52, 0x50, - 0x43, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x46, - 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, 0x45, 0x52, 0x5f, 0x4a, 0x41, 0x56, 0x41, 0x53, 0x43, 0x52, - 0x49, 0x50, 0x54, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, - 0x45, 0x52, 0x5f, 0x43, 0x41, 0x59, 0x45, 0x4e, 0x4e, 0x45, 0x4c, 0x50, 0x50, 0x10, 0x04, 0x1a, - 0x11, 0xea, 0xaa, 0x19, 0x0d, 0x18, 0x01, 0x2a, 0x09, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, - 0x45, 0x52, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, + 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4e, 0x61, 0x63, 0x6b, 0x12, 0x4a, 0x0a, + 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x54, 0x0a, 0x0f, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, + 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, + 0x4e, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, + 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, + 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x12, + 0x6f, 0x0a, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, + 0x65, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x73, 0x48, 0x00, 0x52, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x12, 0x4e, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x6c, + 0x76, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x6c, 0x76, 0x65, 0x64, + 0x12, 0x4b, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, + 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, + 0x09, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x01, 0x10, 0x00, 0x42, 0x09, 0x0a, 0x02, 0x75, 0x70, 0x12, 0x03, 0xf8, 0x42, 0x01, + 0x22, 0xcc, 0x02, 0x0a, 0x18, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, + 0x0c, 0x75, 0x70, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x0b, 0x75, 0x70, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x16, + 0x75, 0x70, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, + 0x06, 0x72, 0x04, 0x18, 0x80, 0xc0, 0x02, 0x52, 0x14, 0x75, 0x70, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x51, 0x0a, + 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x12, 0x43, 0x0a, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x18, 0x80, 0xc0, 0x02, 0x52, 0x16, 0x64, + 0x6f, 0x77, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, + 0xbb, 0x01, 0x0a, 0x14, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x4d, + 0x0a, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, 0x10, 0xa0, + 0x8d, 0x06, 0x52, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x2a, 0xa3, 0x01, + 0x0a, 0x10, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, 0x45, 0x52, 0x5f, + 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, + 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x4f, 0x52, 0x59, 0x10, 0x01, + 0x12, 0x1a, 0x0a, 0x16, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, 0x45, 0x52, 0x5f, 0x47, 0x52, + 0x50, 0x43, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, + 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, 0x45, 0x52, 0x5f, 0x4a, 0x41, 0x56, 0x41, 0x53, 0x43, + 0x52, 0x49, 0x50, 0x54, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, + 0x54, 0x45, 0x52, 0x5f, 0x43, 0x41, 0x59, 0x45, 0x4e, 0x4e, 0x45, 0x4c, 0x50, 0x50, 0x10, 0x04, + 0x1a, 0x11, 0xea, 0xaa, 0x19, 0x0d, 0x18, 0x01, 0x2a, 0x09, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, + 0x54, 0x45, 0x52, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/metadata.pb.go b/pkg/ttnpb/metadata.pb.go index d0d1ef8331..f222ee2a62 100644 --- a/pkg/ttnpb/metadata.pb.go +++ b/pkg/ttnpb/metadata.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -678,123 +677,140 @@ var file_lorawan_stack_api_metadata_proto_rawDesc = []byte{ 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, - 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, - 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0x95, 0x09, 0x0a, 0x0a, 0x52, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, - 0x12, 0x49, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x62, 0x72, 0x6f, 0x6b, 0x65, - 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, - 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x61, - 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0c, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x25, - 0x0a, 0x0e, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x38, 0x0a, 0x18, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x65, 0x64, 0x46, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, - 0x44, 0x0a, 0x1f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6e, - 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x5f, - 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, + 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x95, 0x09, 0x0a, 0x0a, 0x52, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, + 0x73, 0x12, 0x49, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x62, 0x72, 0x6f, 0x6b, + 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, + 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x25, 0x0a, 0x0e, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x38, 0x0a, 0x18, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x73, 0x73, 0x69, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x04, 0x72, 0x73, 0x73, 0x69, 0x12, 0x3c, 0x0a, 0x0b, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x73, 0x73, 0x69, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x12, 0x44, 0x0a, 0x1f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, + 0x6e, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x65, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x73, 0x73, 0x69, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x02, 0x52, 0x04, 0x72, 0x73, 0x73, 0x69, 0x12, 0x3c, 0x0a, 0x0b, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x73, 0x73, 0x69, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x73, 0x73, 0x69, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x73, 0x73, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, + 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x73, 0x73, 0x69, 0x12, 0x36, 0x0a, 0x17, 0x72, + 0x73, 0x73, 0x69, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x72, 0x73, + 0x73, 0x69, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6e, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x03, 0x73, 0x6e, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x12, 0x34, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6a, 0x0a, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x16, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2d, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x68, 0x6f, 0x70, + 0x70, 0x69, 0x6e, 0x67, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x64, 0x72, 0x69, 0x66, 0x74, 0x18, 0x14, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x72, 0x69, + 0x66, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x67, 0x70, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x15, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x07, 0x67, 0x70, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x52, 0x73, 0x73, 0x69, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x5f, 0x72, 0x73, 0x73, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x73, 0x73, 0x69, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x73, - 0x73, 0x69, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x72, 0x73, 0x73, - 0x69, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6e, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x03, 0x73, 0x6e, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x79, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, - 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, - 0x34, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6a, 0x0a, 0x18, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, - 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, - 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, - 0x6b, 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x16, 0x64, 0x6f, 0x77, 0x6e, 0x6c, - 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, - 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2d, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x2a, 0x03, 0x18, 0xff, 0x01, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x77, - 0x69, 0x64, 0x74, 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x68, 0x6f, 0x70, 0x70, - 0x69, 0x6e, 0x67, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x64, 0x72, 0x69, 0x66, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x72, 0x69, 0x66, - 0x74, 0x12, 0x35, 0x0a, 0x08, 0x67, 0x70, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x07, 0x67, 0x70, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x33, 0x0a, 0x08, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, - 0x64, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x52, 0x08, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x22, 0x80, 0x02, 0x0a, 0x08, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, - 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x12, 0x12, - 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x56, 0x40, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x56, 0xc0, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x09, - 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x42, - 0x17, 0xfa, 0x42, 0x14, 0x12, 0x12, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x66, 0x40, 0x29, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x66, 0xc0, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, - 0x75, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6c, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x6c, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x12, 0x46, 0x0a, 0x06, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0e, 0xfa, 0x42, 0x05, - 0x82, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x02, 0x10, 0x00, 0x52, 0x06, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xae, 0x08, - 0x0a, 0x14, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0xd5, 0x01, 0x0a, 0x10, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x42, 0xaa, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x33, 0x0a, 0x08, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, + 0x65, 0x64, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x52, 0x08, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x22, 0x80, 0x02, 0x0a, 0x08, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, + 0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x12, + 0x12, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x56, 0x40, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x56, 0xc0, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x35, 0x0a, + 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, + 0x42, 0x17, 0xfa, 0x42, 0x14, 0x12, 0x12, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x66, 0x40, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x66, 0xc0, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, + 0x74, 0x75, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6c, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x6c, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x12, 0x46, 0x0a, 0x06, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0e, 0xfa, 0x42, + 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x02, 0x10, 0x00, 0x52, 0x06, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0xae, + 0x08, 0x0a, 0x14, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0xd5, 0x01, 0x0a, 0x10, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0xaa, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, + 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, + 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0e, + 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2e, + 0x0a, 0x13, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x30, + 0x0a, 0x14, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, + 0x12, 0xe9, 0x01, 0x0a, 0x15, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, @@ -802,97 +818,77 @@ var file_lorawan_stack_api_metadata_proto_rawDesc = []byte{ 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, - 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, - 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x66, - 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2e, 0x0a, - 0x13, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x66, 0x6f, 0x72, 0x77, - 0x61, 0x72, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, - 0x14, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x6f, 0x72, - 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, - 0xe9, 0x01, 0x0a, 0x15, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x42, - 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, - 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, - 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, - 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, - 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x45, 0x75, 0x69, 0x12, 0x4e, 0x0a, 0x14, 0x66, - 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0xda, 0x01, 0x0a, 0x13, - 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xaa, 0x01, 0xfa, 0x42, 0x06, 0x7a, - 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, - 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, - 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, - 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, + 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, + 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, + 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x45, 0x75, 0x69, 0x12, 0x4e, 0x0a, 0x14, + 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x12, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0xda, 0x01, 0x0a, + 0x13, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x65, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xaa, 0x01, 0xfa, 0x42, 0x06, + 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, - 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, - 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, - 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x4e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x68, 0x6f, 0x6d, 0x65, - 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x35, 0x0a, - 0x17, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, - 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x04, 0x68, 0x6f, 0x70, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x48, 0x6f, 0x70, 0x52, 0x04, 0x68, 0x6f, 0x70, 0x73, 0x22, 0xe7, - 0x01, 0x0a, 0x14, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x48, 0x6f, 0x70, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x23, 0x0a, 0x0d, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2a, 0x9b, 0x02, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x53, - 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0e, 0x0a, 0x0a, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x47, 0x50, 0x53, 0x10, 0x01, 0x12, - 0x13, 0x0a, 0x0f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, - 0x52, 0x59, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x49, - 0x50, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, - 0x20, 0x0a, 0x1c, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x57, 0x49, 0x46, 0x49, 0x5f, 0x52, - 0x53, 0x53, 0x49, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, - 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x42, 0x54, 0x5f, 0x52, - 0x53, 0x53, 0x49, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, - 0x06, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4c, 0x4f, 0x52, 0x41, - 0x5f, 0x52, 0x53, 0x53, 0x49, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x10, 0x07, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4c, 0x4f, - 0x52, 0x41, 0x5f, 0x54, 0x44, 0x4f, 0x41, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, - 0x43, 0x4f, 0x4d, 0x42, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x09, 0x1a, 0x0e, 0xea, 0xaa, 0x19, 0x0a, 0x18, 0x01, 0x2a, 0x06, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, - 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, + 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, + 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, + 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x17, + 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, + 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x65, 0x74, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x68, 0x6f, 0x6d, + 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x68, 0x6f, 0x6d, 0x65, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x35, + 0x0a, 0x17, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x14, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x04, 0x68, 0x6f, 0x70, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, + 0x72, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x48, 0x6f, 0x70, 0x52, 0x04, 0x68, 0x6f, 0x70, 0x73, 0x22, + 0xe7, 0x01, 0x0a, 0x14, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x48, 0x6f, 0x70, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x23, 0x0a, + 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2a, 0x9b, 0x02, 0x0a, 0x0e, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x0e, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, + 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x47, 0x50, 0x53, 0x10, 0x01, + 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, + 0x54, 0x52, 0x59, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, + 0x49, 0x50, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, + 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x57, 0x49, 0x46, 0x49, 0x5f, + 0x52, 0x53, 0x53, 0x49, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x42, 0x54, 0x5f, + 0x52, 0x53, 0x53, 0x49, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x06, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4c, 0x4f, 0x52, + 0x41, 0x5f, 0x52, 0x53, 0x53, 0x49, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x07, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4c, + 0x4f, 0x52, 0x41, 0x5f, 0x54, 0x44, 0x4f, 0x41, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, + 0x5f, 0x43, 0x4f, 0x4d, 0x42, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x47, 0x45, 0x4f, 0x4c, 0x4f, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x09, 0x1a, 0x0e, 0xea, 0xaa, 0x19, 0x0a, 0x18, 0x01, 0x2a, + 0x06, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/mqtt.pb.go b/pkg/ttnpb/mqtt.pb.go index f6cc52e2fd..873ee432c3 100644 --- a/pkg/ttnpb/mqtt.pb.go +++ b/pkg/ttnpb/mqtt.pb.go @@ -22,7 +22,6 @@ package ttnpb import ( _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -113,40 +112,37 @@ var file_lorawan_stack_api_mqtt_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, - 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xa9, 0x03, 0x0a, 0x12, 0x4d, 0x51, 0x54, 0x54, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0xb6, 0x01, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, - 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, - 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, - 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, - 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, - 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, - 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, - 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, - 0x24, 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0xbd, 0x01, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x74, 0x6c, 0x73, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, 0x01, - 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, 0x3f, - 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, 0x2d, - 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, - 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, - 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, - 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x41, - 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, 0x30, - 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x10, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x6c, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x35, 0x5a, 0x2f, - 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, - 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x22, 0xa9, 0x03, 0x0a, 0x12, 0x4d, 0x51, 0x54, 0x54, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0xb6, 0x01, 0x0a, 0x0e, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x8e, 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, + 0x3f, 0x3a, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, + 0x7c, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, + 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, + 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, + 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, + 0x5d, 0x2a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, + 0x3a, 0x3a, 0x5b, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, + 0x5e, 0x24, 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0xbd, 0x01, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x74, 0x6c, 0x73, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8e, + 0x01, 0xfa, 0x42, 0x8a, 0x01, 0x72, 0x87, 0x01, 0x32, 0x84, 0x01, 0x5e, 0x28, 0x3f, 0x3a, 0x28, + 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x61, + 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, + 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, + 0x39, 0x5d, 0x29, 0x5c, 0x2e, 0x29, 0x2a, 0x28, 0x3f, 0x3a, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x7c, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x5b, 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5d, 0x2a, 0x5b, + 0x41, 0x2d, 0x5a, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x28, 0x3f, 0x3a, 0x3a, 0x5b, + 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x7d, 0x29, 0x3f, 0x24, 0x7c, 0x5e, 0x24, 0x52, + 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x6c, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x31, 0x5a, + 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/networkserver.pb.go b/pkg/ttnpb/networkserver.pb.go index 914d9b58b0..8145281390 100644 --- a/pkg/ttnpb/networkserver.pb.go +++ b/pkg/ttnpb/networkserver.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -258,197 +257,194 @@ var file_lorawan_stack_api_networkserver_proto_rawDesc = []byte{ 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, - 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe4, 0x01, 0x0a, 0x17, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xc8, 0x01, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xac, 0x01, 0xfa, 0x42, 0x06, - 0x7a, 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, - 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, - 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, - 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe4, 0x01, 0x0a, + 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xc8, 0x01, 0x0a, 0x08, 0x64, 0x65, 0x76, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xac, 0x01, 0xfa, 0x42, + 0x06, 0x7a, 0x04, 0x68, 0x04, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, - 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x19, - 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, 0x07, - 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, 0x64, - 0x64, 0x72, 0x22, 0xb3, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x11, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, - 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x54, 0x0a, 0x13, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x5f, 0x70, 0x68, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x08, - 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xd7, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, - 0x4e, 0x65, 0x74, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xc2, 0x01, - 0x0a, 0x06, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xaa, - 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, - 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, + 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, + 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, + 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x34, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, + 0x19, 0x4a, 0x0a, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, 0x02, 0x01, + 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, + 0x64, 0x64, 0x72, 0x22, 0xb3, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x11, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x54, 0x0a, 0x13, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x5f, 0x70, 0x68, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x48, 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x11, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x50, 0x68, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xd7, 0x01, 0x0a, 0x10, 0x47, 0x65, + 0x74, 0x4e, 0x65, 0x74, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xc2, + 0x01, 0x0a, 0x06, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0xaa, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x03, 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, + 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, 0x02, - 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x6e, 0x65, 0x74, - 0x49, 0x64, 0x22, 0x8e, 0x02, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x41, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xea, 0x01, 0x0a, 0x11, 0x64, 0x65, 0x76, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0c, 0x42, 0xbd, 0x01, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x7a, 0x02, 0x68, - 0x05, 0xea, 0xaa, 0x19, 0x98, 0x01, 0x0a, 0x49, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, - 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x44, - 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x53, 0x6c, 0x69, 0x63, - 0x65, 0x12, 0x4b, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x44, 0x65, 0x76, 0x41, - 0x64, 0x64, 0x72, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x92, 0x41, - 0x11, 0x4a, 0x0f, 0x5b, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x30, 0x30, 0x2f, 0x32, 0x34, - 0x22, 0x5d, 0x52, 0x0f, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x50, 0x72, 0x65, 0x66, 0x69, - 0x78, 0x65, 0x73, 0x32, 0xfe, 0x03, 0x0a, 0x02, 0x4e, 0x73, 0x12, 0x68, 0x0a, 0x0f, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x2e, + 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x33, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x92, 0x41, 0x17, 0x4a, 0x08, 0x22, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x22, 0x9a, + 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x6e, 0x65, + 0x74, 0x49, 0x64, 0x22, 0x8e, 0x02, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x41, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xea, 0x01, 0x0a, 0x11, 0x64, 0x65, 0x76, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0c, 0x42, 0xbd, 0x01, 0xfa, 0x42, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x7a, 0x02, + 0x68, 0x05, 0xea, 0xaa, 0x19, 0x98, 0x01, 0x0a, 0x49, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, + 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x53, 0x6c, 0x69, + 0x63, 0x65, 0x12, 0x4b, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x44, 0x65, 0x76, + 0x41, 0x64, 0x64, 0x72, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x92, + 0x41, 0x11, 0x4a, 0x0f, 0x5b, 0x22, 0x32, 0x36, 0x30, 0x30, 0x41, 0x42, 0x30, 0x30, 0x2f, 0x32, + 0x34, 0x22, 0x5d, 0x52, 0x0f, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x50, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x65, 0x73, 0x32, 0xfe, 0x03, 0x0a, 0x02, 0x4e, 0x73, 0x12, 0x68, 0x0a, 0x0f, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x76, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x12, 0xae, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, + 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x41, 0x43, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, + 0x41, 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x44, 0x12, 0x42, 0x2f, 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x6d, 0x61, 0x63, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x66, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x7b, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, 0x70, 0x68, 0x79, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0x58, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, + 0x49, 0x44, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4e, + 0x65, 0x74, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x6e, 0x73, 0x2f, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x12, 0x82, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, - 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x76, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x12, 0xae, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2c, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x41, 0x43, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x41, - 0x43, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x44, 0x12, 0x42, 0x2f, 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6d, - 0x61, 0x63, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x66, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x7b, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x5f, 0x70, 0x68, 0x79, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0x58, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x49, - 0x44, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, - 0x74, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x6e, 0x73, 0x2f, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x12, - 0x82, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x41, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, + 0x2f, 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x65, 0x73, 0x32, 0x90, 0x02, 0x0a, 0x04, 0x41, 0x73, 0x4e, 0x73, 0x12, 0x54, + 0x0a, 0x14, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, + 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, - 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x65, 0x73, 0x32, 0x90, 0x02, 0x0a, 0x04, 0x41, 0x73, 0x4e, 0x73, 0x12, 0x54, 0x0a, - 0x14, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, - 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x12, 0x51, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x51, - 0x75, 0x65, 0x75, 0x65, 0x50, 0x75, 0x73, 0x68, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, - 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x5f, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, - 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, - 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x32, 0xa8, 0x01, 0x0a, 0x04, 0x47, 0x73, 0x4e, 0x73, - 0x12, 0x45, 0x0a, 0x0c, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, - 0x12, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, + 0x6d, 0x70, 0x74, 0x79, 0x12, 0x51, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x75, 0x73, 0x68, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x59, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, - 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x32, 0xbc, 0x06, 0x0a, 0x13, 0x4e, 0x73, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xb2, 0x01, 0x0a, 0x03, 0x47, - 0x65, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x12, 0x63, 0x2f, 0x6e, 0x73, 0x2f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, - 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, - 0x86, 0x02, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x5f, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, - 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0xbe, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb7, - 0x01, 0x1a, 0x63, 0x2f, 0x6e, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x4d, 0x22, 0x48, 0x2f, 0x6e, 0x73, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x32, 0xa8, 0x01, 0x0a, 0x04, 0x47, 0x73, 0x4e, + 0x73, 0x12, 0x45, 0x0a, 0x0c, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, + 0x6b, 0x12, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x59, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x78, 0x41, 0x63, 0x6b, + 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x32, 0xbc, 0x06, 0x0a, 0x13, 0x4e, 0x73, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0xb2, 0x01, 0x0a, 0x03, + 0x47, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x12, 0x63, 0x2f, 0x6e, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, - 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xce, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x73, - 0x65, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x73, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x41, 0x6e, 0x64, 0x47, 0x65, 0x74, 0x45, 0x6e, - 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x68, 0x32, 0x63, 0x2f, 0x6e, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x95, 0x01, 0x0a, 0x06, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x2a, 0x45, 0x2f, 0x6e, 0x73, 0x2f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, + 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, - 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x12, 0x86, 0x02, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0xbe, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0xb7, 0x01, 0x1a, 0x63, 0x2f, 0x6e, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, + 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x4d, 0x22, 0x48, 0x2f, 0x6e, + 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xce, 0x01, 0x0a, 0x14, 0x52, 0x65, + 0x73, 0x65, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x41, 0x6e, 0x64, 0x47, 0x65, 0x74, 0x45, + 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x6e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x68, 0x32, 0x63, 0x2f, 0x6e, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, + 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x95, 0x01, 0x0a, 0x06, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x2a, 0x45, 0x2f, 0x6e, 0x73, + 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x7d, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/notification_service.pb.go b/pkg/ttnpb/notification_service.pb.go index 01c4b77876..305f012340 100644 --- a/pkg/ttnpb/notification_service.pb.go +++ b/pkg/ttnpb/notification_service.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -673,190 +672,186 @@ var file_lorawan_stack_api_notification_service_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, - 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, - 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, - 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, - 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, - 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xaa, 0x04, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, + 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, + 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, + 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, + 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xaa, 0x04, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x49, 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3e, 0x0a, 0x0a, + 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x52, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x09, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x72, 0x52, 0x09, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x46, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, + 0x52, 0x12, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, + 0x5f, 0x69, 0x64, 0x73, 0x22, 0xf6, 0x02, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x49, 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3e, 0x0a, 0x0a, 0x73, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x52, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x72, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x73, 0x12, 0x36, + 0x0a, 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x72, 0x04, + 0x10, 0x01, 0x18, 0x64, 0x52, 0x10, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x73, + 0x12, 0x55, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x92, 0x01, + 0x0b, 0x08, 0x01, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x2c, 0x0a, + 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xf3, 0x01, 0x0a, 0x18, + 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x72, 0x52, 0x09, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x4b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, + 0x01, 0x09, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, + 0x01, 0x22, 0x5f, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, + 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x46, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x52, - 0x12, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, - 0x69, 0x64, 0x73, 0x22, 0xf6, 0x02, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x4a, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x73, 0x12, 0x36, 0x0a, - 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, - 0x01, 0x18, 0x64, 0x52, 0x10, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x3e, 0x0a, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x52, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, - 0x55, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x92, 0x01, 0x0b, - 0x08, 0x01, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x2c, 0x0a, 0x1a, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xf3, 0x01, 0x0a, 0x18, 0x4c, - 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x4b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, 0x01, - 0x09, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, - 0x22, 0x5f, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, - 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0xe7, 0x01, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x49, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x42, 0x14, 0xfa, 0x42, 0x11, 0x92, 0x01, 0x0e, 0x08, 0x01, 0x10, 0xe8, 0x07, 0x18, 0x01, 0x22, - 0x05, 0x72, 0x03, 0x98, 0x01, 0x24, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0x8e, 0x01, 0x0a, 0x1e, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0xdf, 0x01, 0x0a, - 0x14, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x1d, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x4e, 0x4f, 0x54, 0x49, - 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, - 0x52, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x01, - 0x12, 0x30, 0x0a, 0x2c, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x49, - 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, - 0x10, 0x03, 0x12, 0x2b, 0x0a, 0x27, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x54, 0x45, 0x43, 0x48, - 0x4e, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x10, 0x04, 0x1a, - 0x1d, 0xea, 0xaa, 0x19, 0x19, 0x18, 0x01, 0x2a, 0x15, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x52, 0x2a, 0x91, - 0x01, 0x0a, 0x12, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x1a, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, - 0x45, 0x45, 0x4e, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x45, 0x45, - 0x4e, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, - 0x56, 0x45, 0x44, 0x10, 0x02, 0x1a, 0x1b, 0xea, 0xaa, 0x19, 0x17, 0x18, 0x01, 0x2a, 0x13, 0x4e, - 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x32, 0x9d, 0x03, 0x0a, 0x13, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5f, 0x0a, 0x06, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x04, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, + 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0xe7, 0x01, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x72, 0x49, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x42, 0x14, 0xfa, 0x42, 0x11, 0x92, 0x01, 0x0e, 0x08, 0x01, 0x10, 0xe8, 0x07, 0x18, 0x01, + 0x22, 0x05, 0x72, 0x03, 0x98, 0x01, 0x24, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0x8e, 0x01, 0x0a, + 0x1e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x35, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x2f, 0x5a, 0x2d, 0x12, 0x2b, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x63, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x10, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0xdf, 0x01, + 0x0a, 0x14, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x1d, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x52, 0x5f, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x4e, 0x4f, 0x54, + 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, + 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, + 0x01, 0x12, 0x30, 0x0a, 0x2c, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, + 0x49, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, + 0x54, 0x10, 0x03, 0x12, 0x2b, 0x0a, 0x27, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x54, 0x45, 0x43, + 0x48, 0x4e, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x10, 0x04, + 0x1a, 0x1d, 0xea, 0xaa, 0x19, 0x19, 0x18, 0x01, 0x2a, 0x15, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x52, 0x2a, + 0x91, 0x01, 0x0a, 0x12, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x1a, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, + 0x53, 0x45, 0x45, 0x4e, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x45, + 0x45, 0x4e, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x52, 0x43, 0x48, + 0x49, 0x56, 0x45, 0x44, 0x10, 0x02, 0x1a, 0x1b, 0xea, 0xaa, 0x19, 0x17, 0x18, 0x01, 0x2a, 0x13, + 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x32, 0x9d, 0x03, 0x0a, 0x13, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5f, 0x0a, 0x06, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, + 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2f, 0x5a, 0x2d, 0x12, 0x2b, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x8f, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x36, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x30, 0x32, 0x2b, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x8f, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x30, 0x32, 0x2b, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, - 0x01, 0x2a, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x3a, 0x01, 0x2a, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/oauth.pb.go b/pkg/ttnpb/oauth.pb.go index 1a9124bb5e..87ad90b2d2 100644 --- a/pkg/ttnpb/oauth.pb.go +++ b/pkg/ttnpb/oauth.pb.go @@ -22,7 +22,6 @@ package ttnpb import ( _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" @@ -718,18 +717,26 @@ var file_lorawan_stack_api_oauth_proto_rawDesc = []byte{ 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, - 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, - 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb7, 0x01, 0x0a, 0x23, 0x4f, 0x41, 0x75, 0x74, - 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, + 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb7, 0x01, 0x0a, 0x23, 0x4f, 0x41, 0x75, + 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x18, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, @@ -739,146 +746,135 @@ var file_lorawan_stack_api_oauth_proto_rawDesc = []byte{ 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x18, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, + 0x73, 0x12, 0x2d, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x6d, 0x0a, 0x19, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x41, 0x75, + 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xd8, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x41, + 0x75, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, - 0x12, 0x2d, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, - 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, - 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, + 0x72, 0x49, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x20, 0xfa, 0x42, 0x1d, 0x72, 0x1b, 0x52, 0x00, 0x52, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x22, 0xd7, 0x03, 0x0a, 0x16, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x73, 0x12, 0x2f, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x18, 0x40, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x2d, + 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x52, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x12, 0x2b, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, + 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x90, 0x01, + 0x01, 0x52, 0x0b, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x69, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x6d, 0x0a, 0x19, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x41, 0x75, 0x74, - 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xd8, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x41, 0x75, - 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, - 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x20, 0xfa, 0x42, 0x1d, 0x72, 0x1b, 0x52, 0x00, 0x52, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, - 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x22, - 0xd7, 0x03, 0x0a, 0x16, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, + 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0xbf, 0x01, 0x0a, 0x1b, 0x4f, + 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, - 0x12, 0x2f, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, - 0x18, 0x40, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x2d, 0x0a, - 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, - 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x12, 0x2b, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x69, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x90, 0x01, 0x01, - 0x52, 0x0b, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x69, 0x12, 0x14, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, - 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0xbf, 0x01, 0x0a, 0x1b, 0x4f, 0x41, - 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, - 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xd2, 0x03, 0x0a, 0x10, - 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x2f, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xd2, 0x03, 0x0a, + 0x10, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x2f, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2d, 0x0a, 0x06, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, + 0x67, 0x68, 0x74, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x73, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, + 0x74, 0x22, 0x4d, 0x0a, 0x11, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x22, 0x9c, 0x02, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2d, 0x0a, 0x06, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, - 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, - 0x22, 0x4d, 0x0a, 0x11, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, - 0x9c, 0x02, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x20, 0xfa, 0x42, 0x1d, 0x72, 0x1b, 0x52, 0x00, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, - 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, - 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x42, 0x35, - 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, - 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x49, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x20, 0xfa, 0x42, 0x1d, 0x72, 0x1b, 0x52, 0x00, 0x52, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, + 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x42, + 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/oauth_services.pb.go b/pkg/ttnpb/oauth_services.pb.go index aa89c9d3bd..a8a147664d 100644 --- a/pkg/ttnpb/oauth_services.pb.go +++ b/pkg/ttnpb/oauth_services.pb.go @@ -21,7 +21,6 @@ package ttnpb import ( - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -42,63 +41,60 @@ var file_lorawan_stack_api_oauth_services_proto_rawDesc = []byte{ 0x0a, 0x26, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, - 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x32, 0xb3, 0x05, 0x0a, 0x1a, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, - 0x12, 0x99, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, - 0x41, 0x75, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xad, 0x01, 0x0a, - 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x2c, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0x4e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x48, 0x12, 0x46, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x9e, 0x01, 0x0a, - 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x2a, 0x3f, 0x2f, 0x75, - 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa7, 0x01, - 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2b, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, - 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4d, 0x2a, 0x4b, 0x2f, 0x75, 0x73, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, - 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, - 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x32, 0xb3, 0x05, 0x0a, 0x1a, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, + 0x79, 0x12, 0x99, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x30, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xad, 0x01, + 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x2c, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x41, 0x75, 0x74, + 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0x4e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x12, 0x46, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x9e, 0x01, + 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x2a, 0x3f, 0x2f, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa7, + 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2b, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4f, 0x41, 0x75, 0x74, 0x68, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4d, 0x2a, 0x4b, 0x2f, 0x75, 0x73, + 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var file_lorawan_stack_api_oauth_services_proto_goTypes = []interface{}{ diff --git a/pkg/ttnpb/organization.pb.go b/pkg/ttnpb/organization.pb.go index 529ad5e028..e7a19aea89 100644 --- a/pkg/ttnpb/organization.pb.go +++ b/pkg/ttnpb/organization.pb.go @@ -23,7 +23,6 @@ package ttnpb import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" @@ -953,249 +952,246 @@ var file_lorawan_stack_api_organization_proto_rawDesc = []byte{ 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, - 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x92, 0x07, 0x0a, - 0x0c, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, - 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, - 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, - 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, - 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x52, 0x09, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x83, 0x01, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, - 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, - 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, - 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, - 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x64, 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x52, 0x15, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x5a, 0x0a, 0x11, 0x74, 0x65, - 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, + 0x66, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x92, 0x07, + 0x0a, 0x0c, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, + 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, + 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x52, + 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, + 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x83, 0x01, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, 0x01, 0x2f, 0x10, 0x0a, + 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, + 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x64, 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x52, 0x10, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, - 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x0d, 0x10, - 0x0e, 0x52, 0x11, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x52, 0x0d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x22, 0x53, 0x0a, 0x0d, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x69, 0x65, 0x72, 0x73, 0x52, 0x15, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x5a, 0x0a, 0x11, 0x74, + 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x10, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, + 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x0d, + 0x10, 0x0e, 0x52, 0x11, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x52, 0x0d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x22, 0x53, 0x0a, 0x0d, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb1, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, + 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xf0, 0x02, 0x0a, 0x18, + 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x06, 0xf2, + 0xaa, 0x19, 0x02, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x66, + 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50, 0xfa, + 0x42, 0x4d, 0x72, 0x4b, 0x52, 0x00, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x52, 0x10, 0x2d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, + 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, + 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xc4, + 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0c, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xa2, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb1, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, + 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xb3, 0x02, 0x0a, 0x1e, 0x4c, + 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, + 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, + 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x75, 0x0a, 0x05, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x5f, 0xfa, 0x42, 0x5c, 0x72, + 0x5a, 0x52, 0x00, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x52, + 0x0b, 0x2d, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x52, 0x0b, + 0x2d, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, + 0x22, 0x93, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, - 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, - 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xf0, 0x02, 0x0a, 0x18, 0x4c, - 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, - 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x06, 0xf2, 0xaa, - 0x19, 0x02, 0x28, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, - 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x66, 0x0a, - 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50, 0xfa, 0x42, - 0x4d, 0x72, 0x4b, 0x52, 0x00, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x52, 0x10, 0x2d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, - 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xc4, 0x01, - 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0c, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, - 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x22, 0xa2, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, - 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xb3, 0x02, 0x0a, 0x1e, 0x4c, 0x69, - 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, - 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x10, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x75, 0x0a, 0x05, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x5f, 0xfa, 0x42, 0x5c, 0x72, 0x5a, - 0x52, 0x00, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x0b, - 0x2d, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, - 0x93, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x22, 0xa3, 0x02, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, + 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x10, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x11, 0xfa, 0x42, + 0x0e, 0x92, 0x01, 0x0b, 0x08, 0x01, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, + 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x40, + 0x01, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0xf5, 0x01, 0x0a, + 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x15, - 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x6b, 0x65, 0x79, 0x49, 0x64, 0x22, 0xa3, 0x02, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, - 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x10, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x11, 0xfa, 0x42, 0x0e, - 0x92, 0x01, 0x0b, 0x08, 0x01, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x73, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x40, 0x01, - 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0xf5, 0x01, 0x0a, 0x1f, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, + 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xf1, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, + 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, + 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, + 0x37, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, + 0xfa, 0x42, 0x1e, 0x72, 0x1c, 0x52, 0x00, 0x52, 0x02, 0x69, 0x64, 0x52, 0x03, 0x2d, 0x69, 0x64, + 0x52, 0x07, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xdf, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, - 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x61, 0x73, 0x6b, 0x22, 0xf1, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x10, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, - 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, - 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x37, - 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xfa, - 0x42, 0x1e, 0x72, 0x1c, 0x52, 0x00, 0x52, 0x02, 0x69, 0x64, 0x52, 0x03, 0x2d, 0x69, 0x64, 0x52, - 0x07, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xdf, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, - 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, - 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x5b, 0x0a, 0x0c, - 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6c, - 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xce, 0x01, 0x0a, 0x22, 0x53, 0x65, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, - 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x5c, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x4a, - 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, - 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, - 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, - 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x5b, 0x0a, + 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xce, 0x01, 0x0a, 0x22, 0x53, + 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x5c, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, + 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x63, + 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x31, 0x5a, 0x2f, 0x67, + 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/organization_services.pb.go b/pkg/ttnpb/organization_services.pb.go index d936821fe0..c6b7dfdb67 100644 --- a/pkg/ttnpb/organization_services.pb.go +++ b/pkg/ttnpb/organization_services.pb.go @@ -21,7 +21,6 @@ package ttnpb import ( - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -43,171 +42,168 @@ var file_lorawan_stack_api_organization_services_proto_rawDesc = []byte{ 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, - 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, - 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xd5, 0x07, 0x0a, 0x14, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x92, 0x01, - 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xd5, 0x07, 0x0a, 0x14, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x92, + 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x22, 0x34, 0x2f, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x3a, 0x01, 0x2a, 0x12, 0x86, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x26, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x22, 0x34, 0x2f, 0x75, 0x73, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, - 0x01, 0x2a, 0x12, 0x86, 0x01, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9f, 0x01, 0x0a, 0x04, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x12, 0x0e, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5a, 0x36, 0x12, 0x34, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x8f, 0x01, - 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x1a, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, - 0x73, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x22, 0x2a, 0x20, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x7c, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, - 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x22, 0x28, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x12, 0x78, 0x0a, 0x05, 0x50, 0x75, 0x72, 0x67, 0x65, 0x12, 0x27, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x28, 0x2a, 0x26, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x32, 0xe1, 0x0a, 0x0a, - 0x12, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x12, 0x7e, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x6f, 0x72, 0x67, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9f, 0x01, 0x0a, + 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x12, 0x0e, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5a, 0x36, 0x12, 0x34, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x8f, + 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x1a, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x12, 0x9e, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, + 0x12, 0x73, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x28, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x22, 0x2a, 0x20, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x7c, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x22, 0x28, 0x2f, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x12, 0x78, 0x0a, 0x05, 0x50, 0x75, 0x72, 0x67, 0x65, 0x12, 0x27, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x2a, 0x26, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x32, 0xe1, 0x0a, + 0x0a, 0x12, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x12, 0x7e, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x12, 0x9e, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x45, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x22, 0x3a, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, + 0x79, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x9a, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, + 0x49, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x42, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, + 0x79, 0x73, 0x12, 0x9e, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, + 0x12, 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, + 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x5f, + 0x69, 0x64, 0x7d, 0x12, 0xab, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x45, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x22, 0x3a, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, - 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x9a, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, - 0x4b, 0x65, 0x79, 0x73, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x42, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x52, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x1a, 0x47, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, - 0x73, 0x12, 0x9e, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, - 0x2c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, - 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x5f, 0x69, - 0x64, 0x7d, 0x12, 0xab, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, - 0x4b, 0x65, 0x79, 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x52, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x4c, 0x1a, 0x47, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, - 0x2f, 0x7b, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, - 0x12, 0xdd, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x12, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, - 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x6d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x67, 0x5a, 0x65, 0x12, 0x63, 0x2f, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, - 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x75, 0x73, 0x65, 0x72, - 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, - 0x12, 0xa9, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x12, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x7d, 0x3a, 0x01, + 0x2a, 0x12, 0xdd, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x6d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x67, 0x5a, 0x65, 0x12, 0x63, 0x2f, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x75, 0x73, 0x65, + 0x72, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x7d, 0x12, 0xa9, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x32, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x1a, 0x3f, 0x2f, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, + 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xb1, 0x01, + 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x73, 0x12, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x1a, 0x3f, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, - 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xb1, 0x01, 0x0a, - 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x73, 0x12, 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, - 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x12, - 0x3f, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, - 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, - 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, + 0x12, 0x3f, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x73, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, + 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_lorawan_stack_api_organization_services_proto_goTypes = []interface{}{ diff --git a/pkg/ttnpb/packetbrokeragent.pb.go b/pkg/ttnpb/packetbrokeragent.pb.go index 26639675b6..35aa9781d3 100644 --- a/pkg/ttnpb/packetbrokeragent.pb.go +++ b/pkg/ttnpb/packetbrokeragent.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -1729,578 +1728,575 @@ var file_lorawan_stack_api_packetbrokeragent_proto_rawDesc = []byte{ 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, - 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, + 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb6, 0x08, 0x0a, 0x13, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x12, 0x52, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x03, 0x69, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x92, 0x01, - 0x02, 0x10, 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x64, 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, - 0x15, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x5a, 0x0a, 0x11, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, - 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb6, 0x08, 0x0a, 0x13, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x12, 0x52, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x92, + 0x01, 0x02, 0x10, 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x64, 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x52, 0x10, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x73, 0x18, 0x0d, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, 0x74, - 0x65, 0x6e, 0x6e, 0x61, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x08, 0x52, 0x08, - 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x27, 0x0a, - 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x3c, 0x0a, 0x12, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x14, 0x20, 0x03, - 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x10, 0x08, 0x22, 0x04, 0x72, 0x02, - 0x18, 0x40, 0x52, 0x10, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, - 0x6e, 0x49, 0x64, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x1c, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x72, - 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x78, 0x52, 0x61, 0x74, - 0x65, 0x12, 0x34, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x1e, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x06, 0x74, 0x78, 0x52, 0x61, 0x74, 0x65, 0x1a, 0xa7, 0x02, 0x0a, 0x12, 0x47, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x47, - 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x28, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x18, 0x24, 0x32, 0x1f, 0x5e, 0x5b, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x5f, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x09, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0xc7, 0x01, 0x0a, 0x03, 0x65, 0x75, 0x69, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, 0x70, - 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, - 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, - 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x48, - 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, + 0x52, 0x15, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x5a, 0x0a, 0x11, 0x74, 0x65, 0x63, 0x68, 0x6e, + 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x52, 0x10, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x73, 0x18, + 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x6e, + 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x08, 0x52, + 0x08, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x27, + 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x3c, 0x0a, 0x12, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x14, 0x20, + 0x03, 0x28, 0x09, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0x92, 0x01, 0x08, 0x10, 0x08, 0x22, 0x04, 0x72, + 0x02, 0x18, 0x40, 0x52, 0x10, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, + 0x61, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x1c, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x34, 0x0a, 0x07, + 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x78, 0x52, 0x61, + 0x74, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x1e, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x06, 0x74, 0x78, 0x52, 0x61, 0x74, 0x65, 0x1a, 0xa7, 0x02, 0x0a, 0x12, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, + 0x47, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x28, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x18, 0x24, 0x32, 0x1f, 0x5e, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x5f, 0x2d, 0x5d, 0x3f, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x09, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0xc7, 0x01, 0x0a, 0x03, 0x65, 0x75, 0x69, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xb4, 0x01, 0xfa, 0x42, 0x06, 0x7a, 0x04, 0x68, 0x08, + 0x70, 0x01, 0xea, 0xaa, 0x19, 0x82, 0x01, 0x0a, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, - 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, 0x30, - 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, 0x9a, - 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x65, 0x75, - 0x69, 0x22, 0xa6, 0x01, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, - 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, - 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, - 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x5d, 0x0a, 0x21, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x38, 0x0a, 0x0a, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, - 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x54, 0x74, 0x6c, 0x22, 0x7f, 0x0a, 0x1d, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6e, 0x65, 0x74, 0x49, - 0x64, 0x12, 0x47, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, - 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, - 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, 0x24, - 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x18, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x76, 0x41, 0x64, - 0x64, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x45, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, - 0x0d, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x35, - 0x0a, 0x17, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x14, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0xbc, 0x03, 0x0a, 0x13, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x3d, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x50, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x52, 0x0d, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, - 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, - 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x52, - 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x15, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x12, 0x48, 0x0a, 0x11, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x74, 0x65, 0x63, 0x68, - 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x69, - 0x73, 0x74, 0x65, 0x64, 0x22, 0x57, 0x0a, 0x14, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, - 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x3f, 0x0a, 0x08, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x52, 0x08, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0xe5, 0x01, - 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x47, 0x0a, 0x0c, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, + 0x48, 0x45, 0x58, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, + 0x68, 0x61, 0x6c, 0x38, 0x42, 0x79, 0x74, 0x65, 0x73, 0x92, 0x41, 0x21, 0x4a, 0x12, 0x22, 0x37, + 0x30, 0x42, 0x33, 0x44, 0x35, 0x37, 0x45, 0x44, 0x30, 0x30, 0x30, 0x41, 0x42, 0x43, 0x44, 0x22, + 0x9a, 0x02, 0x01, 0x07, 0xa2, 0x02, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x65, + 0x75, 0x69, 0x22, 0xa6, 0x01, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x0c, 0x72, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x66, - 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, - 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x68, 0x6f, 0x6d, 0x65, - 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x5b, 0x0a, 0x1b, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, - 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x18, 0x01, + 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x06, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, - 0x10, 0x01, 0x22, 0xd5, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, - 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6a, 0x6f, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x63, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d, 0x61, 0x63, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x51, - 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x21, 0x50, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x5d, 0x0a, 0x21, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, + 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x38, 0x0a, 0x0a, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x09, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x54, 0x74, 0x6c, 0x22, 0x7f, 0x0a, 0x1d, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x6e, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6e, 0x65, 0x74, + 0x49, 0x64, 0x12, 0x47, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, + 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, + 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, + 0x24, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x18, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x76, 0x41, + 0x64, 0x64, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x45, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x52, 0x0d, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, + 0x35, 0x0a, 0x17, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x14, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0xbc, 0x03, 0x0a, 0x13, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x3d, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x50, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x0d, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, + 0x10, 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x52, 0x0a, 0x16, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x15, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x12, 0x48, 0x0a, 0x11, 0x74, 0x65, 0x63, 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x74, 0x65, 0x63, + 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, + 0x69, 0x73, 0x74, 0x65, 0x64, 0x22, 0x57, 0x0a, 0x14, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, + 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x3f, 0x0a, + 0x08, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x08, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0xe5, + 0x01, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x47, 0x0a, 0x0c, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x0c, + 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, + 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x68, 0x6f, 0x6d, + 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x72, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x5b, 0x0a, 0x1b, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x06, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x00, 0x10, 0x01, 0x22, 0xd5, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, + 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6a, + 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, + 0x63, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d, 0x61, + 0x63, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, + 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x21, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, + 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x63, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, + 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0xf5, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x47, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, + 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, + 0x6b, 0x12, 0x4d, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, + 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, + 0x22, 0x97, 0x03, 0x0a, 0x19, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, + 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x50, + 0x0a, 0x0c, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, + 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x55, 0x0a, 0x0f, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0d, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x47, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, + 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x55, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x52, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x4d, 0x0a, 0x08, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, - 0x12, 0x1f, 0x0a, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, - 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x63, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x10, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0xf5, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, - 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x39, 0x0a, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x47, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, + 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0xd8, 0x01, 0x0a, 0x2a, 0x53, + 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x75, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x57, 0x0a, 0x08, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, + 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0x5b, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6d, + 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, + 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x22, 0x64, 0x0a, 0x1b, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, + 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, + 0x73, 0x12, 0x45, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, + 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0xa8, 0x02, 0x0a, 0x23, 0x53, 0x65, 0x74, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x55, 0x0a, 0x0f, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0d, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, - 0x12, 0x4d, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, - 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x22, - 0x97, 0x03, 0x0a, 0x19, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, - 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x50, 0x0a, - 0x0c, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, - 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x55, 0x0a, 0x0f, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0d, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x47, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, - 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x55, 0x70, 0x6c, 0x69, - 0x6e, 0x6b, 0x52, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x4d, 0x0a, 0x08, 0x64, 0x6f, - 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, + 0x63, 0x79, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x57, 0x0a, 0x08, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, - 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, - 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0xd8, 0x01, 0x0a, 0x2a, 0x53, 0x65, - 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, - 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x57, 0x0a, 0x08, 0x64, - 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, - 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0x5b, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6d, 0x65, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x22, 0x64, 0x0a, 0x1b, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, - 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, - 0x12, 0x45, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, - 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0xa8, 0x02, 0x0a, 0x23, 0x53, 0x65, 0x74, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, - 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x55, 0x0a, 0x0f, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0d, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, - 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x06, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x57, 0x0a, 0x08, 0x64, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, - 0x6e, 0x6b, 0x22, 0xc5, 0x02, 0x0a, 0x1d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, + 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x22, 0xc5, 0x02, 0x0a, 0x1d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, + 0x6f, 0x6b, 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x5f, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x61, 0x6e, + 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x23, + 0x0a, 0x0d, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x66, 0x69, + 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, 0x21, 0x0a, 0x0c, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0d, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x21, + 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x73, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, + 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xb0, 0x01, 0x0a, 0x24, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x4d, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, + 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x89, + 0x01, 0x0a, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, + 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x57, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x5f, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x61, 0x6e, 0x74, - 0x65, 0x6e, 0x6e, 0x61, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, - 0x0d, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x66, 0x69, 0x6e, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, - 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x21, 0x0a, - 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x73, - 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0xb0, 0x01, 0x0a, 0x24, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4d, - 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x89, 0x01, - 0x0a, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, - 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, - 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x57, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, - 0x65, 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x76, - 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0xea, 0x01, 0x0a, 0x1f, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, - 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, - 0x77, 0x69, 0x74, 0x68, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x12, 0x35, 0x0a, 0x12, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x10, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x22, 0xbe, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x48, 0x6f, 0x6d, 0x65, 0x4e, + 0x6c, 0x69, 0x74, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, + 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0xea, 0x01, 0x0a, 0x1f, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, - 0x67, 0x65, 0x12, 0x35, 0x0a, 0x12, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x69, + 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x11, 0x77, 0x69, 0x74, 0x68, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x12, 0x35, 0x0a, 0x12, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x10, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, - 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, - 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x55, 0x0a, 0x0f, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x22, 0xbe, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x48, 0x6f, 0x6d, 0x65, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x12, 0x35, 0x0a, 0x12, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x10, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x49, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, + 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, + 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, + 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x55, 0x0a, 0x0f, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0d, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x32, 0xcc, 0x01, 0x0a, 0x05, 0x47, 0x73, 0x50, 0x62, 0x61, 0x12, 0x4d, 0x0a, 0x0d, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x24, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x74, 0x0a, 0x0d, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x30, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, + 0x72, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x32, 0x53, 0x0a, 0x05, 0x4e, 0x73, 0x50, 0x62, 0x61, 0x12, 0x4a, 0x0a, 0x0f, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x1f, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x32, 0x9f, 0x16, 0x0a, 0x03, 0x50, 0x62, 0x61, 0x12, 0x56, 0x0a, + 0x07, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x70, 0x62, 0x61, + 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x92, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x23, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x1a, 0x11, 0x2f, 0x70, + 0x62, 0x61, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, + 0x01, 0x2a, 0x5a, 0x16, 0x22, 0x11, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x01, 0x2a, 0x12, 0x57, 0x0a, 0x0a, 0x44, 0x65, + 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, + 0x2a, 0x11, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x9b, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, + 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x30, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x70, + 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, + 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x12, 0xd2, 0x01, 0x0a, 0x22, 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x69, + 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x58, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x52, 0x1a, 0x23, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, + 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x01, 0x2a, 0x5a, 0x28, 0x22, 0x23, + 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x84, 0x01, 0x0a, 0x25, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x2a, 0x23, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, + 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0xa9, 0x01, + 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, + 0x12, 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, + 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x69, 0x65, 0x73, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x70, + 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, + 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0xd9, 0x01, 0x0a, 0x1b, 0x47, 0x65, + 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x6f, 0x75, 0x74, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x1a, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0d, 0x68, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, - 0x32, 0xcc, 0x01, 0x0a, 0x05, 0x47, 0x73, 0x50, 0x62, 0x61, 0x12, 0x4d, 0x0a, 0x0d, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x24, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x74, 0x0a, 0x0d, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x30, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, - 0x53, 0x0a, 0x05, 0x4e, 0x73, 0x50, 0x62, 0x61, 0x12, 0x4a, 0x0a, 0x0f, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x1f, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x32, 0x9f, 0x16, 0x0a, 0x03, 0x50, 0x62, 0x61, 0x12, 0x56, 0x0a, 0x07, - 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x49, 0x6e, 0x66, - 0x6f, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x70, 0x62, 0x61, 0x2f, - 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x92, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x12, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x1a, 0x11, 0x2f, 0x70, 0x62, - 0x61, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x01, - 0x2a, 0x5a, 0x16, 0x22, 0x11, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x01, 0x2a, 0x12, 0x57, 0x0a, 0x0a, 0x44, 0x65, 0x72, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x2a, - 0x11, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x9b, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, - 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x1a, 0x30, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x70, 0x62, + 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x22, 0x60, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5a, 0x12, 0x24, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x12, 0xd2, 0x01, 0x0a, 0x22, 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, - 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, - 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x58, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x52, 0x1a, 0x23, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x7d, 0x5a, 0x32, 0x12, 0x30, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, - 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x01, 0x2a, 0x5a, 0x28, 0x22, 0x23, 0x2f, + 0x2f, 0x7b, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x96, 0x03, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6d, + 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0xa9, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa2, 0x02, 0x1a, 0x34, 0x2f, 0x70, + 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, + 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6d, 0x65, 0x5f, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x39, 0x22, 0x34, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, + 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, + 0x5a, 0x55, 0x1a, 0x50, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, + 0x7b, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, + 0x2e, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x55, 0x22, 0x50, 0x2f, 0x70, 0x62, 0x61, 0x2f, + 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x7b, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, + 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xc9, + 0x01, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x60, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5a, + 0x2a, 0x24, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x6e, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x5a, 0x32, 0x2a, 0x30, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, + 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, + 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xaf, 0x01, 0x0a, 0x26, 0x47, + 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x34, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x70, 0x62, + 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, + 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0xf2, 0x01, 0x0a, + 0x26, 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, + 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, + 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6a, 0x1a, 0x2f, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, + 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x01, 0x2a, 0x5a, 0x34, 0x22, 0x2f, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x84, 0x01, 0x0a, 0x25, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, + 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x01, + 0x2a, 0x12, 0x94, 0x01, 0x0a, 0x29, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6d, 0x65, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, - 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x2a, 0x23, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, - 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x69, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0xa9, 0x01, 0x0a, - 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, - 0x35, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, - 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x69, 0x65, 0x73, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x70, 0x62, - 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0xd9, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, - 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x6f, 0x75, 0x74, 0x69, - 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x1a, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, - 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x22, 0x60, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5a, 0x12, 0x24, 0x2f, 0x70, 0x62, 0x61, - 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, - 0x5a, 0x32, 0x12, 0x30, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, - 0x7b, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x96, 0x03, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x12, 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, - 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x22, 0xa9, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa2, 0x02, 0x1a, 0x34, 0x2f, 0x70, 0x62, - 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x39, 0x22, 0x34, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, - 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, - 0x55, 0x1a, 0x50, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, - 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x2e, - 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x55, 0x22, 0x50, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, - 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, - 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x2e, - 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xc9, 0x01, - 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x12, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, + 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x7c, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, + 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x48, + 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x33, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x48, 0x6f, 0x6d, + 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x60, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5a, 0x2a, - 0x24, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x5a, 0x32, 0x2a, 0x30, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, - 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x74, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xaf, 0x01, 0x0a, 0x26, 0x47, 0x65, - 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x34, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x70, 0x62, 0x61, - 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0xf2, 0x01, 0x0a, 0x26, - 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x70, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6a, 0x1a, 0x2f, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, - 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x01, 0x2a, 0x5a, 0x34, 0x22, 0x2f, 0x2f, 0x70, - 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, - 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x01, 0x2a, - 0x12, 0x94, 0x01, 0x0a, 0x29, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6d, 0x65, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x37, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, - 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x7c, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x2f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, + 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x12, 0xa2, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x69, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0x15, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x70, 0x62, 0x61, 0x2f, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, - 0x6d, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x33, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x48, 0x6f, 0x6d, 0x65, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, - 0x70, 0x62, 0x61, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x73, 0x12, 0xa2, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, - 0x65, 0x73, 0x12, 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, - 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, - 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x69, 0x65, 0x73, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x70, - 0x62, 0x61, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, - 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, + 0x70, 0x62, 0x61, 0x2f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/picture.pb.go b/pkg/ttnpb/picture.pb.go index ba19a27413..62c4051d53 100644 --- a/pkg/ttnpb/picture.pb.go +++ b/pkg/ttnpb/picture.pb.go @@ -22,7 +22,6 @@ package ttnpb import ( _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -162,32 +161,28 @@ var file_lorawan_stack_api_picture_proto_rawDesc = []byte{ 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, - 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0x9c, 0x02, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, - 0x3c, 0x0a, 0x08, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, - 0x64, 0x65, 0x64, 0x52, 0x08, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x12, 0x47, 0x0a, - 0x05, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, - 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x9a, 0x01, 0x07, 0x2a, 0x05, 0x72, 0x03, 0x90, 0x01, 0x01, 0x52, - 0x05, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x1a, 0x50, 0x0a, 0x08, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, - 0x65, 0x64, 0x12, 0x24, 0x0a, 0x09, 0x6d, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x20, 0x52, 0x08, - 0x6d, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x7a, 0x05, 0x18, 0x80, 0x80, - 0x80, 0x04, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x38, 0x0a, 0x0a, 0x53, 0x69, 0x7a, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9c, 0x02, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, + 0x12, 0x3c, 0x0a, 0x08, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x62, 0x65, + 0x64, 0x64, 0x65, 0x64, 0x52, 0x08, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x12, 0x47, + 0x0a, 0x05, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, + 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x9a, 0x01, 0x07, 0x2a, 0x05, 0x72, 0x03, 0x90, 0x01, 0x01, + 0x52, 0x05, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x1a, 0x50, 0x0a, 0x08, 0x45, 0x6d, 0x62, 0x65, 0x64, + 0x64, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x09, 0x6d, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x20, 0x52, + 0x08, 0x6d, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x7a, 0x05, 0x18, 0x80, + 0x80, 0x80, 0x04, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x38, 0x0a, 0x0a, 0x53, 0x69, 0x7a, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, + 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/qrcodegenerator.pb.go b/pkg/ttnpb/qrcodegenerator.pb.go index 0a0250649c..cc717cbd3c 100644 --- a/pkg/ttnpb/qrcodegenerator.pb.go +++ b/pkg/ttnpb/qrcodegenerator.pb.go @@ -22,7 +22,6 @@ package ttnpb import ( _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -495,133 +494,130 @@ var file_lorawan_stack_api_qrcodegenerator_proto_rawDesc = []byte{ 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, - 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x92, 0x01, - 0x0a, 0x0c, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1b, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, - 0x73, 0x6b, 0x22, 0xdd, 0x01, 0x0a, 0x0d, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x73, 0x12, 0x72, 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x2c, 0xfa, 0x42, 0x29, 0x9a, 0x01, 0x26, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, - 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, - 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, - 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x1a, 0x58, 0x0a, 0x0c, 0x46, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x51, 0x52, 0x43, 0x6f, 0x64, - 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x5e, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x09, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, - 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x49, 0x64, 0x22, 0xaa, 0x02, 0x0a, 0x1e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, - 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, - 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, - 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, - 0x24, 0x52, 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0a, 0x65, - 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x4a, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x1a, 0x32, 0x0a, 0x05, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, - 0xe8, 0x07, 0x28, 0x0a, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, - 0x5b, 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2d, 0x0a, - 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, - 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x8b, 0x01, 0x0a, - 0x1b, 0x50, 0x61, 0x72, 0x73, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, - 0x52, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, - 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x08, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x07, 0x71, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x7a, 0x05, 0x10, 0x0a, 0x18, - 0x80, 0x08, 0x52, 0x06, 0x71, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x1c, 0x50, - 0x61, 0x72, 0x73, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, 0x43, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x5f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x11, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x32, 0xce, 0x04, 0x0a, 0x18, - 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x84, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, - 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x52, 0x43, 0x6f, 0x64, - 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x31, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x71, 0x72, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x2f, - 0x65, 0x6e, 0x64, 0x2d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, - 0x6b, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, + 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x92, + 0x01, 0x0a, 0x0c, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, + 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x18, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x22, 0xdd, 0x01, 0x0a, 0x0d, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x72, 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x73, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, - 0x71, 0x72, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x65, 0x6e, 0x64, 0x2d, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x84, 0x01, 0x0a, - 0x08, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, 0x43, 0x6f, - 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x71, 0x72, 0x2d, 0x63, - 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x65, 0x6e, 0x64, 0x2d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x3a, 0x01, 0x2a, 0x12, 0xb6, 0x01, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x73, 0x65, 0x12, 0x2b, 0x2e, + 0x72, 0x6d, 0x61, 0x74, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x42, 0x2c, 0xfa, 0x42, 0x29, 0x9a, 0x01, 0x26, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, + 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, + 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, + 0x52, 0x07, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x1a, 0x58, 0x0a, 0x0c, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x51, 0x52, 0x43, 0x6f, + 0x64, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x5e, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, + 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x52, 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x49, 0x64, 0x22, 0xaa, 0x02, 0x0a, 0x1e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x24, 0x72, 0x22, + 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, + 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, + 0x7d, 0x24, 0x52, 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0a, + 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x4a, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x34, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x1a, 0x32, 0x0a, 0x05, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, + 0x18, 0xe8, 0x07, 0x28, 0x0a, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x22, 0x5b, 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x51, 0x52, 0x43, 0x6f, + 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, + 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2d, + 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, - 0x61, 0x72, 0x73, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, 0x43, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x72, 0x73, - 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, - 0x22, 0x1a, 0x2f, 0x71, 0x72, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x2f, 0x65, 0x6e, 0x64, 0x2d, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x3a, 0x01, 0x2a, 0x5a, - 0x2b, 0x22, 0x26, 0x2f, 0x71, 0x72, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x2f, 0x65, 0x6e, 0x64, 0x2d, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x3a, 0x01, 0x2a, 0x42, 0x35, 0x5a, 0x2f, - 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, - 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x8b, 0x01, + 0x0a, 0x1b, 0x50, 0x61, 0x72, 0x73, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, + 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x2a, 0xfa, 0x42, 0x27, 0x72, 0x25, 0x18, 0x24, 0x32, 0x21, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x7c, 0x5e, 0x24, 0x52, 0x08, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x07, 0x71, 0x72, 0x5f, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x7a, 0x05, 0x10, 0x0a, + 0x18, 0x80, 0x08, 0x52, 0x06, 0x71, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x1c, + 0x50, 0x61, 0x72, 0x73, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x13, 0x65, 0x6e, 0x64, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x11, 0x65, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x32, 0xce, 0x04, 0x0a, + 0x18, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x84, 0x01, 0x0a, 0x09, 0x47, 0x65, + 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x52, 0x43, 0x6f, + 0x64, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x31, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x71, 0x72, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x73, + 0x2f, 0x65, 0x6e, 0x64, 0x2d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x7d, + 0x12, 0x6b, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, + 0x2f, 0x71, 0x72, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x65, 0x6e, 0x64, 0x2d, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x84, 0x01, + 0x0a, 0x08, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, 0x43, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x71, 0x72, 0x2d, + 0x63, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x65, 0x6e, 0x64, 0x2d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xb6, 0x01, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x73, 0x65, 0x12, 0x2b, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x50, 0x61, 0x72, 0x73, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x61, 0x72, + 0x73, 0x65, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x51, 0x52, 0x43, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x4c, 0x22, 0x1a, 0x2f, 0x71, 0x72, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x2f, 0x65, 0x6e, 0x64, 0x2d, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x3a, 0x01, 0x2a, + 0x5a, 0x2b, 0x22, 0x26, 0x2f, 0x71, 0x72, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x2f, 0x65, 0x6e, 0x64, + 0x2d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x3a, 0x01, 0x2a, 0x42, 0x31, 0x5a, + 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/regional.pb.go b/pkg/ttnpb/regional.pb.go index 0ac7f8fbc7..fb82b2418e 100644 --- a/pkg/ttnpb/regional.pb.go +++ b/pkg/ttnpb/regional.pb.go @@ -21,7 +21,6 @@ package ttnpb import ( - _ "github.com/gogo/protobuf/gogoproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" durationpb "google.golang.org/protobuf/types/known/durationpb" @@ -387,76 +386,73 @@ var file_lorawan_stack_api_regional_proto_rawDesc = []byte{ 0x0a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, - 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, - 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xa6, 0x07, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x46, 0x0a, 0x08, 0x63, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, + 0x76, 0x33, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xa6, 0x07, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x46, 0x0a, 0x08, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, + 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x73, 0x12, 0x6a, 0x0a, 0x15, 0x6c, 0x6f, 0x72, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, + 0x61, 0x72, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x36, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x52, 0x61, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, + 0x72, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x13, 0x6c, 0x6f, 0x72, 0x61, 0x53, + 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x4e, + 0x0a, 0x0b, 0x66, 0x73, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x46, 0x53, 0x4b, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x52, 0x0a, 0x66, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x45, + 0x0a, 0x03, 0x6c, 0x62, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x73, 0x12, 0x6a, 0x0a, 0x15, 0x6c, 0x6f, 0x72, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, - 0x72, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x36, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x52, 0x61, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, - 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x13, 0x6c, 0x6f, 0x72, 0x61, 0x53, 0x74, - 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x4e, 0x0a, - 0x0b, 0x66, 0x73, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x46, 0x53, 0x4b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x52, 0x0a, 0x66, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x45, 0x0a, - 0x03, 0x6c, 0x62, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x63, - 0x65, 0x6e, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, - 0x42, 0x54, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x03, 0x6c, 0x62, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x6f, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, 0x74, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x52, 0x08, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x34, 0x0a, - 0x06, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x61, 0x64, 0x69, 0x6f, 0x52, 0x06, 0x72, 0x61, 0x64, - 0x69, 0x6f, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6c, 0x6f, 0x63, 0x6b, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x3d, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x72, 0x61, 0x64, 0x69, 0x6f, 0x1a, 0x92, 0x01, 0x0a, 0x13, 0x4c, 0x6f, 0x52, 0x61, 0x53, 0x74, - 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1c, 0x0a, - 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x72, - 0x61, 0x64, 0x69, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x72, 0x61, 0x64, 0x69, - 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, - 0x29, 0x0a, 0x10, 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x73, 0x70, 0x72, 0x65, 0x61, - 0x64, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0x40, 0x0a, 0x0a, 0x46, 0x53, - 0x4b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x1a, 0x8c, 0x01, 0x0a, - 0x10, 0x4c, 0x42, 0x54, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x73, 0x73, 0x69, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x72, 0x73, 0x73, 0x69, 0x54, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x73, 0x73, 0x69, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x72, 0x73, 0x73, 0x69, 0x4f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x08, 0x73, 0x63, 0x61, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x35, 0x5a, 0x2f, 0x67, - 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, - 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x4c, 0x42, 0x54, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x03, 0x6c, 0x62, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, + 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x6e, + 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x08, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x34, + 0x0a, 0x06, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x52, 0x61, 0x64, 0x69, 0x6f, 0x52, 0x06, 0x72, 0x61, + 0x64, 0x69, 0x6f, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x3d, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x1a, 0x92, 0x01, 0x0a, 0x13, 0x4c, 0x6f, 0x52, 0x61, 0x53, + 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1c, + 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x72, 0x61, 0x64, 0x69, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x72, 0x61, 0x64, + 0x69, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, + 0x12, 0x29, 0x0a, 0x10, 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, + 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x73, 0x70, 0x72, 0x65, + 0x61, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0x40, 0x0a, 0x0a, 0x46, + 0x53, 0x4b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x64, 0x69, 0x6f, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x1a, 0x8c, 0x01, + 0x0a, 0x10, 0x4c, 0x42, 0x54, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x73, 0x73, 0x69, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x72, 0x73, 0x73, 0x69, 0x54, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x73, 0x73, 0x69, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x72, 0x73, 0x73, 0x69, 0x4f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x63, 0x61, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x31, 0x5a, 0x2f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/rights.pb.go b/pkg/ttnpb/rights.pb.go index 96e441ca11..fd021a2037 100644 --- a/pkg/ttnpb/rights.pb.go +++ b/pkg/ttnpb/rights.pb.go @@ -24,7 +24,6 @@ import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/TheThingsIndustries/protoc-gen-go-json/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" @@ -710,213 +709,209 @@ var file_lorawan_stack_api_rights_proto_rawDesc = []byte{ 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, - 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, - 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, - 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0x46, 0x0a, 0x06, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x3c, 0x0a, - 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, - 0x69, 0x67, 0x68, 0x74, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x82, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x22, 0xca, 0x02, 0x0a, 0x06, - 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x0d, 0xfa, 0x42, - 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, - 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, - 0x02, 0x40, 0x01, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x3a, 0x08, - 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x3c, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x4b, - 0x65, 0x79, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x61, - 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x22, 0xaf, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6c, 0x6c, 0x61, - 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x49, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, 0x69, - 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x92, 0x01, - 0x07, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, - 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0xa1, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, - 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x72, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, - 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x53, 0x0a, 0x0d, - 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x42, 0x0a, - 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x73, 0x2a, 0xdf, 0x10, 0x0a, 0x05, 0x52, 0x69, 0x67, 0x68, 0x74, 0x12, 0x11, 0x0a, 0x0d, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x00, 0x12, 0x13, - 0x0a, 0x0f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x46, - 0x4f, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, - 0x52, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x41, 0x53, 0x49, 0x43, - 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, - 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x4b, 0x45, - 0x59, 0x53, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, - 0x45, 0x52, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x52, - 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, - 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x05, 0x12, 0x20, - 0x0a, 0x1c, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, 0x50, 0x50, - 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x06, - 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, - 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, - 0x54, 0x45, 0x10, 0x07, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, - 0x45, 0x52, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, - 0x10, 0x08, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, - 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, - 0x10, 0x09, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, - 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x0a, 0x12, - 0x1d, 0x0a, 0x19, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x43, 0x4c, - 0x49, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x0b, 0x12, 0x21, - 0x0a, 0x1d, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4f, 0x52, 0x47, - 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, - 0x0c, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, - 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x43, 0x52, - 0x45, 0x41, 0x54, 0x45, 0x10, 0x0d, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, - 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x3b, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x49, 0x47, - 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x0e, 0x12, 0x1a, 0x0a, - 0x16, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x0f, 0x12, 0x24, 0x0a, 0x20, 0x52, 0x49, 0x47, + 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x43, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, + 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x6a, 0x73, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x46, 0x0a, 0x06, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x3c, + 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x82, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x22, 0xca, 0x02, 0x0a, + 0x06, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x0d, 0xfa, + 0x42, 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, + 0x01, 0x02, 0x40, 0x01, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x3a, + 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x3c, 0x0a, 0x07, 0x41, 0x50, 0x49, + 0x4b, 0x65, 0x79, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x07, + 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x73, 0x22, 0xaf, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6c, 0x6c, + 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x49, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x03, + 0x69, 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x92, + 0x01, 0x07, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, + 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0xa1, 0x01, 0x0a, 0x17, 0x47, 0x65, + 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, + 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x53, 0x0a, + 0x0d, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x42, + 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x73, 0x2a, 0xdf, 0x10, 0x0a, 0x05, 0x52, 0x69, 0x67, 0x68, 0x74, 0x12, 0x11, 0x0a, 0x0d, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x00, 0x12, + 0x13, 0x0a, 0x0f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x49, 0x4e, + 0x46, 0x4f, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, + 0x45, 0x52, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x41, 0x53, 0x49, + 0x43, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, + 0x52, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x4b, + 0x45, 0x59, 0x53, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, + 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, + 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x4f, + 0x52, 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x05, 0x12, + 0x20, 0x0a, 0x1c, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, 0x50, + 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, + 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, + 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x43, 0x52, 0x45, + 0x41, 0x54, 0x45, 0x10, 0x07, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, + 0x53, 0x45, 0x52, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x53, 0x5f, 0x4c, 0x49, 0x53, + 0x54, 0x10, 0x08, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, + 0x52, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, + 0x45, 0x10, 0x09, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, + 0x52, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x0a, + 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x43, + 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x0b, 0x12, + 0x21, 0x0a, 0x1d, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4f, 0x52, + 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, + 0x10, 0x0c, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, + 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x43, + 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x0d, 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x49, 0x47, 0x48, 0x54, + 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x3b, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x49, + 0x47, 0x48, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x0e, 0x12, 0x1a, + 0x0a, 0x16, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x0f, 0x12, 0x24, 0x0a, 0x20, 0x52, 0x49, + 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x41, 0x53, 0x49, 0x43, 0x10, 0x10, + 0x12, 0x27, 0x0a, 0x23, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x41, + 0x50, 0x49, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x11, 0x12, 0x2c, 0x0a, 0x28, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, - 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x41, 0x53, 0x49, 0x43, 0x10, 0x10, 0x12, - 0x27, 0x0a, 0x23, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x41, 0x50, - 0x49, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x11, 0x12, 0x2c, 0x0a, 0x28, 0x52, 0x49, 0x47, 0x48, - 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, - 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, - 0x54, 0x4f, 0x52, 0x53, 0x10, 0x12, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, - 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x54, - 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45, 0x53, 0x10, 0x38, 0x12, - 0x1c, 0x0a, 0x18, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x13, 0x12, 0x22, 0x0a, - 0x1e, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, - 0x14, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, - 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x53, 0x5f, 0x57, - 0x52, 0x49, 0x54, 0x45, 0x10, 0x15, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, - 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x49, - 0x43, 0x45, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x16, 0x12, - 0x28, 0x0a, 0x24, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x53, 0x5f, 0x57, 0x52, 0x49, - 0x54, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x17, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x49, 0x47, - 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, - 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x18, 0x12, 0x26, 0x0a, - 0x22, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f, 0x55, 0x50, 0x5f, 0x57, 0x52, - 0x49, 0x54, 0x45, 0x10, 0x19, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, - 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, - 0x49, 0x43, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x1a, 0x12, - 0x1a, 0x0a, 0x16, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x1b, 0x12, 0x19, 0x0a, 0x15, 0x52, - 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x1c, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, - 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x1d, 0x12, 0x15, 0x0a, 0x11, - 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x49, 0x4e, 0x46, - 0x4f, 0x10, 0x3c, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x43, 0x4c, 0x49, - 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x41, 0x53, - 0x49, 0x43, 0x10, 0x3d, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x43, 0x4c, - 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x43, 0x4f, - 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x53, 0x10, 0x3e, 0x12, 0x17, 0x0a, - 0x13, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, - 0x4c, 0x45, 0x54, 0x45, 0x10, 0x3f, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, - 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x1e, 0x12, 0x20, - 0x0a, 0x1c, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, - 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x41, 0x53, 0x49, 0x43, 0x10, 0x1f, - 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, - 0x59, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x4b, - 0x45, 0x59, 0x53, 0x10, 0x20, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x47, - 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, - 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x53, 0x10, 0x21, 0x12, - 0x18, 0x0a, 0x14, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, - 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x22, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x49, 0x47, - 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, - 0x49, 0x43, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x23, 0x12, 0x24, 0x0a, 0x20, 0x52, 0x49, 0x47, - 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, - 0x49, 0x43, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x24, 0x12, - 0x16, 0x0a, 0x12, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, - 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x25, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x49, 0x47, 0x48, 0x54, - 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x52, 0x45, 0x41, 0x44, 0x10, 0x26, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, - 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x27, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x49, 0x47, 0x48, 0x54, - 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x53, - 0x45, 0x43, 0x52, 0x45, 0x54, 0x53, 0x10, 0x39, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x49, 0x47, 0x48, - 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x53, - 0x45, 0x43, 0x52, 0x45, 0x54, 0x53, 0x10, 0x3a, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x49, 0x47, 0x48, - 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x28, 0x12, - 0x1b, 0x0a, 0x17, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x29, 0x12, 0x25, 0x0a, 0x21, + 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, + 0x41, 0x54, 0x4f, 0x52, 0x53, 0x10, 0x12, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x49, 0x47, 0x48, 0x54, + 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, + 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45, 0x53, 0x10, 0x38, + 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x13, 0x12, 0x22, + 0x0a, 0x1e, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, + 0x10, 0x14, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, + 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x53, 0x5f, + 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x15, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x49, 0x47, 0x48, 0x54, + 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, + 0x49, 0x43, 0x45, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x16, + 0x12, 0x28, 0x0a, 0x24, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x53, 0x5f, 0x57, 0x52, + 0x49, 0x54, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x17, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x49, + 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x18, 0x12, 0x26, + 0x0a, 0x22, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f, 0x55, 0x50, 0x5f, 0x57, + 0x52, 0x49, 0x54, 0x45, 0x10, 0x19, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, + 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x46, + 0x46, 0x49, 0x43, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x1a, + 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x1b, 0x12, 0x19, 0x0a, 0x15, + 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x1c, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x49, 0x47, 0x48, 0x54, + 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x1d, 0x12, 0x15, 0x0a, + 0x11, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x49, 0x4e, + 0x46, 0x4f, 0x10, 0x3c, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x43, 0x4c, + 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x41, + 0x53, 0x49, 0x43, 0x10, 0x3d, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x43, + 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x43, + 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x53, 0x10, 0x3e, 0x12, 0x17, + 0x0a, 0x13, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x44, + 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x3f, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x49, 0x47, 0x48, 0x54, + 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x1e, 0x12, + 0x20, 0x0a, 0x1c, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, + 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x41, 0x53, 0x49, 0x43, 0x10, + 0x1f, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, + 0x41, 0x59, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x4b, 0x45, 0x59, 0x53, 0x10, 0x20, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, + 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, + 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x53, 0x10, 0x21, + 0x12, 0x18, 0x0a, 0x14, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, + 0x59, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x22, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x49, + 0x47, 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x54, 0x52, 0x41, 0x46, + 0x46, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x23, 0x12, 0x24, 0x0a, 0x20, 0x52, 0x49, + 0x47, 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x54, 0x52, 0x41, 0x46, + 0x46, 0x49, 0x43, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x24, + 0x12, 0x16, 0x0a, 0x12, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, + 0x59, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x25, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x49, 0x47, 0x48, + 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x26, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x49, 0x47, 0x48, 0x54, + 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x27, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x49, 0x47, 0x48, + 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, + 0x53, 0x45, 0x43, 0x52, 0x45, 0x54, 0x53, 0x10, 0x39, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x49, 0x47, + 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, + 0x53, 0x45, 0x43, 0x52, 0x45, 0x54, 0x53, 0x10, 0x3a, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x49, 0x47, + 0x48, 0x54, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x28, + 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, + 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x29, 0x12, 0x25, 0x0a, + 0x21, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x41, 0x53, + 0x49, 0x43, 0x10, 0x2a, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, + 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, + 0x4e, 0x47, 0x53, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x2b, 0x12, 0x27, + 0x0a, 0x23, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x4d, 0x45, + 0x4d, 0x42, 0x45, 0x52, 0x53, 0x10, 0x2c, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x49, 0x47, 0x48, 0x54, + 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, + 0x4c, 0x45, 0x54, 0x45, 0x10, 0x2d, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, + 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x50, + 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x2e, + 0x12, 0x2a, 0x0a, 0x26, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, + 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x2f, 0x12, 0x24, 0x0a, 0x20, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x41, 0x53, 0x49, - 0x43, 0x10, 0x2a, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, - 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, - 0x47, 0x53, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x2b, 0x12, 0x27, 0x0a, - 0x23, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x4d, 0x45, 0x4d, - 0x42, 0x45, 0x52, 0x53, 0x10, 0x2c, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, - 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, - 0x45, 0x54, 0x45, 0x10, 0x2d, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, - 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x50, 0x4c, - 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x2e, 0x12, - 0x2a, 0x0a, 0x26, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x2f, 0x12, 0x24, 0x0a, 0x20, 0x52, - 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, - 0x30, 0x12, 0x26, 0x0a, 0x22, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, - 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x53, - 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x31, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x49, 0x47, - 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x32, 0x12, 0x25, - 0x0a, 0x21, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x52, 0x45, - 0x41, 0x54, 0x45, 0x10, 0x33, 0x12, 0x2a, 0x0a, 0x26, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, - 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x44, 0x5f, - 0x41, 0x53, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, - 0x34, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, - 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x35, 0x12, 0x16, 0x0a, - 0x12, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x56, 0x49, - 0x54, 0x45, 0x53, 0x10, 0x36, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, - 0x4c, 0x4c, 0x10, 0x37, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x18, 0x01, 0x2a, 0x05, 0x52, 0x49, - 0x47, 0x48, 0x54, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x4f, 0x4e, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, + 0x10, 0x30, 0x12, 0x26, 0x0a, 0x22, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, + 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, + 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x31, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x49, + 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x32, 0x12, + 0x25, 0x0a, 0x21, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x52, + 0x45, 0x41, 0x54, 0x45, 0x10, 0x33, 0x12, 0x2a, 0x0a, 0x26, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, + 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x44, + 0x5f, 0x41, 0x53, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, + 0x10, 0x34, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4f, 0x52, 0x47, 0x41, + 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x35, 0x12, 0x16, + 0x0a, 0x12, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x56, + 0x49, 0x54, 0x45, 0x53, 0x10, 0x36, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, + 0x41, 0x4c, 0x4c, 0x10, 0x37, 0x1a, 0x0d, 0xea, 0xaa, 0x19, 0x09, 0x18, 0x01, 0x2a, 0x05, 0x52, + 0x49, 0x47, 0x48, 0x54, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, + 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/search_services.pb.go b/pkg/ttnpb/search_services.pb.go index e09173d1d2..1c09b71d51 100644 --- a/pkg/ttnpb/search_services.pb.go +++ b/pkg/ttnpb/search_services.pb.go @@ -23,7 +23,6 @@ package ttnpb import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -1052,189 +1051,49 @@ var file_lorawan_stack_api_search_services_proto_rawDesc = []byte{ 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, - 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, - 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x05, 0x0a, 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0a, - 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, - 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, - 0x13, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x73, 0x12, 0xa5, 0x01, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x40, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x9a, 0x01, 0x2e, 0x10, 0x0a, 0x22, 0x24, 0x72, - 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, - 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, - 0x2c, 0x7d, 0x24, 0x2a, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x11, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x12, 0x39, 0x0a, 0x0a, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x64, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4e, 0xfa, 0x42, 0x4b, 0x72, 0x49, 0x52, 0x00, 0x52, - 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x52, - 0x0f, 0x2d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x1a, 0x44, 0x0a, 0x16, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x05, 0x10, - 0x06, 0x22, 0xdf, 0x05, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, - 0x18, 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x64, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0a, 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x18, 0x32, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x13, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0xa0, 0x01, - 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x9a, 0x01, 0x2e, 0x10, - 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, - 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, - 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x11, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x12, 0x3c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, 0x01, 0x09, 0x18, 0x01, - 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x39, - 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x5a, 0x0a, 0x05, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x44, 0xfa, 0x42, 0x41, 0x72, 0x3f, 0x52, - 0x00, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x52, 0x0a, 0x2d, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, - 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x1a, 0x44, 0x0a, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, - 0x00, 0x10, 0x01, 0x22, 0xec, 0x05, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, - 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x0b, - 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0a, 0x69, 0x64, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x13, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, - 0x12, 0xa1, 0x01, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, 0x31, - 0x9a, 0x01, 0x2e, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, - 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, - 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x04, 0x72, 0x02, 0x18, - 0x32, 0x52, 0x11, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x12, 0x2a, 0x0a, 0x0c, 0x65, 0x75, 0x69, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x18, 0x10, 0x52, 0x0b, 0x65, 0x75, 0x69, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, - 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, - 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x77, 0x0a, 0x05, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x61, 0xfa, 0x42, 0x5e, 0x72, - 0x5c, 0x52, 0x00, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x52, - 0x0b, 0x2d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x0b, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x0c, 0x2d, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, - 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x64, 0x1a, 0x44, 0x0a, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, - 0x10, 0x01, 0x22, 0xbf, 0x05, 0x0a, 0x1a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0a, - 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, - 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, - 0x13, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x73, 0x12, 0xa6, 0x01, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x41, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x44, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x64, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x65, + 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x05, 0x0a, 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, + 0x0a, 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, + 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0c, 0x6e, 0x61, 0x6d, + 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, + 0x52, 0x13, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0xa5, 0x01, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x9a, 0x01, 0x2e, 0x10, 0x0a, 0x22, 0x24, @@ -1245,25 +1104,25 @@ var file_lorawan_stack_api_search_services_proto_rawDesc = []byte{ 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x66, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50, 0xfa, 0x42, 0x4d, 0x72, 0x4b, 0x52, 0x00, - 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x52, 0x10, 0x2d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, - 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, - 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x1a, 0x44, - 0x0a, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x4a, 0x04, - 0x08, 0x05, 0x10, 0x06, 0x22, 0xa8, 0x06, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, - 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x71, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x64, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4e, 0xfa, 0x42, 0x4b, 0x72, 0x49, 0x52, 0x00, + 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x52, 0x0f, 0x2d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, + 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x1a, 0x44, 0x0a, 0x16, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x05, + 0x10, 0x06, 0x22, 0xdf, 0x05, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, @@ -1274,34 +1133,120 @@ var file_lorawan_stack_api_search_services_proto_rawDesc = []byte{ 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x13, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x9e, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x74, 0x74, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x9a, 0x01, 0x2e, 0x10, 0x0a, - 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, - 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, - 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x11, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x12, - 0x3c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, + 0x72, 0x63, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x9a, 0x01, 0x2e, + 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, + 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x11, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x12, 0x3c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, 0x01, 0x09, 0x18, + 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, + 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x5a, 0x0a, 0x05, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x44, 0xfa, 0x42, 0x41, 0x72, 0x3f, + 0x52, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x52, 0x0a, 0x2d, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, + 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, + 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x1a, 0x44, 0x0a, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, + 0x08, 0x00, 0x10, 0x01, 0x22, 0xec, 0x05, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, + 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x28, 0x0a, + 0x0b, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0a, 0x69, 0x64, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x13, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x73, 0x12, 0xa1, 0x01, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, 0x01, 0x09, 0x18, 0x01, 0x22, - 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, - 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0xa6, 0x01, 0x0a, 0x05, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8f, 0x01, 0xfa, 0x42, 0x8b, 0x01, 0x72, - 0x88, 0x01, 0x52, 0x00, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x52, 0x08, 0x2d, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, - 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x15, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x16, 0x2d, 0x70, 0x72, - 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x06, 0x2d, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x06, 0x2d, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, + 0x31, 0x9a, 0x01, 0x2e, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, + 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, + 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x04, 0x72, 0x02, + 0x18, 0x32, 0x52, 0x11, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x12, 0x2a, 0x0a, 0x0c, 0x65, 0x75, 0x69, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x18, 0x10, 0x52, 0x0b, 0x65, 0x75, 0x69, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x77, 0x0a, 0x05, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x61, 0xfa, 0x42, 0x5e, + 0x72, 0x5c, 0x52, 0x00, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, + 0x52, 0x0b, 0x2d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x0b, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x0c, 0x2d, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, + 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x1a, 0x44, 0x0a, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, + 0x00, 0x10, 0x01, 0x22, 0xbf, 0x05, 0x0a, 0x1a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, + 0x0a, 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, + 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0c, 0x6e, 0x61, 0x6d, + 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, + 0x52, 0x13, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0xa6, 0x01, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x9a, 0x01, 0x2e, 0x10, 0x0a, 0x22, + 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, + 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x11, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x12, 0x39, + 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x66, 0x0a, 0x05, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50, 0xfa, 0x42, 0x4d, 0x72, 0x4b, 0x52, + 0x00, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x52, 0x10, 0x2d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, + 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, @@ -1312,180 +1257,231 @@ var file_lorawan_stack_api_search_services_proto_rawDesc = []byte{ 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, - 0xa6, 0x03, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, - 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x6e, 0x6c, 0x79, - 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x6e, - 0x6c, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x45, - 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x54, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, - 0x04, 0x08, 0x00, 0x10, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x66, 0x22, 0x68, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x64, 0x73, 0x22, 0xe9, 0x07, 0x0a, 0x17, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x64, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, - 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, - 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x05, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, - 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x64, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0a, 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, - 0x18, 0x32, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, - 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x13, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0xa3, 0x01, 0x0a, - 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x9a, 0x01, - 0x2e, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, - 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, - 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, - 0x11, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x12, 0x31, 0x0a, 0x10, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x18, 0x10, 0x52, 0x0e, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x43, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x11, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, - 0x69, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x10, 0x52, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x45, - 0x75, 0x69, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x11, 0x64, 0x65, - 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x08, 0x52, 0x0f, - 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, - 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, - 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0xbd, 0x01, 0x0a, 0x05, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0xa6, 0x01, 0xfa, 0x42, 0xa2, - 0x01, 0x72, 0x9f, 0x01, 0x52, 0x00, 0x52, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x52, 0x0a, 0x2d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x52, 0x08, 0x6a, - 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x09, 0x2d, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, - 0x75, 0x69, 0x52, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x08, 0x2d, 0x64, 0x65, - 0x76, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, - 0x6d, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0c, 0x2d, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, - 0x6e, 0x5f, 0x61, 0x74, 0x52, 0x0d, 0x2d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, - 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, - 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, - 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x1a, 0x44, - 0x0a, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x32, 0xcd, - 0x07, 0x0a, 0x14, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, - 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x7b, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x4a, + 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0xa8, 0x06, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x18, 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x0b, 0x69, + 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0a, 0x69, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x13, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, + 0x9e, 0x01, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x9a, 0x01, 0x2e, 0x10, + 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, + 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, + 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x11, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x12, 0x3c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0f, 0xfa, 0x42, 0x0c, 0x92, 0x01, 0x09, 0x18, 0x01, + 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x39, + 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0xa6, 0x01, 0x0a, 0x05, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8f, 0x01, 0xfa, 0x42, 0x8b, 0x01, + 0x72, 0x88, 0x01, 0x52, 0x00, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x52, 0x08, + 0x2d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, + 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x15, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x16, 0x2d, 0x70, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x06, 0x2d, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x06, 0x2d, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, + 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x1a, 0x44, 0x0a, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, + 0x22, 0xa6, 0x03, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x18, 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x6e, 0x6c, + 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, + 0x6e, 0x6c, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, + 0x45, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x49, 0x64, 0x73, 0x12, 0x54, 0x0a, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x3a, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, + 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x66, 0x22, 0x68, 0x0a, 0x16, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x73, 0x22, 0xe9, 0x07, 0x0a, 0x17, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, + 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x59, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, - 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x67, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x73, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x73, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x6b, 0x0a, - 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, - 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, - 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x7f, 0x0a, 0x13, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x1d, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x0b, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x22, 0x2e, 0x74, 0x74, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x05, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x18, 0x32, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x0a, 0x69, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x18, 0x32, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x13, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0xa3, 0x01, + 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, + 0x63, 0x68, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x9a, + 0x01, 0x2e, 0x10, 0x0a, 0x22, 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, + 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, + 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x04, 0x72, 0x02, 0x18, 0x32, + 0x52, 0x11, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x12, 0x31, 0x0a, 0x10, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x18, 0x10, 0x52, 0x0e, 0x64, 0x65, 0x76, 0x45, 0x75, 0x69, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x11, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, + 0x75, 0x69, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x10, 0x52, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, + 0x45, 0x75, 0x69, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x11, 0x64, + 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x08, 0x52, + 0x0f, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, + 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0xbd, 0x01, 0x0a, 0x05, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0xa6, 0x01, 0xfa, 0x42, + 0xa2, 0x01, 0x72, 0x9f, 0x01, 0x52, 0x00, 0x52, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x52, 0x0a, 0x2d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x52, 0x08, + 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x09, 0x2d, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, + 0x65, 0x75, 0x69, 0x52, 0x07, 0x64, 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x08, 0x2d, 0x64, + 0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, 0x6e, + 0x61, 0x6d, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0c, 0x2d, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, + 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x52, 0x0d, 0x2d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, + 0x6e, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, + 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x1a, + 0x44, 0x0a, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x32, + 0xcd, 0x07, 0x0a, 0x14, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x7b, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, + 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, + 0x14, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x67, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x6b, + 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, + 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x73, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x7f, 0x0a, 0x13, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x2a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, - 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0xff, 0x02, 0x0a, - 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, - 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9d, - 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x96, 0x02, 0x12, 0x10, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5a, 0x45, 0x12, 0x43, 0x2f, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, - 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x5a, 0x36, 0x12, 0x34, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5a, 0x39, 0x12, 0x37, 0x2f, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, - 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x5a, 0x48, 0x12, 0x46, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, - 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x32, 0xba, - 0x01, 0x0a, 0x17, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x9e, 0x01, 0x0a, 0x10, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, - 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x73, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x42, 0x35, 0x5a, 0x2f, 0x67, - 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, - 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x1d, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x0b, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x22, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, + 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0xff, 0x02, + 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x9d, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x96, 0x02, 0x12, 0x10, 0x2f, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x5a, 0x45, 0x12, 0x43, 0x2f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x5a, 0x36, 0x12, 0x34, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5a, 0x39, 0x12, 0x37, 0x2f, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x2f, 0x7b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x5a, 0x48, 0x12, 0x46, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, + 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x32, + 0xba, 0x01, 0x0a, 0x17, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x9e, 0x01, 0x0a, 0x10, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x45, 0x6e, 0x64, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x42, 0x31, 0x5a, 0x2f, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/secrets.pb.go b/pkg/ttnpb/secrets.pb.go index 6a72a33e00..ca418e90cf 100644 --- a/pkg/ttnpb/secrets.pb.go +++ b/pkg/ttnpb/secrets.pb.go @@ -23,7 +23,6 @@ package ttnpb import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -104,33 +103,30 @@ var file_lorawan_stack_api_secrets_proto_rawDesc = []byte{ 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe9, 0x01, 0x0a, 0x06, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0xbd, 0x01, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa6, 0x01, 0xfa, 0x42, - 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0xf2, 0xaa, 0x19, 0x99, 0x01, 0x1a, 0x4e, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, - 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, - 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4e, 0x65, 0x77, 0x48, - 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x47, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, - 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, - 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, - 0x04, 0x08, 0x01, 0x10, 0x01, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, - 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe9, 0x01, 0x0a, 0x06, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0xbd, 0x01, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0xa6, 0x01, 0xfa, + 0x42, 0x05, 0x7a, 0x03, 0x18, 0x80, 0x10, 0xf2, 0xaa, 0x19, 0x99, 0x01, 0x1a, 0x4e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4e, 0x65, 0x77, + 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x22, 0x47, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x2f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x08, 0xf2, 0xaa, + 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/pkg/ttnpb/user.pb.go b/pkg/ttnpb/user.pb.go index c892da9a5f..a3987e16ee 100644 --- a/pkg/ttnpb/user.pb.go +++ b/pkg/ttnpb/user.pb.go @@ -23,7 +23,6 @@ package ttnpb import ( _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" _ "github.com/envoyproxy/protoc-gen-validate/validate" - _ "github.com/gogo/protobuf/gogoproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" @@ -1721,365 +1720,362 @@ var file_lorawan_stack_api_user_proto_rawDesc = []byte{ 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, - 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfb, 0x0b, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x43, 0x0a, - 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, 0x05, - 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, 0x69, - 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, - 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, - 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7b, 0x0a, 0x0a, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1d, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfb, 0x0b, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x43, + 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x10, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x28, 0x01, 0x52, 0x03, + 0x69, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x00, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, + 0x10, 0x00, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, + 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xd0, 0x0f, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7b, 0x0a, 0x0a, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, + 0x24, 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, + 0x28, 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, + 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x42, 0x35, 0xfa, 0x42, 0x32, 0x9a, 0x01, 0x2f, 0x10, 0x0a, 0x22, 0x24, - 0x72, 0x22, 0x18, 0x24, 0x32, 0x1e, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x28, - 0x3f, 0x3a, 0x5b, 0x2d, 0x5d, 0x3f, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x7b, - 0x32, 0x2c, 0x7d, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x18, 0xc8, 0x01, 0x52, 0x0a, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, 0x42, - 0x05, 0x92, 0x01, 0x02, 0x10, 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x3b, 0x0a, 0x15, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x13, 0x70, 0x72, 0x69, - 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x66, 0x0a, 0x22, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0a, 0x18, 0x01, 0xfa, + 0x42, 0x05, 0x92, 0x01, 0x02, 0x10, 0x0a, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3b, 0x0a, 0x15, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x13, 0x70, 0x72, + 0x69, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x66, 0x0a, 0x22, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1e, 0x70, 0x72, 0x69, 0x6d, 0x61, + 0x72, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, 0x08, 0x70, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x72, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, + 0x54, 0x0a, 0x13, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, - 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, - 0x03, 0x18, 0xe8, 0x07, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x54, - 0x0a, 0x13, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, - 0x00, 0x52, 0x11, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x50, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x74, - 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x65, 0x44, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x12, 0x37, 0x0a, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x72, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, - 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x67, 0x0a, 0x1d, 0x74, 0x65, 0x6d, - 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, - 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x52, 0x1a, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, - 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x67, 0x0a, 0x1d, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x5f, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, - 0x5f, 0x61, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x52, - 0x1a, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0f, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x12, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0e, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x1a, 0x3d, 0x0a, - 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, 0xaa, - 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x15, 0x10, 0x16, 0x4a, 0x04, 0x08, 0x16, - 0x10, 0x17, 0x4a, 0x04, 0x08, 0x17, 0x10, 0x18, 0x4a, 0x04, 0x08, 0x18, 0x10, 0x19, 0x52, 0x11, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, - 0x0d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x12, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x22, 0x33, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x75, - 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, - 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, - 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xce, 0x02, 0x0a, 0x10, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, - 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0xa6, 0x01, 0x0a, 0x05, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8f, 0x01, 0xfa, 0x42, - 0x8b, 0x01, 0x72, 0x88, 0x01, 0x52, 0x00, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x52, 0x08, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x15, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, - 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x16, - 0x2d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x06, 0x2d, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x06, 0x2d, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x72, 0x0a, 0x11, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x22, 0x82, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x66, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0xc5, 0x01, - 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, + 0x10, 0x00, 0x52, 0x11, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x50, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, + 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0x80, 0x01, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x12, 0x37, 0x0a, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x72, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, + 0x72, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x67, 0x0a, 0x1d, 0x74, 0x65, + 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, 0x52, 0x1a, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, + 0x72, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x67, 0x0a, 0x1d, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, + 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x73, 0x5f, 0x61, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x00, + 0x52, 0x1a, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0f, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0e, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x1a, 0x3d, + 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x08, 0xf2, + 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x4a, 0x04, 0x08, 0x15, 0x10, 0x16, 0x4a, 0x04, 0x08, + 0x16, 0x10, 0x17, 0x4a, 0x04, 0x08, 0x17, 0x10, 0x18, 0x4a, 0x04, 0x08, 0x18, 0x10, 0x19, 0x52, + 0x11, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x52, 0x0d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, + 0x12, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x22, 0x33, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x05, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x73, 0x12, 0x1a, 0x0a, 0x03, 0x6e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x03, 0x6e, 0x65, 0x77, 0x12, 0x1a, 0x0a, - 0x03, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, - 0x03, 0x18, 0xe8, 0x07, 0x52, 0x03, 0x6f, 0x6c, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x76, - 0x6f, 0x6b, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x6c, 0x6c, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x93, 0x02, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x75, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x5f, 0xfa, 0x42, 0x5c, 0x72, 0x5a, 0x52, 0x00, 0x52, 0x0a, - 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x0b, 0x2d, 0x61, 0x70, 0x69, - 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x2d, - 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0a, 0x65, - 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x65, 0x78, 0x70, 0x69, - 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0x73, 0x0a, 0x14, 0x47, - 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, - 0x22, 0x83, 0x02, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, - 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, + 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xce, 0x02, 0x0a, + 0x10, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0xa6, 0x01, 0x0a, + 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x8f, 0x01, 0xfa, + 0x42, 0x8b, 0x01, 0x72, 0x88, 0x01, 0x52, 0x00, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x52, 0x08, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x52, 0x05, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x15, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, + 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, + 0x16, 0x2d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x06, + 0x2d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x06, 0x2d, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x72, 0x0a, + 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x22, 0x82, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x66, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0xc5, + 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x40, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x92, 0x01, 0x0b, 0x08, 0x01, - 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x40, 0x01, 0x52, 0x09, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0xd5, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, - 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, - 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, - 0x4b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, - 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xf1, - 0x02, 0x0a, 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, - 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x03, 0x6e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x03, 0x6e, 0x65, 0x77, 0x12, 0x1a, + 0x0a, 0x03, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x72, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x03, 0x6f, 0x6c, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x6c, 0x6c, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x93, 0x02, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x75, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x5f, 0xfa, 0x42, 0x5c, 0x72, 0x5a, 0x52, 0x00, 0x52, + 0x0a, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x0b, 0x2d, 0x61, 0x70, + 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x05, + 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x52, 0x0b, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0a, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, 0x65, 0x78, 0x70, + 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1e, + 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, + 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x00, 0x10, 0x01, 0x22, 0x73, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, + 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, + 0x64, 0x22, 0x83, 0x02, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x32, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x40, 0x0a, 0x06, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x92, 0x01, 0x0b, 0x08, + 0x01, 0x18, 0x01, 0x22, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x39, 0x0a, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x40, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, - 0x42, 0x79, 0x22, 0x4c, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, - 0x22, 0x4b, 0x0a, 0x0b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x3c, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, - 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x36, 0x0a, - 0x15, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x38, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, - 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, - 0x86, 0x01, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, - 0x12, 0x26, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x09, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xd3, 0x02, 0x0a, 0x0b, 0x55, 0x73, 0x65, - 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, - 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, - 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x26, - 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x09, 0x73, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, - 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x47, - 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, - 0x0a, 0x08, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xcb, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x40, 0x01, 0x52, 0x09, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0xd5, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x20, 0xfa, 0x42, 0x1d, 0x72, 0x1b, 0x52, - 0x00, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, 0x2d, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x22, 0xad, 0x02, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, + 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x61, 0x70, 0x69, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, + 0x65, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x61, 0x70, + 0x69, 0x4b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, + 0xf1, 0x02, 0x0a, 0x0a, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, + 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x39, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, + 0x64, 0x42, 0x79, 0x22, 0x4c, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x22, 0x4b, 0x0a, 0x0b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x3c, 0x0a, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x36, + 0x0a, 0x15, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x38, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x22, 0x86, 0x01, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x73, 0x12, 0x26, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x09, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xd3, 0x02, 0x0a, 0x0b, 0x55, 0x73, + 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, + 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, + 0x26, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x40, 0x52, 0x09, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, + 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, + 0x47, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x37, 0x0a, 0x08, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x08, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xcb, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, - 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x04, 0x75, 0x73, 0x65, 0x64, 0x22, 0x7e, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x6b, 0x69, 0x70, - 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x30, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x35, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, - 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, 0xe3, 0x1e, 0x01, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x20, 0xfa, 0x42, 0x1d, 0x72, 0x1b, + 0x52, 0x00, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x0b, + 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x2a, 0x03, 0x18, 0xe8, 0x07, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x22, 0xad, 0x02, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x04, 0x75, 0x73, 0x65, 0x64, 0x22, 0x7e, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x44, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6b, 0x69, 0x70, 0x5f, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x6b, 0x69, + 0x70, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x30, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x74, + 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/ttnpb/user_services.pb.go b/pkg/ttnpb/user_services.pb.go index 06ac449808..c2c80ffd0c 100644 --- a/pkg/ttnpb/user_services.pb.go +++ b/pkg/ttnpb/user_services.pb.go @@ -21,7 +21,6 @@ package ttnpb import ( - _ "github.com/gogo/protobuf/gogoproto" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -42,171 +41,168 @@ var file_lorawan_stack_api_user_services_proto_rawDesc = []byte{ 0x0a, 0x25, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xc2, 0x07, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x54, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, - 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, - 0x22, 0x06, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x5e, 0x0a, 0x03, 0x47, - 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, - 0x12, 0x19, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x4f, 0x0a, 0x04, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x22, 0x0e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x08, 0x12, 0x06, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x67, 0x0a, 0x06, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x22, - 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x1a, 0x19, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x97, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, - 0x72, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x2e, 0x22, 0x2c, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, - 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, - 0x82, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, - 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x1a, 0x22, 0x2f, - 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x5b, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1f, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x2a, - 0x10, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x7d, 0x12, 0x64, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x1f, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x18, 0x2f, - 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x60, 0x0a, 0x05, 0x50, 0x75, 0x72, 0x67, 0x65, - 0x12, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x18, 0x2a, 0x16, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x32, 0x96, 0x06, 0x0a, 0x0a, 0x55, 0x73, - 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x66, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x22, - 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x12, 0x7e, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, - 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, - 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, - 0x79, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x22, 0x22, 0x2f, 0x75, 0x73, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x3a, 0x01, 0x2a, - 0x12, 0x7a, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, 0x12, - 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, - 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, - 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x7e, 0x0a, 0x09, - 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, - 0x2b, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, - 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8b, 0x01, 0x0a, - 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x2e, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x23, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xc2, 0x07, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x54, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x0b, 0x22, 0x06, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x5e, 0x0a, 0x03, + 0x47, 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1b, 0x12, 0x19, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x4f, 0x0a, 0x04, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x22, 0x0e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x08, 0x12, 0x06, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x67, 0x0a, + 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x1a, 0x19, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x97, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x2e, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, + 0x61, 0x72, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2e, 0x22, 0x2c, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, + 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x12, 0x82, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x12, 0x29, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x1a, 0x22, + 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, + 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x5b, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, + 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, + 0x2a, 0x10, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x7d, 0x12, 0x64, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, - 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x3a, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x1a, 0x2f, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x69, 0x5f, - 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x95, 0x01, 0x0a, 0x10, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, - 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, - 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x22, 0x26, 0x2f, 0x75, 0x73, 0x65, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x18, + 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x60, 0x0a, 0x05, 0x50, 0x75, 0x72, 0x67, + 0x65, 0x12, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x32, 0x96, 0x06, 0x0a, 0x0a, 0x55, + 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x66, 0x0a, 0x0a, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x12, 0x7e, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, + 0x79, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, + 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, + 0x65, 0x79, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x22, 0x22, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x2d, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x73, 0x32, 0xc0, 0x02, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x62, 0x0a, - 0x04, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x74, - 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, - 0x22, 0x0c, 0x2f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x01, - 0x2a, 0x12, 0x61, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, - 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, - 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, - 0x76, 0x33, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x14, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x27, - 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, - 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x2a, 0x0c, 0x2f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x94, 0x02, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x79, 0x0a, - 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, - 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, + 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x3a, 0x01, + 0x2a, 0x12, 0x7a, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x73, + 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, + 0x73, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x7e, 0x0a, + 0x09, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, + 0x12, 0x2b, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, + 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8b, 0x01, + 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2a, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, - 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x75, 0x73, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, + 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x22, + 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x1a, 0x2f, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x69, + 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x95, 0x01, 0x0a, 0x10, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x22, 0x26, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x7b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x42, 0x35, 0x5a, 0x2f, - 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, 0xc0, - 0xe3, 0x1e, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x2d, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x32, 0xc0, 0x02, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x62, + 0x0a, 0x04, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x25, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, + 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x11, 0x22, 0x0c, 0x2f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, + 0x01, 0x2a, 0x12, 0x61, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, + 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, + 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, + 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, + 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x2a, 0x0c, 0x2f, 0x69, 0x6e, 0x76, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x94, 0x02, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x79, + 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1c, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2a, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x06, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x12, 0x26, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x75, + 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x42, 0x31, 0x5a, + 0x2f, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x74, 0x6e, 0x70, 0x62, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_lorawan_stack_api_user_services_proto_goTypes = []interface{}{ From f943fcb4f3854b9dddac45ca8d0f04f6d827f4a3 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Mon, 19 Dec 2022 15:52:19 +0100 Subject: [PATCH 05/30] all: Use new FloatValue type --- .../store/remote/remote_test.go | 19 ++++++++++--------- pkg/devicerepository/store/remote/schema.go | 19 ++++++++++--------- .../upstream/packetbroker/packetbroker.go | 9 +++++---- pkg/networkserver/config.go | 3 ++- pkg/networkserver/grpc.go | 3 ++- pkg/networkserver/mac/adr_test.go | 14 +++++++------- pkg/networkserver/mac/dev_status.go | 4 ++-- pkg/networkserver/mac/dev_status_test.go | 9 +++++---- pkg/packetbrokeragent/translation.go | 5 +++-- pkg/ttnpb/udp/translation.go | 4 ++-- pkg/ttnpb/udp/translation_test.go | 6 +++--- pkg/util/test/constructors_generated.go | 2 +- 12 files changed, 52 insertions(+), 45 deletions(-) diff --git a/pkg/devicerepository/store/remote/remote_test.go b/pkg/devicerepository/store/remote/remote_test.go index 3a3f976e2a..777e36a8c3 100644 --- a/pkg/devicerepository/store/remote/remote_test.go +++ b/pkg/devicerepository/store/remote/remote_test.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/wrapperspb" ) func TestRemoteStore(t *testing.T) { @@ -273,24 +274,24 @@ func TestRemoteStore(t *testing.T) { }, Sensors: []string{"temperature", "gas"}, Dimensions: &ttnpb.EndDeviceModel_Dimensions{ - Width: &pbtypes.FloatValue{Value: 1}, - Height: &pbtypes.FloatValue{Value: 2}, - Diameter: &pbtypes.FloatValue{Value: 3}, - Length: &pbtypes.FloatValue{Value: 4}, + Width: &wrapperspb.FloatValue{Value: 1}, + Height: &wrapperspb.FloatValue{Value: 2}, + Diameter: &wrapperspb.FloatValue{Value: 3}, + Length: &wrapperspb.FloatValue{Value: 4}, }, - Weight: &pbtypes.FloatValue{Value: 5}, + Weight: &wrapperspb.FloatValue{Value: 5}, Battery: &ttnpb.EndDeviceModel_Battery{ Replaceable: &pbtypes.BoolValue{Value: true}, Type: "AAA", }, OperatingConditions: &ttnpb.EndDeviceModel_OperatingConditions{ Temperature: &ttnpb.EndDeviceModel_OperatingConditions_Limits{ - Min: &pbtypes.FloatValue{Value: 1}, - Max: &pbtypes.FloatValue{Value: 2}, + Min: &wrapperspb.FloatValue{Value: 1}, + Max: &wrapperspb.FloatValue{Value: 2}, }, RelativeHumidity: &ttnpb.EndDeviceModel_OperatingConditions_Limits{ - Min: &pbtypes.FloatValue{Value: 3}, - Max: &pbtypes.FloatValue{Value: 4}, + Min: &wrapperspb.FloatValue{Value: 3}, + Max: &wrapperspb.FloatValue{Value: 4}, }, }, IpCode: "IP67", diff --git a/pkg/devicerepository/store/remote/schema.go b/pkg/devicerepository/store/remote/schema.go index 65f84fd7b6..4e49f79ac4 100644 --- a/pkg/devicerepository/store/remote/schema.go +++ b/pkg/devicerepository/store/remote/schema.go @@ -16,6 +16,7 @@ package remote import ( pbtypes "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/wrapperspb" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" ) @@ -188,21 +189,21 @@ func (d EndDeviceModel) ToPB(brandID, modelID string, paths ...string) (*ttnpb.E if dim := d.Dimensions; dim != nil { pb.Dimensions = &ttnpb.EndDeviceModel_Dimensions{} if w := d.Dimensions.Width; w > 0 { - pb.Dimensions.Width = &pbtypes.FloatValue{Value: w} + pb.Dimensions.Width = &wrapperspb.FloatValue{Value: w} } if h := d.Dimensions.Height; h > 0 { - pb.Dimensions.Height = &pbtypes.FloatValue{Value: h} + pb.Dimensions.Height = &wrapperspb.FloatValue{Value: h} } if d := d.Dimensions.Diameter; d > 0 { - pb.Dimensions.Diameter = &pbtypes.FloatValue{Value: d} + pb.Dimensions.Diameter = &wrapperspb.FloatValue{Value: d} } if l := d.Dimensions.Length; l > 0 { - pb.Dimensions.Length = &pbtypes.FloatValue{Value: l} + pb.Dimensions.Length = &wrapperspb.FloatValue{Value: l} } } if w := d.Weight; w > 0 { - pb.Weight = &pbtypes.FloatValue{Value: w} + pb.Weight = &wrapperspb.FloatValue{Value: w} } if battery := d.Battery; battery != nil { @@ -217,15 +218,15 @@ func (d EndDeviceModel) ToPB(brandID, modelID string, paths ...string) (*ttnpb.E if rh := oc.RelativeHumidity; rh != nil { pb.OperatingConditions.RelativeHumidity = &ttnpb.EndDeviceModel_OperatingConditions_Limits{ - Min: &pbtypes.FloatValue{Value: rh.Min}, - Max: &pbtypes.FloatValue{Value: rh.Max}, + Min: &wrapperspb.FloatValue{Value: rh.Min}, + Max: &wrapperspb.FloatValue{Value: rh.Max}, } } if temp := oc.Temperature; temp != nil { pb.OperatingConditions.Temperature = &ttnpb.EndDeviceModel_OperatingConditions_Limits{ - Min: &pbtypes.FloatValue{Value: temp.Min}, - Max: &pbtypes.FloatValue{Value: temp.Max}, + Min: &wrapperspb.FloatValue{Value: temp.Min}, + Max: &wrapperspb.FloatValue{Value: temp.Max}, } } } diff --git a/pkg/gatewayserver/upstream/packetbroker/packetbroker.go b/pkg/gatewayserver/upstream/packetbroker/packetbroker.go index 1f69e1333b..3f8cdc820f 100644 --- a/pkg/gatewayserver/upstream/packetbroker/packetbroker.go +++ b/pkg/gatewayserver/upstream/packetbroker/packetbroker.go @@ -28,6 +28,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -125,10 +126,10 @@ func (h *Handler) ConnectGateway(ctx context.Context, ids *ttnpb.GatewayIdentifi StatusPublic: gtw.StatusPublic, LocationPublic: gtw.LocationPublic, Online: true, - RxRate: &pbtypes.FloatValue{ + RxRate: &wrapperspb.FloatValue{ Value: 0, }, - TxRate: &pbtypes.FloatValue{ + TxRate: &wrapperspb.FloatValue{ Value: 0, }, }, @@ -195,14 +196,14 @@ func (h *Handler) ConnectGateway(ctx context.Context, ids *ttnpb.GatewayIdentifi uplinkCount, _, haveUplinkCount := conn.UpStats() downlinkCount, _, haveDownlinkCount := conn.DownStats() if haveUplinkCount { - req.Gateway.RxRate = &pbtypes.FloatValue{ + req.Gateway.RxRate = &wrapperspb.FloatValue{ Value: (float32(uplinkCount) - float32(lastUplinkCount)) * float32(time.Hour) / float32(now.Sub(lastCounters)), } req.FieldMask.Paths = append(req.FieldMask.Paths, "rx_rate") lastUplinkCount = uplinkCount } if haveDownlinkCount { - req.Gateway.TxRate = &pbtypes.FloatValue{ + req.Gateway.TxRate = &wrapperspb.FloatValue{ Value: (float32(downlinkCount) - float32(lastDownlinkCount)) * float32(time.Hour) / float32(now.Sub(lastCounters)), } req.FieldMask.Paths = append(req.FieldMask.Paths, "tx_rate") diff --git a/pkg/networkserver/config.go b/pkg/networkserver/config.go index 5fc10271a1..42a84a87af 100644 --- a/pkg/networkserver/config.go +++ b/pkg/networkserver/config.go @@ -22,6 +22,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/networkserver/mac" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" + "google.golang.org/protobuf/types/known/wrapperspb" ) // ApplicationUplinkQueueConfig defines application uplink queue configuration. @@ -61,7 +62,7 @@ func (c MACSettingConfig) Parse() *ttnpb.MACSettings { StatusTimePeriodicity: ttnpb.ProtoDuration(c.StatusTimePeriodicity), } if c.ADRMargin != nil { - p.AdrMargin = &pbtypes.FloatValue{Value: *c.ADRMargin} + p.AdrMargin = &wrapperspb.FloatValue{Value: *c.ADRMargin} } if c.DesiredRx1Delay != nil { p.DesiredRx1Delay = &ttnpb.RxDelayValue{Value: *c.DesiredRx1Delay} diff --git a/pkg/networkserver/grpc.go b/pkg/networkserver/grpc.go index d5ed50c2c9..a6d94e7114 100644 --- a/pkg/networkserver/grpc.go +++ b/pkg/networkserver/grpc.go @@ -22,6 +22,7 @@ import ( . "go.thethings.network/lorawan-stack/v3/pkg/networkserver/internal" "go.thethings.network/lorawan-stack/v3/pkg/networkserver/mac" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/wrapperspb" ) // GenerateDevAddr returns a device address assignment in the device address @@ -59,7 +60,7 @@ func (ns *NetworkServer) GetDefaultMACSettings(ctx context.Context, req *ttnpb.G MaxDutyCycle: &ttnpb.AggregatedDutyCycleValue{Value: mac.DeviceDefaultMaxDutyCycle(nil, ns.defaultMACSettings)}, Supports_32BitFCnt: &ttnpb.BoolValue{Value: mac.DeviceSupports32BitFCnt(nil, ns.defaultMACSettings)}, UseAdr: &ttnpb.BoolValue{Value: mac.DeviceUseADR(nil, ns.defaultMACSettings, phy)}, - AdrMargin: &pbtypes.FloatValue{Value: adrMargin}, + AdrMargin: &wrapperspb.FloatValue{Value: adrMargin}, ResetsFCnt: &ttnpb.BoolValue{Value: mac.DeviceResetsFCnt(nil, ns.defaultMACSettings)}, StatusTimePeriodicity: ttnpb.ProtoDurationPtr(statusTimePeriodicity), StatusCountPeriodicity: &pbtypes.UInt32Value{Value: statusCountPeriodicity}, diff --git a/pkg/networkserver/mac/adr_test.go b/pkg/networkserver/mac/adr_test.go index 1dff95d814..12aa31d42b 100644 --- a/pkg/networkserver/mac/adr_test.go +++ b/pkg/networkserver/mac/adr_test.go @@ -18,7 +18,6 @@ import ( "context" "testing" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/band" . "go.thethings.network/lorawan-stack/v3/pkg/networkserver/internal" @@ -27,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/wrapperspb" ) func TestAdaptDataRate(t *testing.T) { @@ -91,7 +91,7 @@ func TestAdaptDataRate(t *testing.T) { RecentUplinks: semtechPaperUplinks, }, MacSettings: &ttnpb.MACSettings{ - AdrMargin: &pbtypes.FloatValue{ + AdrMargin: &wrapperspb.FloatValue{ Value: 2, }, }, @@ -122,7 +122,7 @@ func TestAdaptDataRate(t *testing.T) { RecentUplinks: semtechPaperUplinks, }, MacSettings: &ttnpb.MACSettings{ - AdrMargin: &pbtypes.FloatValue{ + AdrMargin: &wrapperspb.FloatValue{ Value: 2, }, }, @@ -153,7 +153,7 @@ func TestAdaptDataRate(t *testing.T) { RecentUplinks: semtechPaperUplinks, }, MacSettings: &ttnpb.MACSettings{ - AdrMargin: &pbtypes.FloatValue{ + AdrMargin: &wrapperspb.FloatValue{ Value: 2, }, }, @@ -184,7 +184,7 @@ func TestAdaptDataRate(t *testing.T) { RecentUplinks: semtechPaperUplinks, }, MacSettings: &ttnpb.MACSettings{ - AdrMargin: &pbtypes.FloatValue{ + AdrMargin: &wrapperspb.FloatValue{ Value: 2, }, }, @@ -218,7 +218,7 @@ func TestAdaptDataRate(t *testing.T) { RecentUplinks: semtechPaperUplinks, }, MacSettings: &ttnpb.MACSettings{ - AdrMargin: &pbtypes.FloatValue{ + AdrMargin: &wrapperspb.FloatValue{ Value: 2, }, }, @@ -252,7 +252,7 @@ func TestAdaptDataRate(t *testing.T) { RecentUplinks: semtechPaperUplinks, }, MacSettings: &ttnpb.MACSettings{ - AdrMargin: &pbtypes.FloatValue{ + AdrMargin: &wrapperspb.FloatValue{ Value: 2, }, }, diff --git a/pkg/networkserver/mac/dev_status.go b/pkg/networkserver/mac/dev_status.go index 7c4721431c..f2cb2a76e6 100644 --- a/pkg/networkserver/mac/dev_status.go +++ b/pkg/networkserver/mac/dev_status.go @@ -17,11 +17,11 @@ package mac import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/events" "go.thethings.network/lorawan-stack/v3/pkg/log" "go.thethings.network/lorawan-stack/v3/pkg/networkserver/internal/time" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/wrapperspb" ) var ( @@ -130,7 +130,7 @@ func HandleDevStatusAns(ctx context.Context, dev *ttnpb.EndDevice, pld *ttnpb.MA dev.BatteryPercentage = nil default: dev.PowerState = ttnpb.PowerState_POWER_BATTERY - dev.BatteryPercentage = &pbtypes.FloatValue{Value: float32(pld.Battery-1) / 253} + dev.BatteryPercentage = &wrapperspb.FloatValue{Value: float32(pld.Battery-1) / 253} } dev.DownlinkMargin = pld.Margin dev.LastDevStatusReceivedAt = ttnpb.ProtoTimePtr(recvAt) diff --git a/pkg/networkserver/mac/dev_status_test.go b/pkg/networkserver/mac/dev_status_test.go index 18d30d63d3..089056586f 100644 --- a/pkg/networkserver/mac/dev_status_test.go +++ b/pkg/networkserver/mac/dev_status_test.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/wrapperspb" ) func TestNeedsDevStatusReq(t *testing.T) { @@ -235,7 +236,7 @@ func TestHandleDevStatusAns(t *testing.T) { ttnpb.MACCommandIdentifier_CID_DEV_STATUS.MACCommand(), }, }, - BatteryPercentage: &pbtypes.FloatValue{Value: 0.44}, + BatteryPercentage: &wrapperspb.FloatValue{Value: 0.44}, PowerState: ttnpb.PowerState_POWER_EXTERNAL, }, Expected: &ttnpb.EndDevice{ @@ -244,7 +245,7 @@ func TestHandleDevStatusAns(t *testing.T) { LastDevStatusFCntUp: 43, PendingRequests: []*ttnpb.MACCommand{}, }, - BatteryPercentage: &pbtypes.FloatValue{Value: float32(42-1) / float32(253)}, + BatteryPercentage: &wrapperspb.FloatValue{Value: float32(42-1) / float32(253)}, DownlinkMargin: 4, PowerState: ttnpb.PowerState_POWER_BATTERY, }, @@ -270,7 +271,7 @@ func TestHandleDevStatusAns(t *testing.T) { ttnpb.MACCommandIdentifier_CID_DEV_STATUS.MACCommand(), }, }, - BatteryPercentage: &pbtypes.FloatValue{Value: 0.44}, + BatteryPercentage: &wrapperspb.FloatValue{Value: 0.44}, PowerState: ttnpb.PowerState_POWER_BATTERY, }, Expected: &ttnpb.EndDevice{ @@ -303,7 +304,7 @@ func TestHandleDevStatusAns(t *testing.T) { ttnpb.MACCommandIdentifier_CID_DEV_STATUS.MACCommand(), }, }, - BatteryPercentage: &pbtypes.FloatValue{Value: 0.44}, + BatteryPercentage: &wrapperspb.FloatValue{Value: 0.44}, PowerState: ttnpb.PowerState_POWER_BATTERY, }, Expected: &ttnpb.EndDevice{ diff --git a/pkg/packetbrokeragent/translation.go b/pkg/packetbrokeragent/translation.go index 33958483e1..c0f23d4e34 100644 --- a/pkg/packetbrokeragent/translation.go +++ b/pkg/packetbrokeragent/translation.go @@ -33,6 +33,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/wrapperspb" "gopkg.in/square/go-jose.v2" ) @@ -335,9 +336,9 @@ func toPBUplink(ctx context.Context, msg *ttnpb.GatewayUplinkMessage, config For var signalQuality packetbroker.GatewayMetadataSignalQuality_Terrestrial var localization *packetbroker.GatewayMetadataLocalization_Terrestrial for _, md := range msg.Message.RxMetadata { - var rssiStandardDeviation *pbtypes.FloatValue + var rssiStandardDeviation *wrapperspb.FloatValue if md.RssiStandardDeviation > 0 { - rssiStandardDeviation = &pbtypes.FloatValue{ + rssiStandardDeviation = &wrapperspb.FloatValue{ Value: md.RssiStandardDeviation, } } diff --git a/pkg/ttnpb/udp/translation.go b/pkg/ttnpb/udp/translation.go index d4d4f48f42..475d624035 100644 --- a/pkg/ttnpb/udp/translation.go +++ b/pkg/ttnpb/udp/translation.go @@ -20,11 +20,11 @@ import ( "strings" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/gpstime" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/datarate" "go.thethings.network/lorawan-stack/v3/pkg/version" + "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -151,7 +151,7 @@ func v2Metadata(rx RxPacket, gatewayID *ttnpb.GatewayIdentifiers) []*ttnpb.RxMet FrequencyDrift: signal.Fdri, } if signal.RSSIS != nil { - signalMetadata.SignalRssi = &pbtypes.FloatValue{ + signalMetadata.SignalRssi = &wrapperspb.FloatValue{ Value: float32(*signal.RSSIS), } } diff --git a/pkg/ttnpb/udp/translation_test.go b/pkg/ttnpb/udp/translation_test.go index eddd69fef9..2e7eb334c6 100644 --- a/pkg/ttnpb/udp/translation_test.go +++ b/pkg/ttnpb/udp/translation_test.go @@ -20,7 +20,6 @@ import ( "testing" "time" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/band" "go.thethings.network/lorawan-stack/v3/pkg/gpstime" @@ -30,6 +29,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/datarate" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "go.thethings.network/lorawan-stack/v3/pkg/version" + "google.golang.org/protobuf/types/known/wrapperspb" ) var ids = &ttnpb.GatewayIdentifiers{GatewayId: "test-gateway"} @@ -426,7 +426,7 @@ func TestToGatewayUpRawMultiAntenna(t *testing.T) { EncryptedFineTimestamp: []byte{0xe3, 0x64, 0x0c, 0xcc, 0xe9, 0x58, 0x49, 0x23, 0xcc, 0x31, 0xea, 0x95, 0x3e, 0xb6, 0x34, 0x7d}, //nolint:lll EncryptedFineTimestampKeyId: "42", Rssi: -95, - SignalRssi: &pbtypes.FloatValue{Value: -92}, + SignalRssi: &wrapperspb.FloatValue{Value: -92}, ChannelRssi: -95, RssiStandardDeviation: 0, Snr: 14.0, @@ -444,7 +444,7 @@ func TestToGatewayUpRawMultiAntenna(t *testing.T) { EncryptedFineTimestamp: []byte{0x76, 0x31, 0xa2, 0x4b, 0x33, 0x82, 0xfa, 0x00, 0x93, 0xee, 0xf4, 0x4f, 0xbf, 0xbf, 0x80, 0xb3}, //nolint:lll EncryptedFineTimestampKeyId: "42", Rssi: -93, - SignalRssi: &pbtypes.FloatValue{Value: -88}, + SignalRssi: &wrapperspb.FloatValue{Value: -88}, ChannelRssi: -93, RssiStandardDeviation: 0, Snr: 14.0, diff --git a/pkg/util/test/constructors_generated.go b/pkg/util/test/constructors_generated.go index fd2a1e8132..2cdbe7de9c 100644 --- a/pkg/util/test/constructors_generated.go +++ b/pkg/util/test/constructors_generated.go @@ -954,7 +954,7 @@ func (EndDeviceOptionNamespace) WithPowerState(v ttnpb.PowerState) EndDeviceOpti } // WithBatteryPercentage returns a EndDeviceOption, which returns a copy of ttnpb.EndDevice with BatteryPercentage set to v. -func (EndDeviceOptionNamespace) WithBatteryPercentage(v *pbtypes.FloatValue) EndDeviceOption { +func (EndDeviceOptionNamespace) WithBatteryPercentage(v *wrapperspb.FloatValue) EndDeviceOption { return func(x *ttnpb.EndDevice) *ttnpb.EndDevice { copy := ttnpb.Clone(x) copy.BatteryPercentage = v From 1d60e4de9ae6874a70aaaf25b2a418467753c63e Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Mon, 19 Dec 2022 15:54:20 +0100 Subject: [PATCH 06/30] all: Use new Uint64Value type --- pkg/packetbrokeragent/agent_test.go | 9 +++++---- pkg/packetbrokeragent/translation.go | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/pkg/packetbrokeragent/agent_test.go b/pkg/packetbrokeragent/agent_test.go index f3c8ffdf07..f20889e65b 100644 --- a/pkg/packetbrokeragent/agent_test.go +++ b/pkg/packetbrokeragent/agent_test.go @@ -42,6 +42,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/wrapperspb" "gopkg.in/square/go-jose.v2" ) @@ -167,7 +168,7 @@ func TestForwarder(t *testing.T) { ForwarderClusterId: "test", Message: &packetbroker.UplinkMessage{ GatewayId: &packetbroker.GatewayIdentifier{ - Eui: &pbtypes.UInt64Value{ + Eui: &wrapperspb.UInt64Value{ Value: 0x1122334455667788, }, Id: &packetbroker.GatewayIdentifier_Hash{ @@ -286,7 +287,7 @@ func TestForwarder(t *testing.T) { ForwarderClusterId: "test", Message: &packetbroker.UplinkMessage{ GatewayId: &packetbroker.GatewayIdentifier{ - Eui: &pbtypes.UInt64Value{ + Eui: &wrapperspb.UInt64Value{ Value: 0x1122334455667788, }, Id: &packetbroker.GatewayIdentifier_Hash{ @@ -567,7 +568,7 @@ func TestHomeNetwork(t *testing.T) { Id: "test", Message: &packetbroker.UplinkMessage{ GatewayId: &packetbroker.GatewayIdentifier{ - Eui: &pbtypes.UInt64Value{ + Eui: &wrapperspb.UInt64Value{ Value: 0x1122334455667788, }, Id: &packetbroker.GatewayIdentifier_Plain{ @@ -741,7 +742,7 @@ func TestHomeNetwork(t *testing.T) { Id: "test", Message: &packetbroker.UplinkMessage{ GatewayId: &packetbroker.GatewayIdentifier{ - Eui: &pbtypes.UInt64Value{ + Eui: &wrapperspb.UInt64Value{ Value: 0x1122334455667788, }, Id: &packetbroker.GatewayIdentifier_Plain{ diff --git a/pkg/packetbrokeragent/translation.go b/pkg/packetbrokeragent/translation.go index c0f23d4e34..fe8f1d7595 100644 --- a/pkg/packetbrokeragent/translation.go +++ b/pkg/packetbrokeragent/translation.go @@ -233,7 +233,7 @@ func toPBGatewayIdentifier(ids gatewayIdentifier, config ForwarderConfig) *packe if config.IncludeGatewayEUI && ids.GetEui() != nil { eui := types.MustEUI64(ids.GetEui()) res = &packetbroker.GatewayIdentifier{ - Eui: &pbtypes.UInt64Value{ + Eui: &wrapperspb.UInt64Value{ Value: eui.MarshalNumber(), }, } @@ -366,7 +366,7 @@ func toPBUplink(ctx context.Context, msg *ttnpb.GatewayUplinkMessage, config For } if md.FineTimestamp > 0 { teaser.FineTimestamp = true - locAnt.FineTimestamp = &pbtypes.UInt64Value{ + locAnt.FineTimestamp = &wrapperspb.UInt64Value{ Value: md.FineTimestamp, } } From 6bbef5167e28fdcb36c14d0312d7fad7b22a9947 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Mon, 19 Dec 2022 15:56:26 +0100 Subject: [PATCH 07/30] all: Use new Uint32Value type --- .../commands/storage_integration_util.go | 7 +-- pkg/identityserver/config.go | 11 ++-- pkg/networkserver/config.go | 3 +- pkg/networkserver/downlink_internal_test.go | 10 ++-- pkg/networkserver/downlink_test.go | 14 ++--- pkg/networkserver/grpc.go | 2 +- pkg/networkserver/mac/adr_internal_test.go | 54 +++++++++---------- pkg/networkserver/mac/dev_status_test.go | 13 +++-- pkg/networkserver/utils_internal_test.go | 4 +- pkg/packetbrokeragent/grpc_gspba.go | 5 +- 10 files changed, 62 insertions(+), 61 deletions(-) diff --git a/cmd/ttn-lw-cli/commands/storage_integration_util.go b/cmd/ttn-lw-cli/commands/storage_integration_util.go index 50fda6421d..31a9465149 100644 --- a/cmd/ttn-lw-cli/commands/storage_integration_util.go +++ b/cmd/ttn-lw-cli/commands/storage_integration_util.go @@ -23,6 +23,7 @@ import ( "github.com/spf13/pflag" "go.thethings.network/lorawan-stack/v3/cmd/ttn-lw-cli/internal/util" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/wrapperspb" ) var applicationUpFlags = util.NormalizedFlagSet() @@ -67,7 +68,7 @@ func getStoredUpRequest(flags *pflag.FlagSet) (*ttnpb.GetStoredApplicationUpRequ if flags.Changed("f-port") { fport, _ := flags.GetUint32("f-port") - req.FPort = &pbtypes.UInt32Value{ + req.FPort = &wrapperspb.UInt32Value{ Value: fport, } } @@ -80,7 +81,7 @@ func getStoredUpRequest(flags *pflag.FlagSet) (*ttnpb.GetStoredApplicationUpRequ if flags.Changed("limit") { limit, _ := flags.GetUint32("limit") - req.Limit = &pbtypes.UInt32Value{ + req.Limit = &wrapperspb.UInt32Value{ Value: limit, } } @@ -117,7 +118,7 @@ func countStoredUpRequest(flags *pflag.FlagSet) (*ttnpb.GetStoredApplicationUpCo } if flags.Changed("f-port") { fport, _ := flags.GetUint32("f-port") - req.FPort = &pbtypes.UInt32Value{ + req.FPort = &wrapperspb.UInt32Value{ Value: fport, } } diff --git a/pkg/identityserver/config.go b/pkg/identityserver/config.go index 0c332e297b..d41b94e4e3 100644 --- a/pkg/identityserver/config.go +++ b/pkg/identityserver/config.go @@ -29,6 +29,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/oauth" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" ttntypes "go.thethings.network/lorawan-stack/v3/pkg/types" + "google.golang.org/protobuf/types/known/wrapperspb" ) // Config for the Identity Server. @@ -181,11 +182,11 @@ func (c Config) toProto() *ttnpb.IsConfiguration { Required: &pbtypes.BoolValue{Value: c.UserRegistration.AdminApproval.Required}, }, PasswordRequirements: &ttnpb.IsConfiguration_UserRegistration_PasswordRequirements{ - MinLength: &pbtypes.UInt32Value{Value: uint32(c.UserRegistration.PasswordRequirements.MinLength)}, - MaxLength: &pbtypes.UInt32Value{Value: uint32(c.UserRegistration.PasswordRequirements.MaxLength)}, - MinUppercase: &pbtypes.UInt32Value{Value: uint32(c.UserRegistration.PasswordRequirements.MinUppercase)}, - MinDigits: &pbtypes.UInt32Value{Value: uint32(c.UserRegistration.PasswordRequirements.MinDigits)}, - MinSpecial: &pbtypes.UInt32Value{Value: uint32(c.UserRegistration.PasswordRequirements.MinSpecial)}, + MinLength: &wrapperspb.UInt32Value{Value: uint32(c.UserRegistration.PasswordRequirements.MinLength)}, + MaxLength: &wrapperspb.UInt32Value{Value: uint32(c.UserRegistration.PasswordRequirements.MaxLength)}, + MinUppercase: &wrapperspb.UInt32Value{Value: uint32(c.UserRegistration.PasswordRequirements.MinUppercase)}, + MinDigits: &wrapperspb.UInt32Value{Value: uint32(c.UserRegistration.PasswordRequirements.MinDigits)}, + MinSpecial: &wrapperspb.UInt32Value{Value: uint32(c.UserRegistration.PasswordRequirements.MinSpecial)}, }, }, ProfilePicture: &ttnpb.IsConfiguration_ProfilePicture{ diff --git a/pkg/networkserver/config.go b/pkg/networkserver/config.go index 42a84a87af..0db547c26e 100644 --- a/pkg/networkserver/config.go +++ b/pkg/networkserver/config.go @@ -15,7 +15,6 @@ package networkserver import ( - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/config" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/networkserver/internal/time" @@ -77,7 +76,7 @@ func (c MACSettingConfig) Parse() *ttnpb.MACSettings { p.DesiredAdrAckDelayExponent = &ttnpb.ADRAckDelayExponentValue{Value: *c.DesiredADRAckDelayExponent} } if c.StatusCountPeriodicity != nil { - p.StatusCountPeriodicity = &pbtypes.UInt32Value{Value: *c.StatusCountPeriodicity} + p.StatusCountPeriodicity = &wrapperspb.UInt32Value{Value: *c.StatusCountPeriodicity} } return p } diff --git a/pkg/networkserver/downlink_internal_test.go b/pkg/networkserver/downlink_internal_test.go index 7c13693f9f..91f11839db 100644 --- a/pkg/networkserver/downlink_internal_test.go +++ b/pkg/networkserver/downlink_internal_test.go @@ -22,7 +22,6 @@ import ( "testing" "time" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/band" "go.thethings.network/lorawan-stack/v3/pkg/cluster" @@ -40,6 +39,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/wrapperspb" ) func TestAppendRecentDownlink(t *testing.T) { @@ -240,7 +240,7 @@ func TestGenerateDataDownlink(t *testing.T) { DevAddr: devAddr.Bytes(), }, MacSettings: &ttnpb.MACSettings{ - StatusCountPeriodicity: &pbtypes.UInt32Value{Value: 3}, + StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 3}, }, MacState: &ttnpb.MACState{ CurrentParameters: &ttnpb.MACParameters{}, @@ -930,7 +930,7 @@ func TestGenerateDataDownlink(t *testing.T) { DevAddr: devAddr.Bytes(), }, MacSettings: &ttnpb.MACSettings{ - StatusCountPeriodicity: &pbtypes.UInt32Value{Value: 3}, + StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 3}, }, MacState: &ttnpb.MACState{ CurrentParameters: &ttnpb.MACParameters{}, @@ -1009,7 +1009,7 @@ func TestGenerateDataDownlink(t *testing.T) { DevAddr: devAddr.Bytes(), }, MacSettings: &ttnpb.MACSettings{ - StatusCountPeriodicity: &pbtypes.UInt32Value{Value: 3}, + StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 3}, }, MacState: &ttnpb.MACState{ CurrentParameters: &ttnpb.MACParameters{}, @@ -1217,7 +1217,7 @@ func TestGenerateDataDownlink(t *testing.T) { ctx: ctx, defaultMACSettings: &ttnpb.MACSettings{ StatusTimePeriodicity: ttnpb.ProtoDurationPtr(0), - StatusCountPeriodicity: &pbtypes.UInt32Value{Value: 0}, + StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 0}, }, } diff --git a/pkg/networkserver/downlink_test.go b/pkg/networkserver/downlink_test.go index 79cc5a674e..cdaa356d1c 100644 --- a/pkg/networkserver/downlink_test.go +++ b/pkg/networkserver/downlink_test.go @@ -23,7 +23,6 @@ import ( "testing" "time" - pbtypes "github.com/gogo/protobuf/types" "github.com/oklog/ulid/v2" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/band" @@ -44,6 +43,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/wrapperspb" ) func TestProcessDownlinkTask(t *testing.T) { @@ -513,7 +513,7 @@ func TestProcessDownlinkTask(t *testing.T) { }, MacSettings: &ttnpb.MACSettings{ StatusTimePeriodicity: ttnpb.ProtoDurationPtr(0), - StatusCountPeriodicity: &pbtypes.UInt32Value{Value: 0}, + StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 0}, }, Session: &ttnpb.Session{ DevAddr: test.DefaultDevAddr.Bytes(), @@ -561,7 +561,7 @@ func TestProcessDownlinkTask(t *testing.T) { RxWindowsAvailable: true, }, MacSettings: &ttnpb.MACSettings{ - StatusCountPeriodicity: &pbtypes.UInt32Value{Value: 0}, + StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 0}, StatusTimePeriodicity: ttnpb.ProtoDurationPtr(0), }, Session: &ttnpb.Session{ @@ -610,7 +610,7 @@ func TestProcessDownlinkTask(t *testing.T) { RxWindowsAvailable: true, }, MacSettings: &ttnpb.MACSettings{ - StatusCountPeriodicity: &pbtypes.UInt32Value{Value: 0}, + StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 0}, StatusTimePeriodicity: ttnpb.ProtoDurationPtr(0), }, Session: &ttnpb.Session{ @@ -695,7 +695,7 @@ func TestProcessDownlinkTask(t *testing.T) { RxWindowsAvailable: true, }, MacSettings: &ttnpb.MACSettings{ - StatusCountPeriodicity: &pbtypes.UInt32Value{Value: 0}, + StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 0}, StatusTimePeriodicity: ttnpb.ProtoDurationPtr(0), }, Session: &ttnpb.Session{ @@ -2257,7 +2257,7 @@ func TestProcessDownlinkTask(t *testing.T) { LorawanPhyVersion: ttnpb.PHYVersion_RP001_V1_1_REV_B, MacSettings: &ttnpb.MACSettings{ ClassCTimeout: ttnpb.ProtoDurationPtr(42 * time.Second), - StatusCountPeriodicity: &pbtypes.UInt32Value{Value: 0}, + StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 0}, StatusTimePeriodicity: ttnpb.ProtoDurationPtr(0), }, MacState: &ttnpb.MACState{ @@ -2319,7 +2319,7 @@ func TestProcessDownlinkTask(t *testing.T) { LorawanPhyVersion: ttnpb.PHYVersion_RP001_V1_1_REV_B, MacSettings: &ttnpb.MACSettings{ ClassCTimeout: ttnpb.ProtoDurationPtr(42 * time.Second), - StatusCountPeriodicity: &pbtypes.UInt32Value{Value: 0}, + StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 0}, StatusTimePeriodicity: ttnpb.ProtoDurationPtr(0), }, MacState: &ttnpb.MACState{ diff --git a/pkg/networkserver/grpc.go b/pkg/networkserver/grpc.go index a6d94e7114..0948d74b13 100644 --- a/pkg/networkserver/grpc.go +++ b/pkg/networkserver/grpc.go @@ -63,7 +63,7 @@ func (ns *NetworkServer) GetDefaultMACSettings(ctx context.Context, req *ttnpb.G AdrMargin: &wrapperspb.FloatValue{Value: adrMargin}, ResetsFCnt: &ttnpb.BoolValue{Value: mac.DeviceResetsFCnt(nil, ns.defaultMACSettings)}, StatusTimePeriodicity: ttnpb.ProtoDurationPtr(statusTimePeriodicity), - StatusCountPeriodicity: &pbtypes.UInt32Value{Value: statusCountPeriodicity}, + StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: statusCountPeriodicity}, DesiredRx1Delay: &ttnpb.RxDelayValue{Value: mac.DeviceDesiredRX1Delay(nil, phy, ns.defaultMACSettings)}, DesiredRx1DataRateOffset: &ttnpb.DataRateOffsetValue{Value: mac.DeviceDesiredRX1DataRateOffset(nil, ns.defaultMACSettings)}, DesiredRx2DataRateIndex: &ttnpb.DataRateIndexValue{Value: mac.DeviceDesiredRX2DataRateIndex(nil, phy, fp, ns.defaultMACSettings)}, diff --git a/pkg/networkserver/mac/adr_internal_test.go b/pkg/networkserver/mac/adr_internal_test.go index 597cc9270f..387c987677 100644 --- a/pkg/networkserver/mac/adr_internal_test.go +++ b/pkg/networkserver/mac/adr_internal_test.go @@ -22,11 +22,11 @@ import ( "strings" "testing" - "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/wrapperspb" ) func NewADRUplink( @@ -558,7 +558,7 @@ func TestClampTxPowerRange(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MinTxPowerIndex: &types.UInt32Value{ + MinTxPowerIndex: &wrapperspb.UInt32Value{ Value: 3, }, }, @@ -581,7 +581,7 @@ func TestClampTxPowerRange(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MinTxPowerIndex: &types.UInt32Value{ + MinTxPowerIndex: &wrapperspb.UInt32Value{ Value: 5, }, }, @@ -604,7 +604,7 @@ func TestClampTxPowerRange(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MinTxPowerIndex: &types.UInt32Value{ + MinTxPowerIndex: &wrapperspb.UInt32Value{ Value: 12, }, }, @@ -628,7 +628,7 @@ func TestClampTxPowerRange(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MaxTxPowerIndex: &types.UInt32Value{ + MaxTxPowerIndex: &wrapperspb.UInt32Value{ Value: 3, }, }, @@ -652,7 +652,7 @@ func TestClampTxPowerRange(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MaxTxPowerIndex: &types.UInt32Value{ + MaxTxPowerIndex: &wrapperspb.UInt32Value{ Value: 5, }, }, @@ -675,7 +675,7 @@ func TestClampTxPowerRange(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MaxTxPowerIndex: &types.UInt32Value{ + MaxTxPowerIndex: &wrapperspb.UInt32Value{ Value: 12, }, }, @@ -698,10 +698,10 @@ func TestClampTxPowerRange(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MinTxPowerIndex: &types.UInt32Value{ + MinTxPowerIndex: &wrapperspb.UInt32Value{ Value: 2, }, - MaxTxPowerIndex: &types.UInt32Value{ + MaxTxPowerIndex: &wrapperspb.UInt32Value{ Value: 3, }, }, @@ -725,10 +725,10 @@ func TestClampTxPowerRange(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MinTxPowerIndex: &types.UInt32Value{ + MinTxPowerIndex: &wrapperspb.UInt32Value{ Value: 3, }, - MaxTxPowerIndex: &types.UInt32Value{ + MaxTxPowerIndex: &wrapperspb.UInt32Value{ Value: 6, }, }, @@ -751,10 +751,10 @@ func TestClampTxPowerRange(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MinTxPowerIndex: &types.UInt32Value{ + MinTxPowerIndex: &wrapperspb.UInt32Value{ Value: 7, }, - MaxTxPowerIndex: &types.UInt32Value{ + MaxTxPowerIndex: &wrapperspb.UInt32Value{ Value: 9, }, }, @@ -777,10 +777,10 @@ func TestClampTxPowerRange(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MinTxPowerIndex: &types.UInt32Value{ + MinTxPowerIndex: &wrapperspb.UInt32Value{ Value: 7, }, - MaxTxPowerIndex: &types.UInt32Value{ + MaxTxPowerIndex: &wrapperspb.UInt32Value{ Value: 11, }, }, @@ -803,10 +803,10 @@ func TestClampTxPowerRange(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MinTxPowerIndex: &types.UInt32Value{ + MinTxPowerIndex: &wrapperspb.UInt32Value{ Value: 12, }, - MaxTxPowerIndex: &types.UInt32Value{ + MaxTxPowerIndex: &wrapperspb.UInt32Value{ Value: 15, }, }, @@ -859,7 +859,7 @@ func TestClampNbTrans(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MinNbTrans: &types.UInt32Value{ + MinNbTrans: &wrapperspb.UInt32Value{ Value: 1, }, }, @@ -880,7 +880,7 @@ func TestClampNbTrans(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MinNbTrans: &types.UInt32Value{ + MinNbTrans: &wrapperspb.UInt32Value{ Value: 3, }, }, @@ -901,7 +901,7 @@ func TestClampNbTrans(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MaxNbTrans: &types.UInt32Value{ + MaxNbTrans: &wrapperspb.UInt32Value{ Value: 3, }, }, @@ -922,7 +922,7 @@ func TestClampNbTrans(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MaxNbTrans: &types.UInt32Value{ + MaxNbTrans: &wrapperspb.UInt32Value{ Value: 7, }, }, @@ -943,10 +943,10 @@ func TestClampNbTrans(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MinNbTrans: &types.UInt32Value{ + MinNbTrans: &wrapperspb.UInt32Value{ Value: 2, }, - MaxNbTrans: &types.UInt32Value{ + MaxNbTrans: &wrapperspb.UInt32Value{ Value: 3, }, }, @@ -967,10 +967,10 @@ func TestClampNbTrans(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MinNbTrans: &types.UInt32Value{ + MinNbTrans: &wrapperspb.UInt32Value{ Value: 7, }, - MaxNbTrans: &types.UInt32Value{ + MaxNbTrans: &wrapperspb.UInt32Value{ Value: 9, }, }, @@ -991,10 +991,10 @@ func TestClampNbTrans(t *testing.T) { Adr: &ttnpb.ADRSettings{ Mode: &ttnpb.ADRSettings_Dynamic{ Dynamic: &ttnpb.ADRSettings_DynamicMode{ - MinNbTrans: &types.UInt32Value{ + MinNbTrans: &wrapperspb.UInt32Value{ Value: 12, }, - MaxNbTrans: &types.UInt32Value{ + MaxNbTrans: &wrapperspb.UInt32Value{ Value: 15, }, }, diff --git a/pkg/networkserver/mac/dev_status_test.go b/pkg/networkserver/mac/dev_status_test.go index 089056586f..e972fc2096 100644 --- a/pkg/networkserver/mac/dev_status_test.go +++ b/pkg/networkserver/mac/dev_status_test.go @@ -19,7 +19,6 @@ import ( "testing" "time" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/events" . "go.thethings.network/lorawan-stack/v3/pkg/networkserver/mac" @@ -47,7 +46,7 @@ func TestNeedsDevStatusReq(t *testing.T) { InputDevice: &ttnpb.EndDevice{ LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(scheduleAt), MacSettings: &ttnpb.MACSettings{ - StatusCountPeriodicity: &pbtypes.UInt32Value{ + StatusCountPeriodicity: &wrapperspb.UInt32Value{ Value: 5, }, }, @@ -64,7 +63,7 @@ func TestNeedsDevStatusReq(t *testing.T) { InputDevice: &ttnpb.EndDevice{ LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(scheduleAt), MacSettings: &ttnpb.MACSettings{ - StatusCountPeriodicity: &pbtypes.UInt32Value{ + StatusCountPeriodicity: &wrapperspb.UInt32Value{ Value: 5, }, }, @@ -82,7 +81,7 @@ func TestNeedsDevStatusReq(t *testing.T) { InputDevice: &ttnpb.EndDevice{ LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(scheduleAt), MacSettings: &ttnpb.MACSettings{ - StatusCountPeriodicity: &pbtypes.UInt32Value{ + StatusCountPeriodicity: &wrapperspb.UInt32Value{ Value: 1000, }, StatusTimePeriodicity: ttnpb.ProtoDurationPtr(time.Hour), @@ -100,7 +99,7 @@ func TestNeedsDevStatusReq(t *testing.T) { InputDevice: &ttnpb.EndDevice{ LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(scheduleAt.Add(-time.Hour + time.Nanosecond)), MacSettings: &ttnpb.MACSettings{ - StatusCountPeriodicity: &pbtypes.UInt32Value{ + StatusCountPeriodicity: &wrapperspb.UInt32Value{ Value: 1000, }, StatusTimePeriodicity: ttnpb.ProtoDurationPtr(time.Hour), @@ -118,7 +117,7 @@ func TestNeedsDevStatusReq(t *testing.T) { InputDevice: &ttnpb.EndDevice{ LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(scheduleAt.Add(-time.Hour)), MacSettings: &ttnpb.MACSettings{ - StatusCountPeriodicity: &pbtypes.UInt32Value{ + StatusCountPeriodicity: &wrapperspb.UInt32Value{ Value: 1000, }, StatusTimePeriodicity: ttnpb.ProtoDurationPtr(time.Hour), @@ -137,7 +136,7 @@ func TestNeedsDevStatusReq(t *testing.T) { InputDevice: &ttnpb.EndDevice{ LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(scheduleAt.Add(-time.Hour - time.Nanosecond)), MacSettings: &ttnpb.MACSettings{ - StatusCountPeriodicity: &pbtypes.UInt32Value{ + StatusCountPeriodicity: &wrapperspb.UInt32Value{ Value: 1000, }, StatusTimePeriodicity: ttnpb.ProtoDurationPtr(time.Hour), diff --git a/pkg/networkserver/utils_internal_test.go b/pkg/networkserver/utils_internal_test.go index d2d176f5c4..ebd53c303d 100644 --- a/pkg/networkserver/utils_internal_test.go +++ b/pkg/networkserver/utils_internal_test.go @@ -20,7 +20,6 @@ import ( "testing" "time" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/band" "go.thethings.network/lorawan-stack/v3/pkg/gpstime" @@ -31,6 +30,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/wrapperspb" ) func TestNextDataDownlinkSlot(t *testing.T) { @@ -154,7 +154,7 @@ func TestNextDataDownlinkSlot(t *testing.T) { }, MacSettings: &ttnpb.MACSettings{ StatusTimePeriodicity: ttnpb.ProtoDurationPtr(0), - StatusCountPeriodicity: &pbtypes.UInt32Value{Value: 0}, + StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 0}, }, Session: &ttnpb.Session{ DevAddr: test.DefaultDevAddr.Bytes(), diff --git a/pkg/packetbrokeragent/grpc_gspba.go b/pkg/packetbrokeragent/grpc_gspba.go index 4193c2d945..0eb99f4188 100644 --- a/pkg/packetbrokeragent/grpc_gspba.go +++ b/pkg/packetbrokeragent/grpc_gspba.go @@ -30,6 +30,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/wrapperspb" ) // DefaultGatewayOnlineTTL is the default time-to-live of the online status reported to Packet Broker. @@ -127,7 +128,7 @@ func (s *gsPbaServer) UpdateGateway(ctx context.Context, req *ttnpb.UpdatePacket var val *packetbroker.GatewayLocation_Terrestrial if req.Gateway.LocationPublic && ttnpb.HasAnyField(req.FieldMask.GetPaths(), "antennas") && len(req.Gateway.Antennas) > 0 { val = &packetbroker.GatewayLocation_Terrestrial{ - AntennaCount: &pbtypes.UInt32Value{ + AntennaCount: &wrapperspb.UInt32Value{ Value: uint32(len(req.Gateway.Antennas)), }, AntennaPlacement: toPBTerrestrialAntennaPlacement(req.Gateway.Antennas[0].Placement), @@ -137,7 +138,7 @@ func (s *gsPbaServer) UpdateGateway(ctx context.Context, req *ttnpb.UpdatePacket } } else { val = &packetbroker.GatewayLocation_Terrestrial{ - AntennaCount: &pbtypes.UInt32Value{Value: 0}, + AntennaCount: &wrapperspb.UInt32Value{Value: 0}, } } updateReq.GatewayLocation.Location = &packetbroker.GatewayLocation{ From 16ac188363db75a48efc6da6905b8bb14eec0988 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Mon, 19 Dec 2022 15:57:53 +0100 Subject: [PATCH 08/30] all: Use new BoolValue type --- .../applicationserver_test.go | 5 ++-- pkg/applicationserver/registry.go | 6 ++--- pkg/applicationserver/registry_test.go | 8 +++---- pkg/band/rpc.go | 5 ++-- pkg/band/rpc_test.go | 5 ++-- .../store/remote/remote_test.go | 2 +- pkg/devicerepository/store/remote/schema.go | 3 +-- pkg/identityserver/config.go | 23 +++++++++---------- pkg/packetbrokeragent/grpc_gspba.go | 2 +- pkg/packetbrokeragent/grpc_pba.go | 3 ++- pkg/packetbrokeragent/grpc_pba_test.go | 3 ++- pkg/util/test/constructors_generated.go | 2 +- 12 files changed, 35 insertions(+), 32 deletions(-) diff --git a/pkg/applicationserver/applicationserver_test.go b/pkg/applicationserver/applicationserver_test.go index 89bf475901..4343dbcf25 100644 --- a/pkg/applicationserver/applicationserver_test.go +++ b/pkg/applicationserver/applicationserver_test.go @@ -58,6 +58,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/wrapperspb" ) type connChannels struct { @@ -2342,7 +2343,7 @@ func TestSkipPayloadCrypto(t *testing.T) { } _, err := linkRegistry.Set(ctx, registeredApplicationID, nil, func(_ *ttnpb.ApplicationLink) (*ttnpb.ApplicationLink, []string, error) { return &ttnpb.ApplicationLink{ - SkipPayloadCrypto: &pbtypes.BoolValue{Value: true}, + SkipPayloadCrypto: &wrapperspb.BoolValue{Value: true}, }, []string{"skip_payload_crypto"}, nil }) if err != nil { @@ -2470,7 +2471,7 @@ func TestSkipPayloadCrypto(t *testing.T) { } }() - for _, override := range []*pbtypes.BoolValue{ + for _, override := range []*wrapperspb.BoolValue{ nil, {Value: true}, {Value: false}, diff --git a/pkg/applicationserver/registry.go b/pkg/applicationserver/registry.go index 4341d3abff..3c8faefe5c 100644 --- a/pkg/applicationserver/registry.go +++ b/pkg/applicationserver/registry.go @@ -17,10 +17,10 @@ package applicationserver import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/internal/registry" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/wrapperspb" ) // DeviceRegistry is a store for end devices. @@ -106,7 +106,7 @@ var replacedEndDeviceFields = []registry.ReplacedEndDeviceField{ New: "skip_payload_crypto_override", GetTransform: func(dev *ttnpb.EndDevice) { if dev.SkipPayloadCryptoOverride == nil && dev.SkipPayloadCrypto { - dev.SkipPayloadCryptoOverride = &pbtypes.BoolValue{Value: true} + dev.SkipPayloadCryptoOverride = &wrapperspb.BoolValue{Value: true} } else { dev.SkipPayloadCrypto = dev.SkipPayloadCryptoOverride.GetValue() } @@ -118,7 +118,7 @@ var replacedEndDeviceFields = []registry.ReplacedEndDeviceField{ return errInvalidFieldValue.WithAttributes("field", "skip_payload_crypto") } } else { - dev.SkipPayloadCryptoOverride = &pbtypes.BoolValue{Value: dev.SkipPayloadCrypto} + dev.SkipPayloadCryptoOverride = &wrapperspb.BoolValue{Value: dev.SkipPayloadCrypto} } } dev.SkipPayloadCrypto = false diff --git a/pkg/applicationserver/registry_test.go b/pkg/applicationserver/registry_test.go index 3cfecac14d..ae19575987 100644 --- a/pkg/applicationserver/registry_test.go +++ b/pkg/applicationserver/registry_test.go @@ -20,7 +20,6 @@ import ( "testing" "time" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/redis" "go.thethings.network/lorawan-stack/v3/pkg/errors" @@ -29,6 +28,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/unique" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/wrapperspb" ) func DeleteDevice(ctx context.Context, r DeviceRegistry, ids *ttnpb.EndDeviceIdentifiers) error { @@ -54,7 +54,7 @@ func handleDeviceRegistryTest(t *testing.T, reg DeviceRegistry) { SessionKeyId: []byte{0x11, 0x22, 0x33, 0x44}, }, }, - SkipPayloadCryptoOverride: &pbtypes.BoolValue{Value: true}, + SkipPayloadCryptoOverride: &wrapperspb.BoolValue{Value: true}, } ret, err := reg.Get(ctx, pb.Ids, ttnpb.EndDeviceFieldPathsTopLevel) @@ -234,7 +234,7 @@ func handleLinkRegistryTest(t *testing.T, reg LinkRegistry) { ApplicationId: "app-1", } app1 := &ttnpb.ApplicationLink{ - SkipPayloadCrypto: &pbtypes.BoolValue{ + SkipPayloadCrypto: &wrapperspb.BoolValue{ Value: true, }, } @@ -242,7 +242,7 @@ func handleLinkRegistryTest(t *testing.T, reg LinkRegistry) { ApplicationId: "app-2", } app2 := &ttnpb.ApplicationLink{ - SkipPayloadCrypto: &pbtypes.BoolValue{ + SkipPayloadCrypto: &wrapperspb.BoolValue{ Value: false, }, } diff --git a/pkg/band/rpc.go b/pkg/band/rpc.go index 0f8677ecd3..49cff05672 100644 --- a/pkg/band/rpc.go +++ b/pkg/band/rpc.go @@ -20,6 +20,7 @@ import ( "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "golang.org/x/exp/maps" + "google.golang.org/protobuf/types/known/wrapperspb" ) // GetPhyVersions returns the list of supported phy versions for the given band. @@ -182,13 +183,13 @@ func (b Band) BandDescription() *ttnpb.BandDescription { } if b.BootDwellTime.Uplinks != nil { - bandDescription.BootDwellTime.Uplinks = &types.BoolValue{ + bandDescription.BootDwellTime.Uplinks = &wrapperspb.BoolValue{ Value: *b.BootDwellTime.Uplinks, } } if b.BootDwellTime.Downlinks != nil { - bandDescription.BootDwellTime.Downlinks = &types.BoolValue{ + bandDescription.BootDwellTime.Downlinks = &wrapperspb.BoolValue{ Value: *b.BootDwellTime.Downlinks, } } diff --git a/pkg/band/rpc_test.go b/pkg/band/rpc_test.go index 38a0ef5afa..813265760f 100644 --- a/pkg/band/rpc_test.go +++ b/pkg/band/rpc_test.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/wrapperspb" ) func TestGetPhyVersions(t *testing.T) { @@ -537,8 +538,8 @@ func TestBand_convertToBandDescription(t *testing.T) { }, BootDwellTime: &ttnpb.BandDescription_DwellTime{ - Uplinks: &types.BoolValue{Value: true}, - Downlinks: &types.BoolValue{Value: true}, + Uplinks: &wrapperspb.BoolValue{Value: true}, + Downlinks: &wrapperspb.BoolValue{Value: true}, }, }, }, diff --git a/pkg/devicerepository/store/remote/remote_test.go b/pkg/devicerepository/store/remote/remote_test.go index 777e36a8c3..33fc13f151 100644 --- a/pkg/devicerepository/store/remote/remote_test.go +++ b/pkg/devicerepository/store/remote/remote_test.go @@ -281,7 +281,7 @@ func TestRemoteStore(t *testing.T) { }, Weight: &wrapperspb.FloatValue{Value: 5}, Battery: &ttnpb.EndDeviceModel_Battery{ - Replaceable: &pbtypes.BoolValue{Value: true}, + Replaceable: &wrapperspb.BoolValue{Value: true}, Type: "AAA", }, OperatingConditions: &ttnpb.EndDeviceModel_OperatingConditions{ diff --git a/pkg/devicerepository/store/remote/schema.go b/pkg/devicerepository/store/remote/schema.go index 4e49f79ac4..cbb7513f02 100644 --- a/pkg/devicerepository/store/remote/schema.go +++ b/pkg/devicerepository/store/remote/schema.go @@ -15,7 +15,6 @@ package remote import ( - pbtypes "github.com/gogo/protobuf/types" "google.golang.org/protobuf/types/known/wrapperspb" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" @@ -208,7 +207,7 @@ func (d EndDeviceModel) ToPB(brandID, modelID string, paths ...string) (*ttnpb.E if battery := d.Battery; battery != nil { pb.Battery = &ttnpb.EndDeviceModel_Battery{ - Replaceable: &pbtypes.BoolValue{Value: d.Battery.Replaceable}, + Replaceable: &wrapperspb.BoolValue{Value: d.Battery.Replaceable}, Type: d.Battery.Type, } } diff --git a/pkg/identityserver/config.go b/pkg/identityserver/config.go index d41b94e4e3..eba4ff8332 100644 --- a/pkg/identityserver/config.go +++ b/pkg/identityserver/config.go @@ -19,7 +19,6 @@ import ( "os" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/config" "go.thethings.network/lorawan-stack/v3/pkg/email" "go.thethings.network/lorawan-stack/v3/pkg/email/sendgrid" @@ -172,14 +171,14 @@ func (c Config) toProto() *ttnpb.IsConfiguration { UserRegistration: &ttnpb.IsConfiguration_UserRegistration{ Enabled: c.UserRegistration.Enabled, Invitation: &ttnpb.IsConfiguration_UserRegistration_Invitation{ - Required: &pbtypes.BoolValue{Value: c.UserRegistration.Invitation.Required}, + Required: &wrapperspb.BoolValue{Value: c.UserRegistration.Invitation.Required}, TokenTtl: ttnpb.ProtoDurationPtr(c.UserRegistration.Invitation.TokenTTL), }, ContactInfoValidation: &ttnpb.IsConfiguration_UserRegistration_ContactInfoValidation{ - Required: &pbtypes.BoolValue{Value: c.UserRegistration.ContactInfoValidation.Required}, + Required: &wrapperspb.BoolValue{Value: c.UserRegistration.ContactInfoValidation.Required}, }, AdminApproval: &ttnpb.IsConfiguration_UserRegistration_AdminApproval{ - Required: &pbtypes.BoolValue{Value: c.UserRegistration.AdminApproval.Required}, + Required: &wrapperspb.BoolValue{Value: c.UserRegistration.AdminApproval.Required}, }, PasswordRequirements: &ttnpb.IsConfiguration_UserRegistration_PasswordRequirements{ MinLength: &wrapperspb.UInt32Value{Value: uint32(c.UserRegistration.PasswordRequirements.MinLength)}, @@ -190,20 +189,20 @@ func (c Config) toProto() *ttnpb.IsConfiguration { }, }, ProfilePicture: &ttnpb.IsConfiguration_ProfilePicture{ - DisableUpload: &pbtypes.BoolValue{Value: c.ProfilePicture.DisableUpload}, - UseGravatar: &pbtypes.BoolValue{Value: c.ProfilePicture.UseGravatar}, + DisableUpload: &wrapperspb.BoolValue{Value: c.ProfilePicture.DisableUpload}, + UseGravatar: &wrapperspb.BoolValue{Value: c.ProfilePicture.UseGravatar}, }, EndDevicePicture: &ttnpb.IsConfiguration_EndDevicePicture{ - DisableUpload: &pbtypes.BoolValue{Value: c.ProfilePicture.DisableUpload}, + DisableUpload: &wrapperspb.BoolValue{Value: c.ProfilePicture.DisableUpload}, }, UserRights: &ttnpb.IsConfiguration_UserRights{ - CreateApplications: &pbtypes.BoolValue{Value: c.UserRights.CreateApplications}, - CreateClients: &pbtypes.BoolValue{Value: c.UserRights.CreateClients}, - CreateGateways: &pbtypes.BoolValue{Value: c.UserRights.CreateGateways}, - CreateOrganizations: &pbtypes.BoolValue{Value: c.UserRights.CreateOrganizations}, + CreateApplications: &wrapperspb.BoolValue{Value: c.UserRights.CreateApplications}, + CreateClients: &wrapperspb.BoolValue{Value: c.UserRights.CreateClients}, + CreateGateways: &wrapperspb.BoolValue{Value: c.UserRights.CreateGateways}, + CreateOrganizations: &wrapperspb.BoolValue{Value: c.UserRights.CreateOrganizations}, }, AdminRights: &ttnpb.IsConfiguration_AdminRights{ - All: &pbtypes.BoolValue{Value: c.AdminRights.All}, + All: &wrapperspb.BoolValue{Value: c.AdminRights.All}, }, } } diff --git a/pkg/packetbrokeragent/grpc_gspba.go b/pkg/packetbrokeragent/grpc_gspba.go index 0eb99f4188..2dcdec632a 100644 --- a/pkg/packetbrokeragent/grpc_gspba.go +++ b/pkg/packetbrokeragent/grpc_gspba.go @@ -149,7 +149,7 @@ func (s *gsPbaServer) UpdateGateway(ctx context.Context, req *ttnpb.UpdatePacket } if ttnpb.HasAnyField(req.FieldMask.GetPaths(), "status_public") && ttnpb.HasAnyField(req.FieldMask.GetPaths(), "online") { - updateReq.Online = &pbtypes.BoolValue{} + updateReq.Online = &wrapperspb.BoolValue{} if req.Gateway.StatusPublic && req.Gateway.Online { updateReq.Online.Value = true updateReq.OnlineTtl = pbtypes.DurationProto(s.config.GatewayOnlineTTL) diff --git a/pkg/packetbrokeragent/grpc_pba.go b/pkg/packetbrokeragent/grpc_pba.go index d274e09827..4df12dc21d 100644 --- a/pkg/packetbrokeragent/grpc_pba.go +++ b/pkg/packetbrokeragent/grpc_pba.go @@ -30,6 +30,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/grpc" "google.golang.org/grpc/metadata" + "google.golang.org/protobuf/types/known/wrapperspb" ) const listPageSize = 100 @@ -164,7 +165,7 @@ func (s *pbaServer) Register(ctx context.Context, req *ttnpb.PacketBrokerRegiste TechnicalContact: &packetbroker.ContactInfoValue{ Value: technicalContact, }, - Listed: &pbtypes.BoolValue{ + Listed: &wrapperspb.BoolValue{ Value: listed, }, } diff --git a/pkg/packetbrokeragent/grpc_pba_test.go b/pkg/packetbrokeragent/grpc_pba_test.go index 928219377c..1e3ce546cb 100644 --- a/pkg/packetbrokeragent/grpc_pba_test.go +++ b/pkg/packetbrokeragent/grpc_pba_test.go @@ -42,6 +42,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/types/known/wrapperspb" ) func TestPba(t *testing.T) { @@ -243,7 +244,7 @@ func TestPba(t *testing.T) { Email: "tech@example.com", }, }, - Listed: &pbtypes.BoolValue{ + Listed: &wrapperspb.BoolValue{ Value: true, }, }) diff --git a/pkg/util/test/constructors_generated.go b/pkg/util/test/constructors_generated.go index 2cdbe7de9c..645ed806e0 100644 --- a/pkg/util/test/constructors_generated.go +++ b/pkg/util/test/constructors_generated.go @@ -1035,7 +1035,7 @@ func (EndDeviceOptionNamespace) WithSkipPayloadCrypto(v bool) EndDeviceOption { } // WithSkipPayloadCryptoOverride returns a EndDeviceOption, which returns a copy of ttnpb.EndDevice with SkipPayloadCryptoOverride set to v. -func (EndDeviceOptionNamespace) WithSkipPayloadCryptoOverride(v *pbtypes.BoolValue) EndDeviceOption { +func (EndDeviceOptionNamespace) WithSkipPayloadCryptoOverride(v *wrapperspb.BoolValue) EndDeviceOption { return func(x *ttnpb.EndDevice) *ttnpb.EndDevice { copy := ttnpb.Clone(x) copy.SkipPayloadCryptoOverride = v From 7005eac2b065ea0e5140e792ffcfc33d52309235 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Mon, 19 Dec 2022 15:58:48 +0100 Subject: [PATCH 09/30] all: Use new StringValue type --- pkg/events/events.go | 3 ++- pkg/identityserver/storetest/notification_store.go | 3 ++- pkg/packetbrokeragent/agent_test.go | 6 +++--- pkg/packetbrokeragent/grpc_pba.go | 2 +- pkg/packetbrokeragent/grpc_pba_test.go | 2 +- pkg/packetbrokeragent/translation.go | 4 ++-- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/pkg/events/events.go b/pkg/events/events.go index b52a682351..b9c5f563a1 100644 --- a/pkg/events/events.go +++ b/pkg/events/events.go @@ -31,6 +31,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" "go.thethings.network/lorawan-stack/v3/pkg/jsonpb" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/wrapperspb" ) // Event interface. @@ -186,7 +187,7 @@ func marshalData(data interface{}) (anyPB *pbtypes.Any, err error) { return nil, err } } else { - anyPB, err = pbtypes.MarshalAny(&pbtypes.StringValue{Value: errData.Error()}) + anyPB, err = pbtypes.MarshalAny(&wrapperspb.StringValue{Value: errData.Error()}) if err != nil { return nil, err } diff --git a/pkg/identityserver/storetest/notification_store.go b/pkg/identityserver/storetest/notification_store.go index f5f9143970..3b6549e71b 100644 --- a/pkg/identityserver/storetest/notification_store.go +++ b/pkg/identityserver/storetest/notification_store.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/wrapperspb" ) type notificationsByCreatedAt []*ttnpb.Notification @@ -55,7 +56,7 @@ func (st *StoreTest) TestNotificationStore(t *T) { } defer s.Close() - notificationData, _ := pbtypes.MarshalAny(&pbtypes.StringValue{Value: "test"}) + notificationData, _ := pbtypes.MarshalAny(&wrapperspb.StringValue{Value: "test"}) var notifications []*ttnpb.Notification diff --git a/pkg/packetbrokeragent/agent_test.go b/pkg/packetbrokeragent/agent_test.go index f20889e65b..2bdd4435f8 100644 --- a/pkg/packetbrokeragent/agent_test.go +++ b/pkg/packetbrokeragent/agent_test.go @@ -668,7 +668,7 @@ func TestHomeNetwork(t *testing.T) { ForwarderTenantId: "foo-tenant", ForwarderClusterId: "test", ForwarderGatewayEui: types.EUI64{0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}.Bytes(), - ForwarderGatewayId: &pbtypes.StringValue{ + ForwarderGatewayId: &wrapperspb.StringValue{ Value: "foo-gateway", }, HomeNetworkNetId: types.NetID{0x0, 0x0, 0x13}.Bytes(), @@ -698,7 +698,7 @@ func TestHomeNetwork(t *testing.T) { ForwarderTenantId: "foo-tenant", ForwarderClusterId: "test", ForwarderGatewayEui: types.EUI64{0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}.Bytes(), - ForwarderGatewayId: &pbtypes.StringValue{ + ForwarderGatewayId: &wrapperspb.StringValue{ Value: "foo-gateway", }, HomeNetworkNetId: types.NetID{0x0, 0x0, 0x13}.Bytes(), @@ -810,7 +810,7 @@ func TestHomeNetwork(t *testing.T) { ForwarderTenantId: "foo-tenant", ForwarderClusterId: "test", ForwarderGatewayEui: types.EUI64{0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}.Bytes(), - ForwarderGatewayId: &pbtypes.StringValue{ + ForwarderGatewayId: &wrapperspb.StringValue{ Value: "foo-gateway", }, HomeNetworkNetId: types.NetID{0x0, 0x0, 0x13}.Bytes(), diff --git a/pkg/packetbrokeragent/grpc_pba.go b/pkg/packetbrokeragent/grpc_pba.go index 4df12dc21d..a2cea71dc5 100644 --- a/pkg/packetbrokeragent/grpc_pba.go +++ b/pkg/packetbrokeragent/grpc_pba.go @@ -156,7 +156,7 @@ func (s *pbaServer) Register(ctx context.Context, req *ttnpb.PacketBrokerRegiste req := &iampb.UpdateTenantRequest{ NetId: s.netID.MarshalNumber(), TenantId: tenantID, - Name: &pbtypes.StringValue{ + Name: &wrapperspb.StringValue{ Value: registration.Name, }, AdministrativeContact: &packetbroker.ContactInfoValue{ diff --git a/pkg/packetbrokeragent/grpc_pba_test.go b/pkg/packetbrokeragent/grpc_pba_test.go index 1e3ce546cb..468eb32bda 100644 --- a/pkg/packetbrokeragent/grpc_pba_test.go +++ b/pkg/packetbrokeragent/grpc_pba_test.go @@ -230,7 +230,7 @@ func TestPba(t *testing.T) { a.So(req, should.Resemble, &iampb.UpdateTenantRequest{ NetId: 0x13, TenantId: "foo-tenant", - Name: &pbtypes.StringValue{ + Name: &wrapperspb.StringValue{ Value: "Test Network", }, // NOTE: DevAddrBlocks are not updated here, as the tenant cannot change their own DevAddr blocks. diff --git a/pkg/packetbrokeragent/translation.go b/pkg/packetbrokeragent/translation.go index fe8f1d7595..8d84f15174 100644 --- a/pkg/packetbrokeragent/translation.go +++ b/pkg/packetbrokeragent/translation.go @@ -503,11 +503,11 @@ func fromPBUplink(ctx context.Context, msg *packetbroker.RoutedUplinkMessage, re } switch s := id.Id.(type) { case *packetbroker.GatewayIdentifier_Hash: - pbMD.ForwarderGatewayId = &pbtypes.StringValue{ + pbMD.ForwarderGatewayId = &wrapperspb.StringValue{ Value: base64.StdEncoding.EncodeToString(s.Hash), } case *packetbroker.GatewayIdentifier_Plain: - pbMD.ForwarderGatewayId = &pbtypes.StringValue{ + pbMD.ForwarderGatewayId = &wrapperspb.StringValue{ Value: s.Plain, } } From 89858e5a9fb20b104863776f54602e5a80edfd1f Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Mon, 19 Dec 2022 15:44:21 +0100 Subject: [PATCH 10/30] all: Use new Struct type --- .../commands/applications_packages.go | 14 +- .../applicationserver_test.go | 182 +++++++++--------- .../io/formatters/json_test.go | 8 +- .../io/formatters/protobuf_test.go | 8 +- pkg/applicationserver/io/grpc/grpc_test.go | 20 +- pkg/applicationserver/io/mqtt/mqtt_test.go | 14 +- .../io/packages/grpc_test.go | 7 +- .../io/packages/loradms/v1/data.go | 14 +- .../io/packages/loradms/v1/package.go | 11 +- .../io/packages/loragls/v3/data.go | 54 +++--- .../io/packages/loragls/v3/package.go | 12 +- .../io/pubsub/pubsub_test.go | 20 +- pkg/applicationserver/io/web/webhooks_test.go | 20 +- .../store/remote/remote_test.go | 4 +- pkg/devicetemplates/microchip.go | 6 +- pkg/events/events.go | 5 +- pkg/events/options.go | 8 +- pkg/gatewayserver/io/ws/lbslns/version.go | 10 +- pkg/gatewayserver/io/ws/ws_test.go | 18 +- pkg/goproto/struct.go | 2 +- pkg/goproto/struct_test.go | 2 +- pkg/joinserver/registry_test.go | 8 +- pkg/joinserver/util_test.go | 4 +- .../cayennelpp/cayennelpp_test.go | 26 +-- .../javascript/javascript.go | 10 +- .../javascript/javascript_test.go | 106 +++++----- .../normalizedpayload/uplink.go | 36 ++-- .../normalizedpayload/uplink_test.go | 82 ++++---- pkg/provisioning/microchip.go | 4 +- pkg/provisioning/microchip_test.go | 8 +- pkg/provisioning/provisioning.go | 4 +- pkg/util/test/constructors_generated.go | 2 +- 32 files changed, 366 insertions(+), 363 deletions(-) diff --git a/cmd/ttn-lw-cli/commands/applications_packages.go b/cmd/ttn-lw-cli/commands/applications_packages.go index 70ea749944..d99443f550 100644 --- a/cmd/ttn-lw-cli/commands/applications_packages.go +++ b/cmd/ttn-lw-cli/commands/applications_packages.go @@ -20,7 +20,6 @@ import ( "strings" "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - pbtypes "github.com/gogo/protobuf/types" "github.com/spf13/cobra" "github.com/spf13/pflag" "go.thethings.network/lorawan-stack/v3/cmd/internal/io" @@ -29,6 +28,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/jsonpb" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/structpb" ) var ( @@ -264,13 +264,13 @@ var ( logger.WithError(err).Warn("Package data not available") } } else { - var st pbtypes.Struct - err := jsonpb.TTN().NewDecoder(reader).Decode(&st) + st := &structpb.Struct{} + err := jsonpb.TTN().NewDecoder(reader).Decode(st) if err != nil { return err } - association.Data = &st + association.Data = st paths = append(paths, "data") } @@ -408,13 +408,13 @@ var ( logger.WithError(err).Warn("Package data not available") } } else { - var st pbtypes.Struct - err := jsonpb.TTN().NewDecoder(reader).Decode(&st) + st := &structpb.Struct{} + err := jsonpb.TTN().NewDecoder(reader).Decode(st) if err != nil { return err } - association.Data = &st + association.Data = st paths = append(paths, "data") } diff --git a/pkg/applicationserver/applicationserver_test.go b/pkg/applicationserver/applicationserver_test.go index 4343dbcf25..46dc0b972c 100644 --- a/pkg/applicationserver/applicationserver_test.go +++ b/pkg/applicationserver/applicationserver_test.go @@ -28,7 +28,6 @@ import ( mqttnet "github.com/TheThingsIndustries/mystique/pkg/net" mqttserver "github.com/TheThingsIndustries/mystique/pkg/server" mqtt "github.com/eclipse/paho.mqtt.golang" - pbtypes "github.com/gogo/protobuf/types" nats_server "github.com/nats-io/nats-server/v2/server" nats_test_server "github.com/nats-io/nats-server/v2/test" nats_client "github.com/nats-io/nats.go" @@ -58,6 +57,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/structpb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -1062,10 +1062,10 @@ func TestApplicationServer(t *testing.T) { FPort: 22, FCnt: 22, FrmPayload: []byte{0xc1}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 193, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1169,10 +1169,10 @@ func TestApplicationServer(t *testing.T) { FPort: 11, FCnt: 11, FrmPayload: []byte{0x1, 0x1, 0x1, 0x1}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 4, }, }, @@ -1184,10 +1184,10 @@ func TestApplicationServer(t *testing.T) { FPort: 22, FCnt: 22, FrmPayload: []byte{0x2, 0x2, 0x2, 0x2}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 8, }, }, @@ -1226,10 +1226,10 @@ func TestApplicationServer(t *testing.T) { FPort: 42, FCnt: 42, FrmPayload: []byte{0x01, 0x02, 0x03}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 6, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1277,10 +1277,10 @@ func TestApplicationServer(t *testing.T) { FPort: 42, FCnt: 42, FrmPayload: []byte{0x50, 0xd, 0x40, 0xd5}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 370, }, }, @@ -1299,10 +1299,10 @@ func TestApplicationServer(t *testing.T) { FPort: 42, FCnt: 42, FrmPayload: []byte{0x1, 0x1, 0x1, 0x1}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 4, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1345,10 +1345,10 @@ func TestApplicationServer(t *testing.T) { FPort: 42, FCnt: 42, FrmPayload: []byte{0x1, 0x1, 0x1, 0x1}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 4, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1389,10 +1389,10 @@ func TestApplicationServer(t *testing.T) { FPort: 42, FCnt: 42, FrmPayload: []byte{0x1, 0x1, 0x1, 0x1}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 4, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1437,10 +1437,10 @@ func TestApplicationServer(t *testing.T) { FPort: 11, FCnt: 1, FrmPayload: []byte{0x1, 0x1, 0x1, 0x1}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 4, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1460,10 +1460,10 @@ func TestApplicationServer(t *testing.T) { FPort: 22, FCnt: 2, FrmPayload: []byte{0x2, 0x2, 0x2, 0x2}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 8, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1475,10 +1475,10 @@ func TestApplicationServer(t *testing.T) { FPort: 11, FCnt: 44, FrmPayload: []byte{0x1, 0x1, 0x1, 0x1}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 4, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1565,10 +1565,10 @@ func TestApplicationServer(t *testing.T) { FPort: 22, FCnt: 2, FrmPayload: []byte{0x2, 0x2, 0x2, 0x2}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 8, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1580,10 +1580,10 @@ func TestApplicationServer(t *testing.T) { FPort: 11, FCnt: 44, FrmPayload: []byte{0x1, 0x1, 0x1, 0x1}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 4, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1622,10 +1622,10 @@ func TestApplicationServer(t *testing.T) { FPort: 24, FCnt: 24, FrmPayload: []byte{0x64, 0x64, 0x64}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 300, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1659,10 +1659,10 @@ func TestApplicationServer(t *testing.T) { FPort: 11, FCnt: 1, FrmPayload: []byte{0x1, 0x1, 0x1, 0x1}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 4, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1674,10 +1674,10 @@ func TestApplicationServer(t *testing.T) { FPort: 22, FCnt: 2, FrmPayload: []byte{0x2, 0x2, 0x2, 0x2}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 8, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1723,10 +1723,10 @@ func TestApplicationServer(t *testing.T) { FPort: 11, FCnt: 43, FrmPayload: []byte{0x1, 0x1, 0x1, 0x1}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 4, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1738,10 +1738,10 @@ func TestApplicationServer(t *testing.T) { FPort: 22, FCnt: 44, FrmPayload: []byte{0x2, 0x2, 0x2, 0x2}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 8, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1812,10 +1812,10 @@ func TestApplicationServer(t *testing.T) { FPort: 11, FCnt: 85, FrmPayload: []byte{0x1, 0x1, 0x1, 0x1}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 4, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1827,10 +1827,10 @@ func TestApplicationServer(t *testing.T) { FPort: 22, FCnt: 86, FrmPayload: []byte{0x2, 0x2, 0x2, 0x2}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 8, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1869,10 +1869,10 @@ func TestApplicationServer(t *testing.T) { FPort: 42, FCnt: 42, FrmPayload: []byte{0x2a, 0x2a, 0x2a}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 126, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -1932,10 +1932,10 @@ func TestApplicationServer(t *testing.T) { FPort: 42, FCnt: 42, FrmPayload: []byte{0x2a, 0x2a, 0x2a}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 126, // Payload formatter sums the bytes in FRMPayload. }, }, @@ -2104,10 +2104,10 @@ func TestApplicationServer(t *testing.T) { { { FPort: 33, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 6, // Payload formatter returns a byte slice with this many 1s. }, }, @@ -2146,10 +2146,10 @@ func TestApplicationServer(t *testing.T) { FPort: 11, FCnt: 1, FrmPayload: []byte{0x1, 0x1, 0x1}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 3, }, }, @@ -2162,10 +2162,10 @@ func TestApplicationServer(t *testing.T) { FPort: 22, FCnt: 2, FrmPayload: []byte{0x2, 0x2, 0x2}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 6, }, }, @@ -2178,10 +2178,10 @@ func TestApplicationServer(t *testing.T) { FPort: 33, FCnt: 3, FrmPayload: []byte{0x1, 0x1, 0x1, 0x1, 0x1, 0x1}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 6, }, }, @@ -2232,10 +2232,10 @@ func TestApplicationServer(t *testing.T) { FPort: 11, FCnt: 4, FrmPayload: []byte{0x1, 0x1, 0x1}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 3, }, }, @@ -2248,10 +2248,10 @@ func TestApplicationServer(t *testing.T) { FPort: 22, FCnt: 5, FrmPayload: []byte{0x2, 0x2, 0x2}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "sum": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 6, }, }, @@ -3143,14 +3143,14 @@ func TestUplinkNormalized(t *testing.T) { if normalized == nil { t.Fatalf("Expected uplink normalized message") } - a.So(normalized.NormalizedPayload, should.Resemble, &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + a.So(normalized.NormalizedPayload, should.Resemble, &structpb.Struct{ + Fields: map[string]*structpb.Value{ "air": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperature": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 21.5, }, }, diff --git a/pkg/applicationserver/io/formatters/json_test.go b/pkg/applicationserver/io/formatters/json_test.go index 517718d7da..ea06068afd 100644 --- a/pkg/applicationserver/io/formatters/json_test.go +++ b/pkg/applicationserver/io/formatters/json_test.go @@ -18,11 +18,11 @@ import ( "strconv" "testing" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/formatters" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/structpb" ) func TestJSONUpstream(t *testing.T) { @@ -46,10 +46,10 @@ func TestJSONUpstream(t *testing.T) { FPort: 42, FCnt: 42, FrmPayload: []byte{0x1, 0x2, 0x3}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "test_key": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 42, }, }, diff --git a/pkg/applicationserver/io/formatters/protobuf_test.go b/pkg/applicationserver/io/formatters/protobuf_test.go index e6cb943db7..5679fe93bf 100644 --- a/pkg/applicationserver/io/formatters/protobuf_test.go +++ b/pkg/applicationserver/io/formatters/protobuf_test.go @@ -19,11 +19,11 @@ import ( "testing" "github.com/gogo/protobuf/proto" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/formatters" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/structpb" ) func TestProtobufUpstream(t *testing.T) { @@ -47,10 +47,10 @@ func TestProtobufUpstream(t *testing.T) { FPort: 42, FCnt: 42, FrmPayload: []byte{0x1, 0x2, 0x3}, - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "test_key": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 42, }, }, diff --git a/pkg/applicationserver/io/grpc/grpc_test.go b/pkg/applicationserver/io/grpc/grpc_test.go index 8ec7a5ce64..f908ccccbe 100644 --- a/pkg/applicationserver/io/grpc/grpc_test.go +++ b/pkg/applicationserver/io/grpc/grpc_test.go @@ -21,7 +21,6 @@ import ( "testing" "time" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io" . "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/grpc" @@ -42,6 +41,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/structpb" ) var ( @@ -589,10 +589,10 @@ func TestMessageProcessors(t *testing.T) { DeviceId: "foobar", }, Downlink: &ttnpb.ApplicationDownlink{ - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "value_2": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: -50.51, }, }, @@ -634,10 +634,10 @@ func TestMessageProcessors(t *testing.T) { } if a.So(resp.Uplink, should.NotBeNil) { a.So(resp.Uplink.FPort, should.Equal, 1) - a.So(resp.Uplink.DecodedPayload, should.Resemble, &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + a.So(resp.Uplink.DecodedPayload, should.Resemble, &structpb.Struct{ + Fields: map[string]*structpb.Value{ "digital_in_1": { - Kind: &pbtypes.Value_NumberValue{NumberValue: 255}, + Kind: &structpb.Value_NumberValue{NumberValue: 255}, }, }, }) @@ -661,10 +661,10 @@ func TestMessageProcessors(t *testing.T) { } if a.So(resp.Downlink, should.NotBeNil) { a.So(resp.Downlink.FPort, should.Equal, 1) - a.So(resp.Downlink.DecodedPayload, should.Resemble, &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + a.So(resp.Downlink.DecodedPayload, should.Resemble, &structpb.Struct{ + Fields: map[string]*structpb.Value{ "value_2": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: -50.51, }, }, diff --git a/pkg/applicationserver/io/mqtt/mqtt_test.go b/pkg/applicationserver/io/mqtt/mqtt_test.go index 424641a8c1..d11d59e113 100644 --- a/pkg/applicationserver/io/mqtt/mqtt_test.go +++ b/pkg/applicationserver/io/mqtt/mqtt_test.go @@ -22,7 +22,6 @@ import ( "time" mqtt "github.com/eclipse/paho.mqtt.golang" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/mock" @@ -38,6 +37,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/unique" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/structpb" ) var ( @@ -221,14 +221,14 @@ func TestTraffic(t *testing.T) { FPort: 42, FCnt: 42, FrmPayload: []byte{0x1, 0x2, 0x3}, - NormalizedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + NormalizedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "air": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperature": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 21.5, }, }, diff --git a/pkg/applicationserver/io/packages/grpc_test.go b/pkg/applicationserver/io/packages/grpc_test.go index ebcbb418ec..4e47f410f5 100644 --- a/pkg/applicationserver/io/packages/grpc_test.go +++ b/pkg/applicationserver/io/packages/grpc_test.go @@ -37,6 +37,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/structpb" ) var ( @@ -243,10 +244,10 @@ func TestAssociations(t *testing.T) { association := &ttnpb.ApplicationPackageAssociation{ Ids: registeredAssociationID, PackageName: "test-package", - Data: &types.Struct{ - Fields: map[string]*types.Value{ + Data: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "state": { - Kind: &types.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 0, }, }, diff --git a/pkg/applicationserver/io/packages/loradms/v1/data.go b/pkg/applicationserver/io/packages/loradms/v1/data.go index dcad66e561..cb83cd55c0 100644 --- a/pkg/applicationserver/io/packages/loradms/v1/data.go +++ b/pkg/applicationserver/io/packages/loradms/v1/data.go @@ -18,8 +18,8 @@ import ( "fmt" "net/url" - "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/errors" + "google.golang.org/protobuf/types/known/structpb" ) type packageData struct { @@ -48,13 +48,13 @@ var ( errInvalidFieldType = errors.DefineCorruption("invalid_field_type", "field `{field}` has the wrong type `{type}`") ) -func (d *packageData) fromStruct(st *types.Struct) (err error) { +func (d *packageData) fromStruct(st *structpb.Struct) (err error) { fields := st.GetFields() value, ok := fields[tokenField] if !ok { return errFieldNotFound.WithAttributes("field", tokenField) } - stringValue, ok := value.GetKind().(*types.Value_StringValue) + stringValue, ok := value.GetKind().(*structpb.Value_StringValue) if !ok { return errInvalidFieldType.WithAttributes( "field", tokenField, @@ -64,7 +64,7 @@ func (d *packageData) fromStruct(st *types.Struct) (err error) { d.token = stringValue.StringValue value, ok = fields[serverURLField] if ok { - stringValue, ok := value.GetKind().(*types.Value_StringValue) + stringValue, ok := value.GetKind().(*structpb.Value_StringValue) if !ok { return errInvalidFieldType.WithAttributes( "field", serverURLField, @@ -77,7 +77,7 @@ func (d *packageData) fromStruct(st *types.Struct) (err error) { } value, ok = fields[useTLVEncodingField] if ok { - boolValue, ok := value.GetKind().(*types.Value_BoolValue) + boolValue, ok := value.GetKind().(*structpb.Value_BoolValue) if !ok { return errInvalidFieldType.WithAttributes( "field", useTLVEncodingField, @@ -88,7 +88,7 @@ func (d *packageData) fromStruct(st *types.Struct) (err error) { } value, ok = fields[fPortSetField] if ok { - listValue, ok := value.GetKind().(*types.Value_ListValue) + listValue, ok := value.GetKind().(*structpb.Value_ListValue) if !ok { return errInvalidFieldType.WithAttributes( "field", fPortSetField, @@ -98,7 +98,7 @@ func (d *packageData) fromStruct(st *types.Struct) (err error) { listValues := listValue.ListValue.GetValues() d.fPortSet = make(map[uint32]struct{}, len(listValues)) for _, v := range listValues { - numberValue, ok := v.GetKind().(*types.Value_NumberValue) + numberValue, ok := v.GetKind().(*structpb.Value_NumberValue) if !ok { return errInvalidFieldType.WithAttributes( "field", fPortSetField, diff --git a/pkg/applicationserver/io/packages/loradms/v1/package.go b/pkg/applicationserver/io/packages/loradms/v1/package.go index c047bb8d24..9804d67114 100644 --- a/pkg/applicationserver/io/packages/loradms/v1/package.go +++ b/pkg/applicationserver/io/packages/loradms/v1/package.go @@ -31,6 +31,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" urlutil "go.thethings.network/lorawan-stack/v3/pkg/util/url" + "google.golang.org/protobuf/types/known/structpb" ) // PackageName defines the package name. @@ -179,7 +180,7 @@ func (p *DeviceManagementPackage) sendDownlink(ctx context.Context, ids *ttnpb.E func (p *DeviceManagementPackage) sendServiceData( ctx context.Context, ids *ttnpb.EndDeviceIdentifiers, - data *pbtypes.Struct, + data *structpb.Struct, ) error { return p.server.Publish(ctx, &ttnpb.ApplicationUp{ EndDeviceIds: ids, @@ -342,15 +343,15 @@ func hexPtr(x objects.Hex) *objects.Hex { return &x } -func toStruct(i interface{}) (*pbtypes.Struct, error) { +func toStruct(i interface{}) (*structpb.Struct, error) { b, err := jsonpb.TTN().Marshal(i) if err != nil { return nil, err } - var st pbtypes.Struct - err = jsonpb.TTN().Unmarshal(b, &st) + st := &structpb.Struct{} + err = jsonpb.TTN().Unmarshal(b, st) if err != nil { return nil, err } - return &st, nil + return st, nil } diff --git a/pkg/applicationserver/io/packages/loragls/v3/data.go b/pkg/applicationserver/io/packages/loragls/v3/data.go index 6cb791ec83..b4f352087e 100644 --- a/pkg/applicationserver/io/packages/loragls/v3/data.go +++ b/pkg/applicationserver/io/packages/loragls/v3/data.go @@ -19,8 +19,8 @@ import ( "net/url" "time" - "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/errors" + "google.golang.org/protobuf/types/known/structpb" ) var ( @@ -33,7 +33,7 @@ var ( type QueryType uint8 // Value returns the protobuf value for the query type. -func (t QueryType) Value() *types.Value { +func (t QueryType) Value() *structpb.Value { var s string switch t { case QUERY_TOARSSI: @@ -45,16 +45,16 @@ func (t QueryType) Value() *types.Value { default: panic("invalid query type") } - return &types.Value{ - Kind: &types.Value_StringValue{ + return &structpb.Value{ + Kind: &structpb.Value_StringValue{ StringValue: s, }, } } // FromValue sets the query type from a protobuf value. -func (t *QueryType) FromValue(v *types.Value) error { - sv, ok := v.Kind.(*types.Value_StringValue) +func (t *QueryType) FromValue(v *structpb.Value) error { + sv, ok := v.Kind.(*structpb.Value_StringValue) if !ok { return errInvalidType.WithAttributes("type", fmt.Sprintf("%T", v.Kind)) } @@ -107,34 +107,34 @@ const ( tokenField = "token" ) -func toString(s string) *types.Value { - return &types.Value{ - Kind: &types.Value_StringValue{ +func toString(s string) *structpb.Value { + return &structpb.Value{ + Kind: &structpb.Value_StringValue{ StringValue: s, }, } } -func toBool(b bool) *types.Value { - return &types.Value{ - Kind: &types.Value_BoolValue{ +func toBool(b bool) *structpb.Value { + return &structpb.Value{ + Kind: &structpb.Value_BoolValue{ BoolValue: b, }, } } -func toFloat64(f float64) *types.Value { - return &types.Value{ - Kind: &types.Value_NumberValue{ +func toFloat64(f float64) *structpb.Value { + return &structpb.Value{ + Kind: &structpb.Value_NumberValue{ NumberValue: f, }, } } -// Struct serializes the configuration to *types.Struct. -func (d *Data) Struct() *types.Struct { - st := &types.Struct{ - Fields: map[string]*types.Value{ +// Struct serializes the configuration to *structpb.Struct. +func (d *Data) Struct() *structpb.Struct { + st := &structpb.Struct{ + Fields: map[string]*structpb.Value{ queryField: d.Query.Value(), tokenField: toString(d.Token), }, @@ -154,32 +154,32 @@ func (d *Data) Struct() *types.Struct { return st } -func stringFromValue(v *types.Value) (string, error) { - sv, ok := v.Kind.(*types.Value_StringValue) +func stringFromValue(v *structpb.Value) (string, error) { + sv, ok := v.Kind.(*structpb.Value_StringValue) if !ok { return "", errInvalidType.WithAttributes("type", fmt.Sprintf("%T", v.Kind)) } return sv.StringValue, nil } -func boolFromValue(v *types.Value) (bool, error) { - bv, ok := v.Kind.(*types.Value_BoolValue) +func boolFromValue(v *structpb.Value) (bool, error) { + bv, ok := v.Kind.(*structpb.Value_BoolValue) if !ok { return false, errInvalidType.WithAttributes("type", fmt.Sprintf("%T", v.Kind)) } return bv.BoolValue, nil } -func float64FromValue(v *types.Value) (float64, error) { - fv, ok := v.Kind.(*types.Value_NumberValue) +func float64FromValue(v *structpb.Value) (float64, error) { + fv, ok := v.Kind.(*structpb.Value_NumberValue) if !ok { return 0.0, errInvalidType.WithAttributes("type", fmt.Sprintf("%T", v.Kind)) } return fv.NumberValue, nil } -// FromStruct deserializes the configuration from *types.Struct. -func (d *Data) FromStruct(st *types.Struct) error { +// FromStruct deserializes the configuration from *structpb.Struct. +func (d *Data) FromStruct(st *structpb.Struct) error { fields := st.GetFields() { value, ok := fields[queryField] diff --git a/pkg/applicationserver/io/packages/loragls/v3/package.go b/pkg/applicationserver/io/packages/loragls/v3/package.go index 98168e962d..febce87528 100644 --- a/pkg/applicationserver/io/packages/loragls/v3/package.go +++ b/pkg/applicationserver/io/packages/loragls/v3/package.go @@ -19,7 +19,6 @@ import ( "fmt" "time" - "github.com/gogo/protobuf/types" "github.com/golang/protobuf/proto" apppayload "go.thethings.network/lorawan-application-payload" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io" @@ -33,6 +32,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" urlutil "go.thethings.network/lorawan-stack/v3/pkg/util/url" "google.golang.org/grpc/codes" + "google.golang.org/protobuf/types/known/structpb" ) // PackageName defines the package name. @@ -272,7 +272,7 @@ func (p *GeolocationPackage) sendQuery(ctx context.Context, ids *ttnpb.EndDevice return nil } -func (p *GeolocationPackage) sendServiceData(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers, data *types.Struct) error { +func (p *GeolocationPackage) sendServiceData(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers, data *structpb.Struct) error { return p.server.Publish(ctx, &ttnpb.ApplicationUp{ EndDeviceIds: ids, CorrelationIds: events.CorrelationIDsFromContext(ctx), @@ -334,15 +334,15 @@ func (p *GeolocationPackage) mergePackageData(def *ttnpb.ApplicationPackageDefau return &merged, nil } -func toStruct(i interface{}) (*types.Struct, error) { +func toStruct(i interface{}) (*structpb.Struct, error) { b, err := jsonpb.TTN().Marshal(i) if err != nil { return nil, err } - var st types.Struct - err = jsonpb.TTN().Unmarshal(b, &st) + st := &structpb.Struct{} + err = jsonpb.TTN().Unmarshal(b, st) if err != nil { return nil, err } - return &st, nil + return st, nil } diff --git a/pkg/applicationserver/io/pubsub/pubsub_test.go b/pkg/applicationserver/io/pubsub/pubsub_test.go index 70f612bb6c..5ead86a11b 100644 --- a/pkg/applicationserver/io/pubsub/pubsub_test.go +++ b/pkg/applicationserver/io/pubsub/pubsub_test.go @@ -19,7 +19,6 @@ import ( "testing" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/formatters" mock_server "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/mock" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/pubsub" @@ -33,6 +32,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" cloudpubsub "gocloud.dev/pubsub" + "google.golang.org/protobuf/types/known/structpb" ) type messageWithError struct { @@ -198,14 +198,14 @@ func TestPubSub(t *testing.T) { FPort: 42, FCnt: 42, FrmPayload: []byte{0x1, 0x2, 0x3}, - NormalizedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + NormalizedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "air": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperature": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 21.5, }, }, @@ -356,10 +356,10 @@ func TestPubSub(t *testing.T) { EndDeviceIds: registeredDeviceID, Up: &ttnpb.ApplicationUp_ServiceData{ ServiceData: &ttnpb.ApplicationServiceData{ - Data: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Data: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "battery": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 42.0, }, }, diff --git a/pkg/applicationserver/io/web/webhooks_test.go b/pkg/applicationserver/io/web/webhooks_test.go index 0212715877..63166b8e40 100644 --- a/pkg/applicationserver/io/web/webhooks_test.go +++ b/pkg/applicationserver/io/web/webhooks_test.go @@ -23,7 +23,6 @@ import ( "testing" "time" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/formatters" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/mock" @@ -39,6 +38,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/structpb" ) type mockComponent struct{} @@ -243,14 +243,14 @@ func TestWebhooks(t *testing.T) { FPort: 42, FCnt: 42, FrmPayload: []byte{0x1, 0x2, 0x3}, - NormalizedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + NormalizedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "air": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperature": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 21.5, }, }, @@ -425,10 +425,10 @@ func TestWebhooks(t *testing.T) { EndDeviceIds: registeredDeviceID, Up: &ttnpb.ApplicationUp_ServiceData{ ServiceData: &ttnpb.ApplicationServiceData{ - Data: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Data: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "battery": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 42.0, }, }, diff --git a/pkg/devicerepository/store/remote/remote_test.go b/pkg/devicerepository/store/remote/remote_test.go index 33fc13f151..bee55eaa0e 100644 --- a/pkg/devicerepository/store/remote/remote_test.go +++ b/pkg/devicerepository/store/remote/remote_test.go @@ -17,7 +17,6 @@ package remote_test import ( "testing" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/devicerepository/store" "go.thethings.network/lorawan-stack/v3/pkg/devicerepository/store/remote" @@ -26,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/structpb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -611,7 +611,7 @@ func TestRemoteStore(t *testing.T) { }) } -func mustStruct(d map[string]interface{}) *pbtypes.Struct { +func mustStruct(d map[string]interface{}) *structpb.Struct { v, err := gogoproto.Struct(d) if err != nil { panic(err) diff --git a/pkg/devicetemplates/microchip.go b/pkg/devicetemplates/microchip.go index 88a7719877..44af9c8db6 100644 --- a/pkg/devicetemplates/microchip.go +++ b/pkg/devicetemplates/microchip.go @@ -27,12 +27,12 @@ import ( "io" "strings" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/jsonpb" "go.thethings.network/lorawan-stack/v3/pkg/provisioning" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" + "google.golang.org/protobuf/types/known/structpb" jose "gopkg.in/square/go-jose.v2" ) @@ -201,7 +201,7 @@ func (m *microchipATECC608AMAHTNT) Convert( if err != nil { return errMicrochipData.WithCause(err) } - s := &pbtypes.Struct{} + s := &structpb.Struct{} if err := jsonpb.TTN().Unmarshal(buf, s); err != nil { return errMicrochipData.WithCause(err) } @@ -359,7 +359,7 @@ func (m *microchipATECC608TNGLORA) Convert( //nolint:gocyclo if devEUI.IsZero() { return errMicrochipData.WithCause(errMicrochipUnknownDevEUI) } - s := &pbtypes.Struct{} + s := &structpb.Struct{} if err := jsonpb.TTN().Unmarshal(buf, s); err != nil { return errMicrochipData.WithCause(err) } diff --git a/pkg/events/events.go b/pkg/events/events.go index b9c5f563a1..cbb5afa704 100644 --- a/pkg/events/events.go +++ b/pkg/events/events.go @@ -31,6 +31,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" "go.thethings.network/lorawan-stack/v3/pkg/jsonpb" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/structpb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -197,7 +198,7 @@ func marshalData(data interface{}) (anyPB *pbtypes.Any, err error) { if err != nil { return nil, err } - if _, isNull := value.Kind.(*pbtypes.Value_NullValue); !isNull { + if _, isNull := value.Kind.(*structpb.Value_NullValue); !isNull { anyPB, err = pbtypes.MarshalAny(value) if err != nil { return nil, err @@ -242,7 +243,7 @@ func FromProto(pb *ttnpb.Event) (Event, error) { return nil, err } data = anyMsg - v, ok := anyMsg.(*pbtypes.Value) + v, ok := anyMsg.(*structpb.Value) if ok { iface, err := gogoproto.Interface(v) if err != nil { diff --git a/pkg/events/options.go b/pkg/events/options.go index 8ebc5ca0e2..b691c41e5b 100644 --- a/pkg/events/options.go +++ b/pkg/events/options.go @@ -19,12 +19,12 @@ import ( "sort" "strings" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth" "go.thethings.network/lorawan-stack/v3/pkg/rpcmetadata" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/grpc/codes" "google.golang.org/grpc/peer" + "google.golang.org/protobuf/types/known/structpb" ) // Option is an option that is used to build events. @@ -132,9 +132,9 @@ var errorDataType, _ = marshalData(&ttnpb.ErrorDetails{ Namespace: "pkg/example", Name: "example", MessageFormat: "example error for `{attr_name}`", - Attributes: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ - "attr_name": {Kind: &pbtypes.Value_StringValue{ + Attributes: &structpb.Struct{ + Fields: map[string]*structpb.Value{ + "attr_name": {Kind: &structpb.Value_StringValue{ StringValue: "attr_value", }}, }, diff --git a/pkg/gatewayserver/io/ws/lbslns/version.go b/pkg/gatewayserver/io/ws/lbslns/version.go index faa742a233..0bb6d8facd 100644 --- a/pkg/gatewayserver/io/ws/lbslns/version.go +++ b/pkg/gatewayserver/io/ws/lbslns/version.go @@ -21,12 +21,12 @@ import ( "strings" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/frequencyplans" "go.thethings.network/lorawan-stack/v3/pkg/gatewayserver/io/ws" "go.thethings.network/lorawan-stack/v3/pkg/log" pfconfig "go.thethings.network/lorawan-stack/v3/pkg/pfconfig/lbslns" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/structpb" ) // Version contains version information. @@ -100,15 +100,15 @@ func (*lbsLNS) GetRouterConfig( "package": version.Package, "platform": fmt.Sprintf("%s - Firmware %s - Protocol %d", version.Model, version.Firmware, version.Protocol), }, - Advanced: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Advanced: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "model": { - Kind: &pbtypes.Value_StringValue{ + Kind: &structpb.Value_StringValue{ StringValue: version.Model, }, }, "features": { - Kind: &pbtypes.Value_StringValue{ + Kind: &structpb.Value_StringValue{ StringValue: version.Features, }, }, diff --git a/pkg/gatewayserver/io/ws/ws_test.go b/pkg/gatewayserver/io/ws/ws_test.go index 2f254f42db..2b20608f7d 100644 --- a/pkg/gatewayserver/io/ws/ws_test.go +++ b/pkg/gatewayserver/io/ws/ws_test.go @@ -26,7 +26,6 @@ import ( "time" "github.com/gogo/protobuf/proto" - pbtypes "github.com/gogo/protobuf/types" "github.com/gorilla/websocket" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/band" @@ -49,6 +48,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/structpb" ) var ( @@ -618,13 +618,13 @@ func TestVersion(t *testing.T) { "package": "test-package", "platform": "test-model - Firmware 1.0.0 - Protocol 2", }, - Advanced: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Advanced: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "model": { - Kind: &pbtypes.Value_StringValue{StringValue: "test-model"}, + Kind: &structpb.Value_StringValue{StringValue: "test-model"}, }, "features": { - Kind: &pbtypes.Value_StringValue{StringValue: "prod gps"}, + Kind: &structpb.Value_StringValue{StringValue: "prod gps"}, }, }, }, @@ -698,13 +698,13 @@ func TestVersion(t *testing.T) { "package": "test-package", "platform": "test-model - Firmware 1.0.0 - Protocol 2", }, - Advanced: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Advanced: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "model": { - Kind: &pbtypes.Value_StringValue{StringValue: "test-model"}, + Kind: &structpb.Value_StringValue{StringValue: "test-model"}, }, "features": { - Kind: &pbtypes.Value_StringValue{StringValue: "rmtsh gps"}, + Kind: &structpb.Value_StringValue{StringValue: "rmtsh gps"}, }, }, }, diff --git a/pkg/goproto/struct.go b/pkg/goproto/struct.go index ea44ee7667..ff3ba6a435 100644 --- a/pkg/goproto/struct.go +++ b/pkg/goproto/struct.go @@ -18,8 +18,8 @@ import ( "fmt" "reflect" - structpb "github.com/golang/protobuf/ptypes/struct" "go.thethings.network/lorawan-stack/v3/pkg/errors" + "google.golang.org/protobuf/types/known/structpb" ) // maxNestingDepth represents the maximum object depth to be marshalled. diff --git a/pkg/goproto/struct_test.go b/pkg/goproto/struct_test.go index 59010e9e5f..0036c98bc7 100644 --- a/pkg/goproto/struct_test.go +++ b/pkg/goproto/struct_test.go @@ -19,12 +19,12 @@ import ( "reflect" "testing" - structpb "github.com/golang/protobuf/ptypes/struct" "github.com/smartystreets/assertions" "github.com/spf13/cast" "go.thethings.network/lorawan-stack/v3/pkg/goproto" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/structpb" ) type jsonMarshaler struct { diff --git a/pkg/joinserver/registry_test.go b/pkg/joinserver/registry_test.go index 28c16de7a9..6c72658098 100644 --- a/pkg/joinserver/registry_test.go +++ b/pkg/joinserver/registry_test.go @@ -21,7 +21,6 @@ import ( "testing" "time" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/errors" . "go.thethings.network/lorawan-stack/v3/pkg/joinserver" @@ -30,6 +29,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/structpb" ) // handleDeviceRegistryTest runs a test suite on reg. @@ -47,10 +47,10 @@ func handleDeviceRegistryTest(t *testing.T, reg DeviceRegistry) { DeviceId: "test-dev", }, ProvisionerId: "mock", - ProvisioningData: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + ProvisioningData: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "serial_number": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 42, }, }, diff --git a/pkg/joinserver/util_test.go b/pkg/joinserver/util_test.go index ffb5f854fa..14ab577208 100644 --- a/pkg/joinserver/util_test.go +++ b/pkg/joinserver/util_test.go @@ -17,16 +17,16 @@ package joinserver_test import ( "strconv" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/provisioning" "go.thethings.network/lorawan-stack/v3/pkg/util/test" + "google.golang.org/protobuf/types/known/structpb" ) var Timeout = (1 << 8) * test.Delay type byteToSerialNumber struct{} -func (p *byteToSerialNumber) UniqueID(entry *pbtypes.Struct) (string, error) { +func (p *byteToSerialNumber) UniqueID(entry *structpb.Struct) (string, error) { return strconv.Itoa(int(entry.Fields["serial_number"].GetNumberValue())), nil } diff --git a/pkg/messageprocessors/cayennelpp/cayennelpp_test.go b/pkg/messageprocessors/cayennelpp/cayennelpp_test.go index 56b1d48372..f40bf2fcbb 100644 --- a/pkg/messageprocessors/cayennelpp/cayennelpp_test.go +++ b/pkg/messageprocessors/cayennelpp/cayennelpp_test.go @@ -18,13 +18,13 @@ import ( "testing" lpp "github.com/TheThingsNetwork/go-cayenne-lib" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/structpb" ) func TestEncode(t *testing.T) { @@ -45,10 +45,10 @@ func TestEncode(t *testing.T) { // Happy flow. { message := &ttnpb.ApplicationDownlink{ - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "value_2": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: -50.51, }, }, @@ -71,29 +71,29 @@ func TestEncode(t *testing.T) { // Test resilience against custom fields from the user. Should be fine. { message := &ttnpb.ApplicationDownlink{ - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "custom": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 8, }, }, "digital_in_8": { - Kind: &pbtypes.Value_StringValue{ + Kind: &structpb.Value_StringValue{ StringValue: "shouldn't be a string", }, }, "custom_5": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 5, }, }, "accelerometer_1": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "x": { - Kind: &pbtypes.Value_StringValue{ + Kind: &structpb.Value_StringValue{ StringValue: "test", }, }, diff --git a/pkg/messageprocessors/javascript/javascript.go b/pkg/messageprocessors/javascript/javascript.go index b66c096b0f..c9d4fcaf36 100644 --- a/pkg/messageprocessors/javascript/javascript.go +++ b/pkg/messageprocessors/javascript/javascript.go @@ -22,7 +22,6 @@ import ( "runtime/trace" "strings" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" "go.thethings.network/lorawan-stack/v3/pkg/messageprocessors" @@ -30,6 +29,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/scripting" js "go.thethings.network/lorawan-stack/v3/pkg/scripting/javascript" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/structpb" ) type host struct { @@ -337,7 +337,7 @@ func (*host) decodeUplink( } measurements = []map[string]interface{}{measurement} } - normalizedPayload := make([]*pbtypes.Struct, len(measurements)) + normalizedPayload := make([]*structpb.Struct, len(measurements)) for i := range measurements { pb, err := gogoproto.Struct(measurements[i]) if err != nil { @@ -350,7 +350,7 @@ func (*host) decodeUplink( if err != nil { return errOutput.WithCause(err) } - msg.NormalizedPayload = make([]*pbtypes.Struct, 0, len(normalizedMeasurements)) + msg.NormalizedPayload = make([]*structpb.Struct, 0, len(normalizedMeasurements)) for _, measurement := range normalizedMeasurements { if len(measurement.Valid.GetFields()) == 0 { continue @@ -364,12 +364,12 @@ func (*host) decodeUplink( // If the normalizer is not set, the decoder may return already normalized payload. // This is a best effort attempt to parse the decoded payload as normalized payload. // If that does not return an error, the decoded payload is assumed to be normalized. - normalizedPayload := []*pbtypes.Struct{ + normalizedPayload := []*structpb.Struct{ decodedPayload, } normalizedMeasurements, err := normalizedpayload.Parse(normalizedPayload) if err == nil { - msg.NormalizedPayload = make([]*pbtypes.Struct, 0, len(normalizedMeasurements)) + msg.NormalizedPayload = make([]*structpb.Struct, 0, len(normalizedMeasurements)) for _, measurement := range normalizedMeasurements { if len(measurement.Valid.GetFields()) == 0 { continue diff --git a/pkg/messageprocessors/javascript/javascript_test.go b/pkg/messageprocessors/javascript/javascript_test.go index 6dbf89e246..778326185f 100644 --- a/pkg/messageprocessors/javascript/javascript_test.go +++ b/pkg/messageprocessors/javascript/javascript_test.go @@ -17,7 +17,6 @@ package javascript import ( "testing" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" @@ -26,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/structpb" ) func TestLegacyEncodeDownlink(t *testing.T) { @@ -45,10 +45,10 @@ func TestLegacyEncodeDownlink(t *testing.T) { } message := &ttnpb.ApplicationDownlink{ - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperature": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: -21.3, }, }, @@ -115,10 +115,10 @@ func TestEncodeDownlink(t *testing.T) { } message := &ttnpb.ApplicationDownlink{ - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperature": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: -21.3, }, }, @@ -172,10 +172,10 @@ func TestEncodeDownlink(t *testing.T) { // The Things Node example. { message := &ttnpb.ApplicationDownlink{ - DecodedPayload: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + DecodedPayload: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "color": { - Kind: &pbtypes.Value_StringValue{ + Kind: &structpb.Value_StringValue{ StringValue: "blue", }, }, @@ -367,10 +367,10 @@ func TestDecodeUplink(t *testing.T) { err := host.DecodeUplink(ctx, ids, nil, message, script) a.So(err, should.BeNil) - a.So(message.DecodedPayload, should.Resemble, &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + a.So(message.DecodedPayload, should.Resemble, &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperature": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: -21.3, }, }, @@ -378,15 +378,15 @@ func TestDecodeUplink(t *testing.T) { }) a.So(message.DecodedPayloadWarnings, should.Resemble, []string{"it's cold"}) - a.So(message.NormalizedPayload, should.Resemble, []*pbtypes.Struct{ + a.So(message.NormalizedPayload, should.Resemble, []*structpb.Struct{ { - Fields: map[string]*pbtypes.Value{ + Fields: map[string]*structpb.Value{ "air": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperature": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: -21.3, }, }, @@ -427,14 +427,14 @@ func TestDecodeUplink(t *testing.T) { err := host.DecodeUplink(ctx, ids, nil, message, script) a.So(err, should.BeNil) - a.So(message.DecodedPayload, should.Resemble, &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + a.So(message.DecodedPayload, should.Resemble, &structpb.Struct{ + Fields: map[string]*structpb.Value{ "air": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperature": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: -21.3, }, }, @@ -443,24 +443,24 @@ func TestDecodeUplink(t *testing.T) { }, }, "wind": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{}, + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{}, }, }, }, }, }) a.So(message.DecodedPayloadWarnings, should.BeEmpty) - a.So(message.NormalizedPayload, should.Resemble, []*pbtypes.Struct{ + a.So(message.NormalizedPayload, should.Resemble, []*structpb.Struct{ { - Fields: map[string]*pbtypes.Value{ + Fields: map[string]*structpb.Value{ "air": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperature": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: -21.3, }, }, @@ -513,19 +513,19 @@ func TestDecodeUplink(t *testing.T) { err := host.DecodeUplink(ctx, ids, nil, message, script) a.So(err, should.BeNil) - a.So(message.DecodedPayload, should.Resemble, &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + a.So(message.DecodedPayload, should.Resemble, &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperatures": { - Kind: &pbtypes.Value_ListValue{ - ListValue: &pbtypes.ListValue{ - Values: []*pbtypes.Value{ + Kind: &structpb.Value_ListValue{ + ListValue: &structpb.ListValue{ + Values: []*structpb.Value{ { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: -21.3, }, }, { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: -20.88, }, }, @@ -536,15 +536,15 @@ func TestDecodeUplink(t *testing.T) { }, }) a.So(message.DecodedPayloadWarnings, should.BeEmpty) - a.So(message.NormalizedPayload, should.Resemble, []*pbtypes.Struct{ + a.So(message.NormalizedPayload, should.Resemble, []*structpb.Struct{ { - Fields: map[string]*pbtypes.Value{ + Fields: map[string]*structpb.Value{ "air": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperature": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: -21.3, }, }, @@ -555,13 +555,13 @@ func TestDecodeUplink(t *testing.T) { }, }, { - Fields: map[string]*pbtypes.Value{ + Fields: map[string]*structpb.Value{ "air": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperature": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: -20.88, }, }, @@ -712,7 +712,7 @@ func TestDecodeUplink(t *testing.T) { err := host.DecodeUplink(ctx, ids, nil, message, script) a.So(err, should.BeNil) - a.So(message.NormalizedPayload, should.Resemble, []*pbtypes.Struct{}) + a.So(message.NormalizedPayload, should.Resemble, []*structpb.Struct{}) a.So(message.NormalizedPayloadWarnings, should.Resemble, []string{ "measurement 1: `air.temperature` should be equal or greater than `-273.15`", }) diff --git a/pkg/messageprocessors/normalizedpayload/uplink.go b/pkg/messageprocessors/normalizedpayload/uplink.go index bdd12d8c59..20a4396627 100644 --- a/pkg/messageprocessors/normalizedpayload/uplink.go +++ b/pkg/messageprocessors/normalizedpayload/uplink.go @@ -19,9 +19,9 @@ import ( "fmt" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/errors" "golang.org/x/exp/constraints" + "google.golang.org/protobuf/types/known/structpb" ) // Air is an air measurement. @@ -66,12 +66,12 @@ var ( errUnknownField = errors.DefineInvalidArgument("unknown_field", "unknown field `{path}`") ) -type fieldParser func(dst *Measurement, src *pbtypes.Value, path string) []error +type fieldParser func(dst *Measurement, src *structpb.Value, path string) []error // object validates that the path is a structure and sets the target to an empty value. func object[T any](selector func(*Measurement) *T) fieldParser { - return func(dst *Measurement, src *pbtypes.Value, path string) []error { - _, ok := src.Kind.(*pbtypes.Value_StructValue) + return func(dst *Measurement, src *structpb.Value, path string) []error { + _, ok := src.Kind.(*structpb.Value_StructValue) if !ok { return []error{errFieldType.WithAttributes("path", path)} } @@ -93,8 +93,8 @@ func validate[T any](val T, validators []fieldValidator[T], path string) (errs [ // parseTime parses and validates the time. The input value must be RFC3339. func parseTime(selector func(dst *Measurement) **time.Time, vals ...fieldValidator[time.Time]) fieldParser { - return func(dst *Measurement, src *pbtypes.Value, path string) []error { - val, ok := src.Kind.(*pbtypes.Value_StringValue) + return func(dst *Measurement, src *structpb.Value, path string) []error { + val, ok := src.Kind.(*structpb.Value_StringValue) if !ok { return []error{errFieldType.WithAttributes("path", path)} } @@ -112,8 +112,8 @@ func parseTime(selector func(dst *Measurement) **time.Time, vals ...fieldValidat // parseNumber parses and validates a number. func parseNumber(selector func(dst *Measurement) **float64, vals ...fieldValidator[float64]) fieldParser { - return func(dst *Measurement, src *pbtypes.Value, path string) []error { - val, ok := src.Kind.(*pbtypes.Value_NumberValue) + return func(dst *Measurement, src *structpb.Value, path string) []error { + val, ok := src.Kind.(*structpb.Value_NumberValue) if !ok { return []error{errFieldType.WithAttributes("path", path)} } @@ -237,15 +237,15 @@ type ParsedMeasurement struct { // ValidationErrors contains any errors that occurred during field validation. ValidationErrors []error // Valid only contains the valid fields, for which there were no validation errors. - Valid *pbtypes.Struct + Valid *structpb.Struct } // Parse parses and validates the measurements. -func Parse(measurements []*pbtypes.Struct) ([]ParsedMeasurement, error) { +func Parse(measurements []*structpb.Struct) ([]ParsedMeasurement, error) { res := make([]ParsedMeasurement, len(measurements)) for i, src := range measurements { - res[i].Valid = &pbtypes.Struct{ - Fields: make(map[string]*pbtypes.Value), + res[i].Valid = &structpb.Struct{ + Fields: make(map[string]*structpb.Value), } err := parse(&res[i], src, "") if err != nil { @@ -255,7 +255,7 @@ func Parse(measurements []*pbtypes.Struct) ([]ParsedMeasurement, error) { return res, nil } -func parse(dst *ParsedMeasurement, src *pbtypes.Struct, prefix string) error { +func parse(dst *ParsedMeasurement, src *structpb.Struct, prefix string) error { for k, v := range src.GetFields() { path := fmt.Sprintf("%s%s", prefix, k) parser, ok := fieldParsers[path] @@ -271,11 +271,11 @@ func parse(dst *ParsedMeasurement, src *pbtypes.Struct, prefix string) error { } continue } - if s, ok := v.Kind.(*pbtypes.Value_StructValue); ok { + if s, ok := v.Kind.(*structpb.Value_StructValue); ok { nested := &ParsedMeasurement{ Measurement: dst.Measurement, - Valid: &pbtypes.Struct{ - Fields: make(map[string]*pbtypes.Value), + Valid: &structpb.Struct{ + Fields: make(map[string]*structpb.Value), }, } if err := parse(nested, s.StructValue, path+"."); err != nil { @@ -284,8 +284,8 @@ func parse(dst *ParsedMeasurement, src *pbtypes.Struct, prefix string) error { dst.Measurement = nested.Measurement dst.ValidationErrors = append(dst.ValidationErrors, nested.ValidationErrors...) if len(nested.Valid.Fields) > 0 { - dst.Valid.Fields[k] = &pbtypes.Value{ - Kind: &pbtypes.Value_StructValue{ + dst.Valid.Fields[k] = &structpb.Value{ + Kind: &structpb.Value_StructValue{ StructValue: nested.Valid, }, } diff --git a/pkg/messageprocessors/normalizedpayload/uplink_test.go b/pkg/messageprocessors/normalizedpayload/uplink_test.go index e1d5db13f6..286f520a7f 100644 --- a/pkg/messageprocessors/normalizedpayload/uplink_test.go +++ b/pkg/messageprocessors/normalizedpayload/uplink_test.go @@ -18,11 +18,11 @@ import ( "testing" "time" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/messageprocessors/normalizedpayload" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/structpb" ) func timePtr(t time.Time) *time.Time { @@ -38,18 +38,18 @@ func TestUplink(t *testing.T) { for _, tc := range []struct { name string - normalizedPayload []*pbtypes.Struct + normalizedPayload []*structpb.Struct expected []normalizedpayload.Measurement expectedValidationErrors [][]error errorAssertion func(error) bool }{ { name: "single timestamp", - normalizedPayload: []*pbtypes.Struct{ + normalizedPayload: []*structpb.Struct{ { - Fields: map[string]*pbtypes.Value{ + Fields: map[string]*structpb.Value{ "time": { - Kind: &pbtypes.Value_StringValue{ + Kind: &structpb.Value_StringValue{ StringValue: "2022-08-23T17:13:42Z", }, }, @@ -64,15 +64,15 @@ func TestUplink(t *testing.T) { }, { name: "two air temperatures", - normalizedPayload: []*pbtypes.Struct{ + normalizedPayload: []*structpb.Struct{ { - Fields: map[string]*pbtypes.Value{ + Fields: map[string]*structpb.Value{ "air": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperature": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 20.42, }, }, @@ -83,13 +83,13 @@ func TestUplink(t *testing.T) { }, }, { - Fields: map[string]*pbtypes.Value{ + Fields: map[string]*structpb.Value{ "air": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperature": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 19.61, }, }, @@ -115,7 +115,7 @@ func TestUplink(t *testing.T) { }, { name: "no fields", - normalizedPayload: []*pbtypes.Struct{ + normalizedPayload: []*structpb.Struct{ {}, }, expected: []normalizedpayload.Measurement{ @@ -124,15 +124,15 @@ func TestUplink(t *testing.T) { }, { name: "below absolute zero", - normalizedPayload: []*pbtypes.Struct{ + normalizedPayload: []*structpb.Struct{ { - Fields: map[string]*pbtypes.Value{ + Fields: map[string]*structpb.Value{ "air": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperature": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: -300, }, }, @@ -157,15 +157,15 @@ func TestUplink(t *testing.T) { }, { name: "invalid direction", - normalizedPayload: []*pbtypes.Struct{ + normalizedPayload: []*structpb.Struct{ { - Fields: map[string]*pbtypes.Value{ + Fields: map[string]*structpb.Value{ "wind": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "direction": { - Kind: &pbtypes.Value_NumberValue{ + Kind: &structpb.Value_NumberValue{ NumberValue: 360, // this is 0 degrees }, }, @@ -190,15 +190,15 @@ func TestUplink(t *testing.T) { }, { name: "invalid type", - normalizedPayload: []*pbtypes.Struct{ + normalizedPayload: []*structpb.Struct{ { - Fields: map[string]*pbtypes.Value{ + Fields: map[string]*structpb.Value{ "air": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "temperature": { - Kind: &pbtypes.Value_StringValue{ + Kind: &structpb.Value_StringValue{ StringValue: "test", }, }, @@ -213,15 +213,15 @@ func TestUplink(t *testing.T) { }, { name: "unknown field", - normalizedPayload: []*pbtypes.Struct{ + normalizedPayload: []*structpb.Struct{ { - Fields: map[string]*pbtypes.Value{ + Fields: map[string]*structpb.Value{ "air": { - Kind: &pbtypes.Value_StructValue{ - StructValue: &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + Kind: &structpb.Value_StructValue{ + StructValue: &structpb.Struct{ + Fields: map[string]*structpb.Value{ "unknown": { - Kind: &pbtypes.Value_StringValue{ + Kind: &structpb.Value_StringValue{ StringValue: "test", }, }, diff --git a/pkg/provisioning/microchip.go b/pkg/provisioning/microchip.go index 2b15cc6025..6687c622a3 100644 --- a/pkg/provisioning/microchip.go +++ b/pkg/provisioning/microchip.go @@ -17,7 +17,7 @@ package provisioning import ( "strings" - pbtypes "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/structpb" ) // Microchip is the provisioning ID for Microchip devices. @@ -26,7 +26,7 @@ const Microchip = "microchip" type microchip struct{} // UniqueID returns the serial number. -func (p *microchip) UniqueID(entry *pbtypes.Struct) (string, error) { +func (p *microchip) UniqueID(entry *structpb.Struct) (string, error) { if entry == nil { return "", errEntry.New() } diff --git a/pkg/provisioning/microchip_test.go b/pkg/provisioning/microchip_test.go index 6d3ec24bf8..c59ecfdb2e 100644 --- a/pkg/provisioning/microchip_test.go +++ b/pkg/provisioning/microchip_test.go @@ -17,10 +17,10 @@ package provisioning_test import ( "testing" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" . "go.thethings.network/lorawan-stack/v3/pkg/provisioning" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/structpb" ) func TestMicrochip(t *testing.T) { @@ -31,10 +31,10 @@ func TestMicrochip(t *testing.T) { t.FailNow() } - entry := &pbtypes.Struct{ - Fields: map[string]*pbtypes.Value{ + entry := &structpb.Struct{ + Fields: map[string]*structpb.Value{ "uniqueId": { - Kind: &pbtypes.Value_StringValue{ + Kind: &structpb.Value_StringValue{ StringValue: "abcd", }, }, diff --git a/pkg/provisioning/provisioning.go b/pkg/provisioning/provisioning.go index c1dad8968b..2fcbc6d2d5 100644 --- a/pkg/provisioning/provisioning.go +++ b/pkg/provisioning/provisioning.go @@ -16,14 +16,14 @@ package provisioning import ( - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/errors" + "google.golang.org/protobuf/types/known/structpb" ) // Provisioner is a device provisioner based on vendor-specific data. type Provisioner interface { // UniqueID returns the vendor-specific unique ID for the given entry. - UniqueID(entry *pbtypes.Struct) (string, error) + UniqueID(entry *structpb.Struct) (string, error) } var ( diff --git a/pkg/util/test/constructors_generated.go b/pkg/util/test/constructors_generated.go index 645ed806e0..51c2189d03 100644 --- a/pkg/util/test/constructors_generated.go +++ b/pkg/util/test/constructors_generated.go @@ -999,7 +999,7 @@ func (EndDeviceOptionNamespace) WithProvisionerId(v string) EndDeviceOption { } // WithProvisioningData returns a EndDeviceOption, which returns a copy of ttnpb.EndDevice with ProvisioningData set to v. -func (EndDeviceOptionNamespace) WithProvisioningData(v *pbtypes.Struct) EndDeviceOption { +func (EndDeviceOptionNamespace) WithProvisioningData(v *structpb.Struct) EndDeviceOption { return func(x *ttnpb.EndDevice) *ttnpb.EndDevice { copy := ttnpb.Clone(x) copy.ProvisioningData = v From ca2e7897ab46b2b24ae04c550dbde9b287a5c538 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Thu, 29 Sep 2022 13:20:01 +0200 Subject: [PATCH 11/30] all: Use new Empty type --- pkg/applicationserver/applicationserver.go | 5 ++-- pkg/applicationserver/grpc.go | 5 ++-- pkg/applicationserver/grpc_deviceregistry.go | 4 +-- pkg/applicationserver/io/grpc/grpc.go | 8 +++--- pkg/applicationserver/io/packages/grpc.go | 6 ++--- .../io/pubsub/grpc_pubsub.go | 6 ++--- pkg/applicationserver/io/web/grpc_webhooks.go | 6 ++--- pkg/applicationserver/util_test.go | 6 ++--- pkg/auth/rights/fetcher_test.go | 4 +-- .../enddevices/enddevices.go | 6 ++--- .../enddevices/util_test.go | 4 +-- pkg/deviceclaimingserver/grpc_end_devices.go | 18 ++++++------- pkg/deviceclaimingserver/grpc_gateways.go | 10 +++---- pkg/devicetemplateconverter/grpc.go | 4 +-- pkg/events/events.go | 2 +- pkg/gatewayserver/io/grpc/grpc.go | 4 +-- .../upstream/mock/network_server.go | 10 +++---- pkg/identityserver/application_access.go | 6 ++--- pkg/identityserver/application_registry.go | 14 +++++----- pkg/identityserver/client_access.go | 6 ++--- pkg/identityserver/client_registry.go | 14 +++++----- pkg/identityserver/contact_info_registry.go | 6 ++--- pkg/identityserver/end_device_registry.go | 10 +++---- pkg/identityserver/entity_access.go | 4 +-- pkg/identityserver/gateway_access.go | 6 ++--- pkg/identityserver/gateway_registry.go | 14 +++++----- pkg/identityserver/invitation_registry.go | 6 ++--- pkg/identityserver/mock/entity_access.go | 4 +-- pkg/identityserver/mock/gateway_registry.go | 6 ++--- pkg/identityserver/notification_registry.go | 6 ++--- pkg/identityserver/oauth_registry.go | 10 +++---- pkg/identityserver/organization_access.go | 6 ++--- pkg/identityserver/organization_registry.go | 14 +++++----- pkg/identityserver/user_registry.go | 22 ++++++++-------- pkg/identityserver/user_session_registry.go | 6 ++--- pkg/joinserver/grpc.go | 6 ++--- ...pplication_activation_settings_registry.go | 4 +-- pkg/joinserver/grpc_deviceregistry.go | 4 +-- pkg/networkserver/grpc.go | 8 +++--- pkg/networkserver/grpc_asns.go | 6 ++--- pkg/networkserver/grpc_deviceregistry.go | 4 +-- pkg/networkserver/grpc_gsns.go | 6 ++--- .../networkserver_util_internal_test.go | 3 ++- pkg/packetbrokeragent/agent_test.go | 3 ++- pkg/packetbrokeragent/grpc_disabled.go | 26 +++++++++---------- pkg/packetbrokeragent/grpc_gspba.go | 3 ++- pkg/packetbrokeragent/grpc_nspba.go | 4 +-- pkg/packetbrokeragent/grpc_pba.go | 21 ++++++++------- pkg/packetbrokeragent/grpc_pba_test.go | 9 ++++--- pkg/packetbrokeragent/mock/networkserver.go | 6 ++--- pkg/packetbrokeragent/mock/pbcontrolplane.go | 10 +++---- pkg/packetbrokeragent/mock/pbdataplane.go | 6 ++--- pkg/packetbrokeragent/mock/pbiam.go | 18 ++++++------- pkg/packetbrokeragent/mock/pbmapper.go | 6 ++--- pkg/qrcodegenerator/grpc_end_devices.go | 4 +-- pkg/rpcmiddleware/validator/validator.go | 3 ++- pkg/rpcserver/rpcserver_test.go | 6 ++--- pkg/ttnpb/rpcs.go | 4 +-- pkg/util/rpctest/server_test.go | 4 +-- pkg/util/test/application_services.go | 6 ++--- 60 files changed, 228 insertions(+), 220 deletions(-) diff --git a/pkg/applicationserver/applicationserver.go b/pkg/applicationserver/applicationserver.go index d16f26aebe..279852858f 100644 --- a/pkg/applicationserver/applicationserver.go +++ b/pkg/applicationserver/applicationserver.go @@ -54,6 +54,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/web" "go.thethings.network/lorawan-stack/v3/pkg/workerpool" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/emptypb" ) // ApplicationServer implements the Application Server component. @@ -537,7 +538,7 @@ func (as *ApplicationServer) buildSessionsFromError(ctx context.Context, dev *tt type downlinkQueueOperation struct { Items []*ttnpb.ApplicationDownlink - Operation func(ttnpb.AsNsClient, context.Context, *ttnpb.DownlinkQueueRequest, ...grpc.CallOption) (*pbtypes.Empty, error) + Operation func(ttnpb.AsNsClient, context.Context, *ttnpb.DownlinkQueueRequest, ...grpc.CallOption) (*emptypb.Empty, error) SkipSessionKeyIDs [][]byte ResultFunc func(decrypted, encrypted []*ttnpb.ApplicationDownlink, err error) } @@ -615,7 +616,7 @@ func (as *ApplicationServer) attemptDownlinkQueueOp(ctx context.Context, dev *tt } } -func (as *ApplicationServer) downlinkQueueOp(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers, items []*ttnpb.ApplicationDownlink, op func(ttnpb.AsNsClient, context.Context, *ttnpb.DownlinkQueueRequest, ...grpc.CallOption) (*pbtypes.Empty, error)) error { +func (as *ApplicationServer) downlinkQueueOp(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers, items []*ttnpb.ApplicationDownlink, op func(ttnpb.AsNsClient, context.Context, *ttnpb.DownlinkQueueRequest, ...grpc.CallOption) (*emptypb.Empty, error)) error { ctx = events.ContextWithCorrelationID(ctx, fmt.Sprintf("as:downlink:%s", events.NewCorrelationID())) link, err := as.getLink(ctx, ids.ApplicationIds, []string{ "default_formatters", diff --git a/pkg/applicationserver/grpc.go b/pkg/applicationserver/grpc.go index 3fb51acf7e..8fd666222a 100644 --- a/pkg/applicationserver/grpc.go +++ b/pkg/applicationserver/grpc.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/rpcmiddleware/warning" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) func removeDeprecatedPaths(ctx context.Context, fieldMask *pbtypes.FieldMask) *pbtypes.FieldMask { @@ -95,7 +96,7 @@ func (as *ApplicationServer) SetLink(ctx context.Context, req *ttnpb.SetApplicat } // DeleteLink implements ttnpb.AsServer. -func (as *ApplicationServer) DeleteLink(ctx context.Context, ids *ttnpb.ApplicationIdentifiers) (*pbtypes.Empty, error) { +func (as *ApplicationServer) DeleteLink(ctx context.Context, ids *ttnpb.ApplicationIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireApplication(ctx, ids, ttnpb.Right_RIGHT_APPLICATION_SETTINGS_BASIC); err != nil { return nil, err } @@ -125,7 +126,7 @@ func (as *ApplicationServer) GetConfiguration(ctx context.Context, _ *ttnpb.GetA } // HandleUplink implements ttnpb.NsAsServer. -func (as *ApplicationServer) HandleUplink(ctx context.Context, req *ttnpb.NsAsHandleUplinkRequest) (*pbtypes.Empty, error) { +func (as *ApplicationServer) HandleUplink(ctx context.Context, req *ttnpb.NsAsHandleUplinkRequest) (*emptypb.Empty, error) { now := time.Now() if err := clusterauth.Authorized(ctx); err != nil { return nil, err diff --git a/pkg/applicationserver/grpc_deviceregistry.go b/pkg/applicationserver/grpc_deviceregistry.go index 52ce21aacd..985603a6ca 100644 --- a/pkg/applicationserver/grpc_deviceregistry.go +++ b/pkg/applicationserver/grpc_deviceregistry.go @@ -19,7 +19,6 @@ import ( "context" "fmt" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/crypto/cryptoutil" "go.thethings.network/lorawan-stack/v3/pkg/errors" @@ -28,6 +27,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -284,7 +284,7 @@ func (r asEndDeviceRegistryServer) Set(ctx context.Context, req *ttnpb.SetEndDev } // Delete implements ttnpb.AsEndDeviceRegistryServer. -func (r asEndDeviceRegistryServer) Delete(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers) (*pbtypes.Empty, error) { +func (r asEndDeviceRegistryServer) Delete(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireApplication(ctx, ids.ApplicationIds, ttnpb.Right_RIGHT_APPLICATION_DEVICES_WRITE); err != nil { return nil, err } diff --git a/pkg/applicationserver/io/grpc/grpc.go b/pkg/applicationserver/io/grpc/grpc.go index 5c70f43ae5..8435ef4f87 100644 --- a/pkg/applicationserver/io/grpc/grpc.go +++ b/pkg/applicationserver/io/grpc/grpc.go @@ -18,7 +18,6 @@ import ( "context" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/config" @@ -28,6 +27,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" "google.golang.org/grpc/peer" + "google.golang.org/protobuf/types/known/emptypb" ) // Option represents an option for the gRPC frontend. @@ -157,7 +157,7 @@ func (s *impl) Subscribe(ids *ttnpb.ApplicationIdentifiers, stream ttnpb.AppAs_S } } -func (s *impl) DownlinkQueuePush(ctx context.Context, req *ttnpb.DownlinkQueueRequest) (*pbtypes.Empty, error) { +func (s *impl) DownlinkQueuePush(ctx context.Context, req *ttnpb.DownlinkQueueRequest) (*emptypb.Empty, error) { if err := rights.RequireApplication(ctx, req.EndDeviceIds.ApplicationIds, ttnpb.Right_RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE); err != nil { return nil, err } @@ -167,7 +167,7 @@ func (s *impl) DownlinkQueuePush(ctx context.Context, req *ttnpb.DownlinkQueueRe return ttnpb.Empty, nil } -func (s *impl) DownlinkQueueReplace(ctx context.Context, req *ttnpb.DownlinkQueueRequest) (*pbtypes.Empty, error) { +func (s *impl) DownlinkQueueReplace(ctx context.Context, req *ttnpb.DownlinkQueueRequest) (*emptypb.Empty, error) { if err := rights.RequireApplication(ctx, req.EndDeviceIds.ApplicationIds, ttnpb.Right_RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE); err != nil { return nil, err } @@ -212,7 +212,7 @@ func (s *impl) GetMQTTConnectionInfo(ctx context.Context, ids *ttnpb.Application var errPayloadCryptoSkipped = errors.DefineFailedPrecondition("payload_crypto_skipped", "payload crypto skipped") -func (s *impl) SimulateUplink(ctx context.Context, up *ttnpb.ApplicationUp) (*pbtypes.Empty, error) { +func (s *impl) SimulateUplink(ctx context.Context, up *ttnpb.ApplicationUp) (*emptypb.Empty, error) { if err := rights.RequireApplication(ctx, up.EndDeviceIds.ApplicationIds, ttnpb.Right_RIGHT_APPLICATION_TRAFFIC_UP_WRITE); err != nil { return nil, err } diff --git a/pkg/applicationserver/io/packages/grpc.go b/pkg/applicationserver/io/packages/grpc.go index e4ebada821..1d9609f88d 100644 --- a/pkg/applicationserver/io/packages/grpc.go +++ b/pkg/applicationserver/io/packages/grpc.go @@ -18,11 +18,11 @@ import ( "context" "strconv" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/grpc" "google.golang.org/grpc/metadata" + "google.golang.org/protobuf/types/known/emptypb" ) // appendImplicitAssociationsGetPaths appends implicit ttnpb.ApplicationPackageAssociation get paths to paths. @@ -92,7 +92,7 @@ func (s *server) SetAssociation(ctx context.Context, req *ttnpb.SetApplicationPa } // DeleteAssociation implements ttnpb.ApplicationPackageRegistryServer. -func (s *server) DeleteAssociation(ctx context.Context, ids *ttnpb.ApplicationPackageAssociationIdentifiers) (*pbtypes.Empty, error) { +func (s *server) DeleteAssociation(ctx context.Context, ids *ttnpb.ApplicationPackageAssociationIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireApplication(ctx, ids.EndDeviceIds.ApplicationIds, ttnpb.Right_RIGHT_APPLICATION_SETTINGS_PACKAGES); err != nil { return nil, err } @@ -155,7 +155,7 @@ func (s *server) SetDefaultAssociation(ctx context.Context, req *ttnpb.SetApplic } // DeleteDefaultAssociation implements ttnpb.ApplicationPackageRegistryServer. -func (s *server) DeleteDefaultAssociation(ctx context.Context, ids *ttnpb.ApplicationPackageDefaultAssociationIdentifiers) (*pbtypes.Empty, error) { +func (s *server) DeleteDefaultAssociation(ctx context.Context, ids *ttnpb.ApplicationPackageDefaultAssociationIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireApplication(ctx, ids.ApplicationIds, ttnpb.Right_RIGHT_APPLICATION_SETTINGS_PACKAGES); err != nil { return nil, err } diff --git a/pkg/applicationserver/io/pubsub/grpc_pubsub.go b/pkg/applicationserver/io/pubsub/grpc_pubsub.go index 8f95f81509..fbae46a792 100644 --- a/pkg/applicationserver/io/pubsub/grpc_pubsub.go +++ b/pkg/applicationserver/io/pubsub/grpc_pubsub.go @@ -17,13 +17,13 @@ package pubsub import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/events" "go.thethings.network/lorawan-stack/v3/pkg/log" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/emptypb" ) // appendImplicitPubSubGetPaths appends implicit ttnpb.ApplicationPubSub get paths to paths. @@ -36,7 +36,7 @@ func appendImplicitPubSubGetPaths(paths ...string) []string { } // GetFormats implements ttnpb.ApplicationPubSubRegistryServer. -func (ps *PubSub) GetFormats(ctx context.Context, _ *pbtypes.Empty) (*ttnpb.ApplicationPubSubFormats, error) { +func (ps *PubSub) GetFormats(ctx context.Context, _ *emptypb.Empty) (*ttnpb.ApplicationPubSubFormats, error) { fs := make(map[string]string, len(formats)) for key, val := range formats { fs[key] = val.Name @@ -117,7 +117,7 @@ func (ps *PubSub) Set(ctx context.Context, req *ttnpb.SetApplicationPubSubReques } // Delete implements ttnpb.ApplicationPubSubRegistryServer. -func (ps *PubSub) Delete(ctx context.Context, ids *ttnpb.ApplicationPubSubIdentifiers) (*pbtypes.Empty, error) { +func (ps *PubSub) Delete(ctx context.Context, ids *ttnpb.ApplicationPubSubIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireApplication(ctx, ids.ApplicationIds, ttnpb.Right_RIGHT_APPLICATION_SETTINGS_BASIC, ttnpb.Right_RIGHT_APPLICATION_TRAFFIC_READ, diff --git a/pkg/applicationserver/io/web/grpc_webhooks.go b/pkg/applicationserver/io/web/grpc_webhooks.go index b849749461..2f778a5ccc 100644 --- a/pkg/applicationserver/io/web/grpc_webhooks.go +++ b/pkg/applicationserver/io/web/grpc_webhooks.go @@ -18,11 +18,11 @@ import ( "context" "strconv" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/grpc" "google.golang.org/grpc/metadata" + "google.golang.org/protobuf/types/known/emptypb" ) func setTotalHeader(ctx context.Context, total uint64) { @@ -52,7 +52,7 @@ func NewWebhookRegistryRPC(webhooks WebhookRegistry, templates TemplateStore) tt } } -func (s webhookRegistryRPC) GetFormats(ctx context.Context, _ *pbtypes.Empty) (*ttnpb.ApplicationWebhookFormats, error) { +func (s webhookRegistryRPC) GetFormats(ctx context.Context, _ *emptypb.Empty) (*ttnpb.ApplicationWebhookFormats, error) { fs := make(map[string]string, len(formats)) for key, val := range formats { fs[key] = val.Name @@ -116,7 +116,7 @@ func (s webhookRegistryRPC) Set(ctx context.Context, req *ttnpb.SetApplicationWe ) } -func (s webhookRegistryRPC) Delete(ctx context.Context, req *ttnpb.ApplicationWebhookIdentifiers) (*pbtypes.Empty, error) { +func (s webhookRegistryRPC) Delete(ctx context.Context, req *ttnpb.ApplicationWebhookIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireApplication(ctx, req.ApplicationIds, ttnpb.Right_RIGHT_APPLICATION_SETTINGS_BASIC, ttnpb.Right_RIGHT_APPLICATION_TRAFFIC_READ, diff --git a/pkg/applicationserver/util_test.go b/pkg/applicationserver/util_test.go index e260b1aebe..92d1594f4d 100644 --- a/pkg/applicationserver/util_test.go +++ b/pkg/applicationserver/util_test.go @@ -21,7 +21,6 @@ import ( "sync" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/component" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/rpcserver" @@ -29,6 +28,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/unique" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/emptypb" ) var testRights = []ttnpb.Right{ @@ -126,14 +126,14 @@ func (ns *mockNS) reset() { ns.downlinkQueueMu.Unlock() } -func (ns *mockNS) DownlinkQueueReplace(ctx context.Context, req *ttnpb.DownlinkQueueRequest) (*pbtypes.Empty, error) { +func (ns *mockNS) DownlinkQueueReplace(ctx context.Context, req *ttnpb.DownlinkQueueRequest) (*emptypb.Empty, error) { ns.downlinkQueueMu.Lock() ns.downlinkQueue[unique.ID(ctx, req.EndDeviceIds)] = req.Downlinks ns.downlinkQueueMu.Unlock() return ttnpb.Empty, nil } -func (ns *mockNS) DownlinkQueuePush(ctx context.Context, req *ttnpb.DownlinkQueueRequest) (*pbtypes.Empty, error) { +func (ns *mockNS) DownlinkQueuePush(ctx context.Context, req *ttnpb.DownlinkQueueRequest) (*emptypb.Empty, error) { ns.downlinkQueueMu.Lock() uid := unique.ID(ctx, req.EndDeviceIds) ns.downlinkQueue[uid] = append(ns.downlinkQueue[uid], req.Downlinks...) diff --git a/pkg/auth/rights/fetcher_test.go b/pkg/auth/rights/fetcher_test.go index 988fb4a305..e14582bb27 100644 --- a/pkg/auth/rights/fetcher_test.go +++ b/pkg/auth/rights/fetcher_test.go @@ -20,7 +20,6 @@ import ( "sync" "testing" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" @@ -28,6 +27,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" "google.golang.org/grpc/metadata" + "google.golang.org/protobuf/types/known/emptypb" ) func fetchEntityRights(ctx context.Context, id string, f EntityFetcher) (res struct { @@ -118,7 +118,7 @@ func (as *mockAccessServer) Server() *grpc.Server { return srv } -func (as *mockEntityAccessServer) AuthInfo(ctx context.Context, _ *pbtypes.Empty) (*ttnpb.AuthInfoResponse, error) { +func (as *mockEntityAccessServer) AuthInfo(ctx context.Context, _ *emptypb.Empty) (*ttnpb.AuthInfoResponse, error) { as.authInfoCtx = ctx if as.authInfoError != nil { return nil, as.authInfoError diff --git a/pkg/deviceclaimingserver/enddevices/enddevices.go b/pkg/deviceclaimingserver/enddevices/enddevices.go index 5e958c6199..eae44bf5fd 100644 --- a/pkg/deviceclaimingserver/enddevices/enddevices.go +++ b/pkg/deviceclaimingserver/enddevices/enddevices.go @@ -20,7 +20,6 @@ import ( "path/filepath" "strings" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/cluster" "go.thethings.network/lorawan-stack/v3/pkg/config" @@ -33,6 +32,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/emptypb" "gopkg.in/yaml.v2" ) @@ -168,7 +168,7 @@ func (upstream *Upstream) Claim( } // Unclaim implements EndDeviceClaimingServer. -func (upstream *Upstream) Unclaim(ctx context.Context, in *ttnpb.EndDeviceIdentifiers) (*pbtypes.Empty, error) { +func (upstream *Upstream) Unclaim(ctx context.Context, in *ttnpb.EndDeviceIdentifiers) (*emptypb.Empty, error) { if in.DevEui == nil || in.JoinEui == nil { return nil, errNoEUI.New() } @@ -188,7 +188,7 @@ func (upstream *Upstream) Unclaim(ctx context.Context, in *ttnpb.EndDeviceIdenti if err != nil { return nil, err } - return &pbtypes.Empty{}, nil + return ttnpb.Empty, nil } // GetInfoByJoinEUI implements EndDeviceClaimingServer. diff --git a/pkg/deviceclaimingserver/enddevices/util_test.go b/pkg/deviceclaimingserver/enddevices/util_test.go index 36eadae556..3467806f08 100644 --- a/pkg/deviceclaimingserver/enddevices/util_test.go +++ b/pkg/deviceclaimingserver/enddevices/util_test.go @@ -18,7 +18,6 @@ import ( "context" "net/http" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/cluster" "go.thethings.network/lorawan-stack/v3/pkg/config" @@ -29,6 +28,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/web" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/emptypb" ) var errMethodUnavailable = errors.DefineUnimplemented("method_unavailable", "method unavailable") @@ -89,7 +89,7 @@ func (mockEDCS) Claim(ctx context.Context, req *ttnpb.ClaimEndDeviceRequest) (id } // Unclaim implements EndDeviceClaimingServer. -func (mockEDCS) Unclaim(ctx context.Context, in *ttnpb.EndDeviceIdentifiers) (*pbtypes.Empty, error) { +func (mockEDCS) Unclaim(ctx context.Context, in *ttnpb.EndDeviceIdentifiers) (*emptypb.Empty, error) { return nil, errMethodUnavailable.New() } diff --git a/pkg/deviceclaimingserver/grpc_end_devices.go b/pkg/deviceclaimingserver/grpc_end_devices.go index 21048eb9f2..3c97e62c1f 100644 --- a/pkg/deviceclaimingserver/grpc_end_devices.go +++ b/pkg/deviceclaimingserver/grpc_end_devices.go @@ -17,7 +17,6 @@ package deviceclaimingserver import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/log" @@ -25,6 +24,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/web" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -39,8 +39,8 @@ var ( type Fallback interface { web.Registerer Claim(ctx context.Context, req *ttnpb.ClaimEndDeviceRequest) (ids *ttnpb.EndDeviceIdentifiers, err error) - AuthorizeApplication(context.Context, *ttnpb.AuthorizeApplicationRequest) (*pbtypes.Empty, error) - UnauthorizeApplication(context.Context, *ttnpb.ApplicationIdentifiers) (*pbtypes.Empty, error) + AuthorizeApplication(context.Context, *ttnpb.AuthorizeApplicationRequest) (*emptypb.Empty, error) + UnauthorizeApplication(context.Context, *ttnpb.ApplicationIdentifiers) (*emptypb.Empty, error) } // noopEDCS is a no-op EDCS. @@ -61,7 +61,7 @@ func (noopEDCS) Claim(ctx context.Context, req *ttnpb.ClaimEndDeviceRequest) (id } // Unclaim implements EndDeviceClaimingServer. -func (noopEDCS) Unclaim(ctx context.Context, in *ttnpb.EndDeviceIdentifiers) (*pbtypes.Empty, error) { +func (noopEDCS) Unclaim(ctx context.Context, in *ttnpb.EndDeviceIdentifiers) (*emptypb.Empty, error) { return nil, errMethodUnavailable.New() } @@ -76,12 +76,12 @@ func (noopEDCS) GetClaimStatus(ctx context.Context, in *ttnpb.EndDeviceIdentifie } // AuthorizeApplication implements EndDeviceClaimingServer. -func (noopEDCS) AuthorizeApplication(ctx context.Context, req *ttnpb.AuthorizeApplicationRequest) (*pbtypes.Empty, error) { +func (noopEDCS) AuthorizeApplication(ctx context.Context, req *ttnpb.AuthorizeApplicationRequest) (*emptypb.Empty, error) { return nil, errMethodUnavailable.New() } // UnauthorizeApplication implements EndDeviceClaimingServer. -func (noopEDCS) UnauthorizeApplication(ctx context.Context, ids *ttnpb.ApplicationIdentifiers) (*pbtypes.Empty, error) { +func (noopEDCS) UnauthorizeApplication(ctx context.Context, ids *ttnpb.ApplicationIdentifiers) (*emptypb.Empty, error) { return nil, errMethodUnavailable.New() } @@ -154,7 +154,7 @@ func (edcs *endDeviceClaimingServer) Claim(ctx context.Context, req *ttnpb.Claim } // Unclaim implements EndDeviceClaimingServer. -func (edcs *endDeviceClaimingServer) Unclaim(ctx context.Context, in *ttnpb.EndDeviceIdentifiers) (*pbtypes.Empty, error) { +func (edcs *endDeviceClaimingServer) Unclaim(ctx context.Context, in *ttnpb.EndDeviceIdentifiers) (*emptypb.Empty, error) { return edcs.DCS.endDeviceClaimingUpstream.Unclaim(ctx, in) } @@ -169,11 +169,11 @@ func (edcs *endDeviceClaimingServer) GetClaimStatus(ctx context.Context, in *ttn } // AuthorizeApplication implements EndDeviceClaimingServer. -func (edcs *endDeviceClaimingServer) AuthorizeApplication(ctx context.Context, req *ttnpb.AuthorizeApplicationRequest) (*pbtypes.Empty, error) { +func (edcs *endDeviceClaimingServer) AuthorizeApplication(ctx context.Context, req *ttnpb.AuthorizeApplicationRequest) (*emptypb.Empty, error) { return edcs.DCS.endDeviceClaimingFallback.AuthorizeApplication(ctx, req) } // UnauthorizeApplication implements EndDeviceClaimingServer. -func (edcs *endDeviceClaimingServer) UnauthorizeApplication(ctx context.Context, ids *ttnpb.ApplicationIdentifiers) (*pbtypes.Empty, error) { +func (edcs *endDeviceClaimingServer) UnauthorizeApplication(ctx context.Context, ids *ttnpb.ApplicationIdentifiers) (*emptypb.Empty, error) { return edcs.DCS.endDeviceClaimingFallback.UnauthorizeApplication(ctx, ids) } diff --git a/pkg/deviceclaimingserver/grpc_gateways.go b/pkg/deviceclaimingserver/grpc_gateways.go index 937946a49a..cef5574899 100644 --- a/pkg/deviceclaimingserver/grpc_gateways.go +++ b/pkg/deviceclaimingserver/grpc_gateways.go @@ -17,8 +17,8 @@ package deviceclaimingserver import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) // noopGCLS is a no-op GCLS. @@ -32,12 +32,12 @@ func (noopGCLS) Claim(ctx context.Context, req *ttnpb.ClaimGatewayRequest) (ids } // AuthorizeGateway implements GatewayClaimingServer. -func (noopGCLS) AuthorizeGateway(ctx context.Context, req *ttnpb.AuthorizeGatewayRequest) (*pbtypes.Empty, error) { +func (noopGCLS) AuthorizeGateway(ctx context.Context, req *ttnpb.AuthorizeGatewayRequest) (*emptypb.Empty, error) { return nil, errMethodUnavailable.New() } // UnauthorizeGateway implements GatewayClaimingServer. -func (noopGCLS) UnauthorizeGateway(ctx context.Context, gtwIDs *ttnpb.GatewayIdentifiers) (*pbtypes.Empty, error) { +func (noopGCLS) UnauthorizeGateway(ctx context.Context, gtwIDs *ttnpb.GatewayIdentifiers) (*emptypb.Empty, error) { return nil, errMethodUnavailable.New() } @@ -54,11 +54,11 @@ func (gcls gatewayClaimingServer) Claim(ctx context.Context, req *ttnpb.ClaimGat } // AuthorizeGateway implements GatewayClaimingServer. -func (gcls gatewayClaimingServer) AuthorizeGateway(ctx context.Context, req *ttnpb.AuthorizeGatewayRequest) (*pbtypes.Empty, error) { +func (gcls gatewayClaimingServer) AuthorizeGateway(ctx context.Context, req *ttnpb.AuthorizeGatewayRequest) (*emptypb.Empty, error) { return gcls.DCS.gatewayClaimingServerUpstream.AuthorizeGateway(ctx, req) } // UnauthorizeGateway implements GatewayClaimingServer. -func (gcls gatewayClaimingServer) UnauthorizeGateway(ctx context.Context, gtwIDs *ttnpb.GatewayIdentifiers) (*pbtypes.Empty, error) { +func (gcls gatewayClaimingServer) UnauthorizeGateway(ctx context.Context, gtwIDs *ttnpb.GatewayIdentifiers) (*emptypb.Empty, error) { return gcls.DCS.gatewayClaimingServerUpstream.UnauthorizeGateway(ctx, gtwIDs) } diff --git a/pkg/devicetemplateconverter/grpc.go b/pkg/devicetemplateconverter/grpc.go index 764805a195..bcbf78dad5 100644 --- a/pkg/devicetemplateconverter/grpc.go +++ b/pkg/devicetemplateconverter/grpc.go @@ -18,10 +18,10 @@ import ( "bytes" "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/devicetemplateconverter/profilefetcher" "go.thethings.network/lorawan-stack/v3/pkg/devicetemplates" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) type endDeviceTemplateConverterServer struct { @@ -33,7 +33,7 @@ type endDeviceTemplateConverterServer struct { // ListFormats implements ttnpb.DeviceTemplateServiceServer. func (s *endDeviceTemplateConverterServer) ListFormats( context.Context, - *pbtypes.Empty, + *emptypb.Empty, ) (*ttnpb.EndDeviceTemplateFormats, error) { formats := make(map[string]*ttnpb.EndDeviceTemplateFormat, len(s.DTC.converters)) for id, converter := range s.DTC.converters { diff --git a/pkg/events/events.go b/pkg/events/events.go index cbb5afa704..c93a234a80 100644 --- a/pkg/events/events.go +++ b/pkg/events/events.go @@ -235,7 +235,7 @@ func FromProto(pb *ttnpb.Event) (Event, error) { } var data interface{} if pb.Data != nil { - anyMsg, err := pbtypes.EmptyAny(pb.Data) + anyMsg, err := emptypb.EmptyAny(pb.Data) if err != nil { return nil, err } diff --git a/pkg/gatewayserver/io/grpc/grpc.go b/pkg/gatewayserver/io/grpc/grpc.go index 83f4dd2619..7f23f47322 100644 --- a/pkg/gatewayserver/io/grpc/grpc.go +++ b/pkg/gatewayserver/io/grpc/grpc.go @@ -19,7 +19,6 @@ import ( "net" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/config" "go.thethings.network/lorawan-stack/v3/pkg/errors" @@ -33,6 +32,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" "google.golang.org/grpc/peer" + "google.golang.org/protobuf/types/known/emptypb" ) // Option represents an option for the gRPC frontend. @@ -195,7 +195,7 @@ func (s *impl) LinkGateway(link ttnpb.GtwGs_LinkGatewayServer) error { } } -func (s *impl) GetConcentratorConfig(ctx context.Context, _ *pbtypes.Empty) (*ttnpb.ConcentratorConfig, error) { +func (s *impl) GetConcentratorConfig(ctx context.Context, _ *emptypb.Empty) (*ttnpb.ConcentratorConfig, error) { ctx = log.NewContextWithField(ctx, "namespace", "gatewayserver/io/grpc") ids := &ttnpb.GatewayIdentifiers{ diff --git a/pkg/gatewayserver/upstream/mock/network_server.go b/pkg/gatewayserver/upstream/mock/network_server.go index 296c78a779..95323d0e1e 100644 --- a/pkg/gatewayserver/upstream/mock/network_server.go +++ b/pkg/gatewayserver/upstream/mock/network_server.go @@ -19,9 +19,9 @@ import ( "context" "net" - types "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/rpcserver" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) // NS is a mock NS for GS tests. @@ -49,15 +49,15 @@ func StartNS(ctx context.Context) (*NS, string) { } // HandleUplink implements ttnpb.GsNsServer -func (ns *NS) HandleUplink(ctx context.Context, msg *ttnpb.UplinkMessage) (*types.Empty, error) { +func (ns *NS) HandleUplink(ctx context.Context, msg *ttnpb.UplinkMessage) (*emptypb.Empty, error) { ns.upCh <- msg - return &types.Empty{}, nil + return ttnpb.Empty, nil } // ReportTxAcknowledgment implements ttnpb.GsNsServer -func (ns *NS) ReportTxAcknowledgment(ctx context.Context, msg *ttnpb.GatewayTxAcknowledgment) (*types.Empty, error) { +func (ns *NS) ReportTxAcknowledgment(ctx context.Context, msg *ttnpb.GatewayTxAcknowledgment) (*emptypb.Empty, error) { ns.txAckCh <- msg - return &types.Empty{}, nil + return ttnpb.Empty, nil } // Up returns the upstream channel. diff --git a/pkg/identityserver/application_access.go b/pkg/identityserver/application_access.go index 85e354f7be..299aaa6399 100644 --- a/pkg/identityserver/application_access.go +++ b/pkg/identityserver/application_access.go @@ -17,13 +17,13 @@ package identityserver import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/events" "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -240,7 +240,7 @@ var errApplicationNeedsCollaborator = errors.DefineFailedPrecondition("applicati func (is *IdentityServer) setApplicationCollaborator( ctx context.Context, req *ttnpb.SetApplicationCollaboratorRequest, -) (_ *pbtypes.Empty, err error) { +) (_ *emptypb.Empty, err error) { // Require that caller has rights to manage collaborators. err = rights.RequireApplication(ctx, req.GetApplicationIds(), ttnpb.Right_RIGHT_APPLICATION_SETTINGS_COLLABORATORS) if err != nil { @@ -391,7 +391,7 @@ func (aa *applicationAccess) GetCollaborator(ctx context.Context, req *ttnpb.Get return aa.getApplicationCollaborator(ctx, req) } -func (aa *applicationAccess) SetCollaborator(ctx context.Context, req *ttnpb.SetApplicationCollaboratorRequest) (*pbtypes.Empty, error) { +func (aa *applicationAccess) SetCollaborator(ctx context.Context, req *ttnpb.SetApplicationCollaboratorRequest) (*emptypb.Empty, error) { return aa.setApplicationCollaborator(ctx, req) } diff --git a/pkg/identityserver/application_registry.go b/pkg/identityserver/application_registry.go index 1b2a4f5ad3..0c125faf38 100644 --- a/pkg/identityserver/application_registry.go +++ b/pkg/identityserver/application_registry.go @@ -18,7 +18,6 @@ import ( "context" "time" - pbtypes "github.com/gogo/protobuf/types" clusterauth "go.thethings.network/lorawan-stack/v3/pkg/auth/cluster" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/errors" @@ -26,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/identityserver/blocklist" "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -303,7 +303,7 @@ func (is *IdentityServer) updateApplication(ctx context.Context, req *ttnpb.Upda var errApplicationHasDevices = errors.DefineFailedPrecondition("application_has_devices", "application still has `{count}` devices") -func (is *IdentityServer) deleteApplication(ctx context.Context, ids *ttnpb.ApplicationIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) deleteApplication(ctx context.Context, ids *ttnpb.ApplicationIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireApplication(ctx, ids, ttnpb.Right_RIGHT_APPLICATION_DELETE); err != nil { return nil, err } @@ -324,7 +324,7 @@ func (is *IdentityServer) deleteApplication(ctx context.Context, ids *ttnpb.Appl return ttnpb.Empty, nil } -func (is *IdentityServer) restoreApplication(ctx context.Context, ids *ttnpb.ApplicationIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) restoreApplication(ctx context.Context, ids *ttnpb.ApplicationIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireApplication(store.WithSoftDeleted(ctx, false), ids, ttnpb.Right_RIGHT_APPLICATION_DELETE); err != nil { return nil, err } @@ -349,7 +349,7 @@ func (is *IdentityServer) restoreApplication(ctx context.Context, ids *ttnpb.App return ttnpb.Empty, nil } -func (is *IdentityServer) purgeApplication(ctx context.Context, ids *ttnpb.ApplicationIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) purgeApplication(ctx context.Context, ids *ttnpb.ApplicationIdentifiers) (*emptypb.Empty, error) { if !is.IsAdmin(ctx) { return nil, errAdminsPurgeApplications.New() } @@ -430,15 +430,15 @@ func (ar *applicationRegistry) Update(ctx context.Context, req *ttnpb.UpdateAppl return ar.updateApplication(ctx, req) } -func (ar *applicationRegistry) Delete(ctx context.Context, req *ttnpb.ApplicationIdentifiers) (*pbtypes.Empty, error) { +func (ar *applicationRegistry) Delete(ctx context.Context, req *ttnpb.ApplicationIdentifiers) (*emptypb.Empty, error) { return ar.deleteApplication(ctx, req) } -func (ar *applicationRegistry) Purge(ctx context.Context, req *ttnpb.ApplicationIdentifiers) (*pbtypes.Empty, error) { +func (ar *applicationRegistry) Purge(ctx context.Context, req *ttnpb.ApplicationIdentifiers) (*emptypb.Empty, error) { return ar.purgeApplication(ctx, req) } -func (ar *applicationRegistry) Restore(ctx context.Context, req *ttnpb.ApplicationIdentifiers) (*pbtypes.Empty, error) { +func (ar *applicationRegistry) Restore(ctx context.Context, req *ttnpb.ApplicationIdentifiers) (*emptypb.Empty, error) { return ar.restoreApplication(ctx, req) } diff --git a/pkg/identityserver/client_access.go b/pkg/identityserver/client_access.go index ff7f244394..df0e7677a1 100644 --- a/pkg/identityserver/client_access.go +++ b/pkg/identityserver/client_access.go @@ -17,13 +17,13 @@ package identityserver import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/events" "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -90,7 +90,7 @@ var errClientNeedsCollaborator = errors.DefineFailedPrecondition( func (is *IdentityServer) setClientCollaborator( ctx context.Context, req *ttnpb.SetClientCollaboratorRequest, -) (_ *pbtypes.Empty, err error) { +) (_ *emptypb.Empty, err error) { // Require that caller has rights to manage collaborators. err = rights.RequireClient(ctx, req.GetClientIds(), ttnpb.Right_RIGHT_CLIENT_SETTINGS_COLLABORATORS) if err != nil { @@ -241,7 +241,7 @@ func (ca *clientAccess) GetCollaborator( func (ca *clientAccess) SetCollaborator( ctx context.Context, req *ttnpb.SetClientCollaboratorRequest, -) (*pbtypes.Empty, error) { +) (*emptypb.Empty, error) { return ca.setClientCollaborator(ctx, req) } diff --git a/pkg/identityserver/client_registry.go b/pkg/identityserver/client_registry.go index 5b3e27f46f..49708fbe23 100644 --- a/pkg/identityserver/client_registry.go +++ b/pkg/identityserver/client_registry.go @@ -18,7 +18,6 @@ import ( "context" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/errors" @@ -26,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/identityserver/blocklist" "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -371,7 +371,7 @@ func (is *IdentityServer) updateClient( return cli, nil } -func (is *IdentityServer) deleteClient(ctx context.Context, ids *ttnpb.ClientIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) deleteClient(ctx context.Context, ids *ttnpb.ClientIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireClient(ctx, ids, ttnpb.Right_RIGHT_CLIENT_DELETE); err != nil { return nil, err } @@ -385,7 +385,7 @@ func (is *IdentityServer) deleteClient(ctx context.Context, ids *ttnpb.ClientIde return ttnpb.Empty, nil } -func (is *IdentityServer) restoreClient(ctx context.Context, ids *ttnpb.ClientIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) restoreClient(ctx context.Context, ids *ttnpb.ClientIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireClient(store.WithSoftDeleted(ctx, false), ids, ttnpb.Right_RIGHT_CLIENT_DELETE); err != nil { return nil, err } @@ -410,7 +410,7 @@ func (is *IdentityServer) restoreClient(ctx context.Context, ids *ttnpb.ClientId return ttnpb.Empty, nil } -func (is *IdentityServer) purgeClient(ctx context.Context, ids *ttnpb.ClientIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) purgeClient(ctx context.Context, ids *ttnpb.ClientIdentifiers) (*emptypb.Empty, error) { if !is.IsAdmin(ctx) { return nil, errAdminsPurgeClients.New() } @@ -461,14 +461,14 @@ func (cr *clientRegistry) Update(ctx context.Context, req *ttnpb.UpdateClientReq return cr.updateClient(ctx, req) } -func (cr *clientRegistry) Delete(ctx context.Context, req *ttnpb.ClientIdentifiers) (*pbtypes.Empty, error) { +func (cr *clientRegistry) Delete(ctx context.Context, req *ttnpb.ClientIdentifiers) (*emptypb.Empty, error) { return cr.deleteClient(ctx, req) } -func (cr *clientRegistry) Purge(ctx context.Context, req *ttnpb.ClientIdentifiers) (*pbtypes.Empty, error) { +func (cr *clientRegistry) Purge(ctx context.Context, req *ttnpb.ClientIdentifiers) (*emptypb.Empty, error) { return cr.purgeClient(ctx, req) } -func (cr *clientRegistry) Restore(ctx context.Context, req *ttnpb.ClientIdentifiers) (*pbtypes.Empty, error) { +func (cr *clientRegistry) Restore(ctx context.Context, req *ttnpb.ClientIdentifiers) (*emptypb.Empty, error) { return cr.restoreClient(ctx, req) } diff --git a/pkg/identityserver/contact_info_registry.go b/pkg/identityserver/contact_info_registry.go index 57f65c0ca1..a13cece727 100644 --- a/pkg/identityserver/contact_info_registry.go +++ b/pkg/identityserver/contact_info_registry.go @@ -18,7 +18,6 @@ import ( "context" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/email" @@ -27,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/log" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -151,7 +151,7 @@ func (is *IdentityServer) requestContactInfoValidation(ctx context.Context, ids }, nil } -func (is *IdentityServer) validateContactInfo(ctx context.Context, req *ttnpb.ContactInfoValidation) (*pbtypes.Empty, error) { +func (is *IdentityServer) validateContactInfo(ctx context.Context, req *ttnpb.ContactInfoValidation) (*emptypb.Empty, error) { err := is.store.Transact(ctx, func(ctx context.Context, st store.Store) error { return st.Validate(ctx, req) }) @@ -191,6 +191,6 @@ func (cir *contactInfoRegistry) RequestValidation(ctx context.Context, ids *ttnp return cir.requestContactInfoValidation(ctx, ids) } -func (cir *contactInfoRegistry) Validate(ctx context.Context, req *ttnpb.ContactInfoValidation) (*pbtypes.Empty, error) { +func (cir *contactInfoRegistry) Validate(ctx context.Context, req *ttnpb.ContactInfoValidation) (*emptypb.Empty, error) { return cir.validateContactInfo(ctx, req) } diff --git a/pkg/identityserver/end_device_registry.go b/pkg/identityserver/end_device_registry.go index 213d7c39b7..d0c207b866 100644 --- a/pkg/identityserver/end_device_registry.go +++ b/pkg/identityserver/end_device_registry.go @@ -22,7 +22,6 @@ import ( "net/url" "strings" - pbtypes "github.com/gogo/protobuf/types" clusterauth "go.thethings.network/lorawan-stack/v3/pkg/auth/cluster" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/errors" @@ -33,6 +32,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -414,7 +414,7 @@ func (is *IdentityServer) updateEndDevice(ctx context.Context, req *ttnpb.Update return dev, nil } -func (is *IdentityServer) batchUpdateEndDeviceLastSeen(ctx context.Context, req *ttnpb.BatchUpdateEndDeviceLastSeenRequest) (*pbtypes.Empty, error) { +func (is *IdentityServer) batchUpdateEndDeviceLastSeen(ctx context.Context, req *ttnpb.BatchUpdateEndDeviceLastSeenRequest) (*emptypb.Empty, error) { if err := clusterauth.Authorized(ctx); err != nil { return nil, err } @@ -430,7 +430,7 @@ func (is *IdentityServer) batchUpdateEndDeviceLastSeen(ctx context.Context, req return ttnpb.Empty, nil } -func (is *IdentityServer) deleteEndDevice(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) deleteEndDevice(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireApplication(ctx, ids.ApplicationIds, ttnpb.Right_RIGHT_APPLICATION_DEVICES_WRITE); err != nil { return nil, err } @@ -480,10 +480,10 @@ func (dr *endDeviceRegistry) Update(ctx context.Context, req *ttnpb.UpdateEndDev return dr.updateEndDevice(ctx, req) } -func (dr *endDeviceRegistry) BatchUpdateLastSeen(ctx context.Context, req *ttnpb.BatchUpdateEndDeviceLastSeenRequest) (*pbtypes.Empty, error) { +func (dr *endDeviceRegistry) BatchUpdateLastSeen(ctx context.Context, req *ttnpb.BatchUpdateEndDeviceLastSeenRequest) (*emptypb.Empty, error) { return dr.batchUpdateEndDeviceLastSeen(ctx, req) } -func (dr *endDeviceRegistry) Delete(ctx context.Context, req *ttnpb.EndDeviceIdentifiers) (*pbtypes.Empty, error) { +func (dr *endDeviceRegistry) Delete(ctx context.Context, req *ttnpb.EndDeviceIdentifiers) (*emptypb.Empty, error) { return dr.deleteEndDevice(ctx, req) } diff --git a/pkg/identityserver/entity_access.go b/pkg/identityserver/entity_access.go index d32c0b1071..a1505a9fdf 100644 --- a/pkg/identityserver/entity_access.go +++ b/pkg/identityserver/entity_access.go @@ -21,7 +21,6 @@ import ( "strings" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth" clusterauth "go.thethings.network/lorawan-stack/v3/pkg/auth/cluster" "go.thethings.network/lorawan-stack/v3/pkg/errors" @@ -30,6 +29,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/rpcmiddleware/rpclog" "go.thethings.network/lorawan-stack/v3/pkg/rpcmiddleware/warning" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -435,6 +435,6 @@ type entityAccess struct { *IdentityServer } -func (ea *entityAccess) AuthInfo(ctx context.Context, _ *pbtypes.Empty) (*ttnpb.AuthInfoResponse, error) { +func (ea *entityAccess) AuthInfo(ctx context.Context, _ *emptypb.Empty) (*ttnpb.AuthInfoResponse, error) { return ea.authInfo(ctx) } diff --git a/pkg/identityserver/gateway_access.go b/pkg/identityserver/gateway_access.go index 45ce3d473b..12f40f777c 100644 --- a/pkg/identityserver/gateway_access.go +++ b/pkg/identityserver/gateway_access.go @@ -17,13 +17,13 @@ package identityserver import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/events" "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -239,7 +239,7 @@ var errGatewayNeedsCollaborator = errors.DefineFailedPrecondition("gateway_needs func (is *IdentityServer) setGatewayCollaborator( ctx context.Context, req *ttnpb.SetGatewayCollaboratorRequest, -) (_ *pbtypes.Empty, err error) { +) (_ *emptypb.Empty, err error) { // Require that caller has rights to manage collaborators. if err := rights.RequireGateway(ctx, req.GetGatewayIds(), ttnpb.Right_RIGHT_GATEWAY_SETTINGS_COLLABORATORS); err != nil { return nil, err @@ -385,7 +385,7 @@ func (ga *gatewayAccess) GetCollaborator(ctx context.Context, req *ttnpb.GetGate return ga.getGatewayCollaborator(ctx, req) } -func (ga *gatewayAccess) SetCollaborator(ctx context.Context, req *ttnpb.SetGatewayCollaboratorRequest) (*pbtypes.Empty, error) { +func (ga *gatewayAccess) SetCollaborator(ctx context.Context, req *ttnpb.SetGatewayCollaboratorRequest) (*emptypb.Empty, error) { return ga.setGatewayCollaborator(ctx, req) } diff --git a/pkg/identityserver/gateway_registry.go b/pkg/identityserver/gateway_registry.go index c9040d6382..e498c5579e 100644 --- a/pkg/identityserver/gateway_registry.go +++ b/pkg/identityserver/gateway_registry.go @@ -18,7 +18,6 @@ import ( "context" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/events" @@ -28,6 +27,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -596,7 +596,7 @@ func (is *IdentityServer) updateGateway(ctx context.Context, req *ttnpb.UpdateGa return gtw, nil } -func (is *IdentityServer) deleteGateway(ctx context.Context, ids *ttnpb.GatewayIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) deleteGateway(ctx context.Context, ids *ttnpb.GatewayIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireGateway(ctx, ids, ttnpb.Right_RIGHT_GATEWAY_DELETE); err != nil { return nil, err } @@ -610,7 +610,7 @@ func (is *IdentityServer) deleteGateway(ctx context.Context, ids *ttnpb.GatewayI return ttnpb.Empty, nil } -func (is *IdentityServer) restoreGateway(ctx context.Context, ids *ttnpb.GatewayIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) restoreGateway(ctx context.Context, ids *ttnpb.GatewayIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireGateway(store.WithSoftDeleted(ctx, false), ids, ttnpb.Right_RIGHT_GATEWAY_DELETE); err != nil { return nil, err } @@ -636,7 +636,7 @@ func (is *IdentityServer) restoreGateway(ctx context.Context, ids *ttnpb.Gateway return ttnpb.Empty, nil } -func (is *IdentityServer) purgeGateway(ctx context.Context, ids *ttnpb.GatewayIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) purgeGateway(ctx context.Context, ids *ttnpb.GatewayIdentifiers) (*emptypb.Empty, error) { if !is.IsAdmin(ctx) { return nil, errAdminsPurgeGateways.New() } @@ -703,14 +703,14 @@ func (gr *gatewayRegistry) Update(ctx context.Context, req *ttnpb.UpdateGatewayR return gr.updateGateway(ctx, req) } -func (gr *gatewayRegistry) Delete(ctx context.Context, req *ttnpb.GatewayIdentifiers) (*pbtypes.Empty, error) { +func (gr *gatewayRegistry) Delete(ctx context.Context, req *ttnpb.GatewayIdentifiers) (*emptypb.Empty, error) { return gr.deleteGateway(ctx, req) } -func (gr *gatewayRegistry) Restore(ctx context.Context, req *ttnpb.GatewayIdentifiers) (*pbtypes.Empty, error) { +func (gr *gatewayRegistry) Restore(ctx context.Context, req *ttnpb.GatewayIdentifiers) (*emptypb.Empty, error) { return gr.restoreGateway(ctx, req) } -func (gr *gatewayRegistry) Purge(ctx context.Context, req *ttnpb.GatewayIdentifiers) (*pbtypes.Empty, error) { +func (gr *gatewayRegistry) Purge(ctx context.Context, req *ttnpb.GatewayIdentifiers) (*emptypb.Empty, error) { return gr.purgeGateway(ctx, req) } diff --git a/pkg/identityserver/invitation_registry.go b/pkg/identityserver/invitation_registry.go index 0e8989fa3a..4eba5ca215 100644 --- a/pkg/identityserver/invitation_registry.go +++ b/pkg/identityserver/invitation_registry.go @@ -18,7 +18,6 @@ import ( "context" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth" "go.thethings.network/lorawan-stack/v3/pkg/email" "go.thethings.network/lorawan-stack/v3/pkg/email/templates" @@ -26,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/events" "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) var evtCreateInvitation = events.Define( @@ -104,7 +104,7 @@ func (is *IdentityServer) listInvitations(ctx context.Context, req *ttnpb.ListIn return invitations, nil } -func (is *IdentityServer) deleteInvitation(ctx context.Context, in *ttnpb.DeleteInvitationRequest) (*pbtypes.Empty, error) { +func (is *IdentityServer) deleteInvitation(ctx context.Context, in *ttnpb.DeleteInvitationRequest) (*emptypb.Empty, error) { authInfo, err := is.authInfo(ctx) if err != nil { return nil, err @@ -135,6 +135,6 @@ func (ir *invitationRegistry) List(ctx context.Context, req *ttnpb.ListInvitatio return ir.listInvitations(ctx, req) } -func (ir *invitationRegistry) Delete(ctx context.Context, req *ttnpb.DeleteInvitationRequest) (*pbtypes.Empty, error) { +func (ir *invitationRegistry) Delete(ctx context.Context, req *ttnpb.DeleteInvitationRequest) (*emptypb.Empty, error) { return ir.deleteInvitation(ctx, req) } diff --git a/pkg/identityserver/mock/entity_access.go b/pkg/identityserver/mock/entity_access.go index 7fa14dfd4c..a9aad792da 100644 --- a/pkg/identityserver/mock/entity_access.go +++ b/pkg/identityserver/mock/entity_access.go @@ -17,8 +17,8 @@ package mockis import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) type mockEntityAccess struct { @@ -28,7 +28,7 @@ type mockEntityAccess struct { err error } -func (ea *mockEntityAccess) AuthInfo(context.Context, *pbtypes.Empty) (*ttnpb.AuthInfoResponse, error) { +func (ea *mockEntityAccess) AuthInfo(context.Context, *emptypb.Empty) (*ttnpb.AuthInfoResponse, error) { if ea.err != nil { return &ttnpb.AuthInfoResponse{}, ea.err } diff --git a/pkg/identityserver/mock/gateway_registry.go b/pkg/identityserver/mock/gateway_registry.go index 741315f46e..eec0350305 100644 --- a/pkg/identityserver/mock/gateway_registry.go +++ b/pkg/identityserver/mock/gateway_registry.go @@ -19,13 +19,13 @@ import ( "fmt" "sync" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/unique" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "google.golang.org/grpc/metadata" + "google.golang.org/protobuf/types/known/emptypb" ) var errNoGatewayRights = errors.DefinePermissionDenied("no_gateway_rights", "no gateway rights") @@ -122,7 +122,7 @@ func (is *mockISGatewayRegistry) Update(ctx context.Context, req *ttnpb.UpdateGa return gtw, nil } -func (is *mockISGatewayRegistry) Delete(ctx context.Context, ids *ttnpb.GatewayIdentifiers) (*pbtypes.Empty, error) { +func (is *mockISGatewayRegistry) Delete(ctx context.Context, ids *ttnpb.GatewayIdentifiers) (*emptypb.Empty, error) { is.mu.Lock() defer is.mu.Unlock() @@ -132,7 +132,7 @@ func (is *mockISGatewayRegistry) Delete(ctx context.Context, ids *ttnpb.GatewayI return nil, errNotFound.New() } is.gateways[uid] = nil - return &pbtypes.Empty{}, nil + return ttnpb.Empty, nil } func (is *mockISGatewayRegistry) ListRights( diff --git a/pkg/identityserver/notification_registry.go b/pkg/identityserver/notification_registry.go index 44cd50867d..dff02dc351 100644 --- a/pkg/identityserver/notification_registry.go +++ b/pkg/identityserver/notification_registry.go @@ -17,7 +17,6 @@ package identityserver import ( "context" - pbtypes "github.com/gogo/protobuf/types" clusterauth "go.thethings.network/lorawan-stack/v3/pkg/auth/cluster" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/email" @@ -26,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/log" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/emptypb" ) func receiversContains(receivers []ttnpb.NotificationReceiver, search ttnpb.NotificationReceiver) bool { @@ -291,7 +291,7 @@ func (is *IdentityServer) listNotifications(ctx context.Context, req *ttnpb.List return res, nil } -func (is *IdentityServer) updateNotificationStatus(ctx context.Context, req *ttnpb.UpdateNotificationStatusRequest) (*pbtypes.Empty, error) { +func (is *IdentityServer) updateNotificationStatus(ctx context.Context, req *ttnpb.UpdateNotificationStatusRequest) (*emptypb.Empty, error) { if err := rights.RequireUser(ctx, req.ReceiverIds, ttnpb.Right_RIGHT_USER_NOTIFICATIONS_READ); err != nil { return nil, err } @@ -318,6 +318,6 @@ func (cr *notificationRegistry) List(ctx context.Context, req *ttnpb.ListNotific return cr.listNotifications(ctx, req) } -func (cr *notificationRegistry) UpdateStatus(ctx context.Context, req *ttnpb.UpdateNotificationStatusRequest) (*pbtypes.Empty, error) { +func (cr *notificationRegistry) UpdateStatus(ctx context.Context, req *ttnpb.UpdateNotificationStatusRequest) (*emptypb.Empty, error) { return cr.updateNotificationStatus(ctx, req) } diff --git a/pkg/identityserver/oauth_registry.go b/pkg/identityserver/oauth_registry.go index 28980c5db0..62e390fa3b 100644 --- a/pkg/identityserver/oauth_registry.go +++ b/pkg/identityserver/oauth_registry.go @@ -17,11 +17,11 @@ package identityserver import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) func (is *IdentityServer) listOAuthClientAuthorizations(ctx context.Context, req *ttnpb.ListOAuthClientAuthorizationsRequest) (authorizations *ttnpb.OAuthClientAuthorizations, err error) { @@ -80,7 +80,7 @@ func (is *IdentityServer) listOAuthAccessTokens(ctx context.Context, req *ttnpb. return tokens, nil } -func (is *IdentityServer) deleteOAuthAuthorization(ctx context.Context, req *ttnpb.OAuthClientAuthorizationIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) deleteOAuthAuthorization(ctx context.Context, req *ttnpb.OAuthClientAuthorizationIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireUser(ctx, req.UserIds, ttnpb.Right_RIGHT_USER_AUTHORIZED_CLIENTS); err != nil { return nil, err } @@ -95,7 +95,7 @@ func (is *IdentityServer) deleteOAuthAuthorization(ctx context.Context, req *ttn var errAccessTokenMismatch = errors.DefineInvalidArgument("access_token_mismatch", "access token ID did not match user or client identifiers") -func (is *IdentityServer) deleteOAuthAccessToken(ctx context.Context, req *ttnpb.OAuthAccessTokenIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) deleteOAuthAccessToken(ctx context.Context, req *ttnpb.OAuthAccessTokenIdentifiers) (*emptypb.Empty, error) { authInfo, err := is.authInfo(ctx) if err != nil { return nil, err @@ -138,10 +138,10 @@ func (or *oauthRegistry) ListTokens(ctx context.Context, req *ttnpb.ListOAuthAcc return or.listOAuthAccessTokens(ctx, req) } -func (or *oauthRegistry) Delete(ctx context.Context, req *ttnpb.OAuthClientAuthorizationIdentifiers) (*pbtypes.Empty, error) { +func (or *oauthRegistry) Delete(ctx context.Context, req *ttnpb.OAuthClientAuthorizationIdentifiers) (*emptypb.Empty, error) { return or.deleteOAuthAuthorization(ctx, req) } -func (or *oauthRegistry) DeleteToken(ctx context.Context, req *ttnpb.OAuthAccessTokenIdentifiers) (*pbtypes.Empty, error) { +func (or *oauthRegistry) DeleteToken(ctx context.Context, req *ttnpb.OAuthAccessTokenIdentifiers) (*emptypb.Empty, error) { return or.deleteOAuthAccessToken(ctx, req) } diff --git a/pkg/identityserver/organization_access.go b/pkg/identityserver/organization_access.go index 362fed9dea..637d6fa38d 100644 --- a/pkg/identityserver/organization_access.go +++ b/pkg/identityserver/organization_access.go @@ -17,13 +17,13 @@ package identityserver import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/events" "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -238,7 +238,7 @@ var errOrganizationNeedsCollaborator = errors.DefineFailedPrecondition("organiza func (is *IdentityServer) setOrganizationCollaborator( //nolint:gocyclo ctx context.Context, req *ttnpb.SetOrganizationCollaboratorRequest, -) (_ *pbtypes.Empty, err error) { +) (_ *emptypb.Empty, err error) { // Require that caller has rights to manage collaborators. if err := rights.RequireOrganization(ctx, req.GetOrganizationIds(), ttnpb.Right_RIGHT_ORGANIZATION_SETTINGS_MEMBERS); err != nil { return nil, err @@ -389,7 +389,7 @@ func (oa *organizationAccess) GetCollaborator(ctx context.Context, req *ttnpb.Ge return oa.getOrganizationCollaborator(ctx, req) } -func (oa *organizationAccess) SetCollaborator(ctx context.Context, req *ttnpb.SetOrganizationCollaboratorRequest) (*pbtypes.Empty, error) { +func (oa *organizationAccess) SetCollaborator(ctx context.Context, req *ttnpb.SetOrganizationCollaboratorRequest) (*emptypb.Empty, error) { return oa.setOrganizationCollaborator(ctx, req) } diff --git a/pkg/identityserver/organization_registry.go b/pkg/identityserver/organization_registry.go index 1a7872d7a1..e7169122c1 100644 --- a/pkg/identityserver/organization_registry.go +++ b/pkg/identityserver/organization_registry.go @@ -18,13 +18,13 @@ import ( "context" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/events" "go.thethings.network/lorawan-stack/v3/pkg/identityserver/blocklist" "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -273,7 +273,7 @@ func (is *IdentityServer) updateOrganization(ctx context.Context, req *ttnpb.Upd return org, nil } -func (is *IdentityServer) deleteOrganization(ctx context.Context, ids *ttnpb.OrganizationIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) deleteOrganization(ctx context.Context, ids *ttnpb.OrganizationIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireOrganization(ctx, ids, ttnpb.Right_RIGHT_ORGANIZATION_DELETE); err != nil { return nil, err } @@ -287,7 +287,7 @@ func (is *IdentityServer) deleteOrganization(ctx context.Context, ids *ttnpb.Org return ttnpb.Empty, nil } -func (is *IdentityServer) restoreOrganization(ctx context.Context, ids *ttnpb.OrganizationIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) restoreOrganization(ctx context.Context, ids *ttnpb.OrganizationIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireOrganization(store.WithSoftDeleted(ctx, false), ids, ttnpb.Right_RIGHT_ORGANIZATION_DELETE); err != nil { return nil, err } @@ -312,7 +312,7 @@ func (is *IdentityServer) restoreOrganization(ctx context.Context, ids *ttnpb.Or return ttnpb.Empty, nil } -func (is *IdentityServer) purgeOrganization(ctx context.Context, ids *ttnpb.OrganizationIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) purgeOrganization(ctx context.Context, ids *ttnpb.OrganizationIdentifiers) (*emptypb.Empty, error) { if !is.IsAdmin(ctx) { return nil, errAdminsPurgeOrganizations.New() } @@ -361,14 +361,14 @@ func (or *organizationRegistry) Update(ctx context.Context, req *ttnpb.UpdateOrg return or.updateOrganization(ctx, req) } -func (or *organizationRegistry) Delete(ctx context.Context, req *ttnpb.OrganizationIdentifiers) (*pbtypes.Empty, error) { +func (or *organizationRegistry) Delete(ctx context.Context, req *ttnpb.OrganizationIdentifiers) (*emptypb.Empty, error) { return or.deleteOrganization(ctx, req) } -func (or *organizationRegistry) Restore(ctx context.Context, req *ttnpb.OrganizationIdentifiers) (*pbtypes.Empty, error) { +func (or *organizationRegistry) Restore(ctx context.Context, req *ttnpb.OrganizationIdentifiers) (*emptypb.Empty, error) { return or.restoreOrganization(ctx, req) } -func (or *organizationRegistry) Purge(ctx context.Context, req *ttnpb.OrganizationIdentifiers) (*pbtypes.Empty, error) { +func (or *organizationRegistry) Purge(ctx context.Context, req *ttnpb.OrganizationIdentifiers) (*emptypb.Empty, error) { return or.purgeOrganization(ctx, req) } diff --git a/pkg/identityserver/user_registry.go b/pkg/identityserver/user_registry.go index f0d218e3ad..d12f685f3c 100644 --- a/pkg/identityserver/user_registry.go +++ b/pkg/identityserver/user_registry.go @@ -21,7 +21,6 @@ import ( "time" "unicode" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/email" @@ -34,6 +33,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" "go.thethings.network/lorawan-stack/v3/pkg/validate" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -551,7 +551,7 @@ var ( } ) -func (is *IdentityServer) updateUserPassword(ctx context.Context, req *ttnpb.UpdateUserPasswordRequest) (*pbtypes.Empty, error) { +func (is *IdentityServer) updateUserPassword(ctx context.Context, req *ttnpb.UpdateUserPasswordRequest) (*emptypb.Empty, error) { if err := is.validatePasswordStrength(ctx, req.GetUserIds().GetUserId(), req.New); err != nil { return nil, err } @@ -649,7 +649,7 @@ func (is *IdentityServer) updateUserPassword(ctx context.Context, req *ttnpb.Upd var errTemporaryPasswordStillValid = errors.DefineInvalidArgument("temporary_password_still_valid", "previous temporary password still valid") -func (is *IdentityServer) createTemporaryPassword(ctx context.Context, req *ttnpb.CreateTemporaryPasswordRequest) (*pbtypes.Empty, error) { +func (is *IdentityServer) createTemporaryPassword(ctx context.Context, req *ttnpb.CreateTemporaryPasswordRequest) (*emptypb.Empty, error) { temporaryPassword, err := auth.GenerateKey(ctx) if err != nil { return nil, err @@ -694,7 +694,7 @@ func (is *IdentityServer) createTemporaryPassword(ctx context.Context, req *ttnp return ttnpb.Empty, nil } -func (is *IdentityServer) deleteUser(ctx context.Context, ids *ttnpb.UserIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) deleteUser(ctx context.Context, ids *ttnpb.UserIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireUser(ctx, ids, ttnpb.Right_RIGHT_USER_DELETE); err != nil { return nil, err } @@ -718,7 +718,7 @@ func (is *IdentityServer) deleteUser(ctx context.Context, ids *ttnpb.UserIdentif return ttnpb.Empty, nil } -func (is *IdentityServer) restoreUser(ctx context.Context, ids *ttnpb.UserIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) restoreUser(ctx context.Context, ids *ttnpb.UserIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireUser(store.WithSoftDeleted(ctx, false), ids, ttnpb.Right_RIGHT_USER_DELETE); err != nil { return nil, err } @@ -743,7 +743,7 @@ func (is *IdentityServer) restoreUser(ctx context.Context, ids *ttnpb.UserIdenti return ttnpb.Empty, nil } -func (is *IdentityServer) purgeUser(ctx context.Context, ids *ttnpb.UserIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) purgeUser(ctx context.Context, ids *ttnpb.UserIdentifiers) (*emptypb.Empty, error) { if !is.IsAdmin(ctx) { return nil, errAdminsPurgeUsers.New() } @@ -800,22 +800,22 @@ func (ur *userRegistry) Update(ctx context.Context, req *ttnpb.UpdateUserRequest return ur.updateUser(ctx, req) } -func (ur *userRegistry) UpdatePassword(ctx context.Context, req *ttnpb.UpdateUserPasswordRequest) (*pbtypes.Empty, error) { +func (ur *userRegistry) UpdatePassword(ctx context.Context, req *ttnpb.UpdateUserPasswordRequest) (*emptypb.Empty, error) { return ur.updateUserPassword(ctx, req) } -func (ur *userRegistry) CreateTemporaryPassword(ctx context.Context, req *ttnpb.CreateTemporaryPasswordRequest) (*pbtypes.Empty, error) { +func (ur *userRegistry) CreateTemporaryPassword(ctx context.Context, req *ttnpb.CreateTemporaryPasswordRequest) (*emptypb.Empty, error) { return ur.createTemporaryPassword(ctx, req) } -func (ur *userRegistry) Delete(ctx context.Context, req *ttnpb.UserIdentifiers) (*pbtypes.Empty, error) { +func (ur *userRegistry) Delete(ctx context.Context, req *ttnpb.UserIdentifiers) (*emptypb.Empty, error) { return ur.deleteUser(ctx, req) } -func (ur *userRegistry) Restore(ctx context.Context, req *ttnpb.UserIdentifiers) (*pbtypes.Empty, error) { +func (ur *userRegistry) Restore(ctx context.Context, req *ttnpb.UserIdentifiers) (*emptypb.Empty, error) { return ur.restoreUser(ctx, req) } -func (ur *userRegistry) Purge(ctx context.Context, req *ttnpb.UserIdentifiers) (*pbtypes.Empty, error) { +func (ur *userRegistry) Purge(ctx context.Context, req *ttnpb.UserIdentifiers) (*emptypb.Empty, error) { return ur.purgeUser(ctx, req) } diff --git a/pkg/identityserver/user_session_registry.go b/pkg/identityserver/user_session_registry.go index b5898532fc..cdfbf65331 100644 --- a/pkg/identityserver/user_session_registry.go +++ b/pkg/identityserver/user_session_registry.go @@ -17,10 +17,10 @@ package identityserver import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) func (is *IdentityServer) listUserSessions(ctx context.Context, req *ttnpb.ListUserSessionsRequest) (sessions *ttnpb.UserSessions, err error) { @@ -53,7 +53,7 @@ func (is *IdentityServer) listUserSessions(ctx context.Context, req *ttnpb.ListU return sessions, nil } -func (is *IdentityServer) deleteUserSession(ctx context.Context, req *ttnpb.UserSessionIdentifiers) (*pbtypes.Empty, error) { +func (is *IdentityServer) deleteUserSession(ctx context.Context, req *ttnpb.UserSessionIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireUser(ctx, req.GetUserIds(), ttnpb.Right_RIGHT_USER_ALL); err != nil { return nil, err } @@ -76,6 +76,6 @@ func (ur *userSessionRegistry) List(ctx context.Context, req *ttnpb.ListUserSess return ur.listUserSessions(ctx, req) } -func (ur *userSessionRegistry) Delete(ctx context.Context, req *ttnpb.UserSessionIdentifiers) (*pbtypes.Empty, error) { +func (ur *userSessionRegistry) Delete(ctx context.Context, req *ttnpb.UserSessionIdentifiers) (*emptypb.Empty, error) { return ur.deleteUserSession(ctx, req) } diff --git a/pkg/joinserver/grpc.go b/pkg/joinserver/grpc.go index e030a81e24..e17513a82e 100644 --- a/pkg/joinserver/grpc.go +++ b/pkg/joinserver/grpc.go @@ -17,8 +17,8 @@ package joinserver import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) type jsServer struct { @@ -28,7 +28,7 @@ type jsServer struct { } // GetJoinEUIPrefixes returns the JoinEUIPrefixes associated with the join server. -func (srv jsServer) GetJoinEUIPrefixes(ctx context.Context, _ *pbtypes.Empty) (*ttnpb.JoinEUIPrefixes, error) { +func (srv jsServer) GetJoinEUIPrefixes(ctx context.Context, _ *emptypb.Empty) (*ttnpb.JoinEUIPrefixes, error) { prefixes := make([]*ttnpb.JoinEUIPrefix, 0, len(srv.JS.euiPrefixes)) for _, p := range srv.JS.euiPrefixes { prefixes = append(prefixes, &ttnpb.JoinEUIPrefix{ @@ -42,7 +42,7 @@ func (srv jsServer) GetJoinEUIPrefixes(ctx context.Context, _ *pbtypes.Empty) (* } // GetDefaultJoinEUI returns the default JoinEUI that is configured for this Join Server. -func (srv jsServer) GetDefaultJoinEUI(ctx context.Context, _ *pbtypes.Empty) (*ttnpb.GetDefaultJoinEUIResponse, error) { +func (srv jsServer) GetDefaultJoinEUI(ctx context.Context, _ *emptypb.Empty) (*ttnpb.GetDefaultJoinEUIResponse, error) { return &ttnpb.GetDefaultJoinEUIResponse{ JoinEui: srv.JS.defaultJoinEUI.Bytes(), }, nil diff --git a/pkg/joinserver/grpc_application_activation_settings_registry.go b/pkg/joinserver/grpc_application_activation_settings_registry.go index 4bf728e55a..6c387609ec 100644 --- a/pkg/joinserver/grpc_application_activation_settings_registry.go +++ b/pkg/joinserver/grpc_application_activation_settings_registry.go @@ -17,12 +17,12 @@ package joinserver import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/crypto/cryptoutil" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" + "google.golang.org/protobuf/types/known/emptypb" ) type applicationActivationSettingsRegistryServer struct { @@ -106,7 +106,7 @@ func (srv applicationActivationSettingsRegistryServer) Set(ctx context.Context, } // Delete implements ttnpb.ApplicationActivationSettingsRegistryServer. -func (srv applicationActivationSettingsRegistryServer) Delete(ctx context.Context, req *ttnpb.DeleteApplicationActivationSettingsRequest) (*pbtypes.Empty, error) { +func (srv applicationActivationSettingsRegistryServer) Delete(ctx context.Context, req *ttnpb.DeleteApplicationActivationSettingsRequest) (*emptypb.Empty, error) { if err := rights.RequireApplication(ctx, req.ApplicationIds, ttnpb.Right_RIGHT_APPLICATION_DEVICES_READ_KEYS, ttnpb.Right_RIGHT_APPLICATION_DEVICES_WRITE_KEYS); err != nil { return nil, err } diff --git a/pkg/joinserver/grpc_deviceregistry.go b/pkg/joinserver/grpc_deviceregistry.go index 5d6b636fb4..6344184eb3 100644 --- a/pkg/joinserver/grpc_deviceregistry.go +++ b/pkg/joinserver/grpc_deviceregistry.go @@ -18,7 +18,6 @@ import ( "context" "github.com/gogo/protobuf/proto" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/crypto/cryptoservices" "go.thethings.network/lorawan-stack/v3/pkg/crypto/cryptoutil" @@ -28,6 +27,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/rpcmiddleware/warning" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -323,7 +323,7 @@ func (srv jsEndDeviceRegistryServer) Provision(req *ttnpb.ProvisionEndDevicesReq } // Delete implements ttnpb.JsEndDeviceRegistryServer. -func (srv jsEndDeviceRegistryServer) Delete(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers) (*pbtypes.Empty, error) { +func (srv jsEndDeviceRegistryServer) Delete(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireApplication(ctx, ids.ApplicationIds, ttnpb.Right_RIGHT_APPLICATION_DEVICES_WRITE); err != nil { return nil, err } diff --git a/pkg/networkserver/grpc.go b/pkg/networkserver/grpc.go index 0948d74b13..91c32736fb 100644 --- a/pkg/networkserver/grpc.go +++ b/pkg/networkserver/grpc.go @@ -17,17 +17,17 @@ package networkserver import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/encoding/lorawan" . "go.thethings.network/lorawan-stack/v3/pkg/networkserver/internal" "go.thethings.network/lorawan-stack/v3/pkg/networkserver/mac" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/wrapperspb" ) // GenerateDevAddr returns a device address assignment in the device address // range of the network server. -func (ns *NetworkServer) GenerateDevAddr(ctx context.Context, req *pbtypes.Empty) (*ttnpb.GenerateDevAddrResponse, error) { +func (ns *NetworkServer) GenerateDevAddr(ctx context.Context, req *emptypb.Empty) (*ttnpb.GenerateDevAddrResponse, error) { devAddr := ns.newDevAddr(ctx, nil) return &ttnpb.GenerateDevAddrResponse{DevAddr: devAddr.Bytes()}, nil } @@ -83,7 +83,7 @@ func (ns *NetworkServer) GetDefaultMACSettings(ctx context.Context, req *ttnpb.G } // GetNetID returns the NetID of the Network Server. -func (ns *NetworkServer) GetNetID(_ context.Context, _ *pbtypes.Empty) (*ttnpb.GetNetIDResponse, error) { +func (ns *NetworkServer) GetNetID(_ context.Context, _ *emptypb.Empty) (*ttnpb.GetNetIDResponse, error) { return &ttnpb.GetNetIDResponse{ NetId: ns.netID[:], }, nil @@ -91,7 +91,7 @@ func (ns *NetworkServer) GetNetID(_ context.Context, _ *pbtypes.Empty) (*ttnpb.G // GetDeviceAddressPrefixes return the configured device address prefixes of the Network Server. func (ns *NetworkServer) GetDeviceAddressPrefixes( - ctx context.Context, _ *pbtypes.Empty, + ctx context.Context, _ *emptypb.Empty, ) (*ttnpb.GetDeviceAdressPrefixesResponse, error) { output := &ttnpb.GetDeviceAdressPrefixesResponse{} diff --git a/pkg/networkserver/grpc_asns.go b/pkg/networkserver/grpc_asns.go index 64b8254678..7e74c478e9 100644 --- a/pkg/networkserver/grpc_asns.go +++ b/pkg/networkserver/grpc_asns.go @@ -19,7 +19,6 @@ import ( "context" "fmt" - pbtypes "github.com/gogo/protobuf/types" clusterauth "go.thethings.network/lorawan-stack/v3/pkg/auth/cluster" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/events" @@ -31,6 +30,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/specification/macspec" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/emptypb" ) type ApplicationUplinkQueueDrainFunc func(limit int, f func(...*ttnpb.ApplicationUp) error) error @@ -276,7 +276,7 @@ func matchQueuedApplicationDownlinks(ctx context.Context, dev *ttnpb.EndDevice, var errDownlinkQueueCapacity = errors.DefineResourceExhausted("downlink_queue_capacity", "downlink queue capacity exceeded") // DownlinkQueueReplace is called by the Application Server to completely replace the downlink queue for a device. -func (ns *NetworkServer) DownlinkQueueReplace(ctx context.Context, req *ttnpb.DownlinkQueueRequest) (*pbtypes.Empty, error) { +func (ns *NetworkServer) DownlinkQueueReplace(ctx context.Context, req *ttnpb.DownlinkQueueRequest) (*emptypb.Empty, error) { if n := len(req.Downlinks); n > ns.downlinkQueueCapacity*2 { return nil, errDownlinkQueueCapacity.New() } else if err := clusterauth.Authorized(ctx); err != nil { @@ -349,7 +349,7 @@ func (ns *NetworkServer) DownlinkQueueReplace(ctx context.Context, req *ttnpb.Do } // DownlinkQueuePush is called by the Application Server to push a downlink to queue for a device. -func (ns *NetworkServer) DownlinkQueuePush(ctx context.Context, req *ttnpb.DownlinkQueueRequest) (*pbtypes.Empty, error) { +func (ns *NetworkServer) DownlinkQueuePush(ctx context.Context, req *ttnpb.DownlinkQueueRequest) (*emptypb.Empty, error) { if n := len(req.Downlinks); n > ns.downlinkQueueCapacity*2 { return nil, errDownlinkQueueCapacity.New() } else if n == 0 { diff --git a/pkg/networkserver/grpc_deviceregistry.go b/pkg/networkserver/grpc_deviceregistry.go index 8b8a176057..0e10745f5c 100644 --- a/pkg/networkserver/grpc_deviceregistry.go +++ b/pkg/networkserver/grpc_deviceregistry.go @@ -21,7 +21,6 @@ import ( "strings" "github.com/gogo/protobuf/proto" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/band" "go.thethings.network/lorawan-stack/v3/pkg/crypto" @@ -36,6 +35,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/specification/macspec" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -2856,7 +2856,7 @@ func (ns *NetworkServer) ResetFactoryDefaults(ctx context.Context, req *ttnpb.Re } // Delete implements NsEndDeviceRegistryServer. -func (ns *NetworkServer) Delete(ctx context.Context, req *ttnpb.EndDeviceIdentifiers) (*pbtypes.Empty, error) { +func (ns *NetworkServer) Delete(ctx context.Context, req *ttnpb.EndDeviceIdentifiers) (*emptypb.Empty, error) { if err := rights.RequireApplication(ctx, req.ApplicationIds, ttnpb.Right_RIGHT_APPLICATION_DEVICES_WRITE); err != nil { return nil, err } diff --git a/pkg/networkserver/grpc_gsns.go b/pkg/networkserver/grpc_gsns.go index 0016e34a92..a1b77c46d0 100644 --- a/pkg/networkserver/grpc_gsns.go +++ b/pkg/networkserver/grpc_gsns.go @@ -21,7 +21,6 @@ import ( "runtime/trace" "github.com/gogo/protobuf/proto" - pbtypes "github.com/gogo/protobuf/types" clusterauth "go.thethings.network/lorawan-stack/v3/pkg/auth/cluster" "go.thethings.network/lorawan-stack/v3/pkg/band" "go.thethings.network/lorawan-stack/v3/pkg/crypto" @@ -40,6 +39,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/unique" "golang.org/x/exp/slices" + "google.golang.org/protobuf/types/known/emptypb" ) const ( @@ -1398,7 +1398,7 @@ func (ns *NetworkServer) handleRejoinRequest(ctx context.Context, up *ttnpb.Upli } // HandleUplink is called by the Gateway Server when an uplink message arrives. -func (ns *NetworkServer) HandleUplink(ctx context.Context, up *ttnpb.UplinkMessage) (_ *pbtypes.Empty, err error) { +func (ns *NetworkServer) HandleUplink(ctx context.Context, up *ttnpb.UplinkMessage) (_ *emptypb.Empty, err error) { if err := clusterauth.Authorized(ctx); err != nil { return nil, err } @@ -1480,7 +1480,7 @@ var errTransmission = errors.Define("transmission", "downlink transmission faile // ReportTxAcknowledgment is called by the Gateway Server when a tx acknowledgment arrives. func (ns *NetworkServer) ReportTxAcknowledgment( ctx context.Context, txAck *ttnpb.GatewayTxAcknowledgment, -) (*pbtypes.Empty, error) { +) (*emptypb.Empty, error) { if err := clusterauth.Authorized(ctx); err != nil { return nil, err } diff --git a/pkg/networkserver/networkserver_util_internal_test.go b/pkg/networkserver/networkserver_util_internal_test.go index 4f9fe82dae..77b275567e 100644 --- a/pkg/networkserver/networkserver_util_internal_test.go +++ b/pkg/networkserver/networkserver_util_internal_test.go @@ -47,6 +47,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/emptypb" ) const ( @@ -457,7 +458,7 @@ type MockNsAsServer struct { } // ScheduleDownlink calls HandleUplinkFunc if set and panics otherwise. -func (m MockNsAsServer) HandleUplink(ctx context.Context, req *ttnpb.NsAsHandleUplinkRequest) (*pbtypes.Empty, error) { +func (m MockNsAsServer) HandleUplink(ctx context.Context, req *ttnpb.NsAsHandleUplinkRequest) (*emptypb.Empty, error) { if m.HandleUplinkFunc == nil { panic("HandleUplink called, but not set") } diff --git a/pkg/packetbrokeragent/agent_test.go b/pkg/packetbrokeragent/agent_test.go index 2bdd4435f8..a6cb594319 100644 --- a/pkg/packetbrokeragent/agent_test.go +++ b/pkg/packetbrokeragent/agent_test.go @@ -42,6 +42,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/wrapperspb" "gopkg.in/square/go-jose.v2" ) @@ -452,7 +453,7 @@ func TestForwarder(t *testing.T) { a := assertions.New(t) updateCh := make(chan *mappingpb.UpdateGatewayRequest, 1) - mp.UpdateGatewayHandler = func(ctx context.Context, req *mappingpb.UpdateGatewayRequest, opts ...grpc.CallOption) (*pbtypes.Empty, error) { + mp.UpdateGatewayHandler = func(ctx context.Context, req *mappingpb.UpdateGatewayRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { updateCh <- req return ttnpb.Empty, nil } diff --git a/pkg/packetbrokeragent/grpc_disabled.go b/pkg/packetbrokeragent/grpc_disabled.go index c7c13147fe..b457aba8c2 100644 --- a/pkg/packetbrokeragent/grpc_disabled.go +++ b/pkg/packetbrokeragent/grpc_disabled.go @@ -17,9 +17,9 @@ package packetbrokeragent import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) type disabledServer struct { @@ -30,7 +30,7 @@ type disabledServer struct { var errNotEnabled = errors.DefineFailedPrecondition("not_enabled", "Packet Broker is not enabled") -func (s disabledServer) GetInfo(context.Context, *pbtypes.Empty) (*ttnpb.PacketBrokerInfo, error) { +func (s disabledServer) GetInfo(context.Context, *emptypb.Empty) (*ttnpb.PacketBrokerInfo, error) { return nil, errNotEnabled.New() } @@ -38,19 +38,19 @@ func (s disabledServer) Register(context.Context, *ttnpb.PacketBrokerRegisterReq return nil, errNotEnabled.New() } -func (s disabledServer) Deregister(context.Context, *pbtypes.Empty) (*pbtypes.Empty, error) { +func (s disabledServer) Deregister(context.Context, *emptypb.Empty) (*emptypb.Empty, error) { return nil, errNotEnabled.New() } -func (s disabledServer) GetHomeNetworkDefaultRoutingPolicy(context.Context, *pbtypes.Empty) (*ttnpb.PacketBrokerDefaultRoutingPolicy, error) { +func (s disabledServer) GetHomeNetworkDefaultRoutingPolicy(context.Context, *emptypb.Empty) (*ttnpb.PacketBrokerDefaultRoutingPolicy, error) { return nil, errNotEnabled.New() } -func (s disabledServer) SetHomeNetworkDefaultRoutingPolicy(context.Context, *ttnpb.SetPacketBrokerDefaultRoutingPolicyRequest) (*pbtypes.Empty, error) { +func (s disabledServer) SetHomeNetworkDefaultRoutingPolicy(context.Context, *ttnpb.SetPacketBrokerDefaultRoutingPolicyRequest) (*emptypb.Empty, error) { return nil, errNotEnabled.New() } -func (s disabledServer) DeleteHomeNetworkDefaultRoutingPolicy(context.Context, *pbtypes.Empty) (*pbtypes.Empty, error) { +func (s disabledServer) DeleteHomeNetworkDefaultRoutingPolicy(context.Context, *emptypb.Empty) (*emptypb.Empty, error) { return nil, errNotEnabled.New() } @@ -62,23 +62,23 @@ func (s disabledServer) GetHomeNetworkRoutingPolicy(context.Context, *ttnpb.Pack return nil, errNotEnabled.New() } -func (s disabledServer) SetHomeNetworkRoutingPolicy(context.Context, *ttnpb.SetPacketBrokerRoutingPolicyRequest) (*pbtypes.Empty, error) { +func (s disabledServer) SetHomeNetworkRoutingPolicy(context.Context, *ttnpb.SetPacketBrokerRoutingPolicyRequest) (*emptypb.Empty, error) { return nil, errNotEnabled.New() } -func (s disabledServer) DeleteHomeNetworkRoutingPolicy(context.Context, *ttnpb.PacketBrokerNetworkIdentifier) (*pbtypes.Empty, error) { +func (s disabledServer) DeleteHomeNetworkRoutingPolicy(context.Context, *ttnpb.PacketBrokerNetworkIdentifier) (*emptypb.Empty, error) { return nil, errNotEnabled.New() } -func (s *disabledServer) GetHomeNetworkDefaultGatewayVisibility(context.Context, *pbtypes.Empty) (*ttnpb.PacketBrokerDefaultGatewayVisibility, error) { +func (s *disabledServer) GetHomeNetworkDefaultGatewayVisibility(context.Context, *emptypb.Empty) (*ttnpb.PacketBrokerDefaultGatewayVisibility, error) { return nil, errNotEnabled.New() } -func (s *disabledServer) SetHomeNetworkDefaultGatewayVisibility(context.Context, *ttnpb.SetPacketBrokerDefaultGatewayVisibilityRequest) (*pbtypes.Empty, error) { +func (s *disabledServer) SetHomeNetworkDefaultGatewayVisibility(context.Context, *ttnpb.SetPacketBrokerDefaultGatewayVisibilityRequest) (*emptypb.Empty, error) { return nil, errNotEnabled.New() } -func (s *disabledServer) DeleteHomeNetworkDefaultGatewayVisibility(context.Context, *pbtypes.Empty) (*pbtypes.Empty, error) { +func (s *disabledServer) DeleteHomeNetworkDefaultGatewayVisibility(context.Context, *emptypb.Empty) (*emptypb.Empty, error) { return nil, errNotEnabled.New() } @@ -94,11 +94,11 @@ func (s disabledServer) ListForwarderRoutingPolicies(context.Context, *ttnpb.Lis return nil, errNotEnabled.New() } -func (s disabledServer) PublishDownlink(context.Context, *ttnpb.DownlinkMessage) (*pbtypes.Empty, error) { +func (s disabledServer) PublishDownlink(context.Context, *ttnpb.DownlinkMessage) (*emptypb.Empty, error) { return nil, errNotEnabled.New() } -func (s disabledServer) PublishUplink(context.Context, *ttnpb.GatewayUplinkMessage) (*pbtypes.Empty, error) { +func (s disabledServer) PublishUplink(context.Context, *ttnpb.GatewayUplinkMessage) (*emptypb.Empty, error) { return nil, errNotEnabled.New() } diff --git a/pkg/packetbrokeragent/grpc_gspba.go b/pkg/packetbrokeragent/grpc_gspba.go index 2dcdec632a..701c2d4c83 100644 --- a/pkg/packetbrokeragent/grpc_gspba.go +++ b/pkg/packetbrokeragent/grpc_gspba.go @@ -30,6 +30,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -65,7 +66,7 @@ type gsPbaServer struct { } // PublishUplink is called by the Gateway Server when an uplink message arrives and needs to get forwarded to Packet Broker. -func (s *gsPbaServer) PublishUplink(ctx context.Context, up *ttnpb.GatewayUplinkMessage) (*pbtypes.Empty, error) { +func (s *gsPbaServer) PublishUplink(ctx context.Context, up *ttnpb.GatewayUplinkMessage) (*emptypb.Empty, error) { if err := clusterauth.Authorized(ctx); err != nil { return nil, err } diff --git a/pkg/packetbrokeragent/grpc_nspba.go b/pkg/packetbrokeragent/grpc_nspba.go index 9e2bc427fc..d42f491b10 100644 --- a/pkg/packetbrokeragent/grpc_nspba.go +++ b/pkg/packetbrokeragent/grpc_nspba.go @@ -18,11 +18,11 @@ import ( "context" "fmt" - pbtypes "github.com/gogo/protobuf/types" clusterauth "go.thethings.network/lorawan-stack/v3/pkg/auth/cluster" "go.thethings.network/lorawan-stack/v3/pkg/events" "go.thethings.network/lorawan-stack/v3/pkg/log" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) type nsPbaServer struct { @@ -34,7 +34,7 @@ type nsPbaServer struct { } // PublishDownlink is called by the Network Server when a downlink message needs to get scheduled via Packet Broker. -func (s *nsPbaServer) PublishDownlink(ctx context.Context, down *ttnpb.DownlinkMessage) (*pbtypes.Empty, error) { +func (s *nsPbaServer) PublishDownlink(ctx context.Context, down *ttnpb.DownlinkMessage) (*emptypb.Empty, error) { if err := clusterauth.Authorized(ctx); err != nil { return nil, err } diff --git a/pkg/packetbrokeragent/grpc_pba.go b/pkg/packetbrokeragent/grpc_pba.go index a2cea71dc5..ad55cba022 100644 --- a/pkg/packetbrokeragent/grpc_pba.go +++ b/pkg/packetbrokeragent/grpc_pba.go @@ -30,6 +30,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/grpc" "google.golang.org/grpc/metadata" + "google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -43,7 +44,7 @@ type pbaServer struct { cpConn *grpc.ClientConn } -func (s *pbaServer) GetInfo(ctx context.Context, _ *pbtypes.Empty) (*ttnpb.PacketBrokerInfo, error) { +func (s *pbaServer) GetInfo(ctx context.Context, _ *emptypb.Empty) (*ttnpb.PacketBrokerInfo, error) { if err := rights.RequireIsAdmin(ctx); err != nil { return nil, err } @@ -196,7 +197,7 @@ func (s *pbaServer) Register(ctx context.Context, req *ttnpb.PacketBrokerRegiste }, nil } -func (s *pbaServer) Deregister(ctx context.Context, _ *pbtypes.Empty) (*pbtypes.Empty, error) { +func (s *pbaServer) Deregister(ctx context.Context, _ *emptypb.Empty) (*emptypb.Empty, error) { if err := rights.RequireIsAdmin(ctx); err != nil { return nil, err } @@ -215,7 +216,7 @@ func (s *pbaServer) Deregister(ctx context.Context, _ *pbtypes.Empty) (*pbtypes. return ttnpb.Empty, nil } -func (s *pbaServer) GetHomeNetworkDefaultRoutingPolicy(ctx context.Context, _ *pbtypes.Empty) (*ttnpb.PacketBrokerDefaultRoutingPolicy, error) { +func (s *pbaServer) GetHomeNetworkDefaultRoutingPolicy(ctx context.Context, _ *emptypb.Empty) (*ttnpb.PacketBrokerDefaultRoutingPolicy, error) { if err := rights.RequireIsAdmin(ctx); err != nil { return nil, err } @@ -233,7 +234,7 @@ func (s *pbaServer) GetHomeNetworkDefaultRoutingPolicy(ctx context.Context, _ *p return fromPBDefaultRoutingPolicy(res.GetPolicy()), nil } -func (s *pbaServer) SetHomeNetworkDefaultRoutingPolicy(ctx context.Context, req *ttnpb.SetPacketBrokerDefaultRoutingPolicyRequest) (*pbtypes.Empty, error) { +func (s *pbaServer) SetHomeNetworkDefaultRoutingPolicy(ctx context.Context, req *ttnpb.SetPacketBrokerDefaultRoutingPolicyRequest) (*emptypb.Empty, error) { if err := rights.RequireIsAdmin(ctx); err != nil { return nil, err } @@ -255,7 +256,7 @@ func (s *pbaServer) SetHomeNetworkDefaultRoutingPolicy(ctx context.Context, req return ttnpb.Empty, nil } -func (s *pbaServer) DeleteHomeNetworkDefaultRoutingPolicy(ctx context.Context, _ *pbtypes.Empty) (*pbtypes.Empty, error) { +func (s *pbaServer) DeleteHomeNetworkDefaultRoutingPolicy(ctx context.Context, _ *emptypb.Empty) (*emptypb.Empty, error) { if err := rights.RequireIsAdmin(ctx); err != nil { return nil, err } @@ -364,7 +365,7 @@ func (s *pbaServer) GetHomeNetworkRoutingPolicy(ctx context.Context, req *ttnpb. return fromPBRoutingPolicy(res.GetPolicy()), nil } -func (s *pbaServer) SetHomeNetworkRoutingPolicy(ctx context.Context, req *ttnpb.SetPacketBrokerRoutingPolicyRequest) (*pbtypes.Empty, error) { +func (s *pbaServer) SetHomeNetworkRoutingPolicy(ctx context.Context, req *ttnpb.SetPacketBrokerRoutingPolicyRequest) (*emptypb.Empty, error) { if err := rights.RequireIsAdmin(ctx); err != nil { return nil, err } @@ -388,7 +389,7 @@ func (s *pbaServer) SetHomeNetworkRoutingPolicy(ctx context.Context, req *ttnpb. return ttnpb.Empty, nil } -func (s *pbaServer) DeleteHomeNetworkRoutingPolicy(ctx context.Context, req *ttnpb.PacketBrokerNetworkIdentifier) (*pbtypes.Empty, error) { +func (s *pbaServer) DeleteHomeNetworkRoutingPolicy(ctx context.Context, req *ttnpb.PacketBrokerNetworkIdentifier) (*emptypb.Empty, error) { if err := rights.RequireIsAdmin(ctx); err != nil { return nil, err } @@ -410,7 +411,7 @@ func (s *pbaServer) DeleteHomeNetworkRoutingPolicy(ctx context.Context, req *ttn return ttnpb.Empty, nil } -func (s *pbaServer) GetHomeNetworkDefaultGatewayVisibility(ctx context.Context, req *pbtypes.Empty) (*ttnpb.PacketBrokerDefaultGatewayVisibility, error) { +func (s *pbaServer) GetHomeNetworkDefaultGatewayVisibility(ctx context.Context, req *emptypb.Empty) (*ttnpb.PacketBrokerDefaultGatewayVisibility, error) { if err := rights.RequireIsAdmin(ctx); err != nil { return nil, err } @@ -428,7 +429,7 @@ func (s *pbaServer) GetHomeNetworkDefaultGatewayVisibility(ctx context.Context, return fromPBDefaultGatewayVisibility(res.GetVisibility()), nil } -func (s *pbaServer) SetHomeNetworkDefaultGatewayVisibility(ctx context.Context, req *ttnpb.SetPacketBrokerDefaultGatewayVisibilityRequest) (*pbtypes.Empty, error) { +func (s *pbaServer) SetHomeNetworkDefaultGatewayVisibility(ctx context.Context, req *ttnpb.SetPacketBrokerDefaultGatewayVisibilityRequest) (*emptypb.Empty, error) { if err := rights.RequireIsAdmin(ctx); err != nil { return nil, err } @@ -456,7 +457,7 @@ func (s *pbaServer) SetHomeNetworkDefaultGatewayVisibility(ctx context.Context, return ttnpb.Empty, nil } -func (s *pbaServer) DeleteHomeNetworkDefaultGatewayVisibility(ctx context.Context, req *pbtypes.Empty) (*pbtypes.Empty, error) { +func (s *pbaServer) DeleteHomeNetworkDefaultGatewayVisibility(ctx context.Context, req *emptypb.Empty) (*emptypb.Empty, error) { if err := rights.RequireIsAdmin(ctx); err != nil { return nil, err } diff --git a/pkg/packetbrokeragent/grpc_pba_test.go b/pkg/packetbrokeragent/grpc_pba_test.go index 468eb32bda..8491b3b25a 100644 --- a/pkg/packetbrokeragent/grpc_pba_test.go +++ b/pkg/packetbrokeragent/grpc_pba_test.go @@ -42,6 +42,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" + "google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -225,7 +226,7 @@ func TestPba(t *testing.T) { }, }, nil } - p.Registry.UpdateTenantHandler = func(ctx context.Context, req *iampb.UpdateTenantRequest) (*pbtypes.Empty, error) { + p.Registry.UpdateTenantHandler = func(ctx context.Context, req *iampb.UpdateTenantRequest) (*emptypb.Empty, error) { _, a := test.MustNewTFromContext(ctx) a.So(req, should.Resemble, &iampb.UpdateTenantRequest{ NetId: 0x13, @@ -291,7 +292,7 @@ func TestPba(t *testing.T) { { name: "Deregister", withIAMHandlers: func(p *mock.PBIAM) { - p.Registry.DeleteTenantHandler = func(ctx context.Context, req *iampb.TenantRequest) (*pbtypes.Empty, error) { + p.Registry.DeleteTenantHandler = func(ctx context.Context, req *iampb.TenantRequest) (*emptypb.Empty, error) { _, a := test.MustNewTFromContext(ctx) a.So(req.NetId, should.Equal, 0x13) a.So(req.TenantId, should.Equal, "foo-tenant") @@ -353,7 +354,7 @@ func TestPba(t *testing.T) { { name: "RoutingPolicy/Default/Set", withControlPlaneHandlers: func(p *mock.PBControlPlane) { - p.SetDefaultPolicyHandler = func(ctx context.Context, req *routingpb.SetPolicyRequest) (*pbtypes.Empty, error) { + p.SetDefaultPolicyHandler = func(ctx context.Context, req *routingpb.SetPolicyRequest) (*emptypb.Empty, error) { _, a := test.MustNewTFromContext(ctx) a.So(req.Policy, should.Resemble, &packetbroker.RoutingPolicy{ ForwarderNetId: 0x13, @@ -386,7 +387,7 @@ func TestPba(t *testing.T) { { name: "RoutingPolicy/Default/Delete", withControlPlaneHandlers: func(p *mock.PBControlPlane) { - p.SetDefaultPolicyHandler = func(ctx context.Context, req *routingpb.SetPolicyRequest) (*pbtypes.Empty, error) { + p.SetDefaultPolicyHandler = func(ctx context.Context, req *routingpb.SetPolicyRequest) (*emptypb.Empty, error) { _, a := test.MustNewTFromContext(ctx) a.So(req.Policy, should.Resemble, &packetbroker.RoutingPolicy{ ForwarderNetId: 0x13, diff --git a/pkg/packetbrokeragent/mock/networkserver.go b/pkg/packetbrokeragent/mock/networkserver.go index 8e951b84c5..32e7e97cd6 100644 --- a/pkg/packetbrokeragent/mock/networkserver.go +++ b/pkg/packetbrokeragent/mock/networkserver.go @@ -17,11 +17,11 @@ package mock import ( "context" - pbtypes "github.com/gogo/protobuf/types" "github.com/grpc-ecosystem/grpc-gateway/runtime" "go.thethings.network/lorawan-stack/v3/pkg/component" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/emptypb" ) // NetworkServer is a mock Network Server. @@ -65,7 +65,7 @@ func (ns *NetworkServer) Publish(ctx context.Context, down *ttnpb.DownlinkMessag } // HandleUplink implements ttnpb.GsNsServer. -func (ns *NetworkServer) HandleUplink(ctx context.Context, req *ttnpb.UplinkMessage) (*pbtypes.Empty, error) { +func (ns *NetworkServer) HandleUplink(ctx context.Context, req *ttnpb.UplinkMessage) (*emptypb.Empty, error) { select { case ns.Uplink <- req: default: @@ -74,7 +74,7 @@ func (ns *NetworkServer) HandleUplink(ctx context.Context, req *ttnpb.UplinkMess } // ReportTxAcknowledgment implements ttnpb.GsNsServer. -func (ns *NetworkServer) ReportTxAcknowledgment(_ context.Context, req *ttnpb.GatewayTxAcknowledgment) (*pbtypes.Empty, error) { +func (ns *NetworkServer) ReportTxAcknowledgment(_ context.Context, req *ttnpb.GatewayTxAcknowledgment) (*emptypb.Empty, error) { select { case ns.TxAck <- req: default: diff --git a/pkg/packetbrokeragent/mock/pbcontrolplane.go b/pkg/packetbrokeragent/mock/pbcontrolplane.go index 91de8a141e..9424177396 100644 --- a/pkg/packetbrokeragent/mock/pbcontrolplane.go +++ b/pkg/packetbrokeragent/mock/pbcontrolplane.go @@ -18,10 +18,10 @@ import ( "context" "testing" - pbtypes "github.com/gogo/protobuf/types" routingpb "go.packetbroker.org/api/routing" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/emptypb" ) // PBControlPlane is a mock Packet Broker Control Plane. @@ -31,10 +31,10 @@ type PBControlPlane struct { *grpc.Server ListDefaultPoliciesHandler func(ctx context.Context, req *routingpb.ListDefaultPoliciesRequest) (*routingpb.ListDefaultPoliciesResponse, error) GetDefaultPolicyHandler func(ctx context.Context, req *routingpb.GetDefaultPolicyRequest) (*routingpb.GetPolicyResponse, error) - SetDefaultPolicyHandler func(ctx context.Context, req *routingpb.SetPolicyRequest) (*pbtypes.Empty, error) + SetDefaultPolicyHandler func(ctx context.Context, req *routingpb.SetPolicyRequest) (*emptypb.Empty, error) ListHomeNetworkPoliciesHandler func(ctx context.Context, req *routingpb.ListHomeNetworkPoliciesRequest) (*routingpb.ListHomeNetworkPoliciesResponse, error) GetHomeNetworkPolicyHandler func(ctx context.Context, req *routingpb.GetHomeNetworkPolicyRequest) (*routingpb.GetPolicyResponse, error) - SetHomeNetworkPolicyHandler func(ctx context.Context, req *routingpb.SetPolicyRequest) (*pbtypes.Empty, error) + SetHomeNetworkPolicyHandler func(ctx context.Context, req *routingpb.SetPolicyRequest) (*emptypb.Empty, error) ListEffectivePoliciesHandler func(ctx context.Context, req *routingpb.ListEffectivePoliciesRequest) (*routingpb.ListEffectivePoliciesResponse, error) ListNetworksWithPolicyHandler func(ctx context.Context, req *routingpb.ListNetworksWithPolicyRequest) (*routingpb.ListNetworksResponse, error) } @@ -67,7 +67,7 @@ func (s *PBControlPlane) GetDefaultPolicy(ctx context.Context, req *routingpb.Ge return s.GetDefaultPolicyHandler(ctx, req) } -func (s *PBControlPlane) SetDefaultPolicy(ctx context.Context, req *routingpb.SetPolicyRequest) (*pbtypes.Empty, error) { +func (s *PBControlPlane) SetDefaultPolicy(ctx context.Context, req *routingpb.SetPolicyRequest) (*emptypb.Empty, error) { if s.SetDefaultPolicyHandler == nil { panic("SetDefaultPolicy called but not set") } @@ -88,7 +88,7 @@ func (s *PBControlPlane) GetHomeNetworkPolicy(ctx context.Context, req *routingp return s.GetHomeNetworkPolicyHandler(ctx, req) } -func (s *PBControlPlane) SetHomeNetworkPolicy(ctx context.Context, req *routingpb.SetPolicyRequest) (*pbtypes.Empty, error) { +func (s *PBControlPlane) SetHomeNetworkPolicy(ctx context.Context, req *routingpb.SetPolicyRequest) (*emptypb.Empty, error) { if s.SetHomeNetworkPolicyHandler == nil { panic("SetHomeNetworkPolicy called but not set") } diff --git a/pkg/packetbrokeragent/mock/pbdataplane.go b/pkg/packetbrokeragent/mock/pbdataplane.go index 4dbf4d382b..4b31ec0edd 100644 --- a/pkg/packetbrokeragent/mock/pbdataplane.go +++ b/pkg/packetbrokeragent/mock/pbdataplane.go @@ -18,12 +18,12 @@ import ( "context" "testing" - pbtypes "github.com/gogo/protobuf/types" routingpb "go.packetbroker.org/api/routing" packetbroker "go.packetbroker.org/api/v3" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/emptypb" ) // PBDataPlane is a mock Packet Broker Data Plane. @@ -98,7 +98,7 @@ func (s *routerForwarderServer) Subscribe(req *routingpb.SubscribeForwarderReque } } -func (s *routerForwarderServer) ReportDownlinkMessageDeliveryState(ctx context.Context, req *routingpb.DownlinkMessageDeliveryStateChangeRequest) (*pbtypes.Empty, error) { +func (s *routerForwarderServer) ReportDownlinkMessageDeliveryState(ctx context.Context, req *routingpb.DownlinkMessageDeliveryStateChangeRequest) (*emptypb.Empty, error) { select { case <-ctx.Done(): return nil, ctx.Err() @@ -147,7 +147,7 @@ func (s *routerHomeNetworkServer) Subscribe(req *routingpb.SubscribeHomeNetworkR } } -func (s *routerHomeNetworkServer) ReportUplinkMessageDeliveryState(ctx context.Context, req *routingpb.UplinkMessageDeliveryStateChangeRequest) (*pbtypes.Empty, error) { +func (s *routerHomeNetworkServer) ReportUplinkMessageDeliveryState(ctx context.Context, req *routingpb.UplinkMessageDeliveryStateChangeRequest) (*emptypb.Empty, error) { select { case <-ctx.Done(): return nil, ctx.Err() diff --git a/pkg/packetbrokeragent/mock/pbiam.go b/pkg/packetbrokeragent/mock/pbiam.go index 78eb21f1cc..9d0218e560 100644 --- a/pkg/packetbrokeragent/mock/pbiam.go +++ b/pkg/packetbrokeragent/mock/pbiam.go @@ -18,11 +18,11 @@ import ( "context" "testing" - pbtypes "github.com/gogo/protobuf/types" iampb "go.packetbroker.org/api/iam" iampbv2 "go.packetbroker.org/api/iam/v2" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/emptypb" ) // PBIAM is a mock Packet Broker IAM. @@ -32,13 +32,13 @@ type PBIAM struct { ListNetworksHandler func(ctx context.Context, req *iampb.ListNetworksRequest) (*iampb.ListNetworksResponse, error) CreateNetworkHandler func(ctx context.Context, req *iampb.CreateNetworkRequest) (*iampb.CreateNetworkResponse, error) GetNetworkHandler func(ctx context.Context, req *iampb.NetworkRequest) (*iampb.GetNetworkResponse, error) - UpdateNetworkHandler func(ctx context.Context, req *iampb.UpdateNetworkRequest) (*pbtypes.Empty, error) - DeleteNetworkHandler func(ctx context.Context, req *iampb.NetworkRequest) (*pbtypes.Empty, error) + UpdateNetworkHandler func(ctx context.Context, req *iampb.UpdateNetworkRequest) (*emptypb.Empty, error) + DeleteNetworkHandler func(ctx context.Context, req *iampb.NetworkRequest) (*emptypb.Empty, error) ListTenantsHandler func(ctx context.Context, req *iampb.ListTenantsRequest) (*iampb.ListTenantsResponse, error) CreateTenantHandler func(ctx context.Context, req *iampb.CreateTenantRequest) (*iampb.CreateTenantResponse, error) GetTenantHandler func(ctx context.Context, req *iampb.TenantRequest) (*iampb.GetTenantResponse, error) - UpdateTenantHandler func(ctx context.Context, req *iampb.UpdateTenantRequest) (*pbtypes.Empty, error) - DeleteTenantHandler func(ctx context.Context, req *iampb.TenantRequest) (*pbtypes.Empty, error) + UpdateTenantHandler func(ctx context.Context, req *iampb.UpdateTenantRequest) (*emptypb.Empty, error) + DeleteTenantHandler func(ctx context.Context, req *iampb.TenantRequest) (*emptypb.Empty, error) } Catalog struct { ListNetworksHandler func(ctx context.Context, req *iampbv2.ListNetworksRequest) (*iampbv2.ListNetworksResponse, error) @@ -91,14 +91,14 @@ func (s *pbIAMRegistry) GetNetwork(ctx context.Context, req *iampb.NetworkReques return s.Registry.GetNetworkHandler(ctx, req) } -func (s *pbIAMRegistry) UpdateNetwork(ctx context.Context, req *iampb.UpdateNetworkRequest) (*pbtypes.Empty, error) { +func (s *pbIAMRegistry) UpdateNetwork(ctx context.Context, req *iampb.UpdateNetworkRequest) (*emptypb.Empty, error) { if s.Registry.UpdateNetworkHandler == nil { panic("UpdateNetwork called but not set") } return s.Registry.UpdateNetworkHandler(ctx, req) } -func (s *pbIAMRegistry) DeleteNetwork(ctx context.Context, req *iampb.NetworkRequest) (*pbtypes.Empty, error) { +func (s *pbIAMRegistry) DeleteNetwork(ctx context.Context, req *iampb.NetworkRequest) (*emptypb.Empty, error) { if s.Registry.DeleteNetworkHandler == nil { panic("DeleteNetwork called but not set") } @@ -126,14 +126,14 @@ func (s *pbIAMRegistry) GetTenant(ctx context.Context, req *iampb.TenantRequest) return s.Registry.GetTenantHandler(ctx, req) } -func (s *pbIAMRegistry) UpdateTenant(ctx context.Context, req *iampb.UpdateTenantRequest) (*pbtypes.Empty, error) { +func (s *pbIAMRegistry) UpdateTenant(ctx context.Context, req *iampb.UpdateTenantRequest) (*emptypb.Empty, error) { if s.Registry.UpdateTenantHandler == nil { panic("UpdateTenant called but not set") } return s.Registry.UpdateTenantHandler(ctx, req) } -func (s *pbIAMRegistry) DeleteTenant(ctx context.Context, req *iampb.TenantRequest) (*pbtypes.Empty, error) { +func (s *pbIAMRegistry) DeleteTenant(ctx context.Context, req *iampb.TenantRequest) (*emptypb.Empty, error) { if s.Registry.DeleteTenantHandler == nil { panic("DeleteTenant called but not set") } diff --git a/pkg/packetbrokeragent/mock/pbmapper.go b/pkg/packetbrokeragent/mock/pbmapper.go index d1ca034897..3e394ce40c 100644 --- a/pkg/packetbrokeragent/mock/pbmapper.go +++ b/pkg/packetbrokeragent/mock/pbmapper.go @@ -18,16 +18,16 @@ import ( "context" "testing" - pbtypes "github.com/gogo/protobuf/types" mappingpb "go.packetbroker.org/api/mapping/v2" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/emptypb" ) // PBMapper is a mock Packet Broker Mapper. type PBMapper struct { *grpc.Server - UpdateGatewayHandler func(ctx context.Context, in *mappingpb.UpdateGatewayRequest, opts ...grpc.CallOption) (*pbtypes.Empty, error) + UpdateGatewayHandler func(ctx context.Context, in *mappingpb.UpdateGatewayRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) } // NewPBMapper instantiates a new mock Packet Broker Data Plane. @@ -50,7 +50,7 @@ type pbMapper struct { *PBMapper } -func (s *pbMapper) UpdateGateway(ctx context.Context, req *mappingpb.UpdateGatewayRequest) (*pbtypes.Empty, error) { +func (s *pbMapper) UpdateGateway(ctx context.Context, req *mappingpb.UpdateGatewayRequest) (*emptypb.Empty, error) { if s.UpdateGatewayHandler == nil { panic("UpdateGateway called but not set") } diff --git a/pkg/qrcodegenerator/grpc_end_devices.go b/pkg/qrcodegenerator/grpc_end_devices.go index 9390af49e2..b8f21219d8 100644 --- a/pkg/qrcodegenerator/grpc_end_devices.go +++ b/pkg/qrcodegenerator/grpc_end_devices.go @@ -17,11 +17,11 @@ package qrcodegenerator import ( "context" - pbtypes "github.com/gogo/protobuf/types" qrcodegen "github.com/skip2/go-qrcode" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/rpcmetadata" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) var errUnauthenticated = errors.DefineUnauthenticated("unauthenticated", "call was not authenticated") @@ -46,7 +46,7 @@ func (s *endDeviceQRCodeGeneratorServer) GetFormat(ctx context.Context, req *ttn } // ListFormats implements EndDeviceQRCodeGenerator. -func (s *endDeviceQRCodeGeneratorServer) ListFormats(ctx context.Context, _ *pbtypes.Empty) (*ttnpb.QRCodeFormats, error) { +func (s *endDeviceQRCodeGeneratorServer) ListFormats(ctx context.Context, _ *emptypb.Empty) (*ttnpb.QRCodeFormats, error) { _, err := rpcmetadata.WithForwardedAuth(ctx, s.QRG.AllowInsecureForCredentials()) if err != nil { return nil, err diff --git a/pkg/rpcmiddleware/validator/validator.go b/pkg/rpcmiddleware/validator/validator.go index 209773d60b..91c1be7490 100644 --- a/pkg/rpcmiddleware/validator/validator.go +++ b/pkg/rpcmiddleware/validator/validator.go @@ -30,6 +30,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -173,7 +174,7 @@ func validateMessage(ctx context.Context, fullMethod string, msg interface{}) er } return nil - case *types.Empty: + case *emptypb.Empty: return nil default: diff --git a/pkg/rpcserver/rpcserver_test.go b/pkg/rpcserver/rpcserver_test.go index 25d2fc8f22..d545eca26d 100644 --- a/pkg/rpcserver/rpcserver_test.go +++ b/pkg/rpcserver/rpcserver_test.go @@ -20,7 +20,6 @@ import ( "testing" "time" - "github.com/gogo/protobuf/types" grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware" grpc_ctxtags "github.com/grpc-ecosystem/go-grpc-middleware/tags" "github.com/smartystreets/assertions" @@ -32,6 +31,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/emptypb" ) var ( @@ -169,7 +169,7 @@ func (s *mockServer) Subscribe(ids *ttnpb.ApplicationIdentifiers, srv ttnpb.AppA return nil } -func (s *mockServer) DownlinkQueuePush(ctx context.Context, req *ttnpb.DownlinkQueueRequest) (*types.Empty, error) { +func (s *mockServer) DownlinkQueuePush(ctx context.Context, req *ttnpb.DownlinkQueueRequest) (*emptypb.Empty, error) { s.pushCtx, s.pushReq = ctx, req - return &types.Empty{}, nil + return ttnpb.Empty, nil } diff --git a/pkg/ttnpb/rpcs.go b/pkg/ttnpb/rpcs.go index 16e2898acc..5d49d7b248 100644 --- a/pkg/ttnpb/rpcs.go +++ b/pkg/ttnpb/rpcs.go @@ -14,7 +14,7 @@ package ttnpb -import "github.com/gogo/protobuf/types" +import emptypb "google.golang.org/protobuf/types/known/emptypb" // Empty message in an RPC call. -var Empty = new(types.Empty) +var Empty = new(emptypb.Empty) diff --git a/pkg/util/rpctest/server_test.go b/pkg/util/rpctest/server_test.go index a939834bde..ac1e652a48 100644 --- a/pkg/util/rpctest/server_test.go +++ b/pkg/util/rpctest/server_test.go @@ -20,7 +20,6 @@ import ( "testing" "time" - "github.com/golang/protobuf/ptypes/empty" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/errorcontext" "go.thethings.network/lorawan-stack/v3/pkg/util/rpctest" @@ -29,6 +28,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "google.golang.org/protobuf/types/known/emptypb" ) func TestFooBarExampleServer(t *testing.T) { @@ -90,7 +90,7 @@ func TestFooBarExampleServer(t *testing.T) { err = stream.Send(&rpctest.Foo{Message: "foo"}) a.So(err, should.BeNil) time.Sleep(150 * time.Millisecond) - err = stream.RecvMsg(&empty.Empty{}) + err = stream.RecvMsg(&emptypb.Empty{}) a.So(status.Code(err), should.Equal, codes.Unknown) } }) diff --git a/pkg/util/test/application_services.go b/pkg/util/test/application_services.go index 16c74207a0..2d64fec894 100644 --- a/pkg/util/test/application_services.go +++ b/pkg/util/test/application_services.go @@ -17,8 +17,8 @@ package test import ( "context" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/emptypb" ) // MockApplicationAccessServer is a mock ttnpb.ApplicationAccessServer used for testing. @@ -31,7 +31,7 @@ type MockApplicationAccessServer struct { ListCollaboratorsFunc func(context.Context, *ttnpb.ListApplicationCollaboratorsRequest) (*ttnpb.Collaborators, error) ListRightsFunc func(context.Context, *ttnpb.ApplicationIdentifiers) (*ttnpb.Rights, error) GetCollaboratorFunc func(context.Context, *ttnpb.GetApplicationCollaboratorRequest) (*ttnpb.GetCollaboratorResponse, error) - SetCollaboratorFunc func(context.Context, *ttnpb.SetApplicationCollaboratorRequest) (*pbtypes.Empty, error) + SetCollaboratorFunc func(context.Context, *ttnpb.SetApplicationCollaboratorRequest) (*emptypb.Empty, error) UpdateAPIKeyFunc func(context.Context, *ttnpb.UpdateApplicationAPIKeyRequest) (*ttnpb.APIKey, error) } @@ -84,7 +84,7 @@ func (m MockApplicationAccessServer) GetCollaborator(ctx context.Context, req *t } // SetCollaborator calls SetCollaboratorFunc if set and panics otherwise. -func (m MockApplicationAccessServer) SetCollaborator(ctx context.Context, req *ttnpb.SetApplicationCollaboratorRequest) (*pbtypes.Empty, error) { +func (m MockApplicationAccessServer) SetCollaborator(ctx context.Context, req *ttnpb.SetApplicationCollaboratorRequest) (*emptypb.Empty, error) { if m.SetCollaboratorFunc == nil { panic("SetCollaborator called, but not set") } From a38d85faeefda8ee54906306978c4a196d915d4c Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Thu, 29 Sep 2022 13:24:56 +0200 Subject: [PATCH 12/30] all: Use new FieldMask type --- cmd/ttn-lw-cli/commands/gateways.go | 5 +---- pkg/applicationserver/grpc.go | 4 ++-- pkg/applicationserver/io/web/templates.go | 4 ++-- pkg/devicerepository/store/interface.go | 4 ++-- pkg/gogoproto/fields.go | 4 ++-- pkg/identityserver/utils.go | 4 ++-- pkg/rpcmiddleware/validator/validator.go | 8 ++++---- pkg/rpcmiddleware/validator/validator_test.go | 6 +++--- pkg/ttnpb/fieldmask_utils.go | 6 +++--- 9 files changed, 21 insertions(+), 24 deletions(-) diff --git a/cmd/ttn-lw-cli/commands/gateways.go b/cmd/ttn-lw-cli/commands/gateways.go index 95db395591..9e7ddc70bc 100644 --- a/cmd/ttn-lw-cli/commands/gateways.go +++ b/cmd/ttn-lw-cli/commands/gateways.go @@ -20,7 +20,6 @@ import ( "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" "github.com/gogo/protobuf/proto" - "github.com/gogo/protobuf/types" "github.com/spf13/cobra" "github.com/spf13/pflag" "go.thethings.network/lorawan-stack/v3/cmd/internal/io" @@ -489,9 +488,7 @@ If both the parameter and the flag are provided, the flag is ignored.`, res, err := ttnpb.NewGsClient(gs).BatchGetGatewayConnectionStats(ctx, &ttnpb.BatchGetGatewayConnectionStatsRequest{ GatewayIds: gtwIDs, - FieldMask: &types.FieldMask{ - Paths: paths, - }, + FieldMask: ttnpb.FieldMask(paths...), }) if err != nil { return err diff --git a/pkg/applicationserver/grpc.go b/pkg/applicationserver/grpc.go index 8fd666222a..2f2ffcb6c4 100644 --- a/pkg/applicationserver/grpc.go +++ b/pkg/applicationserver/grpc.go @@ -19,16 +19,16 @@ import ( "fmt" "time" - pbtypes "github.com/gogo/protobuf/types" clusterauth "go.thethings.network/lorawan-stack/v3/pkg/auth/cluster" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/rpcmiddleware/warning" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/protobuf/types/known/emptypb" + "google.golang.org/protobuf/types/known/fieldmaskpb" ) -func removeDeprecatedPaths(ctx context.Context, fieldMask *pbtypes.FieldMask) *pbtypes.FieldMask { +func removeDeprecatedPaths(ctx context.Context, fieldMask *fieldmaskpb.FieldMask) *fieldmaskpb.FieldMask { validPaths := make([]string, 0, len(fieldMask.GetPaths())) nextPath: for _, path := range fieldMask.GetPaths() { diff --git a/pkg/applicationserver/io/web/templates.go b/pkg/applicationserver/io/web/templates.go index bb63c0e857..badd24d261 100644 --- a/pkg/applicationserver/io/web/templates.go +++ b/pkg/applicationserver/io/web/templates.go @@ -21,10 +21,10 @@ import ( "sync" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/fetch" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/fieldmaskpb" "gopkg.in/yaml.v2" ) @@ -269,7 +269,7 @@ func (t webhookTemplate) pbFields() []*ttnpb.ApplicationWebhookTemplateField { return fields } -func (t webhookTemplate) pbFieldMask() *pbtypes.FieldMask { +func (t webhookTemplate) pbFieldMask() *fieldmaskpb.FieldMask { return ttnpb.FieldMask(t.FieldMask...) } diff --git a/pkg/devicerepository/store/interface.go b/pkg/devicerepository/store/interface.go index 28e4edf1b1..1ce8dc32c8 100644 --- a/pkg/devicerepository/store/interface.go +++ b/pkg/devicerepository/store/interface.go @@ -15,8 +15,8 @@ package store import ( - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/fieldmaskpb" ) // GetBrandsRequest is a request to list available end device vendors, with pagination and sorting. @@ -78,7 +78,7 @@ type GetModelsResponse struct { // GetCodecRequest is a request to retrieve the codec of type GetCodecRequest interface { GetVersionIds() *ttnpb.EndDeviceVersionIdentifiers - GetFieldMask() *pbtypes.FieldMask + GetFieldMask() *fieldmaskpb.FieldMask } // Store contains end device definitions. diff --git a/pkg/gogoproto/fields.go b/pkg/gogoproto/fields.go index e5a2b55b6c..498fc0419f 100644 --- a/pkg/gogoproto/fields.go +++ b/pkg/gogoproto/fields.go @@ -20,7 +20,7 @@ import ( "regexp" "strings" - pbtypes "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/fieldmaskpb" ) var nameTagRegex *regexp.Regexp @@ -32,7 +32,7 @@ func init() { // GoFieldsPaths converts protobuf FieldMask paths to Go fields paths. // // This implementation does not support separation by ",", but only paths separated by ".". -func GoFieldsPaths(pb *pbtypes.FieldMask, v interface{}) []string { +func GoFieldsPaths(pb *fieldmaskpb.FieldMask, v interface{}) []string { var newFields []string if len(pb.GetPaths()) == 0 { return newFields diff --git a/pkg/identityserver/utils.go b/pkg/identityserver/utils.go index 2f4f9c8a6a..fcb82f2612 100644 --- a/pkg/identityserver/utils.go +++ b/pkg/identityserver/utils.go @@ -18,13 +18,13 @@ import ( "context" "strconv" - pbtypes "github.com/gogo/protobuf/types" "github.com/golang/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/validate" "google.golang.org/grpc" "google.golang.org/grpc/metadata" + "google.golang.org/protobuf/types/known/fieldmaskpb" ) var ( @@ -32,7 +32,7 @@ var ( updatePaths = []string{"updated_at"} ) -func cleanFieldMaskPaths(allowedPaths []string, requestedPaths *pbtypes.FieldMask, addPaths, removePaths []string) *pbtypes.FieldMask { +func cleanFieldMaskPaths(allowedPaths []string, requestedPaths *fieldmaskpb.FieldMask, addPaths, removePaths []string) *fieldmaskpb.FieldMask { selected := make(map[string]struct{}) for _, path := range addPaths { selected[path] = struct{}{} diff --git a/pkg/rpcmiddleware/validator/validator.go b/pkg/rpcmiddleware/validator/validator.go index 91c1be7490..80a412a3b8 100644 --- a/pkg/rpcmiddleware/validator/validator.go +++ b/pkg/rpcmiddleware/validator/validator.go @@ -25,12 +25,12 @@ import ( "sort" "strings" - "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/errors" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/emptypb" + "google.golang.org/protobuf/types/known/fieldmaskpb" ) var ( @@ -101,7 +101,7 @@ func validateMessage(ctx context.Context, fullMethod string, msg interface{}) er var paths []string switch v := msg.(type) { case interface { - GetFieldMask() *types.FieldMask + GetFieldMask() *fieldmaskpb.FieldMask }: paths = v.GetFieldMask().GetPaths() } @@ -195,7 +195,7 @@ func validateMessage(ctx context.Context, fullMethod string, msg interface{}) er // if that error is a TTN error, or with an `InvalidArgument` if it isn't. // // If the RPC's FullPath has a registered list of allowed field mask paths (see -// RegisterAllowedFieldMaskPaths) and the message implements GetFieldMask() types.FieldMask +// RegisterAllowedFieldMaskPaths) and the message implements GetFieldMask() fieldmaskpb.FieldMask // then the field mask paths are validated according to the registered list. func UnaryServerInterceptor() grpc.UnaryServerInterceptor { return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) { @@ -239,7 +239,7 @@ func (s *recvWrapper) RecvMsg(msg interface{}) error { // RPCs, the messages will be rejected on calls to `stream.Recv()`. // // If the RPC's FullPath has a registered list of allowed field mask paths (see -// RegisterAllowedFieldMaskPaths) and the message implements GetFieldMask() types.FieldMask +// RegisterAllowedFieldMaskPaths) and the message implements GetFieldMask() fieldmaskpb.FieldMask // then the field mask paths are validated according to the registered list. func StreamServerInterceptor() grpc.StreamServerInterceptor { return func(srv interface{}, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error { diff --git a/pkg/rpcmiddleware/validator/validator_test.go b/pkg/rpcmiddleware/validator/validator_test.go index c90f96a262..cf083a790f 100644 --- a/pkg/rpcmiddleware/validator/validator_test.go +++ b/pkg/rpcmiddleware/validator/validator_test.go @@ -19,7 +19,6 @@ import ( "fmt" "testing" - "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/errors" . "go.thethings.network/lorawan-stack/v3/pkg/rpcmiddleware/validator" @@ -27,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/fieldmaskpb" ) type testSubject struct { @@ -63,12 +63,12 @@ func (m *msgWithValidateContext) ValidateContext(ctx context.Context) error { type msgWithFieldMask struct { testSubject - fieldMask *types.FieldMask + fieldMask *fieldmaskpb.FieldMask fieldIsZero map[string]bool } -func (m *msgWithFieldMask) GetFieldMask() *types.FieldMask { return m.fieldMask } +func (m *msgWithFieldMask) GetFieldMask() *fieldmaskpb.FieldMask { return m.fieldMask } func (m *msgWithFieldMask) ValidateFields(...string) error { return nil } diff --git a/pkg/ttnpb/fieldmask_utils.go b/pkg/ttnpb/fieldmask_utils.go index 7357e71963..67f3413ae9 100644 --- a/pkg/ttnpb/fieldmask_utils.go +++ b/pkg/ttnpb/fieldmask_utils.go @@ -17,13 +17,13 @@ package ttnpb import ( "strings" - "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/errors" + "google.golang.org/protobuf/types/known/fieldmaskpb" ) // FieldMask returns a FieldMask with the given paths. -func FieldMask(paths ...string) *types.FieldMask { - return &types.FieldMask{Paths: paths} +func FieldMask(paths ...string) *fieldmaskpb.FieldMask { + return &fieldmaskpb.FieldMask{Paths: paths} } // TopLevelFields returns the unique top level fields of the given paths. From 7dd6c93988cfc18ce8bb7b5a1d92dd42fa5171cd Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Thu, 29 Sep 2022 13:23:13 +0200 Subject: [PATCH 13/30] all: Use new Timestamp type --- cmd/ttn-lw-cli/commands/simulate.go | 3 +- .../commands/storage_integration_util.go | 11 ++--- .../internal/simulate/simulate_util.go | 8 ++-- .../commands/is_db_create_admin_user.go | 5 ++- pkg/account/server_test.go | 3 +- pkg/applicationserver/applicationserver.go | 10 ++--- .../applicationserver_test.go | 31 ++++++------- pkg/applicationserver/grpc.go | 3 +- pkg/applicationserver/io/grpc/grpc.go | 4 +- .../io/packages/loradms/v1/package.go | 9 ++-- .../io/packages/loragls/v3/package.go | 5 ++- .../io/packages/redis/registry.go | 5 ++- .../io/pubsub/redis/registry.go | 3 +- pkg/applicationserver/io/web/health_sink.go | 3 +- .../io/web/health_sink_test.go | 11 ++--- .../io/web/redis/registry.go | 3 +- pkg/applicationserver/lastseen/lastseen.go | 10 ++--- pkg/applicationserver/redis/registry.go | 3 +- pkg/email/templates/templates_test.go | 3 +- pkg/encoding/lorawan/mac.go | 3 +- pkg/encoding/lorawan/mac_test.go | 3 +- pkg/events/builder.go | 4 +- pkg/events/events.go | 3 +- pkg/events/grpc/grpc.go | 5 ++- pkg/gatewayserver/gatewayserver.go | 7 +-- pkg/gatewayserver/gatewayserver_test.go | 12 +++--- pkg/gatewayserver/io/grpc/grpc.go | 3 +- pkg/gatewayserver/io/grpc/grpc_test.go | 7 +-- pkg/gatewayserver/io/io.go | 14 +++--- pkg/gatewayserver/io/io_test.go | 7 +-- pkg/gatewayserver/io/mock/frontend.go | 5 ++- .../io/mqtt/format_protobufv2.go | 7 +-- .../io/mqtt/format_protobufv2_test.go | 19 ++++---- pkg/gatewayserver/io/mqtt/mqtt.go | 3 +- pkg/gatewayserver/io/mqtt/mqtt_test.go | 3 +- pkg/gatewayserver/io/udp/udp.go | 3 +- pkg/gatewayserver/io/uplink_token.go | 4 +- pkg/gatewayserver/io/ws/lbslns/downstream.go | 3 +- .../io/ws/lbslns/downstream_test.go | 5 ++- pkg/gatewayserver/io/ws/lbslns/upstream.go | 5 ++- .../io/ws/lbslns/upstream_test.go | 17 ++++---- pkg/gatewayserver/io/ws/lbslns/version.go | 3 +- pkg/gatewayserver/io/ws/ws_test.go | 15 ++++--- pkg/gatewayserver/redis/registry_test.go | 15 ++++--- .../scheduling/scheduler_test.go | 13 +++--- pkg/identityserver/bunstore/api_key_store.go | 5 ++- .../bunstore/application_store.go | 5 ++- pkg/identityserver/bunstore/client_store.go | 5 ++- .../bunstore/contact_info_store.go | 3 +- .../bunstore/end_device_store.go | 5 ++- pkg/identityserver/bunstore/gateway_store.go | 5 ++- .../bunstore/invitation_store.go | 5 ++- .../bunstore/login_token_store.go | 5 ++- .../bunstore/notification_store.go | 5 ++- pkg/identityserver/bunstore/oauth_store.go | 9 ++-- .../bunstore/organization_store.go | 5 ++- .../bunstore/user_session_store.go | 5 ++- pkg/identityserver/bunstore/user_store.go | 7 +-- pkg/identityserver/contact_info_registry.go | 7 +-- pkg/identityserver/entity_access_test.go | 3 +- pkg/identityserver/invitation_registry.go | 3 +- pkg/identityserver/storetest/api_key_store.go | 3 +- .../storetest/contact_info_store.go | 11 ++--- .../storetest/end_device_store.go | 41 +++++++++--------- pkg/identityserver/storetest/gateway_store.go | 7 +-- .../storetest/invitation_store.go | 7 +-- .../storetest/login_token_store.go | 5 ++- pkg/identityserver/storetest/oauth_store.go | 5 ++- pkg/identityserver/storetest/population.go | 3 +- .../storetest/user_session_store.go | 3 +- pkg/identityserver/storetest/user_store.go | 17 ++++---- pkg/identityserver/user_access.go | 3 +- pkg/identityserver/user_registry.go | 11 ++--- pkg/interop/client_test.go | 2 +- pkg/joinserver/joinserver.go | 4 +- pkg/joinserver/redis/registry.go | 3 +- pkg/networkserver/downlink.go | 9 ++-- pkg/networkserver/downlink_internal_test.go | 7 +-- pkg/networkserver/downlink_test.go | 27 ++++++------ pkg/networkserver/grpc_asns_test.go | 5 ++- pkg/networkserver/grpc_deviceregistry.go | 5 ++- pkg/networkserver/grpc_deviceregistry_test.go | 15 ++++--- pkg/networkserver/grpc_gsns.go | 3 +- pkg/networkserver/internal/test/test.go | 3 +- pkg/networkserver/mac/dev_status.go | 3 +- pkg/networkserver/mac/dev_status_test.go | 21 ++++----- pkg/networkserver/mac/device_time.go | 7 ++- pkg/networkserver/mac/device_time_test.go | 43 ++++++++++--------- pkg/networkserver/redis/registry.go | 3 +- pkg/networkserver/utils_internal_test.go | 11 ++--- pkg/oauth/server_test.go | 15 ++++--- pkg/oauth/storage.go | 9 ++-- pkg/packetbrokeragent/agent_test.go | 13 +++--- pkg/packetbrokeragent/grpc_pba.go | 13 ++---- pkg/packetbrokeragent/grpc_pba_test.go | 15 ++++--- pkg/packetbrokeragent/translation.go | 16 +++---- pkg/ttnpb/stdtime.go | 22 +++------- pkg/ttnpb/udp/translation.go | 11 ++--- pkg/ttnpb/udp/translation_test.go | 7 +-- pkg/util/test/constructors_generated.go | 18 ++++---- 100 files changed, 444 insertions(+), 385 deletions(-) diff --git a/cmd/ttn-lw-cli/commands/simulate.go b/cmd/ttn-lw-cli/commands/simulate.go index 0dbd82d0de..6c6aa74711 100644 --- a/cmd/ttn-lw-cli/commands/simulate.go +++ b/cmd/ttn-lw-cli/commands/simulate.go @@ -35,6 +35,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/specification/macspec" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -666,7 +667,7 @@ var ( return err } if uplinkMessage.ReceivedAt == nil { - uplinkMessage.ReceivedAt = ttnpb.ProtoTimePtr(time.Now()) + uplinkMessage.ReceivedAt = timestamppb.Now() } _, err = ttnpb.NewAppAsClient(cc).SimulateUplink(ctx, up) return err diff --git a/cmd/ttn-lw-cli/commands/storage_integration_util.go b/cmd/ttn-lw-cli/commands/storage_integration_util.go index 31a9465149..d611e2bf06 100644 --- a/cmd/ttn-lw-cli/commands/storage_integration_util.go +++ b/cmd/ttn-lw-cli/commands/storage_integration_util.go @@ -23,6 +23,7 @@ import ( "github.com/spf13/pflag" "go.thethings.network/lorawan-stack/v3/cmd/ttn-lw-cli/internal/util" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -127,7 +128,7 @@ func countStoredUpRequest(flags *pflag.FlagSet) (*ttnpb.GetStoredApplicationUpCo return req, nil } -func timeRangeFromFlags(flags *pflag.FlagSet) (beforePB *pbtypes.Timestamp, afterPB *pbtypes.Timestamp, lastPB *pbtypes.Duration, err error) { +func timeRangeFromFlags(flags *pflag.FlagSet) (beforePB *timestamppb.Timestamp, afterPB *timestamppb.Timestamp, lastPB *pbtypes.Duration, err error) { if flags.Changed("last") && (hasTimestampFlags(flags, "after") || hasTimestampFlags(flags, "before")) { return nil, nil, nil, fmt.Errorf("--last cannot be used with --after or --before flags") } @@ -136,18 +137,14 @@ func timeRangeFromFlags(flags *pflag.FlagSet) (beforePB *pbtypes.Timestamp, afte return nil, nil, nil, err } if after != nil { - if afterPB, err = pbtypes.TimestampProto(*after); err != nil { - return nil, nil, nil, err - } + afterPB = timestamppb.New(*after) } before, err := getTimestampFlags(flags, "before") if err != nil { return nil, nil, nil, err } if before != nil { - if beforePB, err = pbtypes.TimestampProto(*before); err != nil { - return nil, nil, nil, err - } + beforePB = timestamppb.New(*before) } if flags.Changed("last") { diff --git a/cmd/ttn-lw-cli/internal/simulate/simulate_util.go b/cmd/ttn-lw-cli/internal/simulate/simulate_util.go index 97dec6bc4b..a2aa350eb1 100644 --- a/cmd/ttn-lw-cli/internal/simulate/simulate_util.go +++ b/cmd/ttn-lw-cli/internal/simulate/simulate_util.go @@ -17,12 +17,11 @@ package simulate import ( "strings" - "time" - "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/band" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/timestamppb" ) func _processPaths(paths []string) map[string][]string { @@ -61,11 +60,10 @@ var ( //nolint:gocyclo func (m *SimulateMetadataParams) SetDefaults() error { if m.Time == nil || (m.Time.Nanos == 0 && m.Time.Seconds == 0) { - now := time.Now() - m.Time = ttnpb.ProtoTime(&now) + m.Time = timestamppb.Now() } - timestamp, _ := types.TimestampFromProto(m.Time) + timestamp := m.Time.AsTime() if m.Timestamp == 0 { m.Timestamp = uint32(timestamp.UnixNano() / 1000) } diff --git a/cmd/ttn-lw-stack/commands/is_db_create_admin_user.go b/cmd/ttn-lw-stack/commands/is_db_create_admin_user.go index 5a7f314408..a962b2d36d 100644 --- a/cmd/ttn-lw-stack/commands/is_db_create_admin_user.go +++ b/cmd/ttn-lw-stack/commands/is_db_create_admin_user.go @@ -28,6 +28,7 @@ import ( bunstore "go.thethings.network/lorawan-stack/v3/pkg/identityserver/bunstore" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/timestamppb" ) var errPasswordMismatch = errors.DefineInvalidArgument("password_mismatch", "password did not match") @@ -107,9 +108,9 @@ var createAdminUserCommand = &cobra.Command{ usrExists = true } usr.PrimaryEmailAddress = email - usr.PrimaryEmailAddressValidatedAt = ttnpb.ProtoTimePtr(now) + usr.PrimaryEmailAddressValidatedAt = timestamppb.New(now) usr.Password = hashedPassword - usr.PasswordUpdatedAt = ttnpb.ProtoTimePtr(now) + usr.PasswordUpdatedAt = timestamppb.New(now) usr.State = ttnpb.State_STATE_APPROVED usr.Admin = true diff --git a/pkg/account/server_test.go b/pkg/account/server_test.go index bdc611ff8a..8797795f4c 100644 --- a/pkg/account/server_test.go +++ b/pkg/account/server_test.go @@ -40,6 +40,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "go.thethings.network/lorawan-stack/v3/pkg/webui" "golang.org/x/net/publicsuffix" + "google.golang.org/protobuf/types/known/timestamppb" ) type loginFormData struct { @@ -63,7 +64,7 @@ var ( mockSession = &ttnpb.UserSession{ UserIds: &ttnpb.UserIdentifiers{UserId: "user"}, SessionId: "session_id", - CreatedAt: ttnpb.ProtoTimePtr(now), + CreatedAt: timestamppb.New(now), } mockUser = &ttnpb.User{ Ids: &ttnpb.UserIdentifiers{UserId: "user"}, diff --git a/pkg/applicationserver/applicationserver.go b/pkg/applicationserver/applicationserver.go index 279852858f..1102e2aa4b 100644 --- a/pkg/applicationserver/applicationserver.go +++ b/pkg/applicationserver/applicationserver.go @@ -22,7 +22,6 @@ import ( "runtime/trace" "time" - pbtypes "github.com/gogo/protobuf/types" "github.com/grpc-ecosystem/grpc-gateway/runtime" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/distribution" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io" @@ -55,6 +54,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/workerpool" "google.golang.org/grpc" "google.golang.org/protobuf/types/known/emptypb" + "google.golang.org/protobuf/types/known/timestamppb" ) // ApplicationServer implements the Application Server component. @@ -359,7 +359,7 @@ func (as *ApplicationServer) processUpAsync(ctx context.Context, up *ttnpb.Appli // lastSeenAtInfo holds the information needed for a worker to store entry in the LastSeen map. type lastSeenAtInfo struct { ids *ttnpb.EndDeviceIdentifiers - lastSeenAt *pbtypes.Timestamp + lastSeenAt *timestamppb.Timestamp } func (as *ApplicationServer) storeDeviceLastSeen(ctx context.Context, lastSeenEntry lastSeenAtInfo) { @@ -1033,7 +1033,7 @@ func (as *ApplicationServer) setActivated(ctx context.Context, ids *ttnpb.EndDev _, err = ttnpb.NewEndDeviceRegistryClient(cc).Update(ctx, &ttnpb.UpdateEndDeviceRequest{ EndDevice: &ttnpb.EndDevice{ Ids: ids, - ActivatedAt: ttnpb.ProtoTimePtr(now), + ActivatedAt: timestamppb.New(now), }, FieldMask: ttnpb.FieldMask(mask...), }, as.WithClusterAuth()) @@ -1046,7 +1046,7 @@ func (as *ApplicationServer) setActivated(ctx context.Context, ids *ttnpb.EndDev if dev == nil { return nil, nil, errDeviceNotFound.WithAttributes("device_uid", unique.ID(ctx, ids)) } - dev.ActivatedAt = ttnpb.ProtoTimePtr(now) + dev.ActivatedAt = timestamppb.New(now) return dev, mask, nil }, ); err != nil { @@ -1089,7 +1089,7 @@ func (as *ApplicationServer) publishNormalizedUplink(ctx context.Context, info u type uplinkInfo struct { ids *ttnpb.EndDeviceIdentifiers - receivedAt *pbtypes.Timestamp + receivedAt *timestamppb.Timestamp uplink *ttnpb.ApplicationUplink simulated bool link *ttnpb.ApplicationLink diff --git a/pkg/applicationserver/applicationserver_test.go b/pkg/applicationserver/applicationserver_test.go index 46dc0b972c..b442bf9a2e 100644 --- a/pkg/applicationserver/applicationserver_test.go +++ b/pkg/applicationserver/applicationserver_test.go @@ -58,6 +58,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" "google.golang.org/protobuf/types/known/structpb" + "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -950,7 +951,7 @@ func TestApplicationServer(t *testing.T) { Up: &ttnpb.ApplicationUp_JoinAccept{ JoinAccept: &ttnpb.ApplicationJoinAccept{ SessionKeyId: []byte{0x11}, - ReceivedAt: ttnpb.ProtoTimePtr(now), + ReceivedAt: timestamppb.New(now), }, }, }, @@ -998,7 +999,7 @@ func TestApplicationServer(t *testing.T) { EncryptedKey: []byte{0x39, 0x11, 0x40, 0x98, 0xa1, 0x5d, 0x6f, 0x92, 0xd7, 0xf0, 0x13, 0x21, 0x5b, 0x5b, 0x41, 0xa8, 0x98, 0x2d, 0xac, 0x59, 0x34, 0x76, 0x36, 0x18}, KekLabel: "test", }, - ReceivedAt: ttnpb.ProtoTimePtr(now), + ReceivedAt: timestamppb.New(now), }, }, }, @@ -1046,7 +1047,7 @@ func TestApplicationServer(t *testing.T) { FPort: 22, FCnt: 22, FrmPayload: []byte{0x01}, - ReceivedAt: ttnpb.ProtoTimePtr(now), + ReceivedAt: timestamppb.New(now), }, }, }, @@ -1121,7 +1122,7 @@ func TestApplicationServer(t *testing.T) { FrmPayload: []byte{0xb, 0x8f, 0x94, 0xe6}, }, }, - ReceivedAt: ttnpb.ProtoTimePtr(now), + ReceivedAt: timestamppb.New(now), }, }, }, @@ -1210,7 +1211,7 @@ func TestApplicationServer(t *testing.T) { FPort: 42, FCnt: 42, FrmPayload: []byte{0xca, 0xa9, 0x42}, - ReceivedAt: ttnpb.ProtoTimePtr(now), + ReceivedAt: timestamppb.New(now), }, }, }, @@ -1516,7 +1517,7 @@ func TestApplicationServer(t *testing.T) { FrmPayload: []byte{0x2f, 0x3f, 0x31, 0x2c}, }, }, - ReceivedAt: ttnpb.ProtoTimePtr(now), + ReceivedAt: timestamppb.New(now), }, }, }, @@ -1606,7 +1607,7 @@ func TestApplicationServer(t *testing.T) { FPort: 24, FCnt: 24, FrmPayload: []byte{0x14, 0x4e, 0x3c}, - ReceivedAt: ttnpb.ProtoTimePtr(now), + ReceivedAt: timestamppb.New(now), }, }, }, @@ -1853,7 +1854,7 @@ func TestApplicationServer(t *testing.T) { FPort: 42, FCnt: 42, FrmPayload: []byte{0xd1, 0x43, 0x6a}, - ReceivedAt: ttnpb.ProtoTimePtr(now), + ReceivedAt: timestamppb.New(now), }, }, }, @@ -1916,7 +1917,7 @@ func TestApplicationServer(t *testing.T) { FPort: 42, FCnt: 42, FrmPayload: []byte{0xd1, 0x43, 0x6a}, - ReceivedAt: ttnpb.ProtoTimePtr(now), + ReceivedAt: timestamppb.New(now), }, }, }, @@ -1980,7 +1981,7 @@ func TestApplicationServer(t *testing.T) { EncryptedKey: []byte{0x56, 0x15, 0xaa, 0x22, 0xb7, 0x5f, 0xc, 0x24, 0x79, 0x6, 0x84, 0x68, 0x89, 0x0, 0xa6, 0x16, 0x4a, 0x9c, 0xef, 0xdb, 0xbf, 0x61, 0x6f, 0x0}, KekLabel: "test", }, - ReceivedAt: ttnpb.ProtoTimePtr(now), + ReceivedAt: timestamppb.New(now), }, }, }, @@ -1999,7 +2000,7 @@ func TestApplicationServer(t *testing.T) { FPort: 11, FCnt: 11, FrmPayload: []byte{0xaa, 0x64, 0xb7, 0x7}, - ReceivedAt: ttnpb.ProtoTimePtr(now), + ReceivedAt: timestamppb.New(now), }, }, }, @@ -2513,7 +2514,7 @@ func TestSkipPayloadCrypto(t *testing.T) { EncryptedKey: []byte{0x39, 0x11, 0x40, 0x98, 0xa1, 0x5d, 0x6f, 0x92, 0xd7, 0xf0, 0x13, 0x21, 0x5b, 0x5b, 0x41, 0xa8, 0x98, 0x2d, 0xac, 0x59, 0x34, 0x76, 0x36, 0x18}, KekLabel: kekLabel, }, - ReceivedAt: ttnpb.ProtoTimePtr(now), + ReceivedAt: timestamppb.New(now), }, }, }, @@ -2579,7 +2580,7 @@ func TestSkipPayloadCrypto(t *testing.T) { FPort: 22, FCnt: 22, FrmPayload: []byte{0x01}, - ReceivedAt: ttnpb.ProtoTimePtr(now), + ReceivedAt: timestamppb.New(now), }, }, }, @@ -2930,7 +2931,7 @@ func TestLocationFromPayload(t *testing.T) { FPort: 11, FCnt: 11, FrmPayload: []byte{0x11}, - ReceivedAt: ttnpb.ProtoTimePtr(now), + ReceivedAt: timestamppb.New(now), }, }, }) @@ -3121,7 +3122,7 @@ func TestUplinkNormalized(t *testing.T) { FPort: 11, FCnt: 11, FrmPayload: []byte{0x11}, - ReceivedAt: ttnpb.ProtoTimePtr(now), + ReceivedAt: timestamppb.New(now), }, }, }) diff --git a/pkg/applicationserver/grpc.go b/pkg/applicationserver/grpc.go index 2f2ffcb6c4..60b07e18e0 100644 --- a/pkg/applicationserver/grpc.go +++ b/pkg/applicationserver/grpc.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/fieldmaskpb" + "google.golang.org/protobuf/types/known/timestamppb" ) func removeDeprecatedPaths(ctx context.Context, fieldMask *fieldmaskpb.FieldMask) *fieldmaskpb.FieldMask { @@ -139,7 +140,7 @@ func (as *ApplicationServer) HandleUplink(ctx context.Context, req *ttnpb.NsAsHa return nil, err } for _, up := range req.ApplicationUps { - up.ReceivedAt = ttnpb.ProtoTimePtr(now) + up.ReceivedAt = timestamppb.New(now) if err := as.processUp(ctx, up, link); err != nil { return nil, err } diff --git a/pkg/applicationserver/io/grpc/grpc.go b/pkg/applicationserver/io/grpc/grpc.go index 8435ef4f87..82dde90785 100644 --- a/pkg/applicationserver/io/grpc/grpc.go +++ b/pkg/applicationserver/io/grpc/grpc.go @@ -16,7 +16,6 @@ package grpc import ( "context" - "time" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" @@ -28,6 +27,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/unique" "google.golang.org/grpc/peer" "google.golang.org/protobuf/types/known/emptypb" + "google.golang.org/protobuf/types/known/timestamppb" ) // Option represents an option for the gRPC frontend. @@ -223,7 +223,7 @@ func (s *impl) SimulateUplink(ctx context.Context, up *ttnpb.ApplicationUp) (*em return nil, errPayloadCryptoSkipped.New() } if up.ReceivedAt == nil { - up.ReceivedAt = ttnpb.ProtoTimePtr(time.Now()) + up.ReceivedAt = timestamppb.Now() } up.Simulated = true ids, err := s.getIdentifiers(ctx, up.EndDeviceIds) diff --git a/pkg/applicationserver/io/packages/loradms/v1/package.go b/pkg/applicationserver/io/packages/loradms/v1/package.go index 9804d67114..02b542c960 100644 --- a/pkg/applicationserver/io/packages/loradms/v1/package.go +++ b/pkg/applicationserver/io/packages/loradms/v1/package.go @@ -17,9 +17,7 @@ package loraclouddevicemanagementv1 import ( "context" "fmt" - "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/packages" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/packages/loradms/v1/api" @@ -32,6 +30,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" urlutil "go.thethings.network/lorawan-stack/v3/pkg/util/url" "google.golang.org/protobuf/types/known/structpb" + "google.golang.org/protobuf/types/known/timestamppb" ) // PackageName defines the package name. @@ -185,7 +184,7 @@ func (p *DeviceManagementPackage) sendServiceData( return p.server.Publish(ctx, &ttnpb.ApplicationUp{ EndDeviceIds: ids, CorrelationIds: events.CorrelationIDsFromContext(ctx), - ReceivedAt: ttnpb.ProtoTimePtr(time.Now()), + ReceivedAt: timestamppb.Now(), Up: &ttnpb.ApplicationUp_ServiceData{ ServiceData: &ttnpb.ApplicationServiceData{ Data: data, @@ -213,7 +212,7 @@ func (p *DeviceManagementPackage) sendLocationSolved(ctx context.Context, ids *t return p.server.Publish(ctx, &ttnpb.ApplicationUp{ EndDeviceIds: ids, CorrelationIds: events.CorrelationIDsFromContext(ctx), - ReceivedAt: ttnpb.ProtoTimePtr(time.Now()), + ReceivedAt: timestamppb.Now(), Up: &ttnpb.ApplicationUp_LocationSolved{ LocationSolved: &ttnpb.ApplicationLocation{ Service: fmt.Sprintf("%v-%s", PackageName, position.Algorithm), @@ -331,7 +330,7 @@ func uint32Ptr(x uint32) *uint32 { return &x } -func float64PtrOfTimestamp(x *pbtypes.Timestamp) *float64 { +func float64PtrOfTimestamp(x *timestamppb.Timestamp) *float64 { if x == nil { return nil } diff --git a/pkg/applicationserver/io/packages/loragls/v3/package.go b/pkg/applicationserver/io/packages/loragls/v3/package.go index febce87528..3d98b40b9a 100644 --- a/pkg/applicationserver/io/packages/loragls/v3/package.go +++ b/pkg/applicationserver/io/packages/loragls/v3/package.go @@ -33,6 +33,7 @@ import ( urlutil "go.thethings.network/lorawan-stack/v3/pkg/util/url" "google.golang.org/grpc/codes" "google.golang.org/protobuf/types/known/structpb" + "google.golang.org/protobuf/types/known/timestamppb" ) // PackageName defines the package name. @@ -276,7 +277,7 @@ func (p *GeolocationPackage) sendServiceData(ctx context.Context, ids *ttnpb.End return p.server.Publish(ctx, &ttnpb.ApplicationUp{ EndDeviceIds: ids, CorrelationIds: events.CorrelationIDsFromContext(ctx), - ReceivedAt: ttnpb.ProtoTimePtr(time.Now()), + ReceivedAt: timestamppb.Now(), Up: &ttnpb.ApplicationUp_ServiceData{ ServiceData: &ttnpb.ApplicationServiceData{ Data: data, @@ -291,7 +292,7 @@ func (p *GeolocationPackage) sendLocationSolved(ctx context.Context, ids *ttnpb. return p.server.Publish(ctx, &ttnpb.ApplicationUp{ EndDeviceIds: ids, CorrelationIds: events.CorrelationIDsFromContext(ctx), - ReceivedAt: ttnpb.ProtoTimePtr(time.Now()), + ReceivedAt: timestamppb.Now(), Up: &ttnpb.ApplicationUp_LocationSolved{ LocationSolved: &ttnpb.ApplicationLocation{ Service: fmt.Sprintf("%v-%s", PackageName, result.Algorithm()), diff --git a/pkg/applicationserver/io/packages/redis/registry.go b/pkg/applicationserver/io/packages/redis/registry.go index d17b82b79a..4c28111a2d 100644 --- a/pkg/applicationserver/io/packages/redis/registry.go +++ b/pkg/applicationserver/io/packages/redis/registry.go @@ -29,6 +29,7 @@ import ( ttnredis "go.thethings.network/lorawan-stack/v3/pkg/redis" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -241,7 +242,7 @@ func (r ApplicationPackagesRegistry) SetAssociation(ctx context.Context, ids *tt pb = &ttnpb.ApplicationPackageAssociation{} } - pb.UpdatedAt = ttnpb.ProtoTimePtr(time.Now()) + pb.UpdatedAt = timestamppb.Now() sets = append(append(sets[:0:0], sets...), "updated_at", ) @@ -447,7 +448,7 @@ func (r ApplicationPackagesRegistry) SetDefaultAssociation(ctx context.Context, pb = &ttnpb.ApplicationPackageDefaultAssociation{} } - pb.UpdatedAt = ttnpb.ProtoTimePtr(time.Now()) + pb.UpdatedAt = timestamppb.Now() sets = append(append(sets[:0:0], sets...), "updated_at", ) diff --git a/pkg/applicationserver/io/pubsub/redis/registry.go b/pkg/applicationserver/io/pubsub/redis/registry.go index 377fa9c47b..66ce749162 100644 --- a/pkg/applicationserver/io/pubsub/redis/registry.go +++ b/pkg/applicationserver/io/pubsub/redis/registry.go @@ -25,6 +25,7 @@ import ( ttnredis "go.thethings.network/lorawan-stack/v3/pkg/redis" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -214,7 +215,7 @@ func (r PubSubRegistry) Set(ctx context.Context, ids *ttnpb.ApplicationPubSubIde pb = &ttnpb.ApplicationPubSub{} } - pb.UpdatedAt = ttnpb.ProtoTimePtr(time.Now()) + pb.UpdatedAt = timestamppb.Now() sets = append(append(sets[:0:0], sets...), "updated_at", ) diff --git a/pkg/applicationserver/io/web/health_sink.go b/pkg/applicationserver/io/web/health_sink.go index c5c7c519d8..1b247a912f 100644 --- a/pkg/applicationserver/io/web/health_sink.go +++ b/pkg/applicationserver/io/web/health_sink.go @@ -21,6 +21,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/timestamppb" ) // HealthStatusRegistry is a registry for webhook health status. @@ -190,7 +191,7 @@ func (hcs *healthCheckSink) executeAndRecord(r *http.Request, healthy bool) erro Status: &ttnpb.ApplicationWebhookHealth_Unhealthy{ Unhealthy: &ttnpb.ApplicationWebhookHealth_WebhookHealthStatusUnhealthy{ FailedAttempts: h.GetUnhealthy().GetFailedAttempts() + 1, - LastFailedAttemptAt: ttnpb.ProtoTimePtr(time.Now()), + LastFailedAttemptAt: timestamppb.Now(), LastFailedAttemptDetails: details, }, }, diff --git a/pkg/applicationserver/io/web/health_sink_test.go b/pkg/applicationserver/io/web/health_sink_test.go index 8593f38e01..bc01185f5e 100644 --- a/pkg/applicationserver/io/web/health_sink_test.go +++ b/pkg/applicationserver/io/web/health_sink_test.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) var registeredWebhookIDs = &ttnpb.ApplicationWebhookIdentifiers{ @@ -109,7 +110,7 @@ func TestHealthStatusRegistry(t *testing.T) { Status: &ttnpb.ApplicationWebhookHealth_Unhealthy{ Unhealthy: &ttnpb.ApplicationWebhookHealth_WebhookHealthStatusUnhealthy{ FailedAttempts: 123, - LastFailedAttemptAt: ttnpb.ProtoTimePtr(time.Unix(123, 234)), + LastFailedAttemptAt: timestamppb.New(time.Unix(123, 234)), LastFailedAttemptDetails: ttnpb.ErrorDetailsToProto(errorDetails), }, }, @@ -124,7 +125,7 @@ func TestHealthStatusRegistry(t *testing.T) { Status: &ttnpb.ApplicationWebhookHealth_Unhealthy{ Unhealthy: &ttnpb.ApplicationWebhookHealth_WebhookHealthStatusUnhealthy{ FailedAttempts: 123, - LastFailedAttemptAt: ttnpb.ProtoTimePtr(time.Unix(123, 234)), + LastFailedAttemptAt: timestamppb.New(time.Unix(123, 234)), LastFailedAttemptDetails: ttnpb.ErrorDetailsToProto(errorDetails), }, }, @@ -138,7 +139,7 @@ func TestHealthStatusRegistry(t *testing.T) { Status: &ttnpb.ApplicationWebhookHealth_Unhealthy{ Unhealthy: &ttnpb.ApplicationWebhookHealth_WebhookHealthStatusUnhealthy{ FailedAttempts: 123, - LastFailedAttemptAt: ttnpb.ProtoTimePtr(time.Unix(123, 234)), + LastFailedAttemptAt: timestamppb.New(time.Unix(123, 234)), LastFailedAttemptDetails: ttnpb.ErrorDetailsToProto(errorDetails), }, }, @@ -165,7 +166,7 @@ func TestHealthStatusRegistry(t *testing.T) { Status: &ttnpb.ApplicationWebhookHealth_Unhealthy{ Unhealthy: &ttnpb.ApplicationWebhookHealth_WebhookHealthStatusUnhealthy{ FailedAttempts: 123, - LastFailedAttemptAt: ttnpb.ProtoTimePtr(time.Unix(123, 234)), + LastFailedAttemptAt: timestamppb.New(time.Unix(123, 234)), LastFailedAttemptDetails: ttnpb.ErrorDetailsToProto(errorDetails), }, }, @@ -174,7 +175,7 @@ func TestHealthStatusRegistry(t *testing.T) { Status: &ttnpb.ApplicationWebhookHealth_Unhealthy{ Unhealthy: &ttnpb.ApplicationWebhookHealth_WebhookHealthStatusUnhealthy{ FailedAttempts: 234, - LastFailedAttemptAt: ttnpb.ProtoTimePtr(time.Unix(345, 567)), + LastFailedAttemptAt: timestamppb.New(time.Unix(345, 567)), LastFailedAttemptDetails: ttnpb.ErrorDetailsToProto(errorDetails), }, }, diff --git a/pkg/applicationserver/io/web/redis/registry.go b/pkg/applicationserver/io/web/redis/registry.go index 53f4dbb171..152a765184 100644 --- a/pkg/applicationserver/io/web/redis/registry.go +++ b/pkg/applicationserver/io/web/redis/registry.go @@ -26,6 +26,7 @@ import ( ttnredis "go.thethings.network/lorawan-stack/v3/pkg/redis" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -174,7 +175,7 @@ func (r WebhookRegistry) Set(ctx context.Context, ids *ttnpb.ApplicationWebhookI pb = &ttnpb.ApplicationWebhook{} } - pb.UpdatedAt = ttnpb.ProtoTimePtr(time.Now()) + pb.UpdatedAt = timestamppb.Now() sets = append(append(sets[:0:0], sets...), "updated_at", ) diff --git a/pkg/applicationserver/lastseen/lastseen.go b/pkg/applicationserver/lastseen/lastseen.go index 86a826e2e8..b8f2ad4850 100644 --- a/pkg/applicationserver/lastseen/lastseen.go +++ b/pkg/applicationserver/lastseen/lastseen.go @@ -19,21 +19,21 @@ import ( "sync" "time" - "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/metadata" "go.thethings.network/lorawan-stack/v3/pkg/log" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/timestamppb" ) // LastSeenProvider is an interface for storing device last seen timestamp from uplink. type LastSeenProvider interface { - PushLastSeenFromUplink(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers, lastSeen *types.Timestamp) error + PushLastSeenFromUplink(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers, lastSeen *timestamppb.Timestamp) error } type noopLastSeenProvider struct{} -func (noopLastSeenProvider) PushLastSeenFromUplink(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers, lastSeen *types.Timestamp) error { +func (noopLastSeenProvider) PushLastSeenFromUplink(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers, lastSeen *timestamppb.Timestamp) error { return nil } @@ -53,7 +53,7 @@ type BatchLastSeenProvider struct { lsMu sync.Mutex } -func (ls *BatchLastSeenProvider) push(uid string, lastSeen *types.Timestamp) (map[string]*ttnpb.EndDevice, error) { +func (ls *BatchLastSeenProvider) push(uid string, lastSeen *timestamppb.Timestamp) (map[string]*ttnpb.EndDevice, error) { ls.lsMu.Lock() defer ls.lsMu.Unlock() currentTimestamp := ttnpb.StdTime(lastSeen) @@ -78,7 +78,7 @@ func (ls *BatchLastSeenProvider) push(uid string, lastSeen *types.Timestamp) (ma // PushLastSeenFromUplink pushes the timestamp of the device uplink to the last seen provider. // If the data structure for storing last seen timestamps is full, the timestamps // are updated in batch in Identity Server. -func (ls *BatchLastSeenProvider) PushLastSeenFromUplink(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers, lastSeen *types.Timestamp) error { +func (ls *BatchLastSeenProvider) PushLastSeenFromUplink(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers, lastSeen *timestamppb.Timestamp) error { if ls.batchSize == 0 { if err := ls.updateEndDeviceLastSeen(ctx, &ttnpb.EndDevice{ Ids: ids, diff --git a/pkg/applicationserver/redis/registry.go b/pkg/applicationserver/redis/registry.go index 72a3b58102..90f6593522 100644 --- a/pkg/applicationserver/redis/registry.go +++ b/pkg/applicationserver/redis/registry.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -163,7 +164,7 @@ func (r *DeviceRegistry) Set(ctx context.Context, ids *ttnpb.EndDeviceIdentifier return errInvalidIdentifiers.New() } - pb.UpdatedAt = ttnpb.ProtoTimePtr(time.Now()) + pb.UpdatedAt = timestamppb.Now() sets = append(append(sets[:0:0], sets...), "updated_at", ) diff --git a/pkg/email/templates/templates_test.go b/pkg/email/templates/templates_test.go index e79cc96429..45f1d93a33 100644 --- a/pkg/email/templates/templates_test.go +++ b/pkg/email/templates/templates_test.go @@ -27,6 +27,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) var writeGolden = flag.Bool("write-golden", false, "Write golden files") @@ -132,7 +133,7 @@ func TestNotificationEmailTemplates(t *testing.T) { usrIDs := &ttnpb.UserIdentifiers{ UserId: "foo-usr", } - now := ttnpb.ProtoTimePtr(time.Now()) + now := timestamppb.Now() for _, notification := range []*ttnpb.Notification{ { diff --git a/pkg/encoding/lorawan/mac.go b/pkg/encoding/lorawan/mac.go index ac5310d872..7299b89515 100644 --- a/pkg/encoding/lorawan/mac.go +++ b/pkg/encoding/lorawan/mac.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/gpstime" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/byteutil" + "google.golang.org/protobuf/types/known/timestamppb" ) // fractStep defines (1/2)^8 second step used in DeviceTimeAns payload. @@ -611,7 +612,7 @@ var DefaultMACCommands = MACCommandSpec{ UnmarshalDownlink: newMACUnmarshaler(ttnpb.MACCommandIdentifier_CID_DEVICE_TIME, "DeviceTimeAns", 5, func(phy band.Band, b []byte, cmd *ttnpb.MACCommand) error { cmd.Payload = &ttnpb.MACCommand_DeviceTimeAns_{ DeviceTimeAns: &ttnpb.MACCommand_DeviceTimeAns{ - Time: ttnpb.ProtoTimePtr(gpstime.Parse(time.Duration(byteutil.ParseUint32(b[0:4]))*time.Second + time.Duration(b[4])*fractStep)), + Time: timestamppb.New(gpstime.Parse(time.Duration(byteutil.ParseUint32(b[0:4]))*time.Second + time.Duration(b[4])*fractStep)), }, } return nil diff --git a/pkg/encoding/lorawan/mac_test.go b/pkg/encoding/lorawan/mac_test.go index d6e33f7495..023b4fe5c3 100644 --- a/pkg/encoding/lorawan/mac_test.go +++ b/pkg/encoding/lorawan/mac_test.go @@ -27,6 +27,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) func TestLoRaWANEncodingMAC(t *testing.T) { @@ -259,7 +260,7 @@ func TestLoRaWANEncodingMAC(t *testing.T) { { "DeviceTimeAns", &ttnpb.MACCommand_DeviceTimeAns{ - Time: ttnpb.ProtoTimePtr(gpstime.Parse(0x42ffffff*time.Second + 0x42*time.Duration(math.Pow(0.5, 8)*float64(time.Second)))), + Time: timestamppb.New(gpstime.Parse(0x42ffffff*time.Second + 0x42*time.Duration(math.Pow(0.5, 8)*float64(time.Second)))), }, []byte{0x0D, 0xff, 0xff, 0xff, 0x42, 0x42}, false, diff --git a/pkg/events/builder.go b/pkg/events/builder.go index 8c294ff160..b622c80c2c 100644 --- a/pkg/events/builder.go +++ b/pkg/events/builder.go @@ -16,9 +16,9 @@ package events import ( "context" - "time" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/timestamppb" ) type builder struct { @@ -45,7 +45,7 @@ func (b *builder) New(ctx context.Context, opts ...Option) Event { innerEvent: &ttnpb.Event{ UniqueId: NewCorrelationID(), Name: b.definition.name, - Time: ttnpb.ProtoTimePtr(time.Now()), + Time: timestamppb.Now(), Origin: hostname, CorrelationIds: CorrelationIDsFromContext(ctx), }, diff --git a/pkg/events/events.go b/pkg/events/events.go index c93a234a80..d173ccc000 100644 --- a/pkg/events/events.go +++ b/pkg/events/events.go @@ -32,6 +32,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/jsonpb" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/protobuf/types/known/structpb" + "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -63,7 +64,7 @@ func local(evt Event) *event { innerEvent: &ttnpb.Event{ UniqueId: evt.UniqueID(), Name: evt.Name(), - Time: ttnpb.ProtoTimePtr(t), + Time: timestamppb.New(t), Identifiers: evt.Identifiers(), CorrelationIds: evt.CorrelationIds(), Origin: evt.Origin(), diff --git a/pkg/events/grpc/grpc.go b/pkg/events/grpc/grpc.go index d38c4b80f3..d4b8d8accf 100644 --- a/pkg/events/grpc/grpc.go +++ b/pkg/events/grpc/grpc.go @@ -37,6 +37,7 @@ import ( "golang.org/x/sync/errgroup" "google.golang.org/grpc" "google.golang.org/grpc/metadata" + "google.golang.org/protobuf/types/known/timestamppb" ) // NewEventsServer returns a new EventsServer on the given PubSub. @@ -150,7 +151,7 @@ func (srv *EventsServer) Stream(req *ttnpb.StreamEventsRequest, stream ttnpb.Eve if hasStore { if req.After == nil && req.Tail == 0 { now := time.Now() - req.After = ttnpb.ProtoTimePtr(now) + req.After = timestamppb.New(now) } group, ctx = errgroup.WithContext(ctx) group.Go(func() error { @@ -176,7 +177,7 @@ func (srv *EventsServer) Stream(req *ttnpb.StreamEventsRequest, stream ttnpb.Eve startEvent := &ttnpb.Event{ UniqueId: events.NewCorrelationID(), Name: "events.stream.start", - Time: ttnpb.ProtoTimePtr(time.Now()), + Time: timestamppb.Now(), Identifiers: req.Identifiers, Origin: hostname, CorrelationIds: events.CorrelationIDsFromContext(ctx), diff --git a/pkg/gatewayserver/gatewayserver.go b/pkg/gatewayserver/gatewayserver.go index 909bc0a759..c90dbb6d51 100644 --- a/pkg/gatewayserver/gatewayserver.go +++ b/pkg/gatewayserver/gatewayserver.go @@ -56,6 +56,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/workerpool" "google.golang.org/grpc" "google.golang.org/grpc/codes" + "google.golang.org/protobuf/types/known/timestamppb" ) // GatewayServer implements the Gateway Server component. @@ -521,7 +522,7 @@ func (gs *GatewayServer) Connect( } registerGatewayConnect(ctx, ids, &ttnpb.GatewayConnectionStats{ - ConnectedAt: ttnpb.ProtoTimePtr(conn.ConnectTime()), + ConnectedAt: timestamppb.New(conn.ConnectTime()), Protocol: conn.Frontend().Protocol(), GatewayRemoteAddress: conn.GatewayRemoteAddress(), }) @@ -937,7 +938,7 @@ func (gs *GatewayServer) updateConnStats(ctx context.Context, conn connectionEnt // Initial update, so that the gateway appears connected. stats := &ttnpb.GatewayConnectionStats{ - ConnectedAt: ttnpb.ProtoTimePtr(connectTime), + ConnectedAt: timestamppb.New(connectTime), Protocol: conn.Connection.Frontend().Protocol(), GatewayRemoteAddress: conn.Connection.GatewayRemoteAddress(), } @@ -952,7 +953,7 @@ func (gs *GatewayServer) updateConnStats(ctx context.Context, conn connectionEnt logger.Debug("Delete connection stats") stats := &ttnpb.GatewayConnectionStats{ ConnectedAt: nil, - DisconnectedAt: ttnpb.ProtoTimePtr(time.Now()), + DisconnectedAt: timestamppb.Now(), } registerGatewayConnectionStats(decoupledCtx, ids, stats) if gs.statsRegistry == nil { diff --git a/pkg/gatewayserver/gatewayserver_test.go b/pkg/gatewayserver/gatewayserver_test.go index 5cef70c83a..614a747367 100644 --- a/pkg/gatewayserver/gatewayserver_test.go +++ b/pkg/gatewayserver/gatewayserver_test.go @@ -57,6 +57,8 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" "google.golang.org/grpc/metadata" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -777,7 +779,7 @@ func TestGatewayServer(t *testing.T) { UpdateLocation: false, Up: &ttnpb.GatewayUp{ GatewayStatus: &ttnpb.GatewayStatus{ - Time: ttnpb.ProtoTimePtr(time.Unix(424242, 0)), + Time: timestamppb.New(time.Unix(424242, 0)), AntennaLocations: []*ttnpb.Location{ { Source: ttnpb.LocationSource_SOURCE_GPS, @@ -797,7 +799,7 @@ func TestGatewayServer(t *testing.T) { UpdateLocation: true, Up: &ttnpb.GatewayUp{ GatewayStatus: &ttnpb.GatewayStatus{ - Time: ttnpb.ProtoTimePtr(time.Unix(424242, 0)), + Time: timestamppb.New(time.Unix(424242, 0)), }, }, ExpectLocation: &ttnpb.Location{ @@ -809,7 +811,7 @@ func TestGatewayServer(t *testing.T) { UpdateLocation: true, Up: &ttnpb.GatewayUp{ GatewayStatus: &ttnpb.GatewayStatus{ - Time: ttnpb.ProtoTimePtr(time.Unix(42424242, 0)), + Time: timestamppb.New(time.Unix(42424242, 0)), AntennaLocations: []*ttnpb.Location{ { Source: ttnpb.LocationSource_SOURCE_GPS, @@ -1035,7 +1037,7 @@ func TestGatewayServer(t *testing.T) { Name: "GatewayStatus", Up: &ttnpb.GatewayUp{ GatewayStatus: &ttnpb.GatewayStatus{ - Time: ttnpb.ProtoTimePtr(time.Unix(424242, 0)), + Time: timestamppb.New(time.Unix(424242, 0)), }, }, }, @@ -1288,7 +1290,7 @@ func TestGatewayServer(t *testing.T) { }, }, GatewayStatus: &ttnpb.GatewayStatus{ - Time: ttnpb.ProtoTimePtr(time.Unix(4242424, 0)), + Time: timestamppb.New(time.Unix(4242424, 0)), }, }, Forwards: []uint32{200, 300}, diff --git a/pkg/gatewayserver/io/grpc/grpc.go b/pkg/gatewayserver/io/grpc/grpc.go index 7f23f47322..9faafeb7e9 100644 --- a/pkg/gatewayserver/io/grpc/grpc.go +++ b/pkg/gatewayserver/io/grpc/grpc.go @@ -33,6 +33,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/unique" "google.golang.org/grpc/peer" "google.golang.org/protobuf/types/known/emptypb" + "google.golang.org/protobuf/types/known/timestamppb" ) // Option represents an option for the gRPC frontend. @@ -149,7 +150,7 @@ func (s *impl) LinkGateway(link ttnpb.GtwGs_LinkGatewayServer) error { )).Debug("Received message") for _, up := range io.UniqueUplinkMessagesByRSSI(msg.UplinkMessages) { - up.ReceivedAt = ttnpb.ProtoTimePtr(now) + up.ReceivedAt = timestamppb.New(now) if err := conn.HandleUp(up, nil); err != nil { logger.WithError(err).Warn("Failed to handle uplink message") } diff --git a/pkg/gatewayserver/io/grpc/grpc_test.go b/pkg/gatewayserver/io/grpc/grpc_test.go index 96d61022d6..dab1565c0b 100644 --- a/pkg/gatewayserver/io/grpc/grpc_test.go +++ b/pkg/gatewayserver/io/grpc/grpc_test.go @@ -41,6 +41,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -232,7 +233,7 @@ func TestTraffic(t *testing.T) { { GatewayStatus: &ttnpb.GatewayStatus{ Ip: []string{"1.1.1.1"}, - Time: ttnpb.ProtoTimePtr(time.Now()), + Time: timestamppb.Now(), }, }, { @@ -284,7 +285,7 @@ func TestTraffic(t *testing.T) { }, GatewayStatus: &ttnpb.GatewayStatus{ Ip: []string{"2.2.2.2"}, - Time: ttnpb.ProtoTimePtr(time.Now()), + Time: timestamppb.Now(), }, }, { @@ -352,7 +353,7 @@ func TestTraffic(t *testing.T) { }, GatewayStatus: &ttnpb.GatewayStatus{ Ip: []string{"3.3.3.3"}, - Time: ttnpb.ProtoTimePtr(time.Now()), + Time: timestamppb.Now(), }, }, { diff --git a/pkg/gatewayserver/io/io.go b/pkg/gatewayserver/io/io.go index 8c362654b2..a53ed97e4d 100644 --- a/pkg/gatewayserver/io/io.go +++ b/pkg/gatewayserver/io/io.go @@ -22,7 +22,6 @@ import ( "sync/atomic" "time" - "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/band" "go.thethings.network/lorawan-stack/v3/pkg/config" "go.thethings.network/lorawan-stack/v3/pkg/errorcontext" @@ -33,6 +32,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ratelimit" "go.thethings.network/lorawan-stack/v3/pkg/task" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/timestamppb" ) const ( @@ -246,7 +246,7 @@ func (c *Connection) HandleUp(up *ttnpb.UplinkMessage, frontendSync *FrontendClo } receivedAt := *ttnpb.StdTime(up.ReceivedAt) - gpsTime := func(mds []*ttnpb.RxMetadata) *types.Timestamp { + gpsTime := func(mds []*ttnpb.RxMetadata) *timestamppb.Timestamp { for _, md := range mds { if gpsTime := md.GpsTime; gpsTime != nil { return gpsTime @@ -295,7 +295,7 @@ func (c *Connection) HandleUp(up *ttnpb.UplinkMessage, frontendSync *FrontendClo receivedAtGateway = receivedAt.Add(-median / 2) } for _, md := range up.RxMetadata { - md.ReceivedAt = ttnpb.ProtoTimePtr(receivedAtGateway) + md.ReceivedAt = timestamppb.New(receivedAtGateway) if md.AntennaIndex != 0 { // TODO: Support downlink path to multiple antennas (https://github.com/TheThingsNetwork/lorawan-stack/issues/48) @@ -754,7 +754,7 @@ func (c *Connection) RTTStats(percentile int, t time.Time) (min, max, median, np func (c *Connection) Stats() (*ttnpb.GatewayConnectionStats, []string) { ct := c.ConnectTime() stats := &ttnpb.GatewayConnectionStats{ - ConnectedAt: ttnpb.ProtoTimePtr(ct), + ConnectedAt: timestamppb.New(ct), Protocol: c.Frontend().Protocol(), GatewayRemoteAddress: c.GatewayRemoteAddress(), } @@ -762,17 +762,17 @@ func (c *Connection) Stats() (*ttnpb.GatewayConnectionStats, []string) { paths = append(paths, "connected_at", "disconnected_at", "protocol", "gateway_remote_address") if s, t, ok := c.StatusStats(); ok { - stats.LastStatusReceivedAt = ttnpb.ProtoTimePtr(t) + stats.LastStatusReceivedAt = timestamppb.New(t) stats.LastStatus = s paths = append(paths, "last_status_received_at", "last_status") } if count, t, ok := c.UpStats(); ok { - stats.LastUplinkReceivedAt = ttnpb.ProtoTimePtr(t) + stats.LastUplinkReceivedAt = timestamppb.New(t) stats.UplinkCount = count paths = append(paths, "last_uplink_received_at", "uplink_count") } if count, t, ok := c.DownStats(); ok { - stats.LastDownlinkReceivedAt = ttnpb.ProtoTimePtr(t) + stats.LastDownlinkReceivedAt = timestamppb.New(t) stats.DownlinkCount = count paths = append(paths, "last_downlink_received_at", "downlink_count") if c.scheduler != nil { diff --git a/pkg/gatewayserver/io/io_test.go b/pkg/gatewayserver/io/io_test.go index 5f29496c43..cc85ad496d 100644 --- a/pkg/gatewayserver/io/io_test.go +++ b/pkg/gatewayserver/io/io_test.go @@ -34,6 +34,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/unique" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) var timeout = (1 << 3) * test.Delay @@ -128,7 +129,7 @@ func TestFlow(t *testing.T) { { frontend.Status <- &ttnpb.GatewayStatus{ - Time: ttnpb.ProtoTimePtr(time.Now()), + Time: timestamppb.Now(), } select { case <-conn.Status(): @@ -422,7 +423,7 @@ func TestFlow(t *testing.T) { }, }, Rx2Frequency: 869525000, - AbsoluteTime: ttnpb.ProtoTimePtr(time.Unix(100, 0)), // The mock front-end uses Unix epoch as start time. + AbsoluteTime: timestamppb.New(time.Unix(100, 0)), // The mock front-end uses Unix epoch as start time. FrequencyPlanId: test.EUFrequencyPlanID, }, }, @@ -448,7 +449,7 @@ func TestFlow(t *testing.T) { }, }, Rx2Frequency: 869525000, - AbsoluteTime: ttnpb.ProtoTimePtr(time.Unix(100, 0)), // The mock front-end uses Unix epoch as start time. + AbsoluteTime: timestamppb.New(time.Unix(100, 0)), // The mock front-end uses Unix epoch as start time. FrequencyPlanId: test.EUFrequencyPlanID, }, }, diff --git a/pkg/gatewayserver/io/mock/frontend.go b/pkg/gatewayserver/io/mock/frontend.go index 73cb776cdc..f2423cb428 100644 --- a/pkg/gatewayserver/io/mock/frontend.go +++ b/pkg/gatewayserver/io/mock/frontend.go @@ -21,6 +21,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/gatewayserver/io" "go.thethings.network/lorawan-stack/v3/pkg/gatewayserver/scheduling" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/timestamppb" ) // Frontend is a mock front-end. @@ -57,9 +58,9 @@ func ConnectFrontend(ctx context.Context, ids *ttnpb.GatewayIdentifiers, server return case up := <-f.Up: gatewayTime := time.Unix(0, 0).Add(time.Since(started)) - up.ReceivedAt = ttnpb.ProtoTimePtr(time.Now()) + up.ReceivedAt = timestamppb.Now() for _, md := range up.RxMetadata { - md.GpsTime = ttnpb.ProtoTimePtr(gatewayTime) + md.GpsTime = timestamppb.New(gatewayTime) } conn.HandleUp(up, nil) case status := <-f.Status: diff --git a/pkg/gatewayserver/io/mqtt/format_protobufv2.go b/pkg/gatewayserver/io/mqtt/format_protobufv2.go index a569a9a224..cd4e6ceebe 100644 --- a/pkg/gatewayserver/io/mqtt/format_protobufv2.go +++ b/pkg/gatewayserver/io/mqtt/format_protobufv2.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/gatewayserver/io/mqtt/topics" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/datarate" + "google.golang.org/protobuf/types/known/timestamppb" ) // eirpDelta is the delta between EIRP and ERP. @@ -125,7 +126,7 @@ func (protobufv2) ToUplink(message []byte, ids *ttnpb.GatewayIdentifiers) (*ttnp return nil, errModulation.WithAttributes("modulation", lorawanMetadata.Modulation) } - mdTime := ttnpb.ProtoTimePtr(time.Unix(0, gwMetadata.Time)) + mdTime := timestamppb.New(time.Unix(0, gwMetadata.Time)) if antennas := gwMetadata.Antennas; len(antennas) > 0 { for _, antenna := range antennas { rssi := antenna.ChannelRssi @@ -219,10 +220,10 @@ func (protobufv2) ToStatus(message []byte, _ *ttnpb.GatewayIdentifiers) (*ttnpb. } return &ttnpb.GatewayStatus{ AntennaLocations: antennasLocation, - BootTime: ttnpb.ProtoTimePtr(time.Unix(0, v2status.BootTime)), + BootTime: timestamppb.New(time.Unix(0, v2status.BootTime)), Ip: v2status.Ip, Metrics: metrics, - Time: ttnpb.ProtoTimePtr(time.Unix(0, v2status.Time)), + Time: timestamppb.New(time.Unix(0, v2status.Time)), Versions: versions, }, nil } diff --git a/pkg/gatewayserver/io/mqtt/format_protobufv2_test.go b/pkg/gatewayserver/io/mqtt/format_protobufv2_test.go index e0e46950d3..6b5c6d8db3 100644 --- a/pkg/gatewayserver/io/mqtt/format_protobufv2_test.go +++ b/pkg/gatewayserver/io/mqtt/format_protobufv2_test.go @@ -28,6 +28,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) func TestProtobufV2Downlink(t *testing.T) { @@ -129,7 +130,7 @@ func TestProtobufV2Uplinks(t *testing.T) { }, Timestamp: validV2Metadata.Timestamp, } - nilTime := ttnpb.ProtoTimePtr(time.Unix(0, 0)) + nilTime := timestamppb.New(time.Unix(0, 0)) ids := ttnpb.GatewayIdentifiers{ GatewayId: "gateway-id", } @@ -243,8 +244,8 @@ func TestProtobufV2Status(t *testing.T) { RxOk: 14, }, Expected: &ttnpb.GatewayStatus{ - BootTime: ttnpb.ProtoTimePtr(time.Unix(0, 0)), - Time: ttnpb.ProtoTimePtr(time.Unix(0, 0)), + BootTime: timestamppb.New(time.Unix(0, 0)), + Time: timestamppb.New(time.Unix(0, 0)), Metrics: map[string]float32{ "lmnw": 0.0, "lmst": 0.0, @@ -266,8 +267,8 @@ func TestProtobufV2Status(t *testing.T) { Fpga: 4, }, Expected: &ttnpb.GatewayStatus{ - BootTime: ttnpb.ProtoTimePtr(time.Unix(0, 0)), - Time: ttnpb.ProtoTimePtr(time.Unix(0, 0)), + BootTime: timestamppb.New(time.Unix(0, 0)), + Time: timestamppb.New(time.Unix(0, 0)), Metrics: map[string]float32{ "lmnw": 0.0, "lmst": 0.0, @@ -302,8 +303,8 @@ func TestProtobufV2Status(t *testing.T) { Rtt: 3, }, Expected: &ttnpb.GatewayStatus{ - BootTime: ttnpb.ProtoTimePtr(time.Unix(0, 0)), - Time: ttnpb.ProtoTimePtr(time.Unix(0, 0)), + BootTime: timestamppb.New(time.Unix(0, 0)), + Time: timestamppb.New(time.Unix(0, 0)), Metrics: map[string]float32{ "lmnw": 0.0, "lmst": 0.0, @@ -334,8 +335,8 @@ func TestProtobufV2Status(t *testing.T) { }, }, Expected: &ttnpb.GatewayStatus{ - BootTime: ttnpb.ProtoTimePtr(time.Unix(0, 0)), - Time: ttnpb.ProtoTimePtr(time.Unix(0, 0)), + BootTime: timestamppb.New(time.Unix(0, 0)), + Time: timestamppb.New(time.Unix(0, 0)), Metrics: map[string]float32{ "lmnw": 0.0, "lmst": 0.0, diff --git a/pkg/gatewayserver/io/mqtt/mqtt.go b/pkg/gatewayserver/io/mqtt/mqtt.go index deb04367a8..a0150009b0 100644 --- a/pkg/gatewayserver/io/mqtt/mqtt.go +++ b/pkg/gatewayserver/io/mqtt/mqtt.go @@ -37,6 +37,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" "google.golang.org/grpc/metadata" + "google.golang.org/protobuf/types/known/timestamppb" ) const qosDownlink byte = 0 @@ -246,7 +247,7 @@ func (c *connection) deliver(pkt *packet.PublishPacket) { logger.WithError(err).Warn("Failed to unmarshal uplink message") return } - up.ReceivedAt = ttnpb.ProtoTimePtr(pkt.Received) + up.ReceivedAt = timestamppb.New(pkt.Received) if err := c.io.HandleUp(up, nil); err != nil { logger.WithError(err).Warn("Failed to handle uplink message") } diff --git a/pkg/gatewayserver/io/mqtt/mqtt_test.go b/pkg/gatewayserver/io/mqtt/mqtt_test.go index e874c69e5d..bb97e684da 100644 --- a/pkg/gatewayserver/io/mqtt/mqtt_test.go +++ b/pkg/gatewayserver/io/mqtt/mqtt_test.go @@ -39,6 +39,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/unique" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -229,7 +230,7 @@ func TestTraffic(t *testing.T) { { Topic: fmt.Sprintf("v3/%v/status", registeredGatewayUID), Message: &ttnpb.GatewayStatus{ - Time: ttnpb.ProtoTimePtr(time.Now()), + Time: timestamppb.Now(), Ip: []string{"1.1.1.1"}, }, OK: true, diff --git a/pkg/gatewayserver/io/udp/udp.go b/pkg/gatewayserver/io/udp/udp.go index 16e09e4ac0..eddae4392b 100644 --- a/pkg/gatewayserver/io/udp/udp.go +++ b/pkg/gatewayserver/io/udp/udp.go @@ -34,6 +34,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/unique" "go.thethings.network/lorawan-stack/v3/pkg/workerpool" "golang.org/x/exp/slices" + "google.golang.org/protobuf/types/known/timestamppb" ) type srv struct { @@ -301,7 +302,7 @@ func (s *srv) handleUp(ctx context.Context, state *state, packet encoding.Packet return err } for _, up := range io.UniqueUplinkMessagesByRSSI(msg.UplinkMessages) { - up.ReceivedAt = ttnpb.ProtoTimePtr(packet.ReceivedAt) + up.ReceivedAt = timestamppb.New(packet.ReceivedAt) if err := state.io.HandleUp(up, nil); err != nil { logger.WithError(err).Warn("Failed to handle uplink message") } diff --git a/pkg/gatewayserver/io/uplink_token.go b/pkg/gatewayserver/io/uplink_token.go index 03235ecbe4..7dfddbbfa1 100644 --- a/pkg/gatewayserver/io/uplink_token.go +++ b/pkg/gatewayserver/io/uplink_token.go @@ -20,6 +20,8 @@ import ( "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/gatewayserver/scheduling" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/timestamppb" ) // UplinkToken returns an uplink token from the given downlink path. @@ -27,7 +29,7 @@ func UplinkToken(ids *ttnpb.GatewayAntennaIdentifiers, timestamp uint32, concent token := ttnpb.UplinkToken{ Ids: ids, Timestamp: timestamp, - ServerTime: ttnpb.ProtoTimePtr(serverTime), + ServerTime: timestamppb.New(serverTime), ConcentratorTime: int64(concentratorTime), GatewayTime: ttnpb.ProtoTime(gatewayTime), } diff --git a/pkg/gatewayserver/io/ws/lbslns/downstream.go b/pkg/gatewayserver/io/ws/lbslns/downstream.go index 07948c4906..1f7b178ba5 100644 --- a/pkg/gatewayserver/io/ws/lbslns/downstream.go +++ b/pkg/gatewayserver/io/ws/lbslns/downstream.go @@ -24,6 +24,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/gatewayserver/io/ws" "go.thethings.network/lorawan-stack/v3/pkg/gatewayserver/scheduling" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/timestamppb" ) // TimestampDownlinkMessage encapsulates the information used for downlinks @@ -161,7 +162,7 @@ func (dnmsg *DownlinkMessage) ToDownlinkMessage(bandID string) (*ttnpb.DownlinkM } down.GetScheduled().DataRate = bandDR.Rate down.GetScheduled().Frequency = uint64(dnmsg.Freq) - down.GetScheduled().Time = ttnpb.ProtoTimePtr(ws.TimeFromGPSTime(dnmsg.GPSTime)) + down.GetScheduled().Time = timestamppb.New(ws.TimeFromGPSTime(dnmsg.GPSTime)) default: panic("unreachable") } diff --git a/pkg/gatewayserver/io/ws/lbslns/downstream_test.go b/pkg/gatewayserver/io/ws/lbslns/downstream_test.go index 8c0bc9b8b4..0dea6f79bc 100644 --- a/pkg/gatewayserver/io/ws/lbslns/downstream_test.go +++ b/pkg/gatewayserver/io/ws/lbslns/downstream_test.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) func TestFromDownlinkMessage(t *testing.T) { @@ -106,7 +107,7 @@ func TestFromDownlinkMessage(t *testing.T) { Downlink: &ttnpb.TxSettings_Downlink{ AntennaIndex: 2, }, - Time: ttnpb.ProtoTimePtr(time.Unix(0x42424242, 0x42424242)), + Time: timestamppb.New(time.Unix(0x42424242, 0x42424242)), }, }, CorrelationIds: []string{"correlation2"}, @@ -220,7 +221,7 @@ func TestToDownlinkMessage(t *testing.T) { Downlink: &ttnpb.TxSettings_Downlink{ AntennaIndex: 2, }, - Time: ttnpb.ProtoTimePtr(time.Unix(0x42424242, 0x42424242).Truncate(time.Microsecond)), + Time: timestamppb.New(time.Unix(0x42424242, 0x42424242).Truncate(time.Microsecond)), }, }, }, diff --git a/pkg/gatewayserver/io/ws/lbslns/upstream.go b/pkg/gatewayserver/io/ws/lbslns/upstream.go index db2f31f2c6..2c65d7de44 100644 --- a/pkg/gatewayserver/io/ws/lbslns/upstream.go +++ b/pkg/gatewayserver/io/ws/lbslns/upstream.go @@ -31,6 +31,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/log" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -187,7 +188,7 @@ func (tsr TimeSyncResponse) MarshalJSON() ([]byte, error) { // toUplinkMessage extracts fields from the Basics Station Join Request "jreq" message and converts them into an UplinkMessage for the network server. func (req *JoinRequest) toUplinkMessage(ids *ttnpb.GatewayIdentifiers, bandID string, receivedAt time.Time) (*ttnpb.UplinkMessage, error) { var up ttnpb.UplinkMessage - up.ReceivedAt = ttnpb.ProtoTimePtr(receivedAt) + up.ReceivedAt = timestamppb.New(receivedAt) parsedMHDR := &ttnpb.MHDR{} if err := lorawan.UnmarshalMHDR([]byte{byte(req.MHdr)}, parsedMHDR); err != nil { @@ -305,7 +306,7 @@ func (req *JoinRequest) FromUplinkMessage(up *ttnpb.UplinkMessage, bandID string // toUplinkMessage extracts fields from the LoRa Basics Station Uplink Data Frame "updf" message and converts them into an UplinkMessage for the network server. func (updf *UplinkDataFrame) toUplinkMessage(ids *ttnpb.GatewayIdentifiers, bandID string, receivedAt time.Time) (*ttnpb.UplinkMessage, error) { var up ttnpb.UplinkMessage - up.ReceivedAt = ttnpb.ProtoTimePtr(receivedAt) + up.ReceivedAt = timestamppb.New(receivedAt) parsedMHDR := &ttnpb.MHDR{} if err := lorawan.UnmarshalMHDR([]byte{byte(updf.MHdr)}, parsedMHDR); err != nil { diff --git a/pkg/gatewayserver/io/ws/lbslns/upstream_test.go b/pkg/gatewayserver/io/ws/lbslns/upstream_test.go index 9f2bebb1d2..50a3646f5e 100644 --- a/pkg/gatewayserver/io/ws/lbslns/upstream_test.go +++ b/pkg/gatewayserver/io/ws/lbslns/upstream_test.go @@ -27,6 +27,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) type message interface { @@ -218,7 +219,7 @@ func TestJoinRequest(t *testing.T) { RxMetadata: []*ttnpb.RxMetadata{ { GatewayIds: gtwID, - Time: ttnpb.ProtoTimePtr(time.Unix(1548059982, 0)), + Time: timestamppb.New(time.Unix(1548059982, 0)), Timestamp: (uint32)(12666373963464220 & 0xFFFFFFFF), Rssi: 89, ChannelRssi: 89, @@ -227,7 +228,7 @@ func TestJoinRequest(t *testing.T) { }, Settings: &ttnpb.TxSettings{ Frequency: 868300000, - Time: ttnpb.ProtoTimePtr(time.Unix(1548059982, 0)), + Time: timestamppb.New(time.Unix(1548059982, 0)), Timestamp: (uint32)(12666373963464220 & 0xFFFFFFFF), DataRate: &ttnpb.DataRate{Modulation: &ttnpb.DataRate_Lora{Lora: &ttnpb.LoRaDataRate{ SpreadingFactor: 11, @@ -336,7 +337,7 @@ func TestUplinkDataFrame(t *testing.T) { RxMetadata: []*ttnpb.RxMetadata{ { GatewayIds: gtwID, - Time: ttnpb.ProtoTimePtr(time.Unix(1548059982, 0)), + Time: timestamppb.New(time.Unix(1548059982, 0)), Timestamp: (uint32)(12666373963464220 & 0xFFFFFFFF), Rssi: 89, ChannelRssi: 89, @@ -345,7 +346,7 @@ func TestUplinkDataFrame(t *testing.T) { }, Settings: &ttnpb.TxSettings{ Timestamp: (uint32)(12666373963464220 & 0xFFFFFFFF), - Time: ttnpb.ProtoTimePtr(time.Unix(1548059982, 0)), + Time: timestamppb.New(time.Unix(1548059982, 0)), Frequency: 868300000, DataRate: &ttnpb.DataRate{Modulation: &ttnpb.DataRate_Lora{Lora: &ttnpb.LoRaDataRate{ SpreadingFactor: 11, @@ -400,7 +401,7 @@ func TestUplinkDataFrame(t *testing.T) { RxMetadata: []*ttnpb.RxMetadata{ { GatewayIds: gtwID, - Time: ttnpb.ProtoTimePtr(time.Unix(1548059982, 0)), + Time: timestamppb.New(time.Unix(1548059982, 0)), Timestamp: (uint32)(12666373963464220 & 0xFFFFFFFF), Rssi: 89, ChannelRssi: 89, @@ -410,7 +411,7 @@ func TestUplinkDataFrame(t *testing.T) { Settings: &ttnpb.TxSettings{ Frequency: 868300000, Timestamp: (uint32)(12666373963464220 & 0xFFFFFFFF), - Time: ttnpb.ProtoTimePtr(time.Unix(1548059982, 0)), + Time: timestamppb.New(time.Unix(1548059982, 0)), DataRate: &ttnpb.DataRate{Modulation: &ttnpb.DataRate_Lora{Lora: &ttnpb.LoRaDataRate{ SpreadingFactor: 11, Bandwidth: 125000, @@ -494,7 +495,7 @@ func TestFromUplinkDataFrame(t *testing.T) { RxMetadata: []*ttnpb.RxMetadata{ { GatewayIds: >wID, - Time: ttnpb.ProtoTimePtr(time.Unix(1548059982, 0)), + Time: timestamppb.New(time.Unix(1548059982, 0)), Timestamp: (uint32)(12666373963464220 & 0xFFFFFFFF), Rssi: 89, Snr: 9.25, @@ -593,7 +594,7 @@ func TestJreqFromUplinkDataFrame(t *testing.T) { RxMetadata: []*ttnpb.RxMetadata{ { GatewayIds: >wID, - Time: ttnpb.ProtoTimePtr(time.Unix(1548059982, 0)), + Time: timestamppb.New(time.Unix(1548059982, 0)), Timestamp: (uint32)(12666373963464220 & 0xFFFFFFFF), Rssi: 89, Snr: 9.25, diff --git a/pkg/gatewayserver/io/ws/lbslns/version.go b/pkg/gatewayserver/io/ws/lbslns/version.go index 0bb6d8facd..6e50909160 100644 --- a/pkg/gatewayserver/io/ws/lbslns/version.go +++ b/pkg/gatewayserver/io/ws/lbslns/version.go @@ -27,6 +27,7 @@ import ( pfconfig "go.thethings.network/lorawan-stack/v3/pkg/pfconfig/lbslns" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/protobuf/types/known/structpb" + "google.golang.org/protobuf/types/known/timestamppb" ) // Version contains version information. @@ -93,7 +94,7 @@ func (*lbsLNS) GetRouterConfig( } // TODO: Revisit these fields for v3 events (https://github.com/TheThingsNetwork/lorawan-stack/issues/2629) stat := &ttnpb.GatewayStatus{ - Time: ttnpb.ProtoTimePtr(receivedAt), + Time: timestamppb.New(receivedAt), Versions: map[string]string{ "station": version.Station, "firmware": version.Firmware, diff --git a/pkg/gatewayserver/io/ws/ws_test.go b/pkg/gatewayserver/io/ws/ws_test.go index 2b20608f7d..8d70cf972c 100644 --- a/pkg/gatewayserver/io/ws/ws_test.go +++ b/pkg/gatewayserver/io/ws/ws_test.go @@ -49,6 +49,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/protobuf/types/known/structpb" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -924,7 +925,7 @@ func TestTraffic(t *testing.T) { GatewayId: "eui-0101010101010101", Eui: types.EUI64{0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}.Bytes(), }, - Time: ttnpb.ProtoTimePtr(time.Unix(1548059982, 0)), + Time: timestamppb.New(time.Unix(1548059982, 0)), Timestamp: (uint32)(12666373963464220 & 0xFFFFFFFF), Rssi: 89, ChannelRssi: 89, @@ -933,7 +934,7 @@ func TestTraffic(t *testing.T) { }, Settings: &ttnpb.TxSettings{ Frequency: 868300000, - Time: ttnpb.ProtoTimePtr(time.Unix(1548059982, 0)), + Time: timestamppb.New(time.Unix(1548059982, 0)), Timestamp: (uint32)(12666373963464220 & 0xFFFFFFFF), DataRate: &ttnpb.DataRate{Modulation: &ttnpb.DataRate_Lora{Lora: &ttnpb.LoRaDataRate{ SpreadingFactor: 11, @@ -1086,7 +1087,7 @@ func TestTraffic(t *testing.T) { }, Rx1Frequency: 868100000, FrequencyPlanId: test.EUFrequencyPlanID, - AbsoluteTime: ttnpb.ProtoTimePtr(now.Add(30 * time.Second)), + AbsoluteTime: timestamppb.New(now.Add(30 * time.Second)), }, }, CorrelationIds: []string{"correlation1", "correlation2"}, @@ -1168,8 +1169,8 @@ func TestTraffic(t *testing.T) { for i, md := range expectedUp.RxMetadata { md.UplinkToken = up.Message.RxMetadata[i].UplinkToken md.Timestamp = timestamp - md.Time = ttnpb.ProtoTimePtr(now) - md.GpsTime = ttnpb.ProtoTimePtr(now) + md.Time = timestamppb.New(now) + md.GpsTime = timestamppb.New(now) md.ReceivedAt = expectedUp.ReceivedAt } expectedUp.Settings.Timestamp = timestamp @@ -1207,8 +1208,8 @@ func TestTraffic(t *testing.T) { for i, md := range expectedUp.RxMetadata { md.UplinkToken = up.Message.RxMetadata[i].UplinkToken md.Timestamp = timestamp - md.Time = ttnpb.ProtoTimePtr(now) - md.GpsTime = ttnpb.ProtoTimePtr(now) + md.Time = timestamppb.New(now) + md.GpsTime = timestamppb.New(now) md.ReceivedAt = expectedUp.ReceivedAt } expectedUp.Settings.Timestamp = timestamp diff --git a/pkg/gatewayserver/redis/registry_test.go b/pkg/gatewayserver/redis/registry_test.go index 1655735881..39622749be 100644 --- a/pkg/gatewayserver/redis/registry_test.go +++ b/pkg/gatewayserver/redis/registry_test.go @@ -23,6 +23,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) var Timeout = 10 * test.Delay @@ -55,11 +56,11 @@ func TestRegistry(t *testing.T) { now := time.Now().UTC() initialStats := &ttnpb.GatewayConnectionStats{ - ConnectedAt: ttnpb.ProtoTimePtr(now), + ConnectedAt: timestamppb.New(now), Protocol: "dummy", - LastDownlinkReceivedAt: ttnpb.ProtoTimePtr(now), + LastDownlinkReceivedAt: timestamppb.New(now), DownlinkCount: 1, - LastUplinkReceivedAt: ttnpb.ProtoTimePtr(now), + LastUplinkReceivedAt: timestamppb.New(now), UplinkCount: 1, } @@ -135,7 +136,7 @@ func TestRegistry(t *testing.T) { t.Run("SetWithTTL", func(t *testing.T) { a, ctx := test.New(t) stats := &ttnpb.GatewayConnectionStats{ - DisconnectedAt: ttnpb.ProtoTimePtr(time.Date(2021, 12, 2, 11, 24, 58, 0, time.UTC)), + DisconnectedAt: timestamppb.New(time.Date(2021, 12, 2, 11, 24, 58, 0, time.UTC)), } err := registry.Set(ctx, ids, stats, []string{"disconnected_at"}, Timeout) @@ -158,7 +159,7 @@ func TestRegistry(t *testing.T) { a, ctx := test.New(t) stats := &ttnpb.GatewayConnectionStats{ - LastUplinkReceivedAt: ttnpb.ProtoTimePtr(now), + LastUplinkReceivedAt: timestamppb.New(now), UplinkCount: 1, DownlinkCount: 1, } @@ -171,7 +172,7 @@ func TestRegistry(t *testing.T) { retrieved, err := registry.Get(ctx, ids) a.So(err, should.BeNil) a.So(retrieved, should.Resemble, &ttnpb.GatewayConnectionStats{ - LastUplinkReceivedAt: ttnpb.ProtoTimePtr(now), + LastUplinkReceivedAt: timestamppb.New(now), UplinkCount: 1, }) @@ -181,7 +182,7 @@ func TestRegistry(t *testing.T) { retrieved, err = registry.Get(ctx, ids) a.So(err, should.BeNil) a.So(retrieved, should.Resemble, &ttnpb.GatewayConnectionStats{ - LastUplinkReceivedAt: ttnpb.ProtoTimePtr(now), + LastUplinkReceivedAt: timestamppb.New(now), UplinkCount: 1, DownlinkCount: 1, }) diff --git a/pkg/gatewayserver/scheduling/scheduler_test.go b/pkg/gatewayserver/scheduling/scheduler_test.go index c1627d5dda..7b60463a2e 100644 --- a/pkg/gatewayserver/scheduling/scheduler_test.go +++ b/pkg/gatewayserver/scheduling/scheduler_test.go @@ -29,6 +29,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) func TestScheduleAtWithBandDutyCycle(t *testing.T) { @@ -95,7 +96,7 @@ func TestScheduleAtWithBandDutyCycle(t *testing.T) { }, }, Frequency: 869525000, - Time: ttnpb.ProtoTimePtr(time.Unix(0, int64(100*time.Millisecond))), + Time: timestamppb.New(time.Unix(0, int64(100*time.Millisecond))), }, Priority: ttnpb.TxSchedulePriority_NORMAL, ExpectedToa: 2465792 * time.Microsecond, @@ -137,7 +138,7 @@ func TestScheduleAtWithBandDutyCycle(t *testing.T) { }, }, Frequency: 869525000, - Time: ttnpb.ProtoTimePtr(time.Unix(0, int64(300*time.Millisecond))), + Time: timestamppb.New(time.Unix(0, int64(300*time.Millisecond))), }, Priority: ttnpb.TxSchedulePriority_NORMAL, NPercentileRTT: durationPtr(500 * time.Millisecond), @@ -178,7 +179,7 @@ func TestScheduleAtWithBandDutyCycle(t *testing.T) { }, }, Frequency: 868100000, - Time: ttnpb.ProtoTimePtr(time.Unix(0, int64(1*time.Second))), + Time: timestamppb.New(time.Unix(0, int64(1*time.Second))), }, Priority: ttnpb.TxSchedulePriority_HIGHEST, MedianRTT: durationPtr(200 * time.Millisecond), @@ -199,7 +200,7 @@ func TestScheduleAtWithBandDutyCycle(t *testing.T) { }, }, Frequency: 868100000, - Time: ttnpb.ProtoTimePtr(time.Unix(0, int64(1*time.Minute))), + Time: timestamppb.New(time.Unix(0, int64(1*time.Minute))), }, Priority: ttnpb.TxSchedulePriority_HIGHEST, ExpectedToa: 51456 * time.Microsecond, @@ -1204,7 +1205,7 @@ func TestScheduleSyncViaUplinkToken(t *testing.T) { Timestamp: 6000000, }, UplinkToken: &ttnpb.UplinkToken{ - ServerTime: ttnpb.ProtoTimePtr(t), + ServerTime: timestamppb.New(t), Timestamp: 5000000, ConcentratorTime: 5000000000, }, @@ -1239,7 +1240,7 @@ func TestScheduleSyncViaUplinkToken(t *testing.T) { Timestamp: 7000000, }, UplinkToken: &ttnpb.UplinkToken{ - ServerTime: ttnpb.ProtoTimePtr(t), + ServerTime: timestamppb.New(t), Timestamp: 5000000, ConcentratorTime: 5000000000, }, diff --git a/pkg/identityserver/bunstore/api_key_store.go b/pkg/identityserver/bunstore/api_key_store.go index 4b7efb7449..ded05890d6 100644 --- a/pkg/identityserver/bunstore/api_key_store.go +++ b/pkg/identityserver/bunstore/api_key_store.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/timestamppb" ) // APIKey is the API key model in the database. @@ -61,8 +62,8 @@ func apiKeyToPB(m *APIKey) (*ttnpb.APIKey, error) { Key: m.Key, Name: m.Name, Rights: convertIntSlice[int, ttnpb.Right](m.Rights), - CreatedAt: ttnpb.ProtoTimePtr(m.CreatedAt), - UpdatedAt: ttnpb.ProtoTimePtr(m.UpdatedAt), + CreatedAt: timestamppb.New(m.CreatedAt), + UpdatedAt: timestamppb.New(m.UpdatedAt), ExpiresAt: ttnpb.ProtoTime(m.ExpiresAt), } return pb, nil diff --git a/pkg/identityserver/bunstore/application_store.go b/pkg/identityserver/bunstore/application_store.go index 10bf687dea..e0c008c911 100644 --- a/pkg/identityserver/bunstore/application_store.go +++ b/pkg/identityserver/bunstore/application_store.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/timestamppb" ) // Application is the application model in the database. @@ -71,8 +72,8 @@ func applicationToPB(m *Application, fieldMask ...string) (*ttnpb.Application, e ApplicationId: m.ApplicationID, }, - CreatedAt: ttnpb.ProtoTimePtr(m.CreatedAt), - UpdatedAt: ttnpb.ProtoTimePtr(m.UpdatedAt), + CreatedAt: timestamppb.New(m.CreatedAt), + UpdatedAt: timestamppb.New(m.UpdatedAt), DeletedAt: ttnpb.ProtoTime(m.DeletedAt), Name: m.Name, diff --git a/pkg/identityserver/bunstore/client_store.go b/pkg/identityserver/bunstore/client_store.go index 2995f27716..9da13924fe 100644 --- a/pkg/identityserver/bunstore/client_store.go +++ b/pkg/identityserver/bunstore/client_store.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/timestamppb" ) // Client is the client model in the database. @@ -79,8 +80,8 @@ func clientToPB(m *Client, fieldMask ...string) (*ttnpb.Client, error) { ClientId: m.ClientID, }, - CreatedAt: ttnpb.ProtoTimePtr(m.CreatedAt), - UpdatedAt: ttnpb.ProtoTimePtr(m.UpdatedAt), + CreatedAt: timestamppb.New(m.CreatedAt), + UpdatedAt: timestamppb.New(m.UpdatedAt), DeletedAt: ttnpb.ProtoTime(m.DeletedAt), Name: m.Name, diff --git a/pkg/identityserver/bunstore/contact_info_store.go b/pkg/identityserver/bunstore/contact_info_store.go index 93932969e8..8a43ade889 100644 --- a/pkg/identityserver/bunstore/contact_info_store.go +++ b/pkg/identityserver/bunstore/contact_info_store.go @@ -27,6 +27,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/timestamppb" ) // ContactInfo is the contact info model in the database. @@ -368,7 +369,7 @@ func (s *contactInfoStore) CreateValidation( Token: model.Token, Entity: pb.Entity, ContactInfo: pb.ContactInfo, - CreatedAt: ttnpb.ProtoTimePtr(model.CreatedAt), + CreatedAt: timestamppb.New(model.CreatedAt), ExpiresAt: ttnpb.ProtoTime(model.ExpiresAt), }, nil } diff --git a/pkg/identityserver/bunstore/end_device_store.go b/pkg/identityserver/bunstore/end_device_store.go index 46495e2b10..1d223a1f17 100644 --- a/pkg/identityserver/bunstore/end_device_store.go +++ b/pkg/identityserver/bunstore/end_device_store.go @@ -28,6 +28,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/timestamppb" ) // EndDevice is the end_device model in the database. @@ -103,8 +104,8 @@ func endDeviceToPB(m *EndDevice, fieldMask ...string) (*ttnpb.EndDevice, error) JoinEui: joinEUI, }, - CreatedAt: ttnpb.ProtoTimePtr(m.CreatedAt), - UpdatedAt: ttnpb.ProtoTimePtr(m.UpdatedAt), + CreatedAt: timestamppb.New(m.CreatedAt), + UpdatedAt: timestamppb.New(m.UpdatedAt), Name: m.Name, Description: m.Description, diff --git a/pkg/identityserver/bunstore/gateway_store.go b/pkg/identityserver/bunstore/gateway_store.go index 31e27c9950..caa31d5ec0 100644 --- a/pkg/identityserver/bunstore/gateway_store.go +++ b/pkg/identityserver/bunstore/gateway_store.go @@ -29,6 +29,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/timestamppb" ) // Gateway is the gateway model in the database. @@ -114,8 +115,8 @@ func gatewayToPB(m *Gateway, fieldMask ...string) (*ttnpb.Gateway, error) { Eui: eui, }, - CreatedAt: ttnpb.ProtoTimePtr(m.CreatedAt), - UpdatedAt: ttnpb.ProtoTimePtr(m.UpdatedAt), + CreatedAt: timestamppb.New(m.CreatedAt), + UpdatedAt: timestamppb.New(m.UpdatedAt), DeletedAt: ttnpb.ProtoTime(m.DeletedAt), Name: m.Name, diff --git a/pkg/identityserver/bunstore/invitation_store.go b/pkg/identityserver/bunstore/invitation_store.go index d921c5c3c9..61a79e4fd5 100644 --- a/pkg/identityserver/bunstore/invitation_store.go +++ b/pkg/identityserver/bunstore/invitation_store.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/timestamppb" ) // Invitation is the invitation model in the database. @@ -56,8 +57,8 @@ func invitationToPB(m *Invitation) (*ttnpb.Invitation, error) { Email: m.Email, Token: m.Token, ExpiresAt: ttnpb.ProtoTime(m.ExpiresAt), - CreatedAt: ttnpb.ProtoTimePtr(m.CreatedAt), - UpdatedAt: ttnpb.ProtoTimePtr(m.UpdatedAt), + CreatedAt: timestamppb.New(m.CreatedAt), + UpdatedAt: timestamppb.New(m.UpdatedAt), AcceptedAt: ttnpb.ProtoTime(m.AcceptedAt), } if m.AcceptedBy != nil { diff --git a/pkg/identityserver/bunstore/login_token_store.go b/pkg/identityserver/bunstore/login_token_store.go index 36be014f33..d363787731 100644 --- a/pkg/identityserver/bunstore/login_token_store.go +++ b/pkg/identityserver/bunstore/login_token_store.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/timestamppb" ) // LoginToken is the login token model in the database. @@ -56,8 +57,8 @@ func loginTokenToPB(m *LoginToken, userIDs *ttnpb.UserIdentifiers) (*ttnpb.Login Token: m.Token, ExpiresAt: ttnpb.ProtoTime(m.ExpiresAt), Used: m.Used, - CreatedAt: ttnpb.ProtoTimePtr(m.CreatedAt), - UpdatedAt: ttnpb.ProtoTimePtr(m.UpdatedAt), + CreatedAt: timestamppb.New(m.CreatedAt), + UpdatedAt: timestamppb.New(m.UpdatedAt), } if userIDs == nil && m.User != nil { pb.UserIds = &ttnpb.UserIdentifiers{ diff --git a/pkg/identityserver/bunstore/notification_store.go b/pkg/identityserver/bunstore/notification_store.go index 1cbc6d27d4..2022d4051b 100644 --- a/pkg/identityserver/bunstore/notification_store.go +++ b/pkg/identityserver/bunstore/notification_store.go @@ -27,6 +27,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/jsonpb" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/timestamppb" ) // Notification is the notification model in the database. @@ -84,7 +85,7 @@ func (NotificationReceiver) _isModel() {} // It doesn't embed Model, but it's st func notificationToPB(m *Notification, r *NotificationReceiver) (*ttnpb.Notification, error) { pb := &ttnpb.Notification{ Id: m.ID, - CreatedAt: ttnpb.ProtoTimePtr(m.CreatedAt), + CreatedAt: timestamppb.New(m.CreatedAt), EntityIds: getEntityIdentifiers(m.EntityType, m.EntityUID), NotificationType: m.NotificationType, Receivers: convertIntSlice[int, ttnpb.NotificationReceiver](m.Receivers), @@ -103,7 +104,7 @@ func notificationToPB(m *Notification, r *NotificationReceiver) (*ttnpb.Notifica } if r != nil { pb.Status = ttnpb.NotificationStatus(r.Status) - pb.StatusUpdatedAt = ttnpb.ProtoTimePtr(r.StatusUpdatedAt) + pb.StatusUpdatedAt = timestamppb.New(r.StatusUpdatedAt) } return pb, nil } diff --git a/pkg/identityserver/bunstore/oauth_store.go b/pkg/identityserver/bunstore/oauth_store.go index 2e6f5b5312..ed24c21509 100644 --- a/pkg/identityserver/bunstore/oauth_store.go +++ b/pkg/identityserver/bunstore/oauth_store.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/timestamppb" ) // ClientAuthorization is the OAuth client authorization model in the database. @@ -57,8 +58,8 @@ func clientAuthorizationToPB( UserIds: userIDs, ClientIds: clientIDs, Rights: convertIntSlice[int, ttnpb.Right](m.Rights), - CreatedAt: ttnpb.ProtoTimePtr(m.CreatedAt), - UpdatedAt: ttnpb.ProtoTimePtr(m.UpdatedAt), + CreatedAt: timestamppb.New(m.CreatedAt), + UpdatedAt: timestamppb.New(m.UpdatedAt), } if pb.UserIds == nil && m.User != nil { pb.UserIds = &ttnpb.UserIdentifiers{ @@ -116,7 +117,7 @@ func authorizationCodeToPB( Code: m.Code, RedirectUri: m.RedirectURI, State: m.State, - CreatedAt: ttnpb.ProtoTimePtr(m.CreatedAt), + CreatedAt: timestamppb.New(m.CreatedAt), ExpiresAt: ttnpb.ProtoTime(m.ExpiresAt), } if pb.UserIds == nil && m.User != nil { @@ -179,7 +180,7 @@ func accessTokenToPB( AccessToken: m.AccessToken, RefreshToken: m.RefreshToken, Rights: convertIntSlice[int, ttnpb.Right](m.Rights), - CreatedAt: ttnpb.ProtoTimePtr(m.CreatedAt), + CreatedAt: timestamppb.New(m.CreatedAt), ExpiresAt: ttnpb.ProtoTime(m.ExpiresAt), } if pb.UserIds == nil && m.User != nil { diff --git a/pkg/identityserver/bunstore/organization_store.go b/pkg/identityserver/bunstore/organization_store.go index 48ccb620ab..bba5bc7b70 100644 --- a/pkg/identityserver/bunstore/organization_store.go +++ b/pkg/identityserver/bunstore/organization_store.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/timestamppb" ) // Organization is the organization model in the database. @@ -65,8 +66,8 @@ func organizationToPB(m *Organization, fieldMask ...string) (*ttnpb.Organization OrganizationId: m.Account.UID, }, - CreatedAt: ttnpb.ProtoTimePtr(m.CreatedAt), - UpdatedAt: ttnpb.ProtoTimePtr(m.UpdatedAt), + CreatedAt: timestamppb.New(m.CreatedAt), + UpdatedAt: timestamppb.New(m.UpdatedAt), DeletedAt: ttnpb.ProtoTime(m.DeletedAt), Name: m.Name, diff --git a/pkg/identityserver/bunstore/user_session_store.go b/pkg/identityserver/bunstore/user_session_store.go index 654ba6ec74..c00daf2f62 100644 --- a/pkg/identityserver/bunstore/user_session_store.go +++ b/pkg/identityserver/bunstore/user_session_store.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/timestamppb" ) // UserSession is the user session model in the database. @@ -53,8 +54,8 @@ func userSessionToPB(m *UserSession, userIDs *ttnpb.UserIdentifiers) (*ttnpb.Use pb := &ttnpb.UserSession{ UserIds: userIDs, SessionId: m.ID, - CreatedAt: ttnpb.ProtoTimePtr(m.CreatedAt), - UpdatedAt: ttnpb.ProtoTimePtr(m.UpdatedAt), + CreatedAt: timestamppb.New(m.CreatedAt), + UpdatedAt: timestamppb.New(m.UpdatedAt), ExpiresAt: ttnpb.ProtoTime(m.ExpiresAt), SessionSecret: m.SessionSecret, } diff --git a/pkg/identityserver/bunstore/user_store.go b/pkg/identityserver/bunstore/user_store.go index 57b3845130..3e2b7a0373 100644 --- a/pkg/identityserver/bunstore/user_store.go +++ b/pkg/identityserver/bunstore/user_store.go @@ -27,6 +27,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/timestamppb" ) // User is the user model in the database. @@ -79,8 +80,8 @@ func userToPB(m *User, fieldMask ...string) (*ttnpb.User, error) { UserId: m.Account.UID, }, - CreatedAt: ttnpb.ProtoTimePtr(m.CreatedAt), - UpdatedAt: ttnpb.ProtoTimePtr(m.UpdatedAt), + CreatedAt: timestamppb.New(m.CreatedAt), + UpdatedAt: timestamppb.New(m.UpdatedAt), DeletedAt: ttnpb.ProtoTime(m.DeletedAt), Name: m.Name, @@ -90,7 +91,7 @@ func userToPB(m *User, fieldMask ...string) (*ttnpb.User, error) { PrimaryEmailAddressValidatedAt: ttnpb.ProtoTime(m.PrimaryEmailAddressValidatedAt), Password: m.Password, - PasswordUpdatedAt: ttnpb.ProtoTimePtr(m.PasswordUpdatedAt), + PasswordUpdatedAt: timestamppb.New(m.PasswordUpdatedAt), RequirePasswordUpdate: m.RequirePasswordUpdate, State: ttnpb.State(m.State), diff --git a/pkg/identityserver/contact_info_registry.go b/pkg/identityserver/contact_info_registry.go index a13cece727..7fb316d25f 100644 --- a/pkg/identityserver/contact_info_registry.go +++ b/pkg/identityserver/contact_info_registry.go @@ -27,6 +27,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/log" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/protobuf/types/known/emptypb" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -89,8 +90,8 @@ func (is *IdentityServer) requestContactInfoValidation(ctx context.Context, ids Id: id, Token: key, Entity: ids, - CreatedAt: ttnpb.ProtoTimePtr(now), - ExpiresAt: ttnpb.ProtoTimePtr(expires), + CreatedAt: timestamppb.New(now), + ExpiresAt: timestamppb.New(expires), } emailValidations[info.Value] = validation } @@ -147,7 +148,7 @@ func (is *IdentityServer) requestContactInfoValidation(ctx context.Context, ids Id: id, Entity: ids, ContactInfo: pendingContactInfo, - CreatedAt: ttnpb.ProtoTimePtr(now), + CreatedAt: timestamppb.New(now), }, nil } diff --git a/pkg/identityserver/entity_access_test.go b/pkg/identityserver/entity_access_test.go index c9a1895651..d6173444a4 100644 --- a/pkg/identityserver/entity_access_test.go +++ b/pkg/identityserver/entity_access_test.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" "google.golang.org/grpc/metadata" + "google.golang.org/protobuf/types/known/timestamppb" ) func TestEntityAccess(t *testing.T) { @@ -54,7 +55,7 @@ func TestEntityAccess(t *testing.T) { adminUsrCreds := rpcCreds(adminUsrKey) expiredKey, storedKey := p.NewAPIKey(adminUsr.GetEntityIdentifiers(), ttnpb.Right_RIGHT_ALL) - storedKey.ExpiresAt = ttnpb.ProtoTimePtr(time.Now().Add(-10 * time.Minute)) + storedKey.ExpiresAt = timestamppb.New(time.Now().Add(-10 * time.Minute)) expiredCreds := rpcCreds(expiredKey) testWithIdentityServer(t, func(is *IdentityServer, cc *grpc.ClientConn) { diff --git a/pkg/identityserver/invitation_registry.go b/pkg/identityserver/invitation_registry.go index 4eba5ca215..0662344d2a 100644 --- a/pkg/identityserver/invitation_registry.go +++ b/pkg/identityserver/invitation_registry.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/protobuf/types/known/emptypb" + "google.golang.org/protobuf/types/known/timestamppb" ) var evtCreateInvitation = events.Define( @@ -57,7 +58,7 @@ func (is *IdentityServer) sendInvitation(ctx context.Context, in *ttnpb.SendInvi invitation := &ttnpb.Invitation{ Email: in.Email, Token: token, - ExpiresAt: ttnpb.ProtoTimePtr(expires), + ExpiresAt: timestamppb.New(expires), } err = is.store.Transact(ctx, func(ctx context.Context, st store.Store) (err error) { invitation, err = st.CreateInvitation(ctx, invitation) diff --git a/pkg/identityserver/storetest/api_key_store.go b/pkg/identityserver/storetest/api_key_store.go index 9f89639c86..5fa790f684 100644 --- a/pkg/identityserver/storetest/api_key_store.go +++ b/pkg/identityserver/storetest/api_key_store.go @@ -27,6 +27,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) type apiKeysByID []*ttnpb.APIKey @@ -156,7 +157,7 @@ func (st *StoreTest) TestAPIKeyStoreCRUD(t *T) { Id: id, Name: "Updated Name", Rights: allRights.GetRights(), - ExpiresAt: ttnpb.ProtoTimePtr(start.Add(5 * time.Minute)), + ExpiresAt: timestamppb.New(start.Add(5 * time.Minute)), }, fieldMask("name", "rights", "expires_at")) if a.So(err, should.BeNil) && a.So(updated, should.NotBeNil) { a.So(updated.Name, should.Equal, "Updated Name") diff --git a/pkg/identityserver/storetest/contact_info_store.go b/pkg/identityserver/storetest/contact_info_store.go index 7ae62a1747..390c818dda 100644 --- a/pkg/identityserver/storetest/contact_info_store.go +++ b/pkg/identityserver/storetest/contact_info_store.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) func (st *StoreTest) TestContactInfoStoreCRUD(t *T) { @@ -93,7 +94,7 @@ func (st *StoreTest) TestContactInfoStoreCRUD(t *T) { Token: "EXPIRED_TOKEN", Entity: ids, ContactInfo: []*ttnpb.ContactInfo{info}, - ExpiresAt: ttnpb.ProtoTimePtr(start.Add(-1 * time.Minute)), + ExpiresAt: timestamppb.New(start.Add(-1 * time.Minute)), }) if !a.So(err, should.BeNil) { t.FailNow() @@ -107,7 +108,7 @@ func (st *StoreTest) TestContactInfoStoreCRUD(t *T) { Token: "TOKEN", Entity: ids, ContactInfo: []*ttnpb.ContactInfo{info}, - ExpiresAt: ttnpb.ProtoTimePtr(start.Add(5 * time.Minute)), + ExpiresAt: timestamppb.New(start.Add(5 * time.Minute)), }) if a.So(err, should.BeNil) && a.So(created, should.NotBeNil) { a.So(created.Id, should.Equal, validationID) @@ -126,7 +127,7 @@ func (st *StoreTest) TestContactInfoStoreCRUD(t *T) { Token: "OTHER_TOKEN", Entity: ids, ContactInfo: []*ttnpb.ContactInfo{info}, - ExpiresAt: ttnpb.ProtoTimePtr(start.Add(5 * time.Minute)), + ExpiresAt: timestamppb.New(start.Add(5 * time.Minute)), }) if a.So(err, should.NotBeNil) { a.So(errors.IsAlreadyExists(err), should.BeTrue) @@ -198,14 +199,14 @@ func (st *StoreTest) TestContactInfoStoreCRUD(t *T) { ContactMethod: ttnpb.ContactMethod_CONTACT_METHOD_EMAIL, Value: "foo@example.com", Public: false, - ValidatedAt: ttnpb.ProtoTimePtr(start.Add(time.Minute)), + ValidatedAt: timestamppb.New(start.Add(time.Minute)), } extraInfo := &ttnpb.ContactInfo{ ContactType: ttnpb.ContactType_CONTACT_TYPE_TECHNICAL, ContactMethod: ttnpb.ContactMethod_CONTACT_METHOD_EMAIL, Value: "extra@example.com", Public: true, - ValidatedAt: ttnpb.ProtoTimePtr(start.Add(time.Minute)), + ValidatedAt: timestamppb.New(start.Add(time.Minute)), } t.Run("UpdateContactInfo", func(t *T) { diff --git a/pkg/identityserver/storetest/end_device_store.go b/pkg/identityserver/storetest/end_device_store.go index 64e77d6896..fb8e0715fd 100644 --- a/pkg/identityserver/storetest/end_device_store.go +++ b/pkg/identityserver/storetest/end_device_store.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) var endDeviceMask = fieldMask( @@ -85,7 +86,7 @@ func (st *StoreTest) TestEndDeviceStoreCRUD(t *T) { } start := time.Now().Truncate(time.Second) claim := &ttnpb.EndDeviceAuthenticationCode{ - ValidFrom: ttnpb.ProtoTimePtr(start), + ValidFrom: timestamppb.New(start), Value: "secret", } var created *ttnpb.EndDevice @@ -124,7 +125,7 @@ func (st *StoreTest) TestEndDeviceStoreCRUD(t *T) { "wifi": wifiLocation, }, Picture: picture, - ActivatedAt: ttnpb.ProtoTimePtr(stamp), + ActivatedAt: timestamppb.New(stamp), ClaimAuthenticationCode: claim, }) @@ -287,8 +288,8 @@ func (st *StoreTest) TestEndDeviceStoreCRUD(t *T) { VendorProfileId: 2, } updatedCAC := &ttnpb.EndDeviceAuthenticationCode{ - ValidFrom: ttnpb.ProtoTimePtr(start), - ValidTo: ttnpb.ProtoTimePtr(start.Add(time.Hour)), + ValidFrom: timestamppb.New(start), + ValidTo: timestamppb.New(start.Add(time.Hour)), Value: "other secret", } var updated *ttnpb.EndDevice @@ -325,8 +326,8 @@ func (st *StoreTest) TestEndDeviceStoreCRUD(t *T) { "geo": extraLocation, }, Picture: updatedPicture, - ActivatedAt: ttnpb.ProtoTimePtr(stamp), - LastSeenAt: ttnpb.ProtoTimePtr(stamp), + ActivatedAt: timestamppb.New(stamp), + LastSeenAt: timestamppb.New(stamp), ClaimAuthenticationCode: updatedCAC, } @@ -538,9 +539,9 @@ func (st *StoreTest) TestEndDeviceBatchUpdate(t *T) { a, ctx := test.New(t) validDevTime := time.Now().Truncate(time.Millisecond) - dev1.LastSeenAt = ttnpb.ProtoTimePtr(validDevTime) - dev2.LastSeenAt = ttnpb.ProtoTimePtr(validDevTime) - dev3.LastSeenAt = ttnpb.ProtoTimePtr(validDevTime.Add(10 * time.Second)) + dev1.LastSeenAt = timestamppb.New(validDevTime) + dev2.LastSeenAt = timestamppb.New(validDevTime) + dev3.LastSeenAt = timestamppb.New(validDevTime.Add(10 * time.Second)) batch := []*ttnpb.BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate{ {Ids: dev1.Ids, LastSeenAt: dev1.LastSeenAt}, @@ -556,18 +557,18 @@ func (st *StoreTest) TestEndDeviceBatchUpdate(t *T) { for _, dev := range got { a.So(dev.LastSeenAt, should.NotBeNil) if dev.Ids.DeviceId == dev1.Ids.DeviceId { - a.So(dev.LastSeenAt, should.Resemble, ttnpb.ProtoTimePtr(validDevTime)) + a.So(dev.LastSeenAt, should.Resemble, timestamppb.New(validDevTime)) } else if dev.Ids.DeviceId == dev2.Ids.DeviceId { - a.So(dev.LastSeenAt, should.Resemble, ttnpb.ProtoTimePtr(validDevTime)) + a.So(dev.LastSeenAt, should.Resemble, timestamppb.New(validDevTime)) } else if dev.Ids.DeviceId == dev3.Ids.DeviceId { - a.So(dev.LastSeenAt, should.Resemble, ttnpb.ProtoTimePtr(validDevTime.Add(10*time.Second))) + a.So(dev.LastSeenAt, should.Resemble, timestamppb.New(validDevTime.Add(10*time.Second))) } } } - invalidDev1Time := ttnpb.ProtoTimePtr(time.Now().Add(-10 * time.Minute).Truncate(time.Millisecond)) - invalidDev2Time := ttnpb.ProtoTimePtr(time.Now().Add(-5 * time.Minute).Truncate(time.Millisecond)) - invalidDev3Time := ttnpb.ProtoTimePtr(time.Now().Add(-1 * time.Minute).Truncate(time.Millisecond)) + invalidDev1Time := timestamppb.New(time.Now().Add(-10 * time.Minute).Truncate(time.Millisecond)) + invalidDev2Time := timestamppb.New(time.Now().Add(-5 * time.Minute).Truncate(time.Millisecond)) + invalidDev3Time := timestamppb.New(time.Now().Add(-1 * time.Minute).Truncate(time.Millisecond)) dev1.LastSeenAt = invalidDev1Time dev2.LastSeenAt = invalidDev2Time dev3.LastSeenAt = invalidDev3Time @@ -586,11 +587,11 @@ func (st *StoreTest) TestEndDeviceBatchUpdate(t *T) { for _, dev := range got { a.So(dev.LastSeenAt, should.NotBeNil) if dev.Ids.DeviceId == dev1.Ids.DeviceId { - a.So(dev.LastSeenAt, should.Resemble, ttnpb.ProtoTimePtr(validDevTime)) + a.So(dev.LastSeenAt, should.Resemble, timestamppb.New(validDevTime)) } else if dev.Ids.DeviceId == dev2.Ids.DeviceId { - a.So(dev.LastSeenAt, should.Resemble, ttnpb.ProtoTimePtr(validDevTime)) + a.So(dev.LastSeenAt, should.Resemble, timestamppb.New(validDevTime)) } else if dev.Ids.DeviceId == dev3.Ids.DeviceId { - a.So(dev.LastSeenAt, should.Resemble, ttnpb.ProtoTimePtr(validDevTime.Add(10*time.Second))) + a.So(dev.LastSeenAt, should.Resemble, timestamppb.New(validDevTime.Add(10*time.Second))) } } } @@ -598,7 +599,7 @@ func (st *StoreTest) TestEndDeviceBatchUpdate(t *T) { // Test duplicates in batch update call. batch = []*ttnpb.BatchUpdateEndDeviceLastSeenRequest_EndDeviceLastSeenUpdate{ {Ids: dev1.Ids, LastSeenAt: dev1.LastSeenAt}, - {Ids: dev1.Ids, LastSeenAt: ttnpb.ProtoTimePtr(validDevTime.Add(10 * time.Second))}, + {Ids: dev1.Ids, LastSeenAt: timestamppb.New(validDevTime.Add(10 * time.Second))}, } err = s.BatchUpdateEndDeviceLastSeen(ctx, batch) @@ -606,7 +607,7 @@ func (st *StoreTest) TestEndDeviceBatchUpdate(t *T) { dev, err := s.GetEndDevice(ctx, dev1.Ids, []string{"last_seen_at"}) if a.So(err, should.BeNil) && a.So(dev, should.NotBeNil) && a.So(dev.LastSeenAt, should.NotBeNil) { - a.So(dev.LastSeenAt, should.Resemble, ttnpb.ProtoTimePtr(validDevTime.Add(10*time.Second))) + a.So(dev.LastSeenAt, should.Resemble, timestamppb.New(validDevTime.Add(10*time.Second))) } }) } diff --git a/pkg/identityserver/storetest/gateway_store.go b/pkg/identityserver/storetest/gateway_store.go index 8c89dd9b5a..846cfc4e39 100644 --- a/pkg/identityserver/storetest/gateway_store.go +++ b/pkg/identityserver/storetest/gateway_store.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) func (st *StoreTest) TestGatewayStoreCRUD(t *T) { @@ -56,7 +57,7 @@ func (st *StoreTest) TestGatewayStoreCRUD(t *T) { Value: []byte("some bytes"), } claim := &ttnpb.GatewayClaimAuthenticationCode{ - ValidFrom: ttnpb.ProtoTimePtr(start), + ValidFrom: timestamppb.New(start), Secret: secret, } var created *ttnpb.Gateway @@ -213,8 +214,8 @@ func (st *StoreTest) TestGatewayStoreCRUD(t *T) { Value: []byte("other bytes"), } updatedClaim := &ttnpb.GatewayClaimAuthenticationCode{ - ValidFrom: ttnpb.ProtoTimePtr(start), - ValidTo: ttnpb.ProtoTimePtr(start.Add(time.Hour)), + ValidFrom: timestamppb.New(start), + ValidTo: timestamppb.New(start.Add(time.Hour)), Secret: secret, } var updated *ttnpb.Gateway diff --git a/pkg/identityserver/storetest/invitation_store.go b/pkg/identityserver/storetest/invitation_store.go index c03eb224e1..0faaea9080 100644 --- a/pkg/identityserver/storetest/invitation_store.go +++ b/pkg/identityserver/storetest/invitation_store.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) func (st *StoreTest) TestInvitationStore(t *T) { @@ -52,7 +53,7 @@ func (st *StoreTest) TestInvitationStore(t *T) { created, err = s.CreateInvitation(ctx, &ttnpb.Invitation{ Email: "foo@example.com", Token: "TOKEN", - ExpiresAt: ttnpb.ProtoTimePtr(start.Add(5 * time.Minute)), + ExpiresAt: timestamppb.New(start.Add(5 * time.Minute)), }) if a.So(err, should.BeNil) && a.So(created, should.NotBeNil) { @@ -197,7 +198,7 @@ func (st *StoreTest) TestInvitationStore(t *T) { _, err := s.CreateInvitation(ctx, &ttnpb.Invitation{ Email: "expired@example.com", Token: "EXPIRED_TOKEN", - ExpiresAt: ttnpb.ProtoTimePtr(start.Add(-1 * time.Minute)), + ExpiresAt: timestamppb.New(start.Add(-1 * time.Minute)), }) if !a.So(err, should.BeNil) { t.FailNow() @@ -234,7 +235,7 @@ func (st *StoreTest) TestInvitationStorePagination(t *T) { created, err := s.CreateInvitation(ctx, &ttnpb.Invitation{ Email: fmt.Sprintf("user%d@example.com", i+1), Token: fmt.Sprintf("TOKEN%d", i+1), - ExpiresAt: ttnpb.ProtoTimePtr(start.Add(time.Minute)), + ExpiresAt: timestamppb.New(start.Add(time.Minute)), }) if !a.So(err, should.BeNil) { t.FailNow() diff --git a/pkg/identityserver/storetest/login_token_store.go b/pkg/identityserver/storetest/login_token_store.go index e9d9aee5e2..ba0e514d70 100644 --- a/pkg/identityserver/storetest/login_token_store.go +++ b/pkg/identityserver/storetest/login_token_store.go @@ -23,6 +23,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) func (st *StoreTest) TestLoginTokenStore(t *T) { @@ -50,7 +51,7 @@ func (st *StoreTest) TestLoginTokenStore(t *T) { created, err = s.CreateLoginToken(ctx, &ttnpb.LoginToken{ UserIds: usr1.GetIds(), Token: "TOKEN", - ExpiresAt: ttnpb.ProtoTimePtr(start.Add(5 * time.Minute)), + ExpiresAt: timestamppb.New(start.Add(5 * time.Minute)), }) if a.So(err, should.BeNil) && a.So(created, should.NotBeNil) { @@ -113,7 +114,7 @@ func (st *StoreTest) TestLoginTokenStore(t *T) { _, err := s.CreateLoginToken(ctx, &ttnpb.LoginToken{ UserIds: usr1.GetIds(), Token: "EXPIRED_TOKEN", - ExpiresAt: ttnpb.ProtoTimePtr(start.Add(-1 * time.Minute)), + ExpiresAt: timestamppb.New(start.Add(-1 * time.Minute)), }) if !a.So(err, should.BeNil) { t.FailNow() diff --git a/pkg/identityserver/storetest/oauth_store.go b/pkg/identityserver/storetest/oauth_store.go index 3f27a46276..3b72d5a674 100644 --- a/pkg/identityserver/storetest/oauth_store.go +++ b/pkg/identityserver/storetest/oauth_store.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) func (st *StoreTest) TestOAuthStore(t *T) { @@ -193,7 +194,7 @@ func (st *StoreTest) TestOAuthStore(t *T) { Code: "CODE", RedirectUri: "https://example.com", State: "state", - ExpiresAt: ttnpb.ProtoTimePtr(start.Add(5 * time.Minute)), + ExpiresAt: timestamppb.New(start.Add(5 * time.Minute)), }) if a.So(err, should.BeNil) && a.So(createdAuthorizationCode, should.NotBeNil) { a.So(createdAuthorizationCode.UserIds, should.Resemble, usr1.GetIds()) @@ -273,7 +274,7 @@ func (st *StoreTest) TestOAuthStore(t *T) { AccessToken: "access_token", RefreshToken: "refresh_token", Rights: []ttnpb.Right{ttnpb.Right_RIGHT_USER_ALL}, - ExpiresAt: ttnpb.ProtoTimePtr(start.Add(5 * time.Minute)), + ExpiresAt: timestamppb.New(start.Add(5 * time.Minute)), }, "") if a.So(err, should.BeNil) && a.So(createdAccessToken, should.NotBeNil) { a.So(createdAccessToken.UserIds, should.Resemble, usr1.GetIds()) diff --git a/pkg/identityserver/storetest/population.go b/pkg/identityserver/storetest/population.go index 4b9a0822e2..e40d8f193c 100644 --- a/pkg/identityserver/storetest/population.go +++ b/pkg/identityserver/storetest/population.go @@ -24,6 +24,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/auth/pbkdf2" "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/timestamppb" ) // EntityAPIKey is an API key for an entity. @@ -207,7 +208,7 @@ func (p *Population) NewUser() *ttnpb.User { }, Name: fmt.Sprintf("User %02d", i), PrimaryEmailAddress: fmt.Sprintf("usr-%02d@example.com", i), - PrimaryEmailAddressValidatedAt: ttnpb.ProtoTimePtr(now), + PrimaryEmailAddressValidatedAt: timestamppb.New(now), State: ttnpb.State_STATE_APPROVED, } p.Users = append(p.Users, usr) diff --git a/pkg/identityserver/storetest/user_session_store.go b/pkg/identityserver/storetest/user_session_store.go index 48040c9426..1c6eddcf0c 100644 --- a/pkg/identityserver/storetest/user_session_store.go +++ b/pkg/identityserver/storetest/user_session_store.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) func (st *StoreTest) TestUserSessionStore(t *T) { @@ -50,7 +51,7 @@ func (st *StoreTest) TestUserSessionStore(t *T) { created, err = s.CreateSession(ctx, &ttnpb.UserSession{ UserIds: usr1.GetIds(), SessionSecret: "secret", - ExpiresAt: ttnpb.ProtoTimePtr(start.Add(5 * time.Minute)), + ExpiresAt: timestamppb.New(start.Add(5 * time.Minute)), }) if a.So(err, should.BeNil) && a.So(created, should.NotBeNil) { a.So(created.UserIds, should.Resemble, usr1.GetIds()) diff --git a/pkg/identityserver/storetest/user_store.go b/pkg/identityserver/storetest/user_store.go index f43f819f91..0372c39045 100644 --- a/pkg/identityserver/storetest/user_store.go +++ b/pkg/identityserver/storetest/user_store.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) func (st *StoreTest) TestUserStoreCRUD(t *T) { @@ -60,16 +61,16 @@ func (st *StoreTest) TestUserStoreCRUD(t *T) { Description: "Foo Description", Attributes: attributes, PrimaryEmailAddress: "foo@example.com", - PrimaryEmailAddressValidatedAt: ttnpb.ProtoTimePtr(stamp), + PrimaryEmailAddressValidatedAt: timestamppb.New(stamp), Password: "password_hash", - PasswordUpdatedAt: ttnpb.ProtoTimePtr(stamp), + PasswordUpdatedAt: timestamppb.New(stamp), RequirePasswordUpdate: true, State: ttnpb.State_STATE_APPROVED, StateDescription: "welcome!", Admin: true, TemporaryPassword: "temporary_hash", - TemporaryPasswordCreatedAt: ttnpb.ProtoTimePtr(stamp), - TemporaryPasswordExpiresAt: ttnpb.ProtoTimePtr(stamp.Add(time.Hour)), + TemporaryPasswordCreatedAt: timestamppb.New(stamp), + TemporaryPasswordExpiresAt: timestamppb.New(stamp.Add(time.Hour)), ProfilePicture: picture, }) @@ -196,16 +197,16 @@ func (st *StoreTest) TestUserStoreCRUD(t *T) { Description: "New Foo Description", Attributes: updatedAttributes, PrimaryEmailAddress: "updated@example.com", - PrimaryEmailAddressValidatedAt: ttnpb.ProtoTimePtr(stamp), + PrimaryEmailAddressValidatedAt: timestamppb.New(stamp), Password: "updated_password_hash", - PasswordUpdatedAt: ttnpb.ProtoTimePtr(stamp), + PasswordUpdatedAt: timestamppb.New(stamp), RequirePasswordUpdate: false, State: ttnpb.State_STATE_FLAGGED, StateDescription: "flagged", Admin: false, TemporaryPassword: "updated_temporary_hash", - TemporaryPasswordCreatedAt: ttnpb.ProtoTimePtr(stamp), - TemporaryPasswordExpiresAt: ttnpb.ProtoTimePtr(stamp.Add(time.Hour)), + TemporaryPasswordCreatedAt: timestamppb.New(stamp), + TemporaryPasswordExpiresAt: timestamppb.New(stamp.Add(time.Hour)), ProfilePicture: updatedPicture, }, mask) if a.So(err, should.BeNil) && a.So(updated, should.NotBeNil) { diff --git a/pkg/identityserver/user_access.go b/pkg/identityserver/user_access.go index 11c54aaa1f..1cacbfd3df 100644 --- a/pkg/identityserver/user_access.go +++ b/pkg/identityserver/user_access.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/events" "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -245,7 +246,7 @@ func (is *IdentityServer) createLoginToken(ctx context.Context, req *ttnpb.Creat err = is.store.Transact(ctx, func(ctx context.Context, st store.Store) error { _, err := st.CreateLoginToken(ctx, &ttnpb.LoginToken{ UserIds: req.GetUserIds(), - ExpiresAt: ttnpb.ProtoTimePtr(expiresAt), + ExpiresAt: timestamppb.New(expiresAt), Token: token, }) return err diff --git a/pkg/identityserver/user_registry.go b/pkg/identityserver/user_registry.go index d12f685f3c..f744ad5e4f 100644 --- a/pkg/identityserver/user_registry.go +++ b/pkg/identityserver/user_registry.go @@ -34,6 +34,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/unique" "go.thethings.network/lorawan-stack/v3/pkg/validate" "google.golang.org/protobuf/types/known/emptypb" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -237,7 +238,7 @@ func (is *IdentityServer) createUser(ctx context.Context, req *ttnpb.CreateUserR return nil, err } req.User.Password = hashedPassword - req.User.PasswordUpdatedAt = ttnpb.ProtoTimePtr(time.Now()) + req.User.PasswordUpdatedAt = timestamppb.Now() if req.User.ProfilePicture != nil { if err = is.processUserProfilePicture(ctx, req.User); err != nil { @@ -447,11 +448,11 @@ func (is *IdentityServer) updateUser(ctx context.Context, req *ttnpb.UpdateUserR req.User.TemporaryPassword = hashedTemporaryPassword now := time.Now() if !ttnpb.HasAnyField(req.FieldMask.GetPaths(), "temporary_password_created_at") { - req.User.TemporaryPasswordCreatedAt = ttnpb.ProtoTimePtr(now) + req.User.TemporaryPasswordCreatedAt = timestamppb.New(now) req.FieldMask.Paths = append(req.FieldMask.GetPaths(), "temporary_password_created_at") } if !ttnpb.HasAnyField(req.FieldMask.GetPaths(), "temporary_password_expires_at") { - req.User.TemporaryPasswordExpiresAt = ttnpb.ProtoTimePtr(now.Add(36 * time.Hour)) + req.User.TemporaryPasswordExpiresAt = timestamppb.New(now.Add(36 * time.Hour)) req.FieldMask.Paths = append(req.FieldMask.GetPaths(), "temporary_password_expires_at") } } @@ -630,7 +631,7 @@ func (is *IdentityServer) updateUserPassword(ctx context.Context, req *ttnpb.Upd } } now := time.Now() - usr.Password, usr.PasswordUpdatedAt, usr.RequirePasswordUpdate = hashedPassword, ttnpb.ProtoTimePtr(now), false + usr.Password, usr.PasswordUpdatedAt, usr.RequirePasswordUpdate = hashedPassword, timestamppb.New(now), false usr, err = st.UpdateUser(ctx, usr, updateMask) return err }) @@ -670,7 +671,7 @@ func (is *IdentityServer) createTemporaryPassword(ctx context.Context, req *ttnp return errTemporaryPasswordStillValid.New() } usr.TemporaryPassword = hashedTemporaryPassword - usr.TemporaryPasswordCreatedAt, usr.TemporaryPasswordExpiresAt = ttnpb.ProtoTimePtr(now), ttnpb.ProtoTimePtr(expires) + usr.TemporaryPasswordCreatedAt, usr.TemporaryPasswordExpiresAt = timestamppb.New(now), timestamppb.New(expires) usr, err = st.UpdateUser(ctx, usr, updateTemporaryPasswordFieldMask) return err }) diff --git a/pkg/interop/client_test.go b/pkg/interop/client_test.go index 0ece79c4a6..89c191765c 100644 --- a/pkg/interop/client_test.go +++ b/pkg/interop/client_test.go @@ -765,7 +765,7 @@ func TestJoinServerRace(t *testing.T) { //nolint:paralleltest EncryptedKey: []byte{0x2a, 0x19, 0x5c, 0xc9, 0x3c, 0xa5, 0x4a, 0xd8, 0x2c, 0xfb, 0x36, 0xc8, 0x3d, 0x91, 0x45, 0x0f, 0x3d, 0x2d, 0x52, 0x35, 0x56, 0xf1, 0x3e, 0x69}, //nolint:lll }, }, - Lifetime: ttnpb.ProtoDurationPtr(0), + Lifetime: durationpb.New(0), }) }, ErrorAssertion: func(a *assertions.Assertion, err error) bool { diff --git a/pkg/joinserver/joinserver.go b/pkg/joinserver/joinserver.go index c37eeb1e47..ff8c8f252a 100644 --- a/pkg/joinserver/joinserver.go +++ b/pkg/joinserver/joinserver.go @@ -20,7 +20,6 @@ import ( "context" "crypto/rand" "encoding/binary" - "time" "github.com/grpc-ecosystem/grpc-gateway/runtime" ulid "github.com/oklog/ulid/v2" @@ -38,6 +37,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/timestamppb" ) // JoinServer implements the Join Server component. @@ -600,7 +600,7 @@ func (js *JoinServer) HandleJoin(ctx context.Context, req *ttnpb.JoinRequest, au } dev.Session = &ttnpb.Session{ - StartedAt: ttnpb.ProtoTimePtr(time.Now()), + StartedAt: timestamppb.Now(), DevAddr: req.DevAddr, Keys: sk, } diff --git a/pkg/joinserver/redis/registry.go b/pkg/joinserver/redis/registry.go index ebfadfca33..f4c1a5944a 100644 --- a/pkg/joinserver/redis/registry.go +++ b/pkg/joinserver/redis/registry.go @@ -29,6 +29,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -209,7 +210,7 @@ func (r *DeviceRegistry) set(ctx context.Context, tx *redis.Tx, uid string, gets pb = &ttnpb.EndDevice{} } - pb.UpdatedAt = ttnpb.ProtoTimePtr(time.Now()) + pb.UpdatedAt = timestamppb.Now() sets = append(append(sets[:0:0], sets...), "updated_at", ) diff --git a/pkg/networkserver/downlink.go b/pkg/networkserver/downlink.go index 60e755d70c..d5c914bc60 100644 --- a/pkg/networkserver/downlink.go +++ b/pkg/networkserver/downlink.go @@ -39,6 +39,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/unique" "go.thethings.network/lorawan-stack/v3/pkg/util/lora" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/timestamppb" ) // DownlinkTaskQueue represents an entity, that holds downlink tasks sorted by timestamp. @@ -1356,12 +1357,12 @@ func recordDataDownlink(dev *ttnpb.EndDevice, genState generateDownlinkState, ne if genState.ApplicationDownlink == nil || macspec.UseSharedFCntDown(dev.MacState.LorawanVersion) && macPayload.FullFCnt > dev.Session.LastNFCntDown { dev.Session.LastNFCntDown = macPayload.FullFCnt } - dev.MacState.LastDownlinkAt = ttnpb.ProtoTimePtr(down.TransmitAt) + dev.MacState.LastDownlinkAt = timestamppb.New(down.TransmitAt) if needsMACAnswer || down.Message.Payload.MHdr.MType == ttnpb.MType_CONFIRMED_DOWN { - dev.MacState.LastConfirmedDownlinkAt = ttnpb.ProtoTimePtr(down.TransmitAt) + dev.MacState.LastConfirmedDownlinkAt = timestamppb.New(down.TransmitAt) } if class := down.Message.GetRequest().GetClass(); class == ttnpb.Class_CLASS_B || class == ttnpb.Class_CLASS_C { - dev.MacState.LastNetworkInitiatedDownlinkAt = ttnpb.ProtoTimePtr(down.TransmitAt) + dev.MacState.LastNetworkInitiatedDownlinkAt = timestamppb.New(down.TransmitAt) } if genState.ApplicationDownlink != nil && genState.ApplicationDownlink.Confirmed { @@ -1661,7 +1662,7 @@ func (ns *NetworkServer) attemptNetworkInitiatedDataDownlink(ctx context.Context case slot.Time.After(time.Now()): log.FromContext(ctx).Debug("Slot starts in the future, set absolute time in downlink request") - absTime = ttnpb.ProtoTimePtr(slot.Time) + absTime = timestamppb.New(slot.Time) case slot.Class == ttnpb.Class_CLASS_B: log.FromContext(ctx).Error("Class B ping slot expired, retry downlink attempt") diff --git a/pkg/networkserver/downlink_internal_test.go b/pkg/networkserver/downlink_internal_test.go index 91f11839db..3965ff150f 100644 --- a/pkg/networkserver/downlink_internal_test.go +++ b/pkg/networkserver/downlink_internal_test.go @@ -39,6 +39,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -265,7 +266,7 @@ func TestGenerateDataDownlink(t *testing.T) { }, LorawanPhyVersion: ttnpb.PHYVersion_RP001_V1_1_REV_B, FrequencyPlanId: band.EU_863_870, - LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(time.Unix(42, 0)), + LastDevStatusReceivedAt: timestamppb.New(time.Unix(42, 0)), }, Error: errNoDownlink, }, @@ -299,7 +300,7 @@ func TestGenerateDataDownlink(t *testing.T) { }, LorawanPhyVersion: ttnpb.PHYVersion_RP001_V1_1_REV_B, FrequencyPlanId: band.EU_863_870, - LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(time.Now()), + LastDevStatusReceivedAt: timestamppb.Now(), Session: generateSession(), }, Error: errNoDownlink, @@ -1307,7 +1308,7 @@ func generateSession() *ttnpb.Session { LastFCntUp: randomVal, LastNFCntDown: randomVal, LastAFCntDown: randomVal, - StartedAt: ttnpb.ProtoTimePtr(time.Now()), + StartedAt: timestamppb.Now(), QueuedApplicationDownlinks: queuedDownlinks, } } diff --git a/pkg/networkserver/downlink_test.go b/pkg/networkserver/downlink_test.go index cdaa356d1c..c51aeee0c9 100644 --- a/pkg/networkserver/downlink_test.go +++ b/pkg/networkserver/downlink_test.go @@ -43,6 +43,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -312,15 +313,15 @@ func TestProcessDownlinkTask(t *testing.T) { return true }) setLastConfirmedDownlinkAtDiff := DeviceDiffFunc(func(_ context.Context, expected, _, _ *ttnpb.EndDevice, _ *ttnpb.DownlinkMessage, downAt time.Time) bool { - expected.MacState.LastConfirmedDownlinkAt = ttnpb.ProtoTimePtr(downAt) + expected.MacState.LastConfirmedDownlinkAt = timestamppb.New(downAt) return true }) setLastDownlinkAtDiff := DeviceDiffFunc(func(_ context.Context, expected, _, _ *ttnpb.EndDevice, _ *ttnpb.DownlinkMessage, downAt time.Time) bool { - expected.MacState.LastDownlinkAt = ttnpb.ProtoTimePtr(downAt) + expected.MacState.LastDownlinkAt = timestamppb.New(downAt) return true }) setLastNetworkInitiatedDownlinkAtDiff := DeviceDiffFunc(func(_ context.Context, expected, _, _ *ttnpb.EndDevice, _ *ttnpb.DownlinkMessage, downAt time.Time) bool { - expected.MacState.LastNetworkInitiatedDownlinkAt = ttnpb.ProtoTimePtr(downAt) + expected.MacState.LastNetworkInitiatedDownlinkAt = timestamppb.New(downAt) return true }) setPendingApplicationDownlinkDiff := DeviceDiffFunc(func(_ context.Context, expected, created, _ *ttnpb.EndDevice, _ *ttnpb.DownlinkMessage, downAt time.Time) bool { @@ -1477,7 +1478,7 @@ func TestProcessDownlinkTask(t *testing.T) { }, }, Rx2Frequency: DefaultEU868RX2Frequency, - AbsoluteTime: ttnpb.ProtoTimePtr(pingAt), + AbsoluteTime: timestamppb.New(pingAt), FrequencyPlanId: dev.FrequencyPlanId, } }, @@ -1813,7 +1814,7 @@ func TestProcessDownlinkTask(t *testing.T) { DevAddr: test.DefaultDevAddr.Bytes(), }, FrequencyPlanId: test.EUFrequencyPlanID, - LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(now), + LastDevStatusReceivedAt: timestamppb.New(now), LorawanPhyVersion: ttnpb.PHYVersion_RP001_V1_1_REV_B, MacSettings: &ttnpb.MACSettings{ ClassCTimeout: ttnpb.ProtoDurationPtr(42 * time.Second), @@ -1858,7 +1859,7 @@ func TestProcessDownlinkTask(t *testing.T) { Priority: ttnpb.TxSchedulePriority_HIGHEST, SessionKeyId: []byte{0x11, 0x22, 0x33, 0x44}, ClassBC: &ttnpb.ApplicationDownlink_ClassBC{ - AbsoluteTime: ttnpb.ProtoTimePtr(now.Add(InfrastructureDelay)), + AbsoluteTime: timestamppb.New(now.Add(InfrastructureDelay)), }, }, }, @@ -1916,7 +1917,7 @@ func TestProcessDownlinkTask(t *testing.T) { }, }, Rx2Frequency: DefaultEU868RX2Frequency, - AbsoluteTime: ttnpb.ProtoTimePtr(now.Add(InfrastructureDelay)), + AbsoluteTime: timestamppb.New(now.Add(InfrastructureDelay)), FrequencyPlanId: dev.FrequencyPlanId, } }, @@ -1996,7 +1997,7 @@ func TestProcessDownlinkTask(t *testing.T) { Priority: ttnpb.TxSchedulePriority_HIGHEST, SessionKeyId: []byte{0x11, 0x22, 0x33, 0x44}, ClassBC: &ttnpb.ApplicationDownlink_ClassBC{ - AbsoluteTime: ttnpb.ProtoTimePtr(now.Add(AbsoluteTimeSchedulingDelay)), + AbsoluteTime: timestamppb.New(now.Add(AbsoluteTimeSchedulingDelay)), }, }, }, @@ -2044,7 +2045,7 @@ func TestProcessDownlinkTask(t *testing.T) { Class: ttnpb.Class_CLASS_C, DownlinkPaths: paths, Priority: ttnpb.TxSchedulePriority_HIGH, - AbsoluteTime: ttnpb.ProtoTimePtr(now.Add(AbsoluteTimeSchedulingDelay)), + AbsoluteTime: timestamppb.New(now.Add(AbsoluteTimeSchedulingDelay)), Rx2DataRate: rx2DataRateFromIndex(dev, a, t), Rx2Frequency: dev.MacState.CurrentParameters.Rx2Frequency, FrequencyPlanId: dev.FrequencyPlanId, @@ -2299,7 +2300,7 @@ func TestProcessDownlinkTask(t *testing.T) { Priority: ttnpb.TxSchedulePriority_HIGHEST, SessionKeyId: []byte{0x11, 0x22, 0x33, 0x44}, ClassBC: &ttnpb.ApplicationDownlink_ClassBC{ - AbsoluteTime: ttnpb.ProtoTimePtr(now.Add(42 * time.Hour)), + AbsoluteTime: timestamppb.New(now.Add(42 * time.Hour)), }, }, }, @@ -2361,7 +2362,7 @@ func TestProcessDownlinkTask(t *testing.T) { Priority: ttnpb.TxSchedulePriority_HIGHEST, SessionKeyId: []byte{0x11, 0x22, 0x33, 0x44}, ClassBC: &ttnpb.ApplicationDownlink_ClassBC{ - AbsoluteTime: ttnpb.ProtoTimePtr(now.Add(-2)), + AbsoluteTime: timestamppb.New(now.Add(-2)), }, }, { @@ -2372,7 +2373,7 @@ func TestProcessDownlinkTask(t *testing.T) { Priority: ttnpb.TxSchedulePriority_HIGHEST, SessionKeyId: []byte{0x11, 0x22, 0x33, 0x44}, ClassBC: &ttnpb.ApplicationDownlink_ClassBC{ - AbsoluteTime: ttnpb.ProtoTimePtr(now.Add(-1)), + AbsoluteTime: timestamppb.New(now.Add(-1)), }, }, }, @@ -2626,7 +2627,7 @@ func TestProcessDownlinkTask(t *testing.T) { a.So(updated, should.Resemble, created) } else { expected := ttnpb.Clone(created) - expected.UpdatedAt = ttnpb.ProtoTimePtr(now) + expected.UpdatedAt = timestamppb.New(now) if down != nil { msg := &ttnpb.Message{} test.Must(nil, lorawan.UnmarshalMessage(down.RawPayload, msg)) diff --git a/pkg/networkserver/grpc_asns_test.go b/pkg/networkserver/grpc_asns_test.go index 06dfa77f6b..e993f4d780 100644 --- a/pkg/networkserver/grpc_asns_test.go +++ b/pkg/networkserver/grpc_asns_test.go @@ -29,6 +29,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) func TestDownlinkQueueReplace(t *testing.T) { @@ -47,7 +48,7 @@ func TestDownlinkQueueReplace(t *testing.T) { }, Settings: DefaultTxSettings, RxMetadata: DefaultRxMetadata[:], - ReceivedAt: ttnpb.ProtoTimePtr(time.Time{}), + ReceivedAt: timestamppb.New(time.Time{}), } ups := ToMACStateUplinkMessages(up) @@ -769,7 +770,7 @@ func TestDownlinkQueuePush(t *testing.T) { }, }, RxMetadata: DefaultRxMetadata[:], - ReceivedAt: ttnpb.ProtoTimePtr(time.Time{}), + ReceivedAt: timestamppb.New(time.Time{}), } ups := ToMACStateUplinkMessages(up) diff --git a/pkg/networkserver/grpc_deviceregistry.go b/pkg/networkserver/grpc_deviceregistry.go index 0e10745f5c..1e3544e1a0 100644 --- a/pkg/networkserver/grpc_deviceregistry.go +++ b/pkg/networkserver/grpc_deviceregistry.go @@ -36,6 +36,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "google.golang.org/protobuf/types/known/emptypb" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -2700,7 +2701,7 @@ func (ns *NetworkServer) Set(ctx context.Context, req *ttnpb.SetEndDeviceRequest if st.HasSetField("session.started_at") && st.Device.GetSession().GetStartedAt() == nil || st.HasSetField("session.session_key_id") && !bytes.Equal(st.Device.GetSession().GetKeys().GetSessionKeyId(), stored.GetSession().GetKeys().GetSessionKeyId()) || stored.GetSession().GetStartedAt() == nil { - st.Device.Session.StartedAt = ttnpb.ProtoTimePtr(time.Now()) + st.Device.Session.StartedAt = timestamppb.New(time.Now()) // NOTE: This is not equivalent to timestamppb.Now(). st.AddSetFields( "session.started_at", ) @@ -2830,7 +2831,7 @@ func (ns *NetworkServer) ResetFactoryDefaults(ctx context.Context, req *ttnpb.Re stored.Session = &ttnpb.Session{ DevAddr: stored.Session.DevAddr, Keys: stored.Session.Keys, - StartedAt: ttnpb.ProtoTimePtr(time.Now()), + StartedAt: timestamppb.New(time.Now()), // NOTE: This is not equivalent to timestamppb.Now(). QueuedApplicationDownlinks: stored.Session.QueuedApplicationDownlinks, } } diff --git a/pkg/networkserver/grpc_deviceregistry_test.go b/pkg/networkserver/grpc_deviceregistry_test.go index 3b081b9e34..5bf6f62e9f 100644 --- a/pkg/networkserver/grpc_deviceregistry_test.go +++ b/pkg/networkserver/grpc_deviceregistry_test.go @@ -35,6 +35,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/unique" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) func TestDeviceRegistryGet(t *testing.T) { @@ -410,7 +411,7 @@ func TestDeviceRegistrySet(t *testing.T) { SessionOptions.WithLastNFCntDown(0x24), } activeSessionOptsWithStartedAt := append(activeSessionOpts, - SessionOptions.WithStartedAt(ttnpb.ProtoTimePtr(time.Unix(0, 42))), + SessionOptions.WithStartedAt(timestamppb.New(time.Unix(0, 42))), ) activateOpt := EndDeviceOptions.Activate(customMACSettings, false, activeSessionOpts, activeMACStateOpts...) @@ -850,7 +851,7 @@ func TestDeviceRegistrySet(t *testing.T) { clock := test.NewMockClock(time.Now()) defer SetMockClock(clock)() - withCreatedAt := test.EndDeviceOptions.WithCreatedAt(ttnpb.ProtoTimePtr(clock.Now())) + withCreatedAt := test.EndDeviceOptions.WithCreatedAt(timestamppb.New(clock.Now())) if createDevice != nil { _, ctx = MustCreateDevice(ctx, env.Devices, createDevice) clock.Add(time.Nanosecond) @@ -858,11 +859,11 @@ func TestDeviceRegistrySet(t *testing.T) { now := clock.Now() withTimestamps := withCreatedAt.Compose( - test.EndDeviceOptions.WithUpdatedAt(ttnpb.ProtoTimePtr(now)), + test.EndDeviceOptions.WithUpdatedAt(timestamppb.New(now)), func(dev *ttnpb.EndDevice) *ttnpb.EndDevice { dev = ttnpb.Clone(dev) if dev.Session != nil && dev.Session.StartedAt == nil { - dev.Session.StartedAt = ttnpb.ProtoTimePtr(now) + dev.Session.StartedAt = timestamppb.New(now) } return dev }, @@ -925,7 +926,7 @@ func TestDeviceRegistrySet(t *testing.T) { if !a.So(ok, should.BeTrue) || !a.So(err, should.BeNil) || !a.So(dev, should.NotBeNil) { return } - a.So(dev, should.Resemble, EndDeviceOptions.WithUpdatedAt(ttnpb.ProtoTimePtr(now))(expectedReturn)) + a.So(dev, should.Resemble, EndDeviceOptions.WithUpdatedAt(timestamppb.New(now))(expectedReturn)) }, }) } @@ -1175,7 +1176,7 @@ func TestDeviceRegistryResetFactoryDefaults(t *testing.T) { DevAddr: created.Session.DevAddr, QueuedApplicationDownlinks: created.Session.QueuedApplicationDownlinks, Keys: created.Session.Keys, - StartedAt: ttnpb.ProtoTimePtr(now), + StartedAt: timestamppb.New(now), } } if !a.So(err, should.BeNil) { @@ -1192,7 +1193,7 @@ func TestDeviceRegistryResetFactoryDefaults(t *testing.T) { expected.PendingSession = nil expected.PowerState = ttnpb.PowerState_POWER_UNKNOWN expected.Session = session - expected.UpdatedAt = ttnpb.ProtoTimePtr(clock.Now()) + expected.UpdatedAt = timestamppb.New(clock.Now()) if !a.So(dev, should.Resemble, test.Must(ttnpb.ApplyEndDeviceFieldMask(nil, expected, ttnpb.AddImplicitEndDeviceGetFields(conf.Paths...)...)).(*ttnpb.EndDevice)) { return } diff --git a/pkg/networkserver/grpc_gsns.go b/pkg/networkserver/grpc_gsns.go index a1b77c46d0..b0cbd7d707 100644 --- a/pkg/networkserver/grpc_gsns.go +++ b/pkg/networkserver/grpc_gsns.go @@ -40,6 +40,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/unique" "golang.org/x/exp/slices" "google.golang.org/protobuf/types/known/emptypb" + "google.golang.org/protobuf/types/known/timestamppb" ) const ( @@ -1410,7 +1411,7 @@ func (ns *NetworkServer) HandleUplink(ctx context.Context, up *ttnpb.UplinkMessa up.CorrelationIds = events.CorrelationIDsFromContext(ctx) registerUplinkLatency(ctx, up) - up.ReceivedAt = ttnpb.ProtoTimePtr(time.Now()) + up.ReceivedAt = timestamppb.New(time.Now()) // NOTE: This is not equivalent to timestamppb.Now(). up.Payload = &ttnpb.Message{} if err := lorawan.UnmarshalMessage(up.RawPayload, up.Payload); err != nil { diff --git a/pkg/networkserver/internal/test/test.go b/pkg/networkserver/internal/test/test.go index 2a68402aa9..b604246923 100644 --- a/pkg/networkserver/internal/test/test.go +++ b/pkg/networkserver/internal/test/test.go @@ -36,6 +36,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" + "google.golang.org/protobuf/types/known/timestamppb" ) func init() { @@ -418,7 +419,7 @@ func MakeUplinkMessage(conf UplinkMessageConfig) *ttnpb.UplinkMessage { Payload: conf.Payload, Settings: settings, RxMetadata: ttnpb.CloneSlice(conf.RxMetadata), - ReceivedAt: ttnpb.ProtoTimePtr(conf.ReceivedAt), + ReceivedAt: timestamppb.New(conf.ReceivedAt), CorrelationIds: CopyStrings(conf.CorrelationIDs), DeviceChannelIndex: uint32(conf.ChannelIndex), ConsumedAirtime: ttnpb.ProtoDurationPtr( diff --git a/pkg/networkserver/mac/dev_status.go b/pkg/networkserver/mac/dev_status.go index f2cb2a76e6..dc654f5cb7 100644 --- a/pkg/networkserver/mac/dev_status.go +++ b/pkg/networkserver/mac/dev_status.go @@ -21,6 +21,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/log" "go.thethings.network/lorawan-stack/v3/pkg/networkserver/internal/time" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -133,7 +134,7 @@ func HandleDevStatusAns(ctx context.Context, dev *ttnpb.EndDevice, pld *ttnpb.MA dev.BatteryPercentage = &wrapperspb.FloatValue{Value: float32(pld.Battery-1) / 253} } dev.DownlinkMargin = pld.Margin - dev.LastDevStatusReceivedAt = ttnpb.ProtoTimePtr(recvAt) + dev.LastDevStatusReceivedAt = timestamppb.New(recvAt) dev.MacState.LastDevStatusFCntUp = fCntUp return nil }, diff --git a/pkg/networkserver/mac/dev_status_test.go b/pkg/networkserver/mac/dev_status_test.go index e972fc2096..8a5cac4a26 100644 --- a/pkg/networkserver/mac/dev_status_test.go +++ b/pkg/networkserver/mac/dev_status_test.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -44,7 +45,7 @@ func TestNeedsDevStatusReq(t *testing.T) { { Name: "device-settings(count-periodicity:5,time-periodicity:nil),ns-settings(count-periodicity:nil,time-periodicity:nil),last-status-at:scheduleAt,last-status-fcnt:1,last-fcnt:5", InputDevice: &ttnpb.EndDevice{ - LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(scheduleAt), + LastDevStatusReceivedAt: timestamppb.New(scheduleAt), MacSettings: &ttnpb.MACSettings{ StatusCountPeriodicity: &wrapperspb.UInt32Value{ Value: 5, @@ -61,7 +62,7 @@ func TestNeedsDevStatusReq(t *testing.T) { { Name: "device-settings(count-periodicity:5,time-periodicity:nil),ns-settings(count-periodicity:nil,time-periodicity:nil),last-status-at:scheduleAt,last-status-fcnt:1,last-fcnt:6", InputDevice: &ttnpb.EndDevice{ - LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(scheduleAt), + LastDevStatusReceivedAt: timestamppb.New(scheduleAt), MacSettings: &ttnpb.MACSettings{ StatusCountPeriodicity: &wrapperspb.UInt32Value{ Value: 5, @@ -79,7 +80,7 @@ func TestNeedsDevStatusReq(t *testing.T) { { Name: "device-settings(count-periodicity:1000,time-periodicity:1hr),ns-settings(count-periodicity:nil,time-periodicity:nil),last-status-at:scheduleAt,last-status-fcnt:1,last-fcnt:2", InputDevice: &ttnpb.EndDevice{ - LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(scheduleAt), + LastDevStatusReceivedAt: timestamppb.New(scheduleAt), MacSettings: &ttnpb.MACSettings{ StatusCountPeriodicity: &wrapperspb.UInt32Value{ Value: 1000, @@ -97,7 +98,7 @@ func TestNeedsDevStatusReq(t *testing.T) { { Name: "device-settings(count-periodicity:1000,time-periodicity:1hr),ns-settings(count-periodicity:nil,time-periodicity:nil),last-status-at:scheduleAt-1hr+1ns,last-status-fcnt:1,last-fcnt:2", InputDevice: &ttnpb.EndDevice{ - LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(scheduleAt.Add(-time.Hour + time.Nanosecond)), + LastDevStatusReceivedAt: timestamppb.New(scheduleAt.Add(-time.Hour + time.Nanosecond)), MacSettings: &ttnpb.MACSettings{ StatusCountPeriodicity: &wrapperspb.UInt32Value{ Value: 1000, @@ -115,7 +116,7 @@ func TestNeedsDevStatusReq(t *testing.T) { { Name: "device-settings(count-periodicity:1000,time-periodicity:1hr),ns-settings(count-periodicity:nil,time-periodicity:nil),last-status-at:scheduleAt-1hr,last-status-fcnt:1,last-fcnt:2", InputDevice: &ttnpb.EndDevice{ - LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(scheduleAt.Add(-time.Hour)), + LastDevStatusReceivedAt: timestamppb.New(scheduleAt.Add(-time.Hour)), MacSettings: &ttnpb.MACSettings{ StatusCountPeriodicity: &wrapperspb.UInt32Value{ Value: 1000, @@ -134,7 +135,7 @@ func TestNeedsDevStatusReq(t *testing.T) { { Name: "device-settings(count-periodicity:1000,time-periodicity:1hr),ns-settings(count-periodicity:nil,time-periodicity:nil),last-status-at:scheduleAt-1hr1ns,last-status-fcnt:1,last-fcnt:2", InputDevice: &ttnpb.EndDevice{ - LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(scheduleAt.Add(-time.Hour - time.Nanosecond)), + LastDevStatusReceivedAt: timestamppb.New(scheduleAt.Add(-time.Hour - time.Nanosecond)), MacSettings: &ttnpb.MACSettings{ StatusCountPeriodicity: &wrapperspb.UInt32Value{ Value: 1000, @@ -153,7 +154,7 @@ func TestNeedsDevStatusReq(t *testing.T) { { Name: "device-settings(nil),ns-settings(count-periodicity:nil,time-periodicity:nil),last-status-at:scheduleAt,last-status-fcnt:1,last-fcnt:1000", InputDevice: &ttnpb.EndDevice{ - LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(scheduleAt), + LastDevStatusReceivedAt: timestamppb.New(scheduleAt), MacState: &ttnpb.MACState{ LastDevStatusFCntUp: 1, }, @@ -239,7 +240,7 @@ func TestHandleDevStatusAns(t *testing.T) { PowerState: ttnpb.PowerState_POWER_EXTERNAL, }, Expected: &ttnpb.EndDevice{ - LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(time.Unix(42, 0)), + LastDevStatusReceivedAt: timestamppb.New(time.Unix(42, 0)), MacState: &ttnpb.MACState{ LastDevStatusFCntUp: 43, PendingRequests: []*ttnpb.MACCommand{}, @@ -274,7 +275,7 @@ func TestHandleDevStatusAns(t *testing.T) { PowerState: ttnpb.PowerState_POWER_BATTERY, }, Expected: &ttnpb.EndDevice{ - LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(time.Unix(42, 0)), + LastDevStatusReceivedAt: timestamppb.New(time.Unix(42, 0)), MacState: &ttnpb.MACState{ LastDevStatusFCntUp: 43, PendingRequests: []*ttnpb.MACCommand{}, @@ -307,7 +308,7 @@ func TestHandleDevStatusAns(t *testing.T) { PowerState: ttnpb.PowerState_POWER_BATTERY, }, Expected: &ttnpb.EndDevice{ - LastDevStatusReceivedAt: ttnpb.ProtoTimePtr(time.Unix(42, 0)), + LastDevStatusReceivedAt: timestamppb.New(time.Unix(42, 0)), MacState: &ttnpb.MACState{ LastDevStatusFCntUp: 43, PendingRequests: []*ttnpb.MACCommand{}, diff --git a/pkg/networkserver/mac/device_time.go b/pkg/networkserver/mac/device_time.go index e4fa0c60be..911fe13307 100644 --- a/pkg/networkserver/mac/device_time.go +++ b/pkg/networkserver/mac/device_time.go @@ -17,10 +17,9 @@ package mac import ( "context" - pbtypes "github.com/gogo/protobuf/types" - "go.thethings.network/lorawan-stack/v3/pkg/events" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -44,8 +43,8 @@ func HandleDeviceTimeReq(ctx context.Context, dev *ttnpb.EndDevice, msg *ttnpb.U }, nil } -func messageTimestamp(msg *ttnpb.UplinkMessage) *pbtypes.Timestamp { - var ts *pbtypes.Timestamp +func messageTimestamp(msg *ttnpb.UplinkMessage) *timestamppb.Timestamp { + var ts *timestamppb.Timestamp for _, md := range msg.RxMetadata { if t := md.GpsTime; t != nil { return t diff --git a/pkg/networkserver/mac/device_time_test.go b/pkg/networkserver/mac/device_time_test.go index 3a4cda3977..097de8904c 100644 --- a/pkg/networkserver/mac/device_time_test.go +++ b/pkg/networkserver/mac/device_time_test.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" ) func TestHandleDeviceTimeReq(t *testing.T) { @@ -46,18 +47,18 @@ func TestHandleDeviceTimeReq(t *testing.T) { MacState: &ttnpb.MACState{ QueuedResponses: []*ttnpb.MACCommand{ (&ttnpb.MACCommand_DeviceTimeAns{ - Time: ttnpb.ProtoTimePtr(recvAt), + Time: timestamppb.New(recvAt), }).MACCommand(), }, }, }, Message: &ttnpb.UplinkMessage{ - ReceivedAt: ttnpb.ProtoTimePtr(recvAt), + ReceivedAt: timestamppb.New(recvAt), }, Events: events.Builders{ EvtReceiveDeviceTimeRequest, EvtEnqueueDeviceTimeAnswer.With(events.WithData(&ttnpb.MACCommand_DeviceTimeAns{ - Time: ttnpb.ProtoTimePtr(recvAt), + Time: timestamppb.New(recvAt), })), }, }, @@ -79,18 +80,18 @@ func TestHandleDeviceTimeReq(t *testing.T) { {}, {}, (&ttnpb.MACCommand_DeviceTimeAns{ - Time: ttnpb.ProtoTimePtr(recvAt), + Time: timestamppb.New(recvAt), }).MACCommand(), }, }, }, Message: &ttnpb.UplinkMessage{ - ReceivedAt: ttnpb.ProtoTimePtr(recvAt), + ReceivedAt: timestamppb.New(recvAt), }, Events: events.Builders{ EvtReceiveDeviceTimeRequest, EvtEnqueueDeviceTimeAnswer.With(events.WithData(&ttnpb.MACCommand_DeviceTimeAns{ - Time: ttnpb.ProtoTimePtr(recvAt), + Time: timestamppb.New(recvAt), })), }, }, @@ -112,18 +113,18 @@ func TestHandleDeviceTimeReq(t *testing.T) { {}, {}, (&ttnpb.MACCommand_DeviceTimeAns{ - Time: ttnpb.ProtoTimePtr(recvAt), + Time: timestamppb.New(recvAt), }).MACCommand(), }, }, }, Message: &ttnpb.UplinkMessage{ - ReceivedAt: ttnpb.ProtoTimePtr(recvAt), + ReceivedAt: timestamppb.New(recvAt), }, Events: events.Builders{ EvtReceiveDeviceTimeRequest, EvtEnqueueDeviceTimeAnswer.With(events.WithData(&ttnpb.MACCommand_DeviceTimeAns{ - Time: ttnpb.ProtoTimePtr(recvAt), + Time: timestamppb.New(recvAt), })), }, }, @@ -136,26 +137,26 @@ func TestHandleDeviceTimeReq(t *testing.T) { MacState: &ttnpb.MACState{ QueuedResponses: []*ttnpb.MACCommand{ (&ttnpb.MACCommand_DeviceTimeAns{ - Time: ttnpb.ProtoTimePtr(mdRecvAt), + Time: timestamppb.New(mdRecvAt), }).MACCommand(), }, }, }, Message: &ttnpb.UplinkMessage{ - ReceivedAt: ttnpb.ProtoTimePtr(recvAt), + ReceivedAt: timestamppb.New(recvAt), RxMetadata: []*ttnpb.RxMetadata{ { - ReceivedAt: ttnpb.ProtoTimePtr(mdRecvAt), + ReceivedAt: timestamppb.New(mdRecvAt), }, { - ReceivedAt: ttnpb.ProtoTimePtr(mdRecvAt.Add(200)), + ReceivedAt: timestamppb.New(mdRecvAt.Add(200)), }, }, }, Events: events.Builders{ EvtReceiveDeviceTimeRequest, EvtEnqueueDeviceTimeAnswer.With(events.WithData(&ttnpb.MACCommand_DeviceTimeAns{ - Time: ttnpb.ProtoTimePtr(mdRecvAt), + Time: timestamppb.New(mdRecvAt), })), }, }, @@ -168,30 +169,30 @@ func TestHandleDeviceTimeReq(t *testing.T) { MacState: &ttnpb.MACState{ QueuedResponses: []*ttnpb.MACCommand{ (&ttnpb.MACCommand_DeviceTimeAns{ - Time: ttnpb.ProtoTimePtr(gpsTime), + Time: timestamppb.New(gpsTime), }).MACCommand(), }, }, }, Message: &ttnpb.UplinkMessage{ - ReceivedAt: ttnpb.ProtoTimePtr(recvAt), + ReceivedAt: timestamppb.New(recvAt), RxMetadata: []*ttnpb.RxMetadata{ { - GpsTime: ttnpb.ProtoTimePtr(gpsTime), - ReceivedAt: ttnpb.ProtoTimePtr(mdRecvAt), + GpsTime: timestamppb.New(gpsTime), + ReceivedAt: timestamppb.New(mdRecvAt), }, { - ReceivedAt: ttnpb.ProtoTimePtr(mdRecvAt.Add(200)), + ReceivedAt: timestamppb.New(mdRecvAt.Add(200)), }, { - GpsTime: ttnpb.ProtoTimePtr(gpsTime.Add(150)), + GpsTime: timestamppb.New(gpsTime.Add(150)), }, }, }, Events: events.Builders{ EvtReceiveDeviceTimeRequest, EvtEnqueueDeviceTimeAnswer.With(events.WithData(&ttnpb.MACCommand_DeviceTimeAns{ - Time: ttnpb.ProtoTimePtr(gpsTime), + Time: timestamppb.New(gpsTime), })), }, }, diff --git a/pkg/networkserver/redis/registry.go b/pkg/networkserver/redis/registry.go index 38bcd03df1..634777b0ab 100644 --- a/pkg/networkserver/redis/registry.go +++ b/pkg/networkserver/redis/registry.go @@ -30,6 +30,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/timestamppb" ) var ( @@ -805,7 +806,7 @@ func (r *DeviceRegistry) SetByID(ctx context.Context, appID *ttnpb.ApplicationId if err != nil { return err } - updated.UpdatedAt = ttnpb.ProtoTimePtr(time.Now()) + updated.UpdatedAt = timestamppb.New(time.Now()) // NOTE: This is not equivalent to timestamppb.Now(). if stored == nil { updated.CreatedAt = updated.UpdatedAt } diff --git a/pkg/networkserver/utils_internal_test.go b/pkg/networkserver/utils_internal_test.go index ebd53c303d..fd2e37dff4 100644 --- a/pkg/networkserver/utils_internal_test.go +++ b/pkg/networkserver/utils_internal_test.go @@ -30,6 +30,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -59,7 +60,7 @@ func TestNextDataDownlinkSlot(t *testing.T) { }, Settings: ToMACStateTxSettings(DefaultTxSettings), RxMetadata: ToMACStateRxMetadata(DefaultRxMetadata[:]), - ReceivedAt: ttnpb.ProtoTimePtr(beaconTime), + ReceivedAt: timestamppb.New(beaconTime), } ups := []*ttnpb.MACState_UplinkMessage{up} @@ -415,7 +416,7 @@ func TestNextDataDownlinkSlot(t *testing.T) { QueuedApplicationDownlinks: []*ttnpb.ApplicationDownlink{ { ClassBC: &ttnpb.ApplicationDownlink_ClassBC{ - AbsoluteTime: ttnpb.ProtoTimePtr(absTime), + AbsoluteTime: timestamppb.New(absTime), Gateways: []*ttnpb.ClassBCGatewayIdentifiers{ { GatewayIds: &ttnpb.GatewayIdentifiers{ @@ -452,7 +453,7 @@ func TestNextDataDownlinkSlot(t *testing.T) { QueuedApplicationDownlinks: []*ttnpb.ApplicationDownlink{ { ClassBC: &ttnpb.ApplicationDownlink_ClassBC{ - AbsoluteTime: ttnpb.ProtoTimePtr(absTime), + AbsoluteTime: timestamppb.New(absTime), Gateways: []*ttnpb.ClassBCGatewayIdentifiers{ { GatewayIds: &ttnpb.GatewayIdentifiers{ @@ -483,7 +484,7 @@ func TestNextDataDownlinkSlot(t *testing.T) { QueuedApplicationDownlinks: []*ttnpb.ApplicationDownlink{ { ClassBC: &ttnpb.ApplicationDownlink_ClassBC{ - AbsoluteTime: ttnpb.ProtoTimePtr(absTime), + AbsoluteTime: timestamppb.New(absTime), }, }, }, @@ -508,7 +509,7 @@ func TestNextDataDownlinkSlot(t *testing.T) { QueuedApplicationDownlinks: []*ttnpb.ApplicationDownlink{ { ClassBC: &ttnpb.ApplicationDownlink_ClassBC{ - AbsoluteTime: ttnpb.ProtoTimePtr(absTime), + AbsoluteTime: timestamppb.New(absTime), }, }, }, diff --git a/pkg/oauth/server_test.go b/pkg/oauth/server_test.go index 76a0d3553d..3a58c956fb 100644 --- a/pkg/oauth/server_test.go +++ b/pkg/oauth/server_test.go @@ -41,6 +41,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "go.thethings.network/lorawan-stack/v3/pkg/webui" "golang.org/x/net/publicsuffix" + "google.golang.org/protobuf/types/known/timestamppb" ) type loginFormData struct { @@ -63,7 +64,7 @@ var ( mockSession = &ttnpb.UserSession{ UserIds: &ttnpb.UserIdentifiers{UserId: "user"}, SessionId: "session_id", - CreatedAt: ttnpb.ProtoTimePtr(now), + CreatedAt: timestamppb.New(now), SessionSecret: "secret-1234", } mockUser = &ttnpb.User{ @@ -677,8 +678,8 @@ func TestTokenExchange(t *testing.T) { Code: "the code", RedirectUri: "http://uri/callback", State: "foo", - CreatedAt: ttnpb.ProtoTimePtr(now), - ExpiresAt: ttnpb.ProtoTimePtr(anHourFromNow), + CreatedAt: timestamppb.New(now), + ExpiresAt: timestamppb.New(anHourFromNow), } }, Method: "POST", @@ -719,8 +720,8 @@ func TestTokenExchange(t *testing.T) { Code: "the code", RedirectUri: "http://uri/callback", State: "foo", - CreatedAt: ttnpb.ProtoTimePtr(now), - ExpiresAt: ttnpb.ProtoTimePtr(anHourFromNow), + CreatedAt: timestamppb.New(now), + ExpiresAt: timestamppb.New(anHourFromNow), } }, Method: "POST", @@ -759,8 +760,8 @@ func TestTokenExchange(t *testing.T) { Id: "SFUBFRKYTGULGPAXXM4SHIBYMKCPTIMQBM63ZGQ", RefreshToken: "PBKDF2$sha256$20000$IGAiKs46xX_M64E5$4xpyqnQT8SOa_Vf4xhEPk6WOZnhmAjG2mqGQiYBhm2s", Rights: mockClient.Rights, - CreatedAt: ttnpb.ProtoTimePtr(now), - ExpiresAt: ttnpb.ProtoTimePtr(anHourFromNow), + CreatedAt: timestamppb.New(now), + ExpiresAt: timestamppb.New(anHourFromNow), } }, Method: "POST", diff --git a/pkg/oauth/storage.go b/pkg/oauth/storage.go index 0e470c9584..5510b61be1 100644 --- a/pkg/oauth/storage.go +++ b/pkg/oauth/storage.go @@ -24,6 +24,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/errors" oauth_store "go.thethings.network/lorawan-stack/v3/pkg/oauth/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/timestamppb" ) const redirectURISeparator = ";" @@ -107,8 +108,8 @@ func (s *storage) SaveAuthorize(data *osin.AuthorizeData) error { Code: data.Code, RedirectUri: data.RedirectUri, State: data.State, - CreatedAt: ttnpb.ProtoTimePtr(data.CreatedAt), - ExpiresAt: ttnpb.ProtoTimePtr(data.CreatedAt.Add(time.Duration(data.ExpiresIn) * time.Second)), + CreatedAt: timestamppb.New(data.CreatedAt), + ExpiresAt: timestamppb.New(data.CreatedAt.Add(time.Duration(data.ExpiresIn) * time.Second)), }) return err }) @@ -232,8 +233,8 @@ func (s *storage) SaveAccess(data *osin.AccessData) error { Id: accessID, AccessToken: accessHash, RefreshToken: refreshHash, - CreatedAt: ttnpb.ProtoTimePtr(data.CreatedAt), - ExpiresAt: ttnpb.ProtoTimePtr(data.CreatedAt.Add(time.Duration(data.ExpiresIn) * time.Second)), + CreatedAt: timestamppb.New(data.CreatedAt), + ExpiresAt: timestamppb.New(data.CreatedAt.Add(time.Duration(data.ExpiresIn) * time.Second)), }, previousID) return err }) diff --git a/pkg/packetbrokeragent/agent_test.go b/pkg/packetbrokeragent/agent_test.go index a6cb594319..86aa84ff2e 100644 --- a/pkg/packetbrokeragent/agent_test.go +++ b/pkg/packetbrokeragent/agent_test.go @@ -43,6 +43,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" "google.golang.org/protobuf/types/known/emptypb" + "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" "gopkg.in/square/go-jose.v2" ) @@ -129,7 +130,7 @@ func TestForwarder(t *testing.T) { GatewayMessage: &ttnpb.GatewayUplinkMessage{ Message: &ttnpb.UplinkMessage{ RawPayload: []byte{0x40, 0x44, 0x33, 0x22, 0x11, 0x01, 0x01, 0x00, 0x42, 0x1, 0x42, 0x1, 0x2, 0x3, 0x4}, - ReceivedAt: ttnpb.ProtoTimePtr(receivedAt), + ReceivedAt: timestamppb.New(receivedAt), RxMetadata: []*ttnpb.RxMetadata{ { GatewayIds: &ttnpb.GatewayIdentifiers{ @@ -176,7 +177,7 @@ func TestForwarder(t *testing.T) { Hash: []byte{0xc7, 0x4a, 0x72, 0x7c, 0xe5, 0x01, 0xe9, 0xc1, 0x20, 0x6b, 0xb2, 0x81, 0x82, 0xeb, 0x06, 0x91, 0x7f, 0x94, 0x43, 0x54, 0x30, 0x90, 0x78, 0x0f, 0x3a, 0x39, 0x3d, 0xeb, 0xad, 0x91, 0xad, 0x96}, }, }, - ForwarderReceiveTime: test.Must(pbtypes.TimestampProto(time.Date(2020, time.March, 24, 12, 0, 0, 0, time.UTC))).(*pbtypes.Timestamp), + ForwarderReceiveTime: timestamppb.New(time.Date(2020, time.March, 24, 12, 0, 0, 0, time.UTC)), DataRate: packetbroker.NewLoRaDataRate(7, 125000, band.Cr4_5), Frequency: 869525000, GatewayMetadata: &packetbroker.UplinkMessage_GatewayMetadata{ @@ -253,7 +254,7 @@ func TestForwarder(t *testing.T) { GatewayMessage: &ttnpb.GatewayUplinkMessage{ Message: &ttnpb.UplinkMessage{ RawPayload: []byte{0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x42, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x42, 0x42, 0x22, 0x11, 0x1, 0x2, 0x3, 0x4}, - ReceivedAt: ttnpb.ProtoTimePtr(receivedAt), + ReceivedAt: timestamppb.New(receivedAt), RxMetadata: []*ttnpb.RxMetadata{ { GatewayIds: &ttnpb.GatewayIdentifiers{ @@ -295,7 +296,7 @@ func TestForwarder(t *testing.T) { Hash: []byte{0xc7, 0x4a, 0x72, 0x7c, 0xe5, 0x01, 0xe9, 0xc1, 0x20, 0x6b, 0xb2, 0x81, 0x82, 0xeb, 0x06, 0x91, 0x7f, 0x94, 0x43, 0x54, 0x30, 0x90, 0x78, 0x0f, 0x3a, 0x39, 0x3d, 0xeb, 0xad, 0x91, 0xad, 0x96}, }, }, - ForwarderReceiveTime: test.Must(pbtypes.TimestampProto(time.Date(2020, time.March, 24, 12, 0, 0, 0, time.UTC))).(*pbtypes.Timestamp), + ForwarderReceiveTime: timestamppb.New(time.Date(2020, time.March, 24, 12, 0, 0, 0, time.UTC)), DataRate: packetbroker.NewLoRaDataRate(9, 125000, band.Cr4_5), Frequency: 868300000, GatewayMetadata: &packetbroker.UplinkMessage_GatewayMetadata{ @@ -577,7 +578,7 @@ func TestHomeNetwork(t *testing.T) { }, }, DataRate: packetbroker.NewLoRaDataRate(7, 125000, band.Cr4_5), - ForwarderReceiveTime: test.Must(pbtypes.TimestampProto(time.Date(2020, time.March, 24, 12, 0, 0, 0, time.UTC))).(*pbtypes.Timestamp), + ForwarderReceiveTime: timestamppb.New(time.Date(2020, time.March, 24, 12, 0, 0, 0, time.UTC)), Frequency: 869525000, CodingRate: band.Cr4_5, GatewayMetadata: &packetbroker.UplinkMessage_GatewayMetadata{ @@ -751,7 +752,7 @@ func TestHomeNetwork(t *testing.T) { }, }, DataRate: packetbroker.NewLoRaDataRate(9, 125000, band.Cr4_5), - ForwarderReceiveTime: test.Must(pbtypes.TimestampProto(time.Date(2020, time.March, 24, 12, 0, 0, 0, time.UTC))).(*pbtypes.Timestamp), + ForwarderReceiveTime: timestamppb.New(time.Date(2020, time.March, 24, 12, 0, 0, 0, time.UTC)), Frequency: 869525000, CodingRate: band.Cr4_5, GatewayMetadata: &packetbroker.UplinkMessage_GatewayMetadata{ diff --git a/pkg/packetbrokeragent/grpc_pba.go b/pkg/packetbrokeragent/grpc_pba.go index ad55cba022..ce82a86876 100644 --- a/pkg/packetbrokeragent/grpc_pba.go +++ b/pkg/packetbrokeragent/grpc_pba.go @@ -17,9 +17,7 @@ package packetbrokeragent import ( "context" "strconv" - "time" - pbtypes "github.com/gogo/protobuf/types" iampb "go.packetbroker.org/api/iam" iampbv2 "go.packetbroker.org/api/iam/v2" mappingpb "go.packetbroker.org/api/mapping/v2" @@ -31,6 +29,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/metadata" "google.golang.org/protobuf/types/known/emptypb" + "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -290,7 +289,7 @@ func (s *pbaServer) ListHomeNetworkRoutingPolicies(ctx context.Context, req *ttn client = routingpb.NewPolicyManagerClient(s.cpConn) netID = s.netID.MarshalNumber() tenantID = s.tenantIDExtractor(ctx) - updatedSince *time.Time + updatedSince *timestamppb.Timestamp policies []*packetbroker.RoutingPolicy total int64 ) @@ -307,7 +306,7 @@ func (s *pbaServer) ListHomeNetworkRoutingPolicies(ctx context.Context, req *ttn ForwarderTenantId: tenantID, } if updatedSince != nil { - req.UpdatedSince, _ = pbtypes.TimestampProto(*updatedSince) + req.UpdatedSince = updatedSince } res, err := client.ListHomeNetworkPolicies(ctx, req) if err != nil { @@ -317,11 +316,7 @@ func (s *pbaServer) ListHomeNetworkRoutingPolicies(ctx context.Context, req *ttn break } policies = append(policies, res.GetPolicies()...) - t, err := pbtypes.TimestampFromProto(res.Policies[len(res.Policies)-1].GetUpdatedAt()) - if err != nil { - return nil, err - } - updatedSince = &t + updatedSince = res.Policies[len(res.Policies)-1].GetUpdatedAt() total = int64(res.Total) } diff --git a/pkg/packetbrokeragent/grpc_pba_test.go b/pkg/packetbrokeragent/grpc_pba_test.go index 8491b3b25a..d8821c4f30 100644 --- a/pkg/packetbrokeragent/grpc_pba_test.go +++ b/pkg/packetbrokeragent/grpc_pba_test.go @@ -22,7 +22,6 @@ import ( "testing" "time" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" iampb "go.packetbroker.org/api/iam" iampbv2 "go.packetbroker.org/api/iam/v2" @@ -43,6 +42,7 @@ import ( "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/emptypb" + "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -316,7 +316,7 @@ func TestPba(t *testing.T) { Policy: &packetbroker.RoutingPolicy{ ForwarderNetId: 0x13, ForwarderTenantId: "foo-tenant", - UpdatedAt: pbtypes.TimestampNow(), + UpdatedAt: timestamppb.Now(), Uplink: &packetbroker.RoutingPolicy_Uplink{ JoinRequest: true, MacData: true, @@ -348,7 +348,7 @@ func TestPba(t *testing.T) { MacData: true, }, }) - a.So(test.Must(pbtypes.TimestampFromProto(res.UpdatedAt)).(time.Time), should.HappenBetween, time.Now().Add(-1*time.Second), time.Now()) + a.So(res.UpdatedAt.AsTime(), should.HappenBetween, time.Now().Add(-1*time.Second), time.Now()) }, }, { @@ -413,7 +413,7 @@ func TestPba(t *testing.T) { ForwarderNetId: 0x13, ForwarderTenantId: "foo-tenant", HomeNetworkNetId: uint32(i) + 1, - UpdatedAt: test.Must(pbtypes.TimestampProto(time.Unix(int64(i), 0))).(*pbtypes.Timestamp), + UpdatedAt: timestamppb.New(time.Unix(int64(i), 0)), Uplink: &packetbroker.RoutingPolicy_Uplink{ JoinRequest: i%2 == 0, MacData: i%3 == 0, @@ -440,9 +440,10 @@ func TestPba(t *testing.T) { Total: uint32(len(policies)), } for _, p := range policies { - if p.UpdatedAt.Compare(req.UpdatedSince) > 0 { - res.Policies = append(res.Policies, p) + if req.UpdatedSince != nil && p.UpdatedAt.AsTime().Sub(req.UpdatedSince.AsTime()) <= 0 { + continue } + res.Policies = append(res.Policies, p) if len(res.Policies) >= int(limit) { break } @@ -486,7 +487,7 @@ func TestPba(t *testing.T) { HomeNetworkId: &ttnpb.PacketBrokerNetworkIdentifier{ NetId: uint32(i) + 1, }, - UpdatedAt: test.Must(pbtypes.TimestampProto(time.Unix(int64(i), 0))).(*pbtypes.Timestamp), + UpdatedAt: timestamppb.New(time.Unix(int64(i), 0)), Uplink: &ttnpb.PacketBrokerRoutingPolicyUplink{ JoinRequest: i%2 == 0, MacData: i%3 == 0, diff --git a/pkg/packetbrokeragent/translation.go b/pkg/packetbrokeragent/translation.go index 8d84f15174..1ff5fd91bf 100644 --- a/pkg/packetbrokeragent/translation.go +++ b/pkg/packetbrokeragent/translation.go @@ -33,6 +33,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" "gopkg.in/square/go-jose.v2" ) @@ -373,7 +374,7 @@ func toPBUplink(ctx context.Context, msg *ttnpb.GatewayUplinkMessage, config For localization.Antennas = append(localization.Antennas, locAnt) } - earlierGatewayReceiveTime := func(t *pbtypes.Timestamp) bool { + earlierGatewayReceiveTime := func(t *timestamppb.Timestamp) bool { g := gatewayReceiveTime return g == nil || t != nil && ttnpb.StdTime(t).Before(*g) } @@ -477,14 +478,11 @@ func fromPBUplink(ctx context.Context, msg *packetbroker.RoutedUplinkMessage, re DataRate: dataRate, Frequency: msg.Message.Frequency, }, - ReceivedAt: ttnpb.ProtoTimePtr(receivedAt), + ReceivedAt: timestamppb.New(receivedAt), CorrelationIds: events.CorrelationIDsFromContext(ctx), } - var receiveTime *pbtypes.Timestamp - if t, err := pbtypes.TimestampFromProto(msg.Message.GatewayReceiveTime); err == nil { - receiveTime = ttnpb.ProtoTimePtr(t) - } + receiveTime := msg.Message.GatewayReceiveTime if gtwMd := msg.Message.GatewayMetadata; gtwMd != nil { pbMD := &ttnpb.PacketBrokerMetadata{ MessageId: msg.Id, @@ -515,12 +513,8 @@ func fromPBUplink(ctx context.Context, msg *packetbroker.RoutedUplinkMessage, re if includeHops { pbMD.Hops = make([]*ttnpb.PacketBrokerRouteHop, 0, len(msg.Hops)) for _, h := range msg.Hops { - receivedAt, err := pbtypes.TimestampFromProto(h.ReceivedAt) - if err != nil { - continue - } pbMD.Hops = append(pbMD.Hops, &ttnpb.PacketBrokerRouteHop{ - ReceivedAt: ttnpb.ProtoTimePtr(receivedAt), + ReceivedAt: h.ReceivedAt, SenderName: h.SenderName, SenderAddress: h.SenderAddress, ReceiverName: h.ReceiverName, diff --git a/pkg/ttnpb/stdtime.go b/pkg/ttnpb/stdtime.go index 587a237568..2c70c1974a 100644 --- a/pkg/ttnpb/stdtime.go +++ b/pkg/ttnpb/stdtime.go @@ -17,26 +17,23 @@ package ttnpb import ( "time" - pbtypes "github.com/gogo/protobuf/types" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" ) // StdTime converts a protobuf timestamp to a standard library time. // // ProtoTime panics if the time is invalid. -func StdTime(protoTime *pbtypes.Timestamp) *time.Time { +func StdTime(protoTime *timestamppb.Timestamp) *time.Time { if protoTime == nil { return nil } - stdTime, err := pbtypes.TimestampFromProto(protoTime) - if err != nil { - panic(err) - } + stdTime := protoTime.AsTime() return &stdTime } // StdTimeOrZero converts a protobuf time to a standard library time. // If protoTime is nil, it returns a zero time. -func StdTimeOrZero(protoTime *pbtypes.Timestamp) time.Time { +func StdTimeOrZero(protoTime *timestamppb.Timestamp) time.Time { stdTime := StdTime(protoTime) if stdTime == nil { return time.Time{} @@ -47,16 +44,9 @@ func StdTimeOrZero(protoTime *pbtypes.Timestamp) time.Time { // ProtoTime converts a standard library time to a protobuf timestamp. // // ProtoTime panics if the time is invalid. -func ProtoTime(stdTime *time.Time) *pbtypes.Timestamp { +func ProtoTime(stdTime *time.Time) *timestamppb.Timestamp { if stdTime == nil { return nil } - protoTime, err := pbtypes.TimestampProto(*stdTime) - if err != nil { - panic(err) - } - return protoTime + return timestamppb.New(*stdTime) } - -// ProtoTimePtr converts a standard library time to a pointer and then to a protobuf timestamp. -func ProtoTimePtr(stdTime time.Time) *pbtypes.Timestamp { return ProtoTime(&stdTime) } diff --git a/pkg/ttnpb/udp/translation.go b/pkg/ttnpb/udp/translation.go index 475d624035..0d7415efe6 100644 --- a/pkg/ttnpb/udp/translation.go +++ b/pkg/ttnpb/udp/translation.go @@ -24,6 +24,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/datarate" "go.thethings.network/lorawan-stack/v3/pkg/version" + "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -206,14 +207,14 @@ func convertUplink(rx RxPacket, md UpstreamMetadata) (*ttnpb.UplinkMessage, erro goTime = time.Time(*rx.Time) } if !goTime.IsZero() { - protoTime := ttnpb.ProtoTimePtr(goTime) + protoTime := timestamppb.New(goTime) for _, md := range up.RxMetadata { md.Time = protoTime } up.Settings.Time = protoTime } if !goGpsTime.IsZero() { - protoTime := ttnpb.ProtoTimePtr(goGpsTime) + protoTime := timestamppb.New(goGpsTime) for _, md := range up.RxMetadata { md.GpsTime = protoTime } @@ -285,9 +286,9 @@ func convertStatus(stat Stat, md UpstreamMetadata) *ttnpb.GatewayStatus { } } - status.Time = ttnpb.ProtoTimePtr(time.Time(stat.Time)) + status.Time = timestamppb.New(time.Time(stat.Time)) if stat.Boot != nil { - status.BootTime = ttnpb.ProtoTimePtr(time.Time(*stat.Boot)) + status.BootTime = timestamppb.New(time.Time(*stat.Boot)) } addVersions(status, stat) @@ -373,7 +374,7 @@ func ToDownlinkMessage(tx *TxPacket) (*ttnpb.DownlinkMessage, error) { } if tx.Time != nil { t := gpstime.Parse(time.Duration(*tx.Tmms) * time.Millisecond) - scheduled.Time = ttnpb.ProtoTimePtr(t) + scheduled.Time = timestamppb.New(t) } buf, err := base64.RawStdEncoding.DecodeString(strings.TrimRight(tx.Data, "=")) if err != nil { diff --git a/pkg/ttnpb/udp/translation_test.go b/pkg/ttnpb/udp/translation_test.go index 2e7eb334c6..e1e959c359 100644 --- a/pkg/ttnpb/udp/translation_test.go +++ b/pkg/ttnpb/udp/translation_test.go @@ -29,6 +29,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/datarate" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "go.thethings.network/lorawan-stack/v3/pkg/version" + "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -410,7 +411,7 @@ func TestToGatewayUpRawMultiAntenna(t *testing.T) { }, }, Frequency: 868500000, - Time: ttnpb.ProtoTimePtr(utcTime), + Time: timestamppb.New(utcTime), Timestamp: timestamp, }, RxMetadata: []*ttnpb.RxMetadata{ @@ -420,7 +421,7 @@ func TestToGatewayUpRawMultiAntenna(t *testing.T) { }, AntennaIndex: 0, ChannelIndex: 7, - Time: ttnpb.ProtoTimePtr(utcTime), + Time: timestamppb.New(utcTime), Timestamp: timestamp, FineTimestamp: 1255738435, EncryptedFineTimestamp: []byte{0xe3, 0x64, 0x0c, 0xcc, 0xe9, 0x58, 0x49, 0x23, 0xcc, 0x31, 0xea, 0x95, 0x3e, 0xb6, 0x34, 0x7d}, //nolint:lll @@ -438,7 +439,7 @@ func TestToGatewayUpRawMultiAntenna(t *testing.T) { }, AntennaIndex: 1, ChannelIndex: 23, - Time: ttnpb.ProtoTimePtr(utcTime), + Time: timestamppb.New(utcTime), Timestamp: timestamp, FineTimestamp: 1252538436, EncryptedFineTimestamp: []byte{0x76, 0x31, 0xa2, 0x4b, 0x33, 0x82, 0xfa, 0x00, 0x93, 0xee, 0xf4, 0x4f, 0xbf, 0xbf, 0x80, 0xb3}, //nolint:lll diff --git a/pkg/util/test/constructors_generated.go b/pkg/util/test/constructors_generated.go index 51c2189d03..e4e1391a48 100644 --- a/pkg/util/test/constructors_generated.go +++ b/pkg/util/test/constructors_generated.go @@ -219,7 +219,7 @@ func (SessionOptionNamespace) WithLastConfFCntDown(v uint32) SessionOption { } // WithStartedAt returns a SessionOption, which returns a copy of ttnpb.Session with StartedAt set to v. -func (SessionOptionNamespace) WithStartedAt(v *pbtypes.Timestamp) SessionOption { +func (SessionOptionNamespace) WithStartedAt(v *timestamppb.Timestamp) SessionOption { return func(x *ttnpb.Session) *ttnpb.Session { copy := ttnpb.Clone(x) copy.StartedAt = v @@ -311,7 +311,7 @@ func (MACStateOptionNamespace) WithLorawanVersion(v ttnpb.MACVersion) MACStateOp } // WithLastConfirmedDownlinkAt returns a MACStateOption, which returns a copy of ttnpb.MACState with LastConfirmedDownlinkAt set to v. -func (MACStateOptionNamespace) WithLastConfirmedDownlinkAt(v *pbtypes.Timestamp) MACStateOption { +func (MACStateOptionNamespace) WithLastConfirmedDownlinkAt(v *timestamppb.Timestamp) MACStateOption { return func(x *ttnpb.MACState) *ttnpb.MACState { copy := ttnpb.Clone(x) copy.LastConfirmedDownlinkAt = v @@ -410,7 +410,7 @@ func (MACStateOptionNamespace) WithRecentDownlinks(vs ...*ttnpb.MACState_Downlin } // WithLastNetworkInitiatedDownlinkAt returns a MACStateOption, which returns a copy of ttnpb.MACState with LastNetworkInitiatedDownlinkAt set to v. -func (MACStateOptionNamespace) WithLastNetworkInitiatedDownlinkAt(v *pbtypes.Timestamp) MACStateOption { +func (MACStateOptionNamespace) WithLastNetworkInitiatedDownlinkAt(v *timestamppb.Timestamp) MACStateOption { return func(x *ttnpb.MACState) *ttnpb.MACState { copy := ttnpb.Clone(x) copy.LastNetworkInitiatedDownlinkAt = v @@ -446,7 +446,7 @@ func (MACStateOptionNamespace) WithRejectedFrequencies(vs ...uint64) MACStateOpt } // WithLastDownlinkAt returns a MACStateOption, which returns a copy of ttnpb.MACState with LastDownlinkAt set to v. -func (MACStateOptionNamespace) WithLastDownlinkAt(v *pbtypes.Timestamp) MACStateOption { +func (MACStateOptionNamespace) WithLastDownlinkAt(v *timestamppb.Timestamp) MACStateOption { return func(x *ttnpb.MACState) *ttnpb.MACState { copy := ttnpb.Clone(x) copy.LastDownlinkAt = v @@ -612,7 +612,7 @@ func (EndDeviceOptionNamespace) WithIds(v *ttnpb.EndDeviceIdentifiers) EndDevice } // WithCreatedAt returns a EndDeviceOption, which returns a copy of ttnpb.EndDevice with CreatedAt set to v. -func (EndDeviceOptionNamespace) WithCreatedAt(v *pbtypes.Timestamp) EndDeviceOption { +func (EndDeviceOptionNamespace) WithCreatedAt(v *timestamppb.Timestamp) EndDeviceOption { return func(x *ttnpb.EndDevice) *ttnpb.EndDevice { copy := ttnpb.Clone(x) copy.CreatedAt = v @@ -621,7 +621,7 @@ func (EndDeviceOptionNamespace) WithCreatedAt(v *pbtypes.Timestamp) EndDeviceOpt } // WithUpdatedAt returns a EndDeviceOption, which returns a copy of ttnpb.EndDevice with UpdatedAt set to v. -func (EndDeviceOptionNamespace) WithUpdatedAt(v *pbtypes.Timestamp) EndDeviceOption { +func (EndDeviceOptionNamespace) WithUpdatedAt(v *timestamppb.Timestamp) EndDeviceOption { return func(x *ttnpb.EndDevice) *ttnpb.EndDevice { copy := ttnpb.Clone(x) copy.UpdatedAt = v @@ -936,7 +936,7 @@ func (EndDeviceOptionNamespace) WithLastRjCount_1(v uint32) EndDeviceOption { } // WithLastDevStatusReceivedAt returns a EndDeviceOption, which returns a copy of ttnpb.EndDevice with LastDevStatusReceivedAt set to v. -func (EndDeviceOptionNamespace) WithLastDevStatusReceivedAt(v *pbtypes.Timestamp) EndDeviceOption { +func (EndDeviceOptionNamespace) WithLastDevStatusReceivedAt(v *timestamppb.Timestamp) EndDeviceOption { return func(x *ttnpb.EndDevice) *ttnpb.EndDevice { copy := ttnpb.Clone(x) copy.LastDevStatusReceivedAt = v @@ -1044,7 +1044,7 @@ func (EndDeviceOptionNamespace) WithSkipPayloadCryptoOverride(v *wrapperspb.Bool } // WithActivatedAt returns a EndDeviceOption, which returns a copy of ttnpb.EndDevice with ActivatedAt set to v. -func (EndDeviceOptionNamespace) WithActivatedAt(v *pbtypes.Timestamp) EndDeviceOption { +func (EndDeviceOptionNamespace) WithActivatedAt(v *timestamppb.Timestamp) EndDeviceOption { return func(x *ttnpb.EndDevice) *ttnpb.EndDevice { copy := ttnpb.Clone(x) copy.ActivatedAt = v @@ -1053,7 +1053,7 @@ func (EndDeviceOptionNamespace) WithActivatedAt(v *pbtypes.Timestamp) EndDeviceO } // WithLastSeenAt returns a EndDeviceOption, which returns a copy of ttnpb.EndDevice with LastSeenAt set to v. -func (EndDeviceOptionNamespace) WithLastSeenAt(v *pbtypes.Timestamp) EndDeviceOption { +func (EndDeviceOptionNamespace) WithLastSeenAt(v *timestamppb.Timestamp) EndDeviceOption { return func(x *ttnpb.EndDevice) *ttnpb.EndDevice { copy := ttnpb.Clone(x) copy.LastSeenAt = v From 1c547a86860c913f887a0415973a89d750d51dd8 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Thu, 29 Sep 2022 13:34:00 +0200 Subject: [PATCH 14/30] all: Use new Duration type --- .../commands/storage_integration_util.go | 6 ++-- pkg/applicationserver/config.go | 3 +- .../io/packages/grpc_test.go | 1 - pkg/band/rpc.go | 14 ++++---- pkg/band/rpc_test.go | 26 +++++++-------- pkg/devicerepository/store/profiles.go | 5 +-- .../store/remote/schema_test.go | 5 +-- pkg/frequencyplans/frequencyplans.go | 3 +- pkg/frequencyplans/frequencyplans_test.go | 4 +-- pkg/gatewayserver/grpc_nsgs.go | 3 +- pkg/gatewayserver/io/io.go | 7 ++-- pkg/gatewayserver/io/mqtt/mqtt_test.go | 5 +-- .../upstream/packetbroker/packetbroker.go | 14 ++++---- pkg/identityserver/bunstore/gateway_store.go | 3 +- pkg/identityserver/config.go | 3 +- pkg/identityserver/storetest/gateway_store.go | 5 +-- pkg/interop/client.go | 3 +- pkg/interop/client_test.go | 7 ++-- pkg/joinserver/http_interop_internal_test.go | 5 +-- pkg/networkserver/downlink.go | 3 +- pkg/networkserver/downlink_internal_test.go | 9 ++--- pkg/networkserver/downlink_test.go | 33 ++++++++++--------- pkg/networkserver/grpc.go | 7 ++-- pkg/networkserver/grpc_gsns.go | 4 ++- pkg/networkserver/internal/test/test.go | 3 +- pkg/networkserver/mac/dev_status_test.go | 9 ++--- pkg/networkserver/networkserver_flow_test.go | 3 +- .../networkserver_util_internal_test.go | 4 +-- pkg/networkserver/utils_internal_test.go | 3 +- pkg/packetbrokeragent/agent_test.go | 7 ++-- pkg/packetbrokeragent/grpc_gspba.go | 5 +-- pkg/packetbrokeragent/translation.go | 8 ++--- pkg/ttnpb/stdduration.go | 20 ++++------- 33 files changed, 126 insertions(+), 114 deletions(-) diff --git a/cmd/ttn-lw-cli/commands/storage_integration_util.go b/cmd/ttn-lw-cli/commands/storage_integration_util.go index d611e2bf06..5a9ccdd815 100644 --- a/cmd/ttn-lw-cli/commands/storage_integration_util.go +++ b/cmd/ttn-lw-cli/commands/storage_integration_util.go @@ -19,10 +19,10 @@ import ( "sort" "strings" - pbtypes "github.com/gogo/protobuf/types" "github.com/spf13/pflag" "go.thethings.network/lorawan-stack/v3/cmd/ttn-lw-cli/internal/util" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -128,7 +128,7 @@ func countStoredUpRequest(flags *pflag.FlagSet) (*ttnpb.GetStoredApplicationUpCo return req, nil } -func timeRangeFromFlags(flags *pflag.FlagSet) (beforePB *timestamppb.Timestamp, afterPB *timestamppb.Timestamp, lastPB *pbtypes.Duration, err error) { +func timeRangeFromFlags(flags *pflag.FlagSet) (beforePB *timestamppb.Timestamp, afterPB *timestamppb.Timestamp, lastPB *durationpb.Duration, err error) { if flags.Changed("last") && (hasTimestampFlags(flags, "after") || hasTimestampFlags(flags, "before")) { return nil, nil, nil, fmt.Errorf("--last cannot be used with --after or --before flags") } @@ -152,7 +152,7 @@ func timeRangeFromFlags(flags *pflag.FlagSet) (beforePB *timestamppb.Timestamp, if err != nil { return nil, nil, nil, err } - lastPB = pbtypes.DurationProto(d) + lastPB = durationpb.New(d) } return } diff --git a/pkg/applicationserver/config.go b/pkg/applicationserver/config.go index f55020cda4..8798dba2d4 100644 --- a/pkg/applicationserver/config.go +++ b/pkg/applicationserver/config.go @@ -31,6 +31,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/config" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/durationpb" ) // InteropClient is a client, which Application Server can use for interoperability. @@ -144,7 +145,7 @@ type WebhooksConfig struct { func (c WebhooksConfig) toProto() *ttnpb.AsConfiguration_Webhooks { return &ttnpb.AsConfiguration_Webhooks{ UnhealthyAttemptsThreshold: int64(c.UnhealthyAttemptsThreshold), - UnhealthyRetryInterval: ttnpb.ProtoDurationPtr(c.UnhealthyRetryInterval), + UnhealthyRetryInterval: durationpb.New(c.UnhealthyRetryInterval), } } diff --git a/pkg/applicationserver/io/packages/grpc_test.go b/pkg/applicationserver/io/packages/grpc_test.go index 4e47f410f5..4b72048995 100644 --- a/pkg/applicationserver/io/packages/grpc_test.go +++ b/pkg/applicationserver/io/packages/grpc_test.go @@ -20,7 +20,6 @@ import ( "testing" "time" - "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/mock" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/packages" diff --git a/pkg/band/rpc.go b/pkg/band/rpc.go index 49cff05672..0aa4a07eb1 100644 --- a/pkg/band/rpc.go +++ b/pkg/band/rpc.go @@ -17,9 +17,9 @@ package band import ( "context" - "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "golang.org/x/exp/maps" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -129,15 +129,15 @@ func (b Band) BandDescription() *ttnpb.BandDescription { FreqMultiplier: b.FreqMultiplier, ImplementsCfList: b.ImplementsCFList, CfListType: b.CFListType, - ReceiveDelay_1: types.DurationProto(b.ReceiveDelay1), - ReceiveDelay_2: types.DurationProto(b.ReceiveDelay2), - JoinAcceptDelay_1: types.DurationProto(b.JoinAcceptDelay1), - JoinAcceptDelay_2: types.DurationProto(b.JoinAcceptDelay2), + ReceiveDelay_1: durationpb.New(b.ReceiveDelay1), + ReceiveDelay_2: durationpb.New(b.ReceiveDelay2), + JoinAcceptDelay_1: durationpb.New(b.JoinAcceptDelay1), + JoinAcceptDelay_2: durationpb.New(b.JoinAcceptDelay2), MaxFcntGap: uint64(b.MaxFCntGap), SupportsDynamicAdr: b.SupportsDynamicADR, AdrAckLimit: b.ADRAckLimit, - MinRetransmitTimeout: types.DurationProto(b.MinRetransmitTimeout), - MaxRetransmitTimeout: types.DurationProto(b.MaxRetransmitTimeout), + MinRetransmitTimeout: durationpb.New(b.MinRetransmitTimeout), + MaxRetransmitTimeout: durationpb.New(b.MaxRetransmitTimeout), TxOffset: b.TxOffset, MaxAdrDataRateIndex: b.MaxADRDataRateIndex, TxParamSetupReqSupport: b.TxParamSetupReqSupport, diff --git a/pkg/band/rpc_test.go b/pkg/band/rpc_test.go index 813265760f..7369c32add 100644 --- a/pkg/band/rpc_test.go +++ b/pkg/band/rpc_test.go @@ -20,12 +20,12 @@ import ( "testing" "time" - "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" . "go.thethings.network/lorawan-stack/v3/pkg/band" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -514,17 +514,17 @@ func TestBand_convertToBandDescription(t *testing.T) { ImplementsCfList: true, CfListType: ttnpb.CFListType_CHANNEL_MASKS, - ReceiveDelay_1: &types.Duration{Seconds: 1}, - ReceiveDelay_2: &types.Duration{Seconds: 2}, + ReceiveDelay_1: durationpb.New(time.Second), + ReceiveDelay_2: durationpb.New(2 * time.Second), - JoinAcceptDelay_1: &types.Duration{Seconds: 3}, - JoinAcceptDelay_2: &types.Duration{Seconds: 4}, + JoinAcceptDelay_1: durationpb.New(3 * time.Second), + JoinAcceptDelay_2: durationpb.New(4 * time.Second), MaxFcntGap: 5, SupportsDynamicAdr: true, AdrAckLimit: ttnpb.ADRAckLimitExponent_ADR_ACK_LIMIT_1, - MinRetransmitTimeout: &types.Duration{Seconds: 1}, - MaxRetransmitTimeout: &types.Duration{Seconds: 2}, + MinRetransmitTimeout: durationpb.New(time.Second), + MaxRetransmitTimeout: durationpb.New(2 * time.Second), TxOffset: []float32{1.0, 2.0}, MaxAdrDataRateIndex: ttnpb.DataRateIndex_DATA_RATE_1, @@ -654,17 +654,17 @@ func TestBand_convertToBandDescription(t *testing.T) { ImplementsCfList: true, CfListType: ttnpb.CFListType_CHANNEL_MASKS, - ReceiveDelay_1: &types.Duration{Seconds: 1}, - ReceiveDelay_2: &types.Duration{Seconds: 2}, + ReceiveDelay_1: durationpb.New(time.Second), + ReceiveDelay_2: durationpb.New(2 * time.Second), - JoinAcceptDelay_1: &types.Duration{Seconds: 3}, - JoinAcceptDelay_2: &types.Duration{Seconds: 4}, + JoinAcceptDelay_1: durationpb.New(3 * time.Second), + JoinAcceptDelay_2: durationpb.New(4 * time.Second), MaxFcntGap: 5, SupportsDynamicAdr: true, AdrAckLimit: ttnpb.ADRAckLimitExponent_ADR_ACK_LIMIT_1, - MinRetransmitTimeout: &types.Duration{Seconds: 1}, - MaxRetransmitTimeout: &types.Duration{Seconds: 2}, + MinRetransmitTimeout: durationpb.New(time.Second), + MaxRetransmitTimeout: durationpb.New(2 * time.Second), TxOffset: []float32{1.0, 2.0}, MaxAdrDataRateIndex: ttnpb.DataRateIndex_DATA_RATE_1, diff --git a/pkg/devicerepository/store/profiles.go b/pkg/devicerepository/store/profiles.go index 56bdddb2f6..32629980cb 100644 --- a/pkg/devicerepository/store/profiles.go +++ b/pkg/devicerepository/store/profiles.go @@ -19,6 +19,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/durationpb" ) const mhz = 1000000 @@ -110,12 +111,12 @@ func (p EndDeviceProfile) ToTemplatePB(ids *ttnpb.EndDeviceVersionIdentifiers, i dev.MacSettings = &ttnpb.MACSettings{} if p.ClassBTimeout > 0 { t := time.Duration(p.ClassBTimeout) * time.Second - dev.MacSettings.ClassBTimeout = ttnpb.ProtoDurationPtr(t) + dev.MacSettings.ClassBTimeout = durationpb.New(t) paths = append(paths, "mac_settings.class_b_timeout") } if p.ClassCTimeout > 0 { t := time.Duration(p.ClassCTimeout) * time.Second - dev.MacSettings.ClassCTimeout = ttnpb.ProtoDurationPtr(t) + dev.MacSettings.ClassCTimeout = durationpb.New(t) paths = append(paths, "mac_settings.class_c_timeout") } if v := p.PingSlotDataRateIndex; v != nil { diff --git a/pkg/devicerepository/store/remote/schema_test.go b/pkg/devicerepository/store/remote/schema_test.go index 3d1bfea364..3864c26bd2 100644 --- a/pkg/devicerepository/store/remote/schema_test.go +++ b/pkg/devicerepository/store/remote/schema_test.go @@ -24,6 +24,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/devicerepository/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/durationpb" "gopkg.in/yaml.v2" ) @@ -118,7 +119,7 @@ func TestProfile(t *testing.T) { SupportsClassB: true, SupportsJoin: true, MacSettings: &ttnpb.MACSettings{ - ClassBTimeout: ttnpb.ProtoDurationPtr(8 * time.Second), + ClassBTimeout: durationpb.New(8 * time.Second), PingSlotPeriodicity: &ttnpb.PingSlotPeriodValue{Value: ttnpb.PingSlotPeriod_PING_EVERY_16S}, PingSlotDataRateIndex: &ttnpb.DataRateIndexValue{Value: ttnpb.DataRateIndex_DATA_RATE_3}, PingSlotFrequency: &ttnpb.ZeroableFrequencyValue{Value: 868300000}, @@ -147,7 +148,7 @@ func TestProfile(t *testing.T) { SupportsClassC: true, SupportsJoin: true, MacSettings: &ttnpb.MACSettings{ - ClassCTimeout: ttnpb.ProtoDurationPtr(64 * time.Second), + ClassCTimeout: durationpb.New(64 * time.Second), }, }, FieldMask: ttnpb.FieldMask( diff --git a/pkg/frequencyplans/frequencyplans.go b/pkg/frequencyplans/frequencyplans.go index 7896c043aa..8618eecff1 100644 --- a/pkg/frequencyplans/frequencyplans.go +++ b/pkg/frequencyplans/frequencyplans.go @@ -23,6 +23,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/fetch" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/durationpb" yaml "gopkg.in/yaml.v2" ) @@ -79,7 +80,7 @@ func (lbt *LBT) ToConcentratorConfig() *ttnpb.ConcentratorConfig_LBTConfiguratio return &ttnpb.ConcentratorConfig_LBTConfiguration{ RssiOffset: lbt.RSSIOffset, RssiTarget: lbt.RSSITarget, - ScanTime: ttnpb.ProtoDurationPtr(lbt.ScanTime), + ScanTime: durationpb.New(lbt.ScanTime), } } diff --git a/pkg/frequencyplans/frequencyplans_test.go b/pkg/frequencyplans/frequencyplans_test.go index b1b16af546..84285465fc 100644 --- a/pkg/frequencyplans/frequencyplans_test.go +++ b/pkg/frequencyplans/frequencyplans_test.go @@ -20,13 +20,13 @@ import ( "testing" "time" - "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/fetch" "go.thethings.network/lorawan-stack/v3/pkg/frequencyplans" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/durationpb" ) func uint64Ptr(v uint64) *uint64 { return &v } @@ -340,7 +340,7 @@ func TestProtoConversion(t *testing.T) { }, Output: &ttnpb.ConcentratorConfig{ Lbt: &ttnpb.ConcentratorConfig_LBTConfiguration{ - ScanTime: types.DurationProto(32 * time.Microsecond), + ScanTime: durationpb.New(32 * time.Microsecond), }, PingSlot: &ttnpb.ConcentratorConfig_Channel{ Frequency: 923000000, diff --git a/pkg/gatewayserver/grpc_nsgs.go b/pkg/gatewayserver/grpc_nsgs.go index e8531c3637..2bb475fe22 100644 --- a/pkg/gatewayserver/grpc_nsgs.go +++ b/pkg/gatewayserver/grpc_nsgs.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/log" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/durationpb" ) var ( @@ -93,7 +94,7 @@ func (gs *GatewayServer) ScheduleDownlink(ctx context.Context, down *ttnpb.Downl registerSendDownlink(ctx, conn.Gateway(), connDown, conn.Frontend().Protocol()) return &ttnpb.ScheduleDownlinkResponse{ - Delay: ttnpb.ProtoDurationPtr(delay), + Delay: durationpb.New(delay), DownlinkPath: &ttnpb.DownlinkPath{ Path: &ttnpb.DownlinkPath_Fixed{ Fixed: ids, diff --git a/pkg/gatewayserver/io/io.go b/pkg/gatewayserver/io/io.go index a53ed97e4d..8cf6010a80 100644 --- a/pkg/gatewayserver/io/io.go +++ b/pkg/gatewayserver/io/io.go @@ -32,6 +32,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ratelimit" "go.thethings.network/lorawan-stack/v3/pkg/task" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -783,9 +784,9 @@ func (c *Connection) Stats() (*ttnpb.GatewayConnectionStats, []string) { } if min, max, median, _, count := c.RTTStats(100, time.Now()); count > 0 { stats.RoundTripTimes = &ttnpb.GatewayConnectionStats_RoundTripTimes{ - Min: ttnpb.ProtoDurationPtr(min), - Max: ttnpb.ProtoDurationPtr(max), - Median: ttnpb.ProtoDurationPtr(median), + Min: durationpb.New(min), + Max: durationpb.New(max), + Median: durationpb.New(median), Count: uint32(count), } paths = append(paths, "round_trip_times") diff --git a/pkg/gatewayserver/io/mqtt/mqtt_test.go b/pkg/gatewayserver/io/mqtt/mqtt_test.go index bb97e684da..cbec8256ad 100644 --- a/pkg/gatewayserver/io/mqtt/mqtt_test.go +++ b/pkg/gatewayserver/io/mqtt/mqtt_test.go @@ -22,7 +22,6 @@ import ( "time" mqtt "github.com/eclipse/paho.mqtt.golang" - "github.com/gogo/protobuf/proto" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/band" "go.thethings.network/lorawan-stack/v3/pkg/cluster" @@ -39,6 +38,8 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/unique" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -195,7 +196,7 @@ func TestTraffic(t *testing.T) { t.Run("Upstream", func(t *testing.T) { for _, tc := range []struct { Topic string - Message proto.Message + Message protoreflect.ProtoMessage OK bool }{ { diff --git a/pkg/gatewayserver/upstream/packetbroker/packetbroker.go b/pkg/gatewayserver/upstream/packetbroker/packetbroker.go index 3f8cdc820f..c53f010190 100644 --- a/pkg/gatewayserver/upstream/packetbroker/packetbroker.go +++ b/pkg/gatewayserver/upstream/packetbroker/packetbroker.go @@ -19,7 +19,6 @@ import ( "context" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/cluster" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/gatewayserver/io" @@ -28,6 +27,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -85,15 +85,13 @@ func (h *Handler) Setup(context.Context) error { return nil } -func (h *Handler) nextUpdateGateway(onlineTTL *pbtypes.Duration) <-chan time.Time { +func (h *Handler) nextUpdateGateway(onlineTTL *durationpb.Duration) <-chan time.Time { d := random.Jitter(h.UpdateInterval, h.UpdateJitter) if onlineTTL != nil { - ttl, err := pbtypes.DurationFromProto(onlineTTL) - if err == nil { - ttl -= h.OnlineTTLMargin - if ttl < d { - d = ttl - } + ttl := onlineTTL.AsDuration() + ttl -= h.OnlineTTLMargin + if ttl < d { + d = ttl } } return time.After(d) diff --git a/pkg/identityserver/bunstore/gateway_store.go b/pkg/identityserver/bunstore/gateway_store.go index caa31d5ec0..4ae5eae4fa 100644 --- a/pkg/identityserver/bunstore/gateway_store.go +++ b/pkg/identityserver/bunstore/gateway_store.go @@ -29,6 +29,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -142,7 +143,7 @@ func gatewayToPB(m *Gateway, fieldMask ...string) (*ttnpb.Gateway, error) { ScheduleDownlinkLate: m.ScheduleDownlinkLate, EnforceDutyCycle: m.EnforceDutyCycle, - ScheduleAnytimeDelay: ttnpb.ProtoDurationPtr(time.Duration(m.ScheduleAnytimeDelay)), + ScheduleAnytimeDelay: durationpb.New(time.Duration(m.ScheduleAnytimeDelay)), DownlinkPathConstraint: ttnpb.DownlinkPathConstraint(m.DownlinkPathConstraint), UpdateLocationFromStatus: m.UpdateLocationFromStatus, diff --git a/pkg/identityserver/config.go b/pkg/identityserver/config.go index eba4ff8332..de7f64565f 100644 --- a/pkg/identityserver/config.go +++ b/pkg/identityserver/config.go @@ -28,6 +28,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/oauth" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" ttntypes "go.thethings.network/lorawan-stack/v3/pkg/types" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -172,7 +173,7 @@ func (c Config) toProto() *ttnpb.IsConfiguration { Enabled: c.UserRegistration.Enabled, Invitation: &ttnpb.IsConfiguration_UserRegistration_Invitation{ Required: &wrapperspb.BoolValue{Value: c.UserRegistration.Invitation.Required}, - TokenTtl: ttnpb.ProtoDurationPtr(c.UserRegistration.Invitation.TokenTTL), + TokenTtl: durationpb.New(c.UserRegistration.Invitation.TokenTTL), }, ContactInfoValidation: &ttnpb.IsConfiguration_UserRegistration_ContactInfoValidation{ Required: &wrapperspb.BoolValue{Value: c.UserRegistration.ContactInfoValidation.Required}, diff --git a/pkg/identityserver/storetest/gateway_store.go b/pkg/identityserver/storetest/gateway_store.go index 846cfc4e39..004adc1e34 100644 --- a/pkg/identityserver/storetest/gateway_store.go +++ b/pkg/identityserver/storetest/gateway_store.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -90,7 +91,7 @@ func (st *StoreTest) TestGatewayStoreCRUD(t *T) { ScheduleDownlinkLate: true, EnforceDutyCycle: true, DownlinkPathConstraint: ttnpb.DownlinkPathConstraint_DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER, - ScheduleAnytimeDelay: ttnpb.ProtoDurationPtr(time.Second), + ScheduleAnytimeDelay: durationpb.New(time.Second), UpdateLocationFromStatus: true, LbsLnsSecret: secret, ClaimAuthenticationCode: claim, @@ -248,7 +249,7 @@ func (st *StoreTest) TestGatewayStoreCRUD(t *T) { ScheduleDownlinkLate: false, EnforceDutyCycle: false, DownlinkPathConstraint: ttnpb.DownlinkPathConstraint_DOWNLINK_PATH_CONSTRAINT_NONE, - ScheduleAnytimeDelay: ttnpb.ProtoDurationPtr(time.Second / 2), + ScheduleAnytimeDelay: durationpb.New(time.Second / 2), UpdateLocationFromStatus: false, LbsLnsSecret: updatedSecret, ClaimAuthenticationCode: updatedClaim, diff --git a/pkg/interop/client.go b/pkg/interop/client.go index f23d17f36b..f8b173a8e7 100644 --- a/pkg/interop/client.go +++ b/pkg/interop/client.go @@ -38,6 +38,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/specification/macspec" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" + "google.golang.org/protobuf/types/known/durationpb" yaml "gopkg.in/yaml.v2" ) @@ -300,7 +301,7 @@ func (cl joinServerHTTPClient) HandleJoinRequest( NwkSEncKey: (*ttnpb.KeyEnvelope)(interopAns.NwkSEncKey), AppSKey: (*ttnpb.KeyEnvelope)(interopAns.AppSKey), }, - Lifetime: ttnpb.ProtoDurationPtr(time.Duration(interopAns.Lifetime) * time.Second), + Lifetime: durationpb.New(time.Duration(interopAns.Lifetime) * time.Second), }, nil } diff --git a/pkg/interop/client_test.go b/pkg/interop/client_test.go index 89c191765c..2c9bc6aab4 100644 --- a/pkg/interop/client_test.go +++ b/pkg/interop/client_test.go @@ -33,6 +33,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/durationpb" ) func TestGetAppSKey(t *testing.T) { //nolint:paralleltest @@ -471,7 +472,7 @@ func TestHandleJoinRequest(t *testing.T) { //nolint:paralleltest EncryptedKey: []byte{0x2a, 0x19, 0x5c, 0xc9, 0x3c, 0xa5, 0x4a, 0xd8, 0x2c, 0xfb, 0x36, 0xc8, 0x3d, 0x91, 0x45, 0x0f, 0x3d, 0x2d, 0x52, 0x35, 0x56, 0xf1, 0x3e, 0x69}, //nolint:lll }, }, - Lifetime: ttnpb.ProtoDurationPtr(0), + Lifetime: durationpb.New(0), }) }, ErrorAssertion: func(a *assertions.Assertion, err error) bool { @@ -556,7 +557,7 @@ func TestHandleJoinRequest(t *testing.T) { //nolint:paralleltest EncryptedKey: []byte{0x2a, 0x19, 0x5c, 0xc9, 0x3c, 0xa5, 0x4a, 0xd8, 0x2c, 0xfb, 0x36, 0xc8, 0x3d, 0x91, 0x45, 0x0f, 0x3d, 0x2d, 0x52, 0x35, 0x56, 0xf1, 0x3e, 0x69}, //nolint:lll }, }, - Lifetime: ttnpb.ProtoDurationPtr(0), + Lifetime: durationpb.New(0), }) }, ErrorAssertion: func(a *assertions.Assertion, err error) bool { @@ -643,7 +644,7 @@ func TestHandleJoinRequest(t *testing.T) { //nolint:paralleltest EncryptedKey: []byte{0x2a, 0x19, 0x5c, 0xc9, 0x3c, 0xa5, 0x4a, 0xd8, 0x2c, 0xfb, 0x36, 0xc8, 0x3d, 0x91, 0x45, 0x0f, 0x3d, 0x2d, 0x52, 0x35, 0x56, 0xf1, 0x3e, 0x69}, //nolint:lll }, }, - Lifetime: ttnpb.ProtoDurationPtr(0), + Lifetime: durationpb.New(0), }) }, ErrorAssertion: func(a *assertions.Assertion, err error) bool { diff --git a/pkg/joinserver/http_interop_internal_test.go b/pkg/joinserver/http_interop_internal_test.go index ad72d593d7..f48d8c7bda 100644 --- a/pkg/joinserver/http_interop_internal_test.go +++ b/pkg/joinserver/http_interop_internal_test.go @@ -27,6 +27,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/durationpb" ) type mockInteropHandler struct { @@ -103,7 +104,7 @@ func TestInteropJoinRequest(t *testing.T) { HandleJoinFunc: func() (*ttnpb.JoinResponse, error) { return &ttnpb.JoinResponse{ RawPayload: []byte{0x1, 0x2, 0x3, 0x4}, - Lifetime: ttnpb.ProtoDurationPtr(1 * time.Hour), + Lifetime: durationpb.New(1 * time.Hour), SessionKeys: &ttnpb.SessionKeys{ SessionKeyId: []byte{0x1, 0x2, 0x3, 0x4}, FNwkSIntKey: &ttnpb.KeyEnvelope{ @@ -180,7 +181,7 @@ func TestInteropJoinRequest(t *testing.T) { HandleJoinFunc: func() (*ttnpb.JoinResponse, error) { return &ttnpb.JoinResponse{ RawPayload: []byte{0x1, 0x2, 0x3, 0x4}, - Lifetime: ttnpb.ProtoDurationPtr(1 * time.Hour), + Lifetime: durationpb.New(1 * time.Hour), SessionKeys: &ttnpb.SessionKeys{ SessionKeyId: []byte{0x1, 0x2, 0x3, 0x4}, FNwkSIntKey: &ttnpb.KeyEnvelope{ diff --git a/pkg/networkserver/downlink.go b/pkg/networkserver/downlink.go index d5c914bc60..0bcfe60890 100644 --- a/pkg/networkserver/downlink.go +++ b/pkg/networkserver/downlink.go @@ -39,6 +39,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/unique" "go.thethings.network/lorawan-stack/v3/pkg/util/lora" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -839,7 +840,7 @@ func (t *packetBrokerDownlinkTarget) Schedule( return nil, err } return &ttnpb.ScheduleDownlinkResponse{ - Delay: ttnpb.ProtoDurationPtr(peeringScheduleDelay), + Delay: durationpb.New(peeringScheduleDelay), DownlinkPath: &ttnpb.DownlinkPath{ Path: &ttnpb.DownlinkPath_Fixed{ Fixed: &ttnpb.GatewayAntennaIdentifiers{ diff --git a/pkg/networkserver/downlink_internal_test.go b/pkg/networkserver/downlink_internal_test.go index 3965ff150f..c60d36afbf 100644 --- a/pkg/networkserver/downlink_internal_test.go +++ b/pkg/networkserver/downlink_internal_test.go @@ -39,6 +39,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -279,7 +280,7 @@ func TestGenerateDataDownlink(t *testing.T) { DevAddr: devAddr.Bytes(), }, MacSettings: &ttnpb.MACSettings{ - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(24 * time.Hour), + StatusTimePeriodicity: durationpb.New(24 * time.Hour), }, MacState: &ttnpb.MACState{ CurrentParameters: &ttnpb.MACParameters{}, @@ -1066,7 +1067,7 @@ func TestGenerateDataDownlink(t *testing.T) { DevAddr: devAddr.Bytes(), }, MacSettings: &ttnpb.MACSettings{ - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(time.Nanosecond), + StatusTimePeriodicity: durationpb.New(time.Nanosecond), }, MacState: &ttnpb.MACState{ CurrentParameters: &ttnpb.MACParameters{}, @@ -1143,7 +1144,7 @@ func TestGenerateDataDownlink(t *testing.T) { DevAddr: devAddr.Bytes(), }, MacSettings: &ttnpb.MACSettings{ - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(time.Nanosecond), + StatusTimePeriodicity: durationpb.New(time.Nanosecond), }, MacState: &ttnpb.MACState{ CurrentParameters: &ttnpb.MACParameters{}, @@ -1217,7 +1218,7 @@ func TestGenerateDataDownlink(t *testing.T) { Component: c, ctx: ctx, defaultMACSettings: &ttnpb.MACSettings{ - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(0), + StatusTimePeriodicity: durationpb.New(0), StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 0}, }, } diff --git a/pkg/networkserver/downlink_test.go b/pkg/networkserver/downlink_test.go index c51aeee0c9..7aa4e10d0f 100644 --- a/pkg/networkserver/downlink_test.go +++ b/pkg/networkserver/downlink_test.go @@ -43,6 +43,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -335,7 +336,7 @@ func TestProcessDownlinkTask(t *testing.T) { } oneSecondScheduleResponse := NsGsScheduleDownlinkResponse{ Response: &ttnpb.ScheduleDownlinkResponse{ - Delay: ttnpb.ProtoDurationPtr(time.Second), + Delay: durationpb.New(time.Second), }, } @@ -513,7 +514,7 @@ func TestProcessDownlinkTask(t *testing.T) { ), }, MacSettings: &ttnpb.MACSettings{ - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(0), + StatusTimePeriodicity: durationpb.New(0), StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 0}, }, Session: &ttnpb.Session{ @@ -563,7 +564,7 @@ func TestProcessDownlinkTask(t *testing.T) { }, MacSettings: &ttnpb.MACSettings{ StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 0}, - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(0), + StatusTimePeriodicity: durationpb.New(0), }, Session: &ttnpb.Session{ DevAddr: test.DefaultDevAddr.Bytes(), @@ -612,7 +613,7 @@ func TestProcessDownlinkTask(t *testing.T) { }, MacSettings: &ttnpb.MACSettings{ StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 0}, - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(0), + StatusTimePeriodicity: durationpb.New(0), }, Session: &ttnpb.Session{ DevAddr: test.DefaultDevAddr.Bytes(), @@ -697,7 +698,7 @@ func TestProcessDownlinkTask(t *testing.T) { }, MacSettings: &ttnpb.MACSettings{ StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 0}, - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(0), + StatusTimePeriodicity: durationpb.New(0), }, Session: &ttnpb.Session{ DevAddr: test.DefaultDevAddr.Bytes(), @@ -1370,7 +1371,7 @@ func TestProcessDownlinkTask(t *testing.T) { FrequencyPlanId: test.EUFrequencyPlanID, LorawanPhyVersion: ttnpb.PHYVersion_RP001_V1_1_REV_B, MacSettings: &ttnpb.MACSettings{ - ClassBTimeout: ttnpb.ProtoDurationPtr(42 * time.Second), + ClassBTimeout: durationpb.New(42 * time.Second), }, MacState: &ttnpb.MACState{ CurrentParameters: makeEU868macParameters(ttnpb.PHYVersion_RP001_V1_1_REV_B), @@ -1517,7 +1518,7 @@ func TestProcessDownlinkTask(t *testing.T) { FrequencyPlanId: test.EUFrequencyPlanID, LorawanPhyVersion: ttnpb.PHYVersion_RP001_V1_1_REV_B, MacSettings: &ttnpb.MACSettings{ - ClassCTimeout: ttnpb.ProtoDurationPtr(42 * time.Second), + ClassCTimeout: durationpb.New(42 * time.Second), }, MacState: &ttnpb.MACState{ CurrentParameters: makeEU868macParameters(ttnpb.PHYVersion_RP001_V1_1_REV_B), @@ -1680,7 +1681,7 @@ func TestProcessDownlinkTask(t *testing.T) { FrequencyPlanId: test.EUFrequencyPlanID, LorawanPhyVersion: ttnpb.PHYVersion_RP001_V1_1_REV_B, MacSettings: &ttnpb.MACSettings{ - ClassCTimeout: ttnpb.ProtoDurationPtr(42 * time.Second), + ClassCTimeout: durationpb.New(42 * time.Second), }, MacState: &ttnpb.MACState{ CurrentParameters: makeEU868macParameters(ttnpb.PHYVersion_RP001_V1_1_REV_B), @@ -1817,8 +1818,8 @@ func TestProcessDownlinkTask(t *testing.T) { LastDevStatusReceivedAt: timestamppb.New(now), LorawanPhyVersion: ttnpb.PHYVersion_RP001_V1_1_REV_B, MacSettings: &ttnpb.MACSettings{ - ClassCTimeout: ttnpb.ProtoDurationPtr(42 * time.Second), - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(time.Hour), + ClassCTimeout: durationpb.New(42 * time.Second), + StatusTimePeriodicity: durationpb.New(time.Hour), }, MacState: &ttnpb.MACState{ CurrentParameters: makeEU868macParameters(ttnpb.PHYVersion_RP001_V1_1_REV_B), @@ -1957,7 +1958,7 @@ func TestProcessDownlinkTask(t *testing.T) { FrequencyPlanId: test.EUFrequencyPlanID, LorawanPhyVersion: ttnpb.PHYVersion_RP001_V1_1_REV_B, MacSettings: &ttnpb.MACSettings{ - ClassCTimeout: ttnpb.ProtoDurationPtr(42 * time.Second), + ClassCTimeout: durationpb.New(42 * time.Second), }, MacState: &ttnpb.MACState{ CurrentParameters: makeEU868macParameters(ttnpb.PHYVersion_RP001_V1_1_REV_B), @@ -2117,7 +2118,7 @@ func TestProcessDownlinkTask(t *testing.T) { FrequencyPlanId: test.EUFrequencyPlanID, LorawanPhyVersion: ttnpb.PHYVersion_RP001_V1_1_REV_B, MacSettings: &ttnpb.MACSettings{ - ClassCTimeout: ttnpb.ProtoDurationPtr(42 * time.Second), + ClassCTimeout: durationpb.New(42 * time.Second), }, MacState: &ttnpb.MACState{ CurrentParameters: makeEU868macParameters(ttnpb.PHYVersion_RP001_V1_1_REV_B), @@ -2257,9 +2258,9 @@ func TestProcessDownlinkTask(t *testing.T) { FrequencyPlanId: test.EUFrequencyPlanID, LorawanPhyVersion: ttnpb.PHYVersion_RP001_V1_1_REV_B, MacSettings: &ttnpb.MACSettings{ - ClassCTimeout: ttnpb.ProtoDurationPtr(42 * time.Second), + ClassCTimeout: durationpb.New(42 * time.Second), StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 0}, - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(0), + StatusTimePeriodicity: durationpb.New(0), }, MacState: &ttnpb.MACState{ CurrentParameters: makeEU868macParameters(ttnpb.PHYVersion_RP001_V1_1_REV_B), @@ -2319,9 +2320,9 @@ func TestProcessDownlinkTask(t *testing.T) { FrequencyPlanId: test.EUFrequencyPlanID, LorawanPhyVersion: ttnpb.PHYVersion_RP001_V1_1_REV_B, MacSettings: &ttnpb.MACSettings{ - ClassCTimeout: ttnpb.ProtoDurationPtr(42 * time.Second), + ClassCTimeout: durationpb.New(42 * time.Second), StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 0}, - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(0), + StatusTimePeriodicity: durationpb.New(0), }, MacState: &ttnpb.MACState{ CurrentParameters: makeEU868macParameters(ttnpb.PHYVersion_RP001_V1_1_REV_B), diff --git a/pkg/networkserver/grpc.go b/pkg/networkserver/grpc.go index 91c32736fb..33fd237c58 100644 --- a/pkg/networkserver/grpc.go +++ b/pkg/networkserver/grpc.go @@ -21,6 +21,7 @@ import ( . "go.thethings.network/lorawan-stack/v3/pkg/networkserver/internal" "go.thethings.network/lorawan-stack/v3/pkg/networkserver/mac" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -47,12 +48,12 @@ func (ns *NetworkServer) GetDefaultMACSettings(ctx context.Context, req *ttnpb.G statusTimePeriodicity := mac.DeviceStatusTimePeriodicity(nil, ns.defaultMACSettings) statusCountPeriodicity := mac.DeviceStatusCountPeriodicity(nil, ns.defaultMACSettings) settings := &ttnpb.MACSettings{ - ClassBTimeout: ttnpb.ProtoDurationPtr(classBTimeout), + ClassBTimeout: durationpb.New(classBTimeout), PingSlotPeriodicity: mac.DeviceDefaultPingSlotPeriodicity(nil, ns.defaultMACSettings), PingSlotDataRateIndex: mac.DeviceDefaultPingSlotDataRateIndexValue(nil, phy, ns.defaultMACSettings), PingSlotFrequency: &ttnpb.ZeroableFrequencyValue{Value: mac.DeviceDefaultPingSlotFrequency(nil, phy, ns.defaultMACSettings)}, BeaconFrequency: &ttnpb.ZeroableFrequencyValue{Value: mac.DeviceDefaultBeaconFrequency(nil, phy, ns.defaultMACSettings)}, - ClassCTimeout: ttnpb.ProtoDurationPtr(classCTimeout), + ClassCTimeout: durationpb.New(classCTimeout), Rx1Delay: &ttnpb.RxDelayValue{Value: mac.DeviceDefaultRX1Delay(nil, phy, ns.defaultMACSettings)}, Rx1DataRateOffset: &ttnpb.DataRateOffsetValue{Value: mac.DeviceDefaultRX1DataRateOffset(nil, ns.defaultMACSettings)}, Rx2DataRateIndex: &ttnpb.DataRateIndexValue{Value: mac.DeviceDefaultRX2DataRateIndex(nil, phy, ns.defaultMACSettings)}, @@ -62,7 +63,7 @@ func (ns *NetworkServer) GetDefaultMACSettings(ctx context.Context, req *ttnpb.G UseAdr: &ttnpb.BoolValue{Value: mac.DeviceUseADR(nil, ns.defaultMACSettings, phy)}, AdrMargin: &wrapperspb.FloatValue{Value: adrMargin}, ResetsFCnt: &ttnpb.BoolValue{Value: mac.DeviceResetsFCnt(nil, ns.defaultMACSettings)}, - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(statusTimePeriodicity), + StatusTimePeriodicity: durationpb.New(statusTimePeriodicity), StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: statusCountPeriodicity}, DesiredRx1Delay: &ttnpb.RxDelayValue{Value: mac.DeviceDesiredRX1Delay(nil, phy, ns.defaultMACSettings)}, DesiredRx1DataRateOffset: &ttnpb.DataRateOffsetValue{Value: mac.DeviceDesiredRX1DataRateOffset(nil, ns.defaultMACSettings)}, diff --git a/pkg/networkserver/grpc_gsns.go b/pkg/networkserver/grpc_gsns.go index b0cbd7d707..65bcbbb875 100644 --- a/pkg/networkserver/grpc_gsns.go +++ b/pkg/networkserver/grpc_gsns.go @@ -39,6 +39,8 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/unique" "golang.org/x/exp/slices" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -1462,7 +1464,7 @@ func (ns *NetworkServer) HandleUplink(ctx context.Context, up *ttnpb.UplinkMessa if t, err := toa.Compute(len(up.RawPayload), up.Settings); err != nil { log.FromContext(ctx).WithError(err).Debug("Failed to compute time-on-air") } else { - up.ConsumedAirtime = ttnpb.ProtoDurationPtr(t) + up.ConsumedAirtime = durationpb.New(t) } switch up.Payload.MHdr.MType { case ttnpb.MType_CONFIRMED_UP, ttnpb.MType_UNCONFIRMED_UP: diff --git a/pkg/networkserver/internal/test/test.go b/pkg/networkserver/internal/test/test.go index b604246923..dccf9569a3 100644 --- a/pkg/networkserver/internal/test/test.go +++ b/pkg/networkserver/internal/test/test.go @@ -36,6 +36,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -422,7 +423,7 @@ func MakeUplinkMessage(conf UplinkMessageConfig) *ttnpb.UplinkMessage { ReceivedAt: timestamppb.New(conf.ReceivedAt), CorrelationIds: CopyStrings(conf.CorrelationIDs), DeviceChannelIndex: uint32(conf.ChannelIndex), - ConsumedAirtime: ttnpb.ProtoDurationPtr( + ConsumedAirtime: durationpb.New( test.Must(toa.Compute(len(conf.RawPayload), settings)).(time.Duration), ), } diff --git a/pkg/networkserver/mac/dev_status_test.go b/pkg/networkserver/mac/dev_status_test.go index 8a5cac4a26..016ce6074c 100644 --- a/pkg/networkserver/mac/dev_status_test.go +++ b/pkg/networkserver/mac/dev_status_test.go @@ -25,6 +25,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -85,7 +86,7 @@ func TestNeedsDevStatusReq(t *testing.T) { StatusCountPeriodicity: &wrapperspb.UInt32Value{ Value: 1000, }, - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(time.Hour), + StatusTimePeriodicity: durationpb.New(time.Hour), }, MacState: &ttnpb.MACState{ LastDevStatusFCntUp: 1, @@ -103,7 +104,7 @@ func TestNeedsDevStatusReq(t *testing.T) { StatusCountPeriodicity: &wrapperspb.UInt32Value{ Value: 1000, }, - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(time.Hour), + StatusTimePeriodicity: durationpb.New(time.Hour), }, MacState: &ttnpb.MACState{ LastDevStatusFCntUp: 1, @@ -121,7 +122,7 @@ func TestNeedsDevStatusReq(t *testing.T) { StatusCountPeriodicity: &wrapperspb.UInt32Value{ Value: 1000, }, - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(time.Hour), + StatusTimePeriodicity: durationpb.New(time.Hour), }, MacState: &ttnpb.MACState{ LastDevStatusFCntUp: 1, @@ -140,7 +141,7 @@ func TestNeedsDevStatusReq(t *testing.T) { StatusCountPeriodicity: &wrapperspb.UInt32Value{ Value: 1000, }, - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(time.Hour), + StatusTimePeriodicity: durationpb.New(time.Hour), }, MacState: &ttnpb.MACState{ LastDevStatusFCntUp: 1, diff --git a/pkg/networkserver/networkserver_flow_test.go b/pkg/networkserver/networkserver_flow_test.go index c0e4144f16..b9f8bc11ea 100644 --- a/pkg/networkserver/networkserver_flow_test.go +++ b/pkg/networkserver/networkserver_flow_test.go @@ -38,6 +38,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/durationpb" ) // frequencyPlanMACCommands generates the MAC command and event builders that are expected @@ -205,7 +206,7 @@ func makeOTAAFlowTest(conf OTAAFlowTestConfig) func(context.Context, TestEnviron SessionKeys: test.MakeSessionKeys( test.SessionKeysOptions.WithDefaultNwkKeys(dev.LorawanVersion), ), - Lifetime: ttnpb.ProtoDurationPtr(time.Hour), + Lifetime: durationpb.New(time.Hour), CorrelationIds: []string{"NsJs-1", "NsJs-2"}, }, }, diff --git a/pkg/networkserver/networkserver_util_internal_test.go b/pkg/networkserver/networkserver_util_internal_test.go index 77b275567e..38318957a7 100644 --- a/pkg/networkserver/networkserver_util_internal_test.go +++ b/pkg/networkserver/networkserver_util_internal_test.go @@ -23,7 +23,6 @@ import ( "testing" "time" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" clusterauth "go.thethings.network/lorawan-stack/v3/pkg/auth/cluster" "go.thethings.network/lorawan-stack/v3/pkg/band" @@ -47,6 +46,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/emptypb" ) @@ -240,7 +240,7 @@ type NsJsJoinRequestConfig struct { PHYVersion ttnpb.PHYVersion CorrelationIDs []string CFList *ttnpb.CFList - ConsumedAirtime *pbtypes.Duration + ConsumedAirtime *durationpb.Duration } func MakeNsJsJoinRequest(conf NsJsJoinRequestConfig) *ttnpb.JoinRequest { diff --git a/pkg/networkserver/utils_internal_test.go b/pkg/networkserver/utils_internal_test.go index fd2e37dff4..bc68884de7 100644 --- a/pkg/networkserver/utils_internal_test.go +++ b/pkg/networkserver/utils_internal_test.go @@ -30,6 +30,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -154,7 +155,7 @@ func TestNextDataDownlinkSlot(t *testing.T) { RecentUplinks: ups, }, MacSettings: &ttnpb.MACSettings{ - StatusTimePeriodicity: ttnpb.ProtoDurationPtr(0), + StatusTimePeriodicity: durationpb.New(0), StatusCountPeriodicity: &wrapperspb.UInt32Value{Value: 0}, }, Session: &ttnpb.Session{ diff --git a/pkg/packetbrokeragent/agent_test.go b/pkg/packetbrokeragent/agent_test.go index 86aa84ff2e..920a2943dd 100644 --- a/pkg/packetbrokeragent/agent_test.go +++ b/pkg/packetbrokeragent/agent_test.go @@ -42,6 +42,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" @@ -393,7 +394,7 @@ func TestForwarder(t *testing.T) { Frequency: 869525000, DataRate: packetbroker.NewLoRaDataRate(12, 125000, ""), }, - Rx1Delay: pbtypes.DurationProto(5 * time.Second), + Rx1Delay: durationpb.New(5 * time.Second), GatewayUplinkToken: []byte(tokenCompact), }, } @@ -504,7 +505,7 @@ func TestForwarder(t *testing.T) { ), }) a.So(err, should.BeNil) - a.So(test.Must(pbtypes.DurationFromProto(res.OnlineTtl)).(time.Duration), should.NotBeZeroValue) + a.So(res.OnlineTtl.AsDuration(), should.NotBeZeroValue) select { case update := <-updateCh: @@ -956,7 +957,7 @@ func TestHomeNetwork(t *testing.T) { Frequency: 869525000, DataRate: packetbroker.NewLoRaDataRate(12, 125000, band.Cr4_5), }, - Rx1Delay: pbtypes.DurationProto(5 * time.Second), + Rx1Delay: durationpb.New(5 * time.Second), GatewayUplinkToken: []byte(`test-token`), }, }) diff --git a/pkg/packetbrokeragent/grpc_gspba.go b/pkg/packetbrokeragent/grpc_gspba.go index 701c2d4c83..52f5da9ffe 100644 --- a/pkg/packetbrokeragent/grpc_gspba.go +++ b/pkg/packetbrokeragent/grpc_gspba.go @@ -30,6 +30,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -153,7 +154,7 @@ func (s *gsPbaServer) UpdateGateway(ctx context.Context, req *ttnpb.UpdatePacket updateReq.Online = &wrapperspb.BoolValue{} if req.Gateway.StatusPublic && req.Gateway.Online { updateReq.Online.Value = true - updateReq.OnlineTtl = pbtypes.DurationProto(s.config.GatewayOnlineTTL) + updateReq.OnlineTtl = durationpb.New(s.config.GatewayOnlineTTL) } } @@ -207,7 +208,7 @@ func (s *gsPbaServer) UpdateGateway(ctx context.Context, req *ttnpb.UpdatePacket res := &ttnpb.UpdatePacketBrokerGatewayResponse{} if updateReq.Online.GetValue() { - res.OnlineTtl = pbtypes.DurationProto(s.config.GatewayOnlineTTL) + res.OnlineTtl = durationpb.New(s.config.GatewayOnlineTTL) } return res, nil } diff --git a/pkg/packetbrokeragent/translation.go b/pkg/packetbrokeragent/translation.go index 1ff5fd91bf..fd0aa86ae4 100644 --- a/pkg/packetbrokeragent/translation.go +++ b/pkg/packetbrokeragent/translation.go @@ -33,6 +33,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" "gopkg.in/square/go-jose.v2" @@ -629,7 +630,7 @@ func toPBDownlink(ctx context.Context, msg *ttnpb.DownlinkMessage, fps frequency down := &packetbroker.DownlinkMessage{ PhyPayload: msg.RawPayload, - Rx1Delay: pbtypes.DurationProto(req.Rx1Delay.Duration()), + Rx1Delay: durationpb.New(req.Rx1Delay.Duration()), } var ok bool if down.Region, ok = toPBRegion[fp.BandID]; !ok { @@ -709,10 +710,7 @@ func fromPBDownlink(ctx context.Context, msg *packetbroker.DownlinkMessage, rece if req.Priority, ok = fromPBPriority[msg.Priority]; !ok { return "", nil, errUnknownPriority.WithAttributes("priority", msg.Priority) } - rx1Delay, err := pbtypes.DurationFromProto(msg.Rx1Delay) - if err != nil { - return "", nil, errInvalidRx1Delay.WithCause(err) - } + rx1Delay := msg.Rx1Delay.AsDuration() req.Rx1Delay = ttnpb.RxDelay(rx1Delay / time.Second) for i, rx := range []struct { settings *packetbroker.DownlinkMessage_RXSettings diff --git a/pkg/ttnpb/stdduration.go b/pkg/ttnpb/stdduration.go index 64aec00301..e6b83fb791 100644 --- a/pkg/ttnpb/stdduration.go +++ b/pkg/ttnpb/stdduration.go @@ -17,26 +17,23 @@ package ttnpb import ( "time" - pbtypes "github.com/gogo/protobuf/types" + durationpb "google.golang.org/protobuf/types/known/durationpb" ) // StdDuration converts a protobuf duration to a standard library duration. // // ProtoDuration panics if the Duration is invalid. -func StdDuration(protoDuration *pbtypes.Duration) *time.Duration { +func StdDuration(protoDuration *durationpb.Duration) *time.Duration { if protoDuration == nil { return nil } - stdDuration, err := pbtypes.DurationFromProto(protoDuration) - if err != nil { - panic(err) - } + stdDuration := protoDuration.AsDuration() return &stdDuration } // StdDurationOrZero converts a protobuf duration to a standard library duration. // If protoDuration is nil, it returns a zero duration. -func StdDurationOrZero(protoDuration *pbtypes.Duration) time.Duration { +func StdDurationOrZero(protoDuration *durationpb.Duration) time.Duration { stdDuration := StdDuration(protoDuration) if stdDuration == nil { return 0 @@ -45,14 +42,9 @@ func StdDurationOrZero(protoDuration *pbtypes.Duration) time.Duration { } // ProtoDuration converts a standard library duration to a protobuf duration. -func ProtoDuration(stdDuration *time.Duration) *pbtypes.Duration { +func ProtoDuration(stdDuration *time.Duration) *durationpb.Duration { if stdDuration == nil { return nil } - return pbtypes.DurationProto(*stdDuration) -} - -// ProtoDuration converts a standard library duration to a pointer and then to a protobuf duration. -func ProtoDurationPtr(stdDuration time.Duration) *pbtypes.Duration { - return ProtoDuration(&stdDuration) + return durationpb.New(*stdDuration) } From 69f94671a28d9b54add32f0f9c0203f6681a24f0 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Mon, 19 Dec 2022 16:37:11 +0100 Subject: [PATCH 15/30] all: Use new Any type --- pkg/email/templates/api_key_changed.go | 2 +- pkg/email/templates/api_key_created.go | 2 +- pkg/email/templates/client_requested.go | 2 +- pkg/email/templates/collaborator_changed.go | 2 +- pkg/email/templates/entity_state_changed.go | 2 +- pkg/email/templates/user_requested.go | 2 +- pkg/events/events.go | 17 +++++++---------- pkg/events/grpc/grpc.go | 4 ++-- .../bunstore/notification_store.go | 8 ++++---- .../storetest/notification_store.go | 4 ++-- pkg/packetbrokeragent/agent_test.go | 1 - pkg/packetbrokeragent/grpc_gspba.go | 1 - pkg/packetbrokeragent/translation.go | 1 - pkg/ttnpb/any.go | 16 +++------------- pkg/ttnpb/errors.go | 9 ++++----- pkg/util/test/constructors_generated.go | 1 - pkg/util/test/generate_constructors.go | 4 ---- 17 files changed, 28 insertions(+), 50 deletions(-) diff --git a/pkg/email/templates/api_key_changed.go b/pkg/email/templates/api_key_changed.go index dcb6d8a32a..ad738b8769 100644 --- a/pkg/email/templates/api_key_changed.go +++ b/pkg/email/templates/api_key_changed.go @@ -44,7 +44,7 @@ func init() { func newAPIKeyChangedData(_ context.Context, data email.NotificationTemplateData) (email.NotificationTemplateData, error) { var nData ttnpb.APIKey - if err := ttnpb.UnmarshalAny(data.Notification().GetData(), &nData); err != nil { + if err := data.Notification().GetData().UnmarshalTo(&nData); err != nil { return nil, err } return &APIKeyChangedData{ diff --git a/pkg/email/templates/api_key_created.go b/pkg/email/templates/api_key_created.go index 11c650a310..2abb6bc725 100644 --- a/pkg/email/templates/api_key_created.go +++ b/pkg/email/templates/api_key_created.go @@ -44,7 +44,7 @@ func init() { func newAPIKeyCreatedData(_ context.Context, data email.NotificationTemplateData) (email.NotificationTemplateData, error) { var nData ttnpb.APIKey - if err := ttnpb.UnmarshalAny(data.Notification().GetData(), &nData); err != nil { + if err := data.Notification().GetData().UnmarshalTo(&nData); err != nil { return nil, err } return &APIKeyCreatedData{ diff --git a/pkg/email/templates/client_requested.go b/pkg/email/templates/client_requested.go index 6aa51cccee..2781352936 100644 --- a/pkg/email/templates/client_requested.go +++ b/pkg/email/templates/client_requested.go @@ -43,7 +43,7 @@ func init() { func newClientRequestedData(_ context.Context, data email.NotificationTemplateData) (email.NotificationTemplateData, error) { var emailMsg ttnpb.CreateClientEmailMessage - if err := ttnpb.UnmarshalAny(data.Notification().GetData(), &emailMsg); err != nil { + if err := data.Notification().GetData().UnmarshalTo(&emailMsg); err != nil { return nil, err } return &ClientRequestedData{ diff --git a/pkg/email/templates/collaborator_changed.go b/pkg/email/templates/collaborator_changed.go index 5b0354a72e..f01ba44e1d 100644 --- a/pkg/email/templates/collaborator_changed.go +++ b/pkg/email/templates/collaborator_changed.go @@ -44,7 +44,7 @@ func init() { func newCollaboratorChangedData(_ context.Context, data email.NotificationTemplateData) (email.NotificationTemplateData, error) { var nData ttnpb.Collaborator - if err := ttnpb.UnmarshalAny(data.Notification().GetData(), &nData); err != nil { + if err := data.Notification().GetData().UnmarshalTo(&nData); err != nil { return nil, err } return &CollaboratorChangedData{ diff --git a/pkg/email/templates/entity_state_changed.go b/pkg/email/templates/entity_state_changed.go index 1fe6e1ff61..cd801f872b 100644 --- a/pkg/email/templates/entity_state_changed.go +++ b/pkg/email/templates/entity_state_changed.go @@ -43,7 +43,7 @@ func init() { func newEntityStateChangedData(_ context.Context, data email.NotificationTemplateData) (email.NotificationTemplateData, error) { var nData ttnpb.EntityStateChangedNotification - if err := ttnpb.UnmarshalAny(data.Notification().GetData(), &nData); err != nil { + if err := data.Notification().GetData().UnmarshalTo(&nData); err != nil { return nil, err } return &EntityStateChangedData{ diff --git a/pkg/email/templates/user_requested.go b/pkg/email/templates/user_requested.go index 89b3a2df5a..72c5e83b99 100644 --- a/pkg/email/templates/user_requested.go +++ b/pkg/email/templates/user_requested.go @@ -43,7 +43,7 @@ func init() { func newUserRequestedData(_ context.Context, data email.NotificationTemplateData) (email.NotificationTemplateData, error) { var nData ttnpb.CreateUserRequest - if err := ttnpb.UnmarshalAny(data.Notification().GetData(), &nData); err != nil { + if err := data.Notification().GetData().UnmarshalTo(&nData); err != nil { return nil, err } return &UserRequestedData{ diff --git a/pkg/events/events.go b/pkg/events/events.go index d173ccc000..8dc8d5dd37 100644 --- a/pkg/events/events.go +++ b/pkg/events/events.go @@ -26,11 +26,11 @@ import ( "time" "github.com/gogo/protobuf/proto" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" "go.thethings.network/lorawan-stack/v3/pkg/jsonpb" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/structpb" "google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/wrapperspb" @@ -176,20 +176,20 @@ func New(ctx context.Context, name, description string, opts ...Option) Event { return (&definition{name: name, description: description}).New(ctx, opts...) } -func marshalData(data interface{}) (anyPB *pbtypes.Any, err error) { +func marshalData(data interface{}) (anyPB *anypb.Any, err error) { if protoMessage, ok := data.(proto.Message); ok { - anyPB, err = pbtypes.MarshalAny(protoMessage) + anyPB, err = anypb.New(protoMessage) if err != nil { return nil, err } } else if errData, ok := data.(error); ok { if ttnErrData, ok := errors.From(errData); ok { - anyPB, err = pbtypes.MarshalAny(ttnpb.ErrorDetailsToProto(ttnErrData)) + anyPB, err = anypb.New(ttnpb.ErrorDetailsToProto(ttnErrData)) if err != nil { return nil, err } } else { - anyPB, err = pbtypes.MarshalAny(&wrapperspb.StringValue{Value: errData.Error()}) + anyPB, err = anypb.New(&wrapperspb.StringValue{Value: errData.Error()}) if err != nil { return nil, err } @@ -200,7 +200,7 @@ func marshalData(data interface{}) (anyPB *pbtypes.Any, err error) { return nil, err } if _, isNull := value.Kind.(*structpb.Value_NullValue); !isNull { - anyPB, err = pbtypes.MarshalAny(value) + anyPB, err = anypb.New(value) if err != nil { return nil, err } @@ -236,13 +236,10 @@ func FromProto(pb *ttnpb.Event) (Event, error) { } var data interface{} if pb.Data != nil { - anyMsg, err := emptypb.EmptyAny(pb.Data) + anyMsg, err := pb.Data.UnmarshalNew() if err != nil { return nil, err } - if err = pbtypes.UnmarshalAny(pb.Data, anyMsg); err != nil { - return nil, err - } data = anyMsg v, ok := anyMsg.(*structpb.Value) if ok { diff --git a/pkg/events/grpc/grpc.go b/pkg/events/grpc/grpc.go index d4b8d8accf..114877154f 100644 --- a/pkg/events/grpc/grpc.go +++ b/pkg/events/grpc/grpc.go @@ -24,7 +24,6 @@ import ( "strings" "time" - pbtypes "github.com/gogo/protobuf/types" grpc_runtime "github.com/grpc-ecosystem/grpc-gateway/runtime" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights/rightsutil" @@ -37,6 +36,7 @@ import ( "golang.org/x/sync/errgroup" "google.golang.org/grpc" "google.golang.org/grpc/metadata" + "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -188,7 +188,7 @@ func (srv *EventsServer) Stream(req *ttnpb.StreamEventsRequest, stream ttnpb.Eve if err != nil { return err } - startEvent.Data, err = pbtypes.MarshalAny(value) + startEvent.Data, err = anypb.New(value) if err != nil { return err } diff --git a/pkg/identityserver/bunstore/notification_store.go b/pkg/identityserver/bunstore/notification_store.go index 2022d4051b..98d4a0fba4 100644 --- a/pkg/identityserver/bunstore/notification_store.go +++ b/pkg/identityserver/bunstore/notification_store.go @@ -19,7 +19,6 @@ import ( "encoding/json" "time" - "github.com/gogo/protobuf/types" "github.com/uptrace/bun" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" @@ -27,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/jsonpb" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" storeutil "go.thethings.network/lorawan-stack/v3/pkg/util/store" + "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -92,12 +92,12 @@ func notificationToPB(m *Notification, r *NotificationReceiver) (*ttnpb.Notifica Email: m.Email, } if len(m.Data) > 0 { - var anyPB types.Any - err := jsonpb.TTN().Unmarshal(m.Data, &anyPB) + anyPB := &anypb.Any{} + err := jsonpb.TTN().Unmarshal(m.Data, anyPB) if err != nil { return nil, err } - pb.Data = &anyPB + pb.Data = anyPB } if m.SenderUID != "" { pb.SenderIds = &ttnpb.UserIdentifiers{UserId: m.SenderUID} diff --git a/pkg/identityserver/storetest/notification_store.go b/pkg/identityserver/storetest/notification_store.go index 3b6549e71b..787caff67d 100644 --- a/pkg/identityserver/storetest/notification_store.go +++ b/pkg/identityserver/storetest/notification_store.go @@ -19,12 +19,12 @@ import ( . "testing" "time" - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" is "go.thethings.network/lorawan-stack/v3/pkg/identityserver/store" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -56,7 +56,7 @@ func (st *StoreTest) TestNotificationStore(t *T) { } defer s.Close() - notificationData, _ := pbtypes.MarshalAny(&wrapperspb.StringValue{Value: "test"}) + notificationData, _ := anypb.New(&wrapperspb.StringValue{Value: "test"}) var notifications []*ttnpb.Notification diff --git a/pkg/packetbrokeragent/agent_test.go b/pkg/packetbrokeragent/agent_test.go index 920a2943dd..9337d74c59 100644 --- a/pkg/packetbrokeragent/agent_test.go +++ b/pkg/packetbrokeragent/agent_test.go @@ -24,7 +24,6 @@ import ( "testing" "time" - pbtypes "github.com/gogo/protobuf/types" "github.com/smartystreets/assertions" mappingpb "go.packetbroker.org/api/mapping/v2" packetbroker "go.packetbroker.org/api/v3" diff --git a/pkg/packetbrokeragent/grpc_gspba.go b/pkg/packetbrokeragent/grpc_gspba.go index 52f5da9ffe..89e046a764 100644 --- a/pkg/packetbrokeragent/grpc_gspba.go +++ b/pkg/packetbrokeragent/grpc_gspba.go @@ -19,7 +19,6 @@ import ( "fmt" "time" - pbtypes "github.com/gogo/protobuf/types" mappingpb "go.packetbroker.org/api/mapping/v2" packetbroker "go.packetbroker.org/api/v3" clusterauth "go.thethings.network/lorawan-stack/v3/pkg/auth/cluster" diff --git a/pkg/packetbrokeragent/translation.go b/pkg/packetbrokeragent/translation.go index fd0aa86ae4..1de21c3420 100644 --- a/pkg/packetbrokeragent/translation.go +++ b/pkg/packetbrokeragent/translation.go @@ -21,7 +21,6 @@ import ( "encoding/json" "time" - pbtypes "github.com/gogo/protobuf/types" packetbroker "go.packetbroker.org/api/v3" "go.thethings.network/lorawan-stack/v3/pkg/band" "go.thethings.network/lorawan-stack/v3/pkg/cluster" diff --git a/pkg/ttnpb/any.go b/pkg/ttnpb/any.go index 5d6029ae61..29b6d9749d 100644 --- a/pkg/ttnpb/any.go +++ b/pkg/ttnpb/any.go @@ -16,24 +16,14 @@ package ttnpb import ( proto "github.com/gogo/protobuf/proto" - pbtypes "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) -// MarshalAny wraps the MarshalAny func in the protobuf library. -func MarshalAny(pb proto.Message) (*pbtypes.Any, error) { - return pbtypes.MarshalAny(pb) -} - // MustMarshalAny converts the proto message to an Any, or panics. -func MustMarshalAny(pb proto.Message) *pbtypes.Any { - any, err := MarshalAny(pb) +func MustMarshalAny(pb proto.Message) *anypb.Any { + any, err := anypb.New(pb) if err != nil { panic(err) } return any } - -// UnmarshalAny wraps the UnmarshalAny func in the protobuf library. -func UnmarshalAny(any *pbtypes.Any, pb proto.Message) error { - return pbtypes.UnmarshalAny(any, pb) -} diff --git a/pkg/ttnpb/errors.go b/pkg/ttnpb/errors.go index 67e3941e1d..2beea801fc 100644 --- a/pkg/ttnpb/errors.go +++ b/pkg/ttnpb/errors.go @@ -17,10 +17,10 @@ package ttnpb import ( "fmt" - "github.com/gogo/protobuf/types" proto "github.com/golang/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" + "google.golang.org/protobuf/types/known/anypb" ) const valueKey = "value" @@ -60,12 +60,11 @@ func (e errorDetails) Details() []proto.Message { msgs := make([]proto.Message, 0, len(details)) for _, dAny := range details { - var msg types.DynamicAny - err := types.UnmarshalAny(dAny, &msg) + msg, err := dAny.UnmarshalNew() if err != nil { panic(fmt.Sprintf("Failed to decode error details: %s", err)) } - msgs = append(msgs, msg.Message) + msgs = append(msgs, msg) } return msgs } @@ -91,7 +90,7 @@ func ErrorDetailsToProto(e errors.ErrorDetails) *ErrorDetails { } } for _, d := range e.Details() { - dAny, err := types.MarshalAny(d) + dAny, err := anypb.New(d) if err != nil { panic(fmt.Sprintf("Failed to encode error details: %s", err)) } diff --git a/pkg/util/test/constructors_generated.go b/pkg/util/test/constructors_generated.go index e4e1391a48..c46d394b7a 100644 --- a/pkg/util/test/constructors_generated.go +++ b/pkg/util/test/constructors_generated.go @@ -3,7 +3,6 @@ package test import ( - pbtypes "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" ) diff --git a/pkg/util/test/generate_constructors.go b/pkg/util/test/generate_constructors.go index ec928c2905..cad6b289ce 100644 --- a/pkg/util/test/generate_constructors.go +++ b/pkg/util/test/generate_constructors.go @@ -40,9 +40,6 @@ func typeString(typ reflect.Type) string { if typ.Kind() == reflect.Ptr { return "*" + typeString(typ.Elem()) } - if typ.PkgPath() == "github.com/gogo/protobuf/types" { - return "pbtypes." + typ.Name() - } return typ.String() } @@ -94,7 +91,6 @@ package test import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" - pbtypes "github.com/gogo/protobuf/types" ) {{ range . }} {{ with $type := typeOf . -}} From a0e698c4d3b64e0c8661dabdf61aa1da8551e106 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Tue, 20 Dec 2022 13:53:56 +0100 Subject: [PATCH 16/30] all: Regenerate test constructors --- pkg/util/test/constructors_generated.go | 15 +++++++++------ pkg/util/test/generate_constructors.go | 9 +++++---- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/pkg/util/test/constructors_generated.go b/pkg/util/test/constructors_generated.go index c46d394b7a..7403d703ac 100644 --- a/pkg/util/test/constructors_generated.go +++ b/pkg/util/test/constructors_generated.go @@ -4,11 +4,14 @@ package test import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/structpb" + "google.golang.org/protobuf/types/known/timestamppb" + "google.golang.org/protobuf/types/known/wrapperspb" ) type ( // RootKeysOption transforms ttnpb.RootKeys and returns it. - // Implemetations must be pure functions with no side-effects. + // Implementations must be pure functions with no side-effects. RootKeysOption func(*ttnpb.RootKeys) *ttnpb.RootKeys // RootKeysOptionNamespace represents the namespace, on which various RootKeysOption are defined. @@ -73,7 +76,7 @@ func MakeRootKeys(opts ...RootKeysOption) *ttnpb.RootKeys { type ( // SessionKeysOption transforms ttnpb.SessionKeys and returns it. - // Implemetations must be pure functions with no side-effects. + // Implementations must be pure functions with no side-effects. SessionKeysOption func(*ttnpb.SessionKeys) *ttnpb.SessionKeys // SessionKeysOptionNamespace represents the namespace, on which various SessionKeysOption are defined. @@ -156,7 +159,7 @@ func MakeSessionKeys(opts ...SessionKeysOption) *ttnpb.SessionKeys { type ( // SessionOption transforms ttnpb.Session and returns it. - // Implemetations must be pure functions with no side-effects. + // Implementations must be pure functions with no side-effects. SessionOption func(*ttnpb.Session) *ttnpb.Session // SessionOptionNamespace represents the namespace, on which various SessionOption are defined. @@ -266,7 +269,7 @@ func MakeSession(opts ...SessionOption) *ttnpb.Session { type ( // MACStateOption transforms ttnpb.MACState and returns it. - // Implemetations must be pure functions with no side-effects. + // Implementations must be pure functions with no side-effects. MACStateOption func(*ttnpb.MACState) *ttnpb.MACState // MACStateOptionNamespace represents the namespace, on which various MACStateOption are defined. @@ -511,7 +514,7 @@ func MakeMACState(opts ...MACStateOption) *ttnpb.MACState { type ( // EndDeviceIdentifiersOption transforms ttnpb.EndDeviceIdentifiers and returns it. - // Implemetations must be pure functions with no side-effects. + // Implementations must be pure functions with no side-effects. EndDeviceIdentifiersOption func(*ttnpb.EndDeviceIdentifiers) *ttnpb.EndDeviceIdentifiers // EndDeviceIdentifiersOptionNamespace represents the namespace, on which various EndDeviceIdentifiersOption are defined. @@ -594,7 +597,7 @@ func MakeEndDeviceIdentifiers(opts ...EndDeviceIdentifiersOption) *ttnpb.EndDevi type ( // EndDeviceOption transforms ttnpb.EndDevice and returns it. - // Implemetations must be pure functions with no side-effects. + // Implementations must be pure functions with no side-effects. EndDeviceOption func(*ttnpb.EndDevice) *ttnpb.EndDevice // EndDeviceOptionNamespace represents the namespace, on which various EndDeviceOption are defined. diff --git a/pkg/util/test/generate_constructors.go b/pkg/util/test/generate_constructors.go index cad6b289ce..bfc0364396 100644 --- a/pkg/util/test/generate_constructors.go +++ b/pkg/util/test/generate_constructors.go @@ -25,7 +25,6 @@ import ( "reflect" "text/template" - _ "github.com/gogo/protobuf/types" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" ) @@ -59,8 +58,7 @@ func main() { for i := 0; i < numFields; i++ { f := typ.Field(i) switch f.Name { - case "XXX_NoUnkeyedLiteral", "XXX_sizecache", "XXX_unrecognized", - "NoUnkeyedLiterals", "DoNotCompare", "DoNotCopy": + case "state", "sizeCache", "unknownFields": continue // internal protobuf fields } @@ -91,6 +89,9 @@ package test import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/types/known/structpb" + "google.golang.org/protobuf/types/known/timestamppb" + "google.golang.org/protobuf/types/known/wrapperspb" ) {{ range . }} {{ with $type := typeOf . -}} @@ -99,7 +100,7 @@ import ( {{ with $optionsType := printf "%sOptionNamespace" $type.Name -}} type ( // {{ $optionType }} transforms {{ $typeString }} and returns it. - // Implemetations must be pure functions with no side-effects. + // Implementations must be pure functions with no side-effects. {{ $optionType }} func(*{{ $typeString }}) *{{ $typeString }} // {{ $optionsType }} represents the namespace, on which various {{ $optionType }} are defined. From 04fa343ac438c3033eba805b8c8f8a9558bffb8e Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Thu, 29 Sep 2022 13:53:47 +0200 Subject: [PATCH 17/30] all: Remove pkg/gogoproto --- config/messages.json | 4 +- .../io/packages/loradms/v1/api/messages.go | 6 +- .../io/packages/loragls/v3/api/messages.go | 4 +- .../io/packages/loragls/v3/package.go | 6 +- pkg/applicationserver/io/web/webhooks.go | 4 +- pkg/applicationserver/payload.go | 4 +- pkg/devicerepository/store/remote/remote.go | 6 +- .../store/remote/remote_test.go | 4 +- pkg/events/events.go | 6 +- pkg/events/grpc/grpc.go | 4 +- pkg/gogoproto/fields.go | 91 ------- pkg/gogoproto/fields_test.go | 125 --------- pkg/gogoproto/gogoproto.go | 16 -- pkg/gogoproto/struct.go | 254 ------------------ pkg/gogoproto/struct_test.go | 220 --------------- .../cayennelpp/cayennelpp.go | 8 +- .../cayennelpp/cayennelpp_test.go | 6 +- .../javascript/javascript.go | 10 +- .../javascript/javascript_test.go | 12 +- pkg/scripting/javascript/javascript_test.go | 3 +- pkg/ttnpb/errors.go | 8 +- 21 files changed, 47 insertions(+), 754 deletions(-) delete mode 100644 pkg/gogoproto/fields.go delete mode 100644 pkg/gogoproto/fields_test.go delete mode 100644 pkg/gogoproto/gogoproto.go delete mode 100644 pkg/gogoproto/struct.go delete mode 100644 pkg/gogoproto/struct_test.go diff --git a/config/messages.json b/config/messages.json index 642e66be12..fc8a4b995e 100644 --- a/config/messages.json +++ b/config/messages.json @@ -5093,12 +5093,12 @@ "file": "gatewayserver.go" } }, - "error:pkg/gogoproto:stack_depth_exceeded": { + "error:pkg/goproto:stack_depth_exceeded": { "translations": { "en": "stack depth exceeded" }, "description": { - "package": "pkg/gogoproto", + "package": "pkg/goproto", "file": "struct.go" } }, diff --git a/pkg/applicationserver/io/packages/loradms/v1/api/messages.go b/pkg/applicationserver/io/packages/loradms/v1/api/messages.go index 40bc283611..c0dd94e48f 100644 --- a/pkg/applicationserver/io/packages/loradms/v1/api/messages.go +++ b/pkg/applicationserver/io/packages/loradms/v1/api/messages.go @@ -21,7 +21,7 @@ import ( "github.com/golang/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/errors" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" + "go.thethings.network/lorawan-stack/v3/pkg/goproto" ) const ( @@ -43,7 +43,7 @@ func parse(result interface{}, res *http.Response) error { reader := io.LimitReader(res.Body, maxResponseSize) if res.StatusCode < 200 || res.StatusCode > 299 { body, _ := io.ReadAll(reader) - detail, err := gogoproto.Struct(map[string]interface{}{ + detail, err := goproto.Struct(map[string]interface{}{ "status_code": res.StatusCode, "body": string(body), }) @@ -63,7 +63,7 @@ func parse(result interface{}, res *http.Response) error { } var details []proto.Message for _, message := range r.Errors { - detail, err := gogoproto.Value(message) + detail, err := goproto.Value(message) if err != nil { return err } diff --git a/pkg/applicationserver/io/packages/loragls/v3/api/messages.go b/pkg/applicationserver/io/packages/loragls/v3/api/messages.go index d9d98af1a0..557da17a70 100644 --- a/pkg/applicationserver/io/packages/loragls/v3/api/messages.go +++ b/pkg/applicationserver/io/packages/loragls/v3/api/messages.go @@ -20,7 +20,7 @@ import ( "net/http" "go.thethings.network/lorawan-stack/v3/pkg/errors" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" + "go.thethings.network/lorawan-stack/v3/pkg/goproto" ) const maxResponseSize = (1 << 24) // 16 MiB @@ -33,7 +33,7 @@ func parse(result interface{}, res *http.Response) error { reader := io.LimitReader(res.Body, maxResponseSize) if res.StatusCode < 200 || res.StatusCode > 299 { body, _ := io.ReadAll(reader) - detail, err := gogoproto.Struct(map[string]interface{}{ + detail, err := goproto.Struct(map[string]interface{}{ "status_code": res.StatusCode, "body": string(body), }) diff --git a/pkg/applicationserver/io/packages/loragls/v3/package.go b/pkg/applicationserver/io/packages/loragls/v3/package.go index 3d98b40b9a..8c88f68457 100644 --- a/pkg/applicationserver/io/packages/loragls/v3/package.go +++ b/pkg/applicationserver/io/packages/loragls/v3/package.go @@ -26,7 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/packages/loragls/v3/api" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/events" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" + "go.thethings.network/lorawan-stack/v3/pkg/goproto" "go.thethings.network/lorawan-stack/v3/pkg/jsonpb" "go.thethings.network/lorawan-stack/v3/pkg/log" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" @@ -112,7 +112,7 @@ func (p *GeolocationPackage) gnssQuery(ctx context.Context, ids *ttnpb.EndDevice if up.DecodedPayload == nil { req.Payload = up.FrmPayload } else { - m, err := gogoproto.Map(up.DecodedPayload) + m, err := goproto.Map(up.DecodedPayload) if err != nil { return nil, err } @@ -174,7 +174,7 @@ func (p *GeolocationPackage) multiFrameQuery(ctx context.Context, ids *ttnpb.End } func (p *GeolocationPackage) wifiQuery(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers, up *ttnpb.ApplicationUplink, data *Data, client *api.Client) (api.AbstractLocationSolverResponse, error) { - m, err := gogoproto.Map(up.DecodedPayload) + m, err := goproto.Map(up.DecodedPayload) if err != nil { return nil, err } diff --git a/pkg/applicationserver/io/web/webhooks.go b/pkg/applicationserver/io/web/webhooks.go index 15e1ae03de..48f2890c43 100644 --- a/pkg/applicationserver/io/web/webhooks.go +++ b/pkg/applicationserver/io/web/webhooks.go @@ -29,7 +29,7 @@ import ( "github.com/jtacoma/uritemplates" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io" "go.thethings.network/lorawan-stack/v3/pkg/errors" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" + "go.thethings.network/lorawan-stack/v3/pkg/goproto" "go.thethings.network/lorawan-stack/v3/pkg/log" "go.thethings.network/lorawan-stack/v3/pkg/task" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" @@ -69,7 +69,7 @@ func createRequestErrorDetails(req *http.Request, res *http.Response) []proto.Me m["status_code"] = res.StatusCode m["body"] = string(body) } - detail, err := gogoproto.Struct(m) + detail, err := goproto.Struct(m) if err != nil { log.FromContext(ctx).WithError(err).Error("Failed to marshal request error details") return nil diff --git a/pkg/applicationserver/payload.go b/pkg/applicationserver/payload.go index 3fc85922ca..97b048d4cf 100644 --- a/pkg/applicationserver/payload.go +++ b/pkg/applicationserver/payload.go @@ -23,7 +23,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/crypto/cryptoutil" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/events" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" + "go.thethings.network/lorawan-stack/v3/pkg/goproto" "go.thethings.network/lorawan-stack/v3/pkg/log" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" @@ -218,7 +218,7 @@ func (as *ApplicationServer) decodeDownlink(ctx context.Context, dev *ttnpb.EndD func (*ApplicationServer) locationFromPayload(uplink *ttnpb.ApplicationUplink) (res *ttnpb.Location) { // TODO: Prefer location from normalized payload (https://github.com/TheThingsNetwork/lorawan-stack/issues/5429) - m, err := gogoproto.Map(uplink.DecodedPayload) + m, err := goproto.Map(uplink.DecodedPayload) if err != nil { return nil } diff --git a/pkg/devicerepository/store/remote/remote.go b/pkg/devicerepository/store/remote/remote.go index a48ab462d8..113a3aa6b7 100644 --- a/pkg/devicerepository/store/remote/remote.go +++ b/pkg/devicerepository/store/remote/remote.go @@ -18,7 +18,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/devicerepository/store" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/fetch" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" + "go.thethings.network/lorawan-stack/v3/pkg/goproto" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "gopkg.in/yaml.v2" ) @@ -410,7 +410,7 @@ func (s *remoteStore) getDecoder(req store.GetCodecRequest, choose func(codecs * Errors: e.Output.Errors, }, } - if pb.Output.Data, err = gogoproto.Struct(e.Output.Data); err != nil { + if pb.Output.Data, err = goproto.Struct(e.Output.Data); err != nil { return nil, err } examples = append(examples, pb) @@ -470,7 +470,7 @@ func (s *remoteStore) GetDownlinkEncoder(req store.GetCodecRequest) (*ttnpb.Mess Errors: e.Output.Errors, }, } - if pb.Input.Data, err = gogoproto.Struct(e.Input.Data); err != nil { + if pb.Input.Data, err = goproto.Struct(e.Input.Data); err != nil { return nil, err } examples = append(examples, pb) diff --git a/pkg/devicerepository/store/remote/remote_test.go b/pkg/devicerepository/store/remote/remote_test.go index bee55eaa0e..dce923f10a 100644 --- a/pkg/devicerepository/store/remote/remote_test.go +++ b/pkg/devicerepository/store/remote/remote_test.go @@ -22,7 +22,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/devicerepository/store/remote" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/fetch" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" + "go.thethings.network/lorawan-stack/v3/pkg/goproto" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/protobuf/types/known/structpb" @@ -612,7 +612,7 @@ func TestRemoteStore(t *testing.T) { } func mustStruct(d map[string]interface{}) *structpb.Struct { - v, err := gogoproto.Struct(d) + v, err := goproto.Struct(d) if err != nil { panic(err) } diff --git a/pkg/events/events.go b/pkg/events/events.go index 8dc8d5dd37..be9af13cf8 100644 --- a/pkg/events/events.go +++ b/pkg/events/events.go @@ -27,7 +27,7 @@ import ( "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/errors" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" + "go.thethings.network/lorawan-stack/v3/pkg/goproto" "go.thethings.network/lorawan-stack/v3/pkg/jsonpb" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/protobuf/types/known/anypb" @@ -195,7 +195,7 @@ func marshalData(data interface{}) (anyPB *anypb.Any, err error) { } } } else { - value, err := gogoproto.Value(data) + value, err := goproto.Value(data) if err != nil { return nil, err } @@ -243,7 +243,7 @@ func FromProto(pb *ttnpb.Event) (Event, error) { data = anyMsg v, ok := anyMsg.(*structpb.Value) if ok { - iface, err := gogoproto.Interface(v) + iface, err := goproto.Interface(v) if err != nil { return nil, err } diff --git a/pkg/events/grpc/grpc.go b/pkg/events/grpc/grpc.go index 114877154f..dca4771917 100644 --- a/pkg/events/grpc/grpc.go +++ b/pkg/events/grpc/grpc.go @@ -29,7 +29,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/auth/rights/rightsutil" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/events" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" + "go.thethings.network/lorawan-stack/v3/pkg/goproto" "go.thethings.network/lorawan-stack/v3/pkg/log" "go.thethings.network/lorawan-stack/v3/pkg/rpcmiddleware/warning" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" @@ -184,7 +184,7 @@ func (srv *EventsServer) Stream(req *ttnpb.StreamEventsRequest, stream ttnpb.Eve } if len(names) > 0 { - value, err := gogoproto.Value(names) + value, err := goproto.Value(names) if err != nil { return err } diff --git a/pkg/gogoproto/fields.go b/pkg/gogoproto/fields.go deleted file mode 100644 index 498fc0419f..0000000000 --- a/pkg/gogoproto/fields.go +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package gogoproto - -import ( - "fmt" - "reflect" - "regexp" - "strings" - - "google.golang.org/protobuf/types/known/fieldmaskpb" -) - -var nameTagRegex *regexp.Regexp - -func init() { - nameTagRegex = regexp.MustCompile("name\\=[a-zA-Z_0-9]+") -} - -// GoFieldsPaths converts protobuf FieldMask paths to Go fields paths. -// -// This implementation does not support separation by ",", but only paths separated by ".". -func GoFieldsPaths(pb *fieldmaskpb.FieldMask, v interface{}) []string { - var newFields []string - if len(pb.GetPaths()) == 0 { - return newFields - } - - goFields := goFieldsFromProtoMasks(reflect.ValueOf(v)) - for _, field := range pb.Paths { - goName, ok := goFields[field] - if ok { - newFields = append(newFields, goName) - } else { - newFields = append(newFields, field) - } - } - - return newFields -} - -func goFieldsFromProtoMasks(v reflect.Value) map[string]string { - if !v.IsValid() { - return nil - } - - fields := make(map[string]string) - for v.Kind() == reflect.Ptr { - v = v.Elem() - } - if v.Kind() != reflect.Struct { - return fields - } - - for i := 0; i < v.NumField(); i++ { - tag := v.Type().Field(i).Tag.Get("protobuf") - if tag == "" { - continue - } - - protoName := strings.TrimPrefix(nameTagRegex.FindString(tag), "name=") - if protoName == "" { - continue - } - goName := v.Type().Field(i).Name - fields[protoName] = goName - - subFields := goFieldsFromProtoMasks(v.Field(i)) - if len(subFields) == 0 { - continue - } - - for k, v := range subFields { - fields[fmt.Sprintf("%s.%s", protoName, k)] = fmt.Sprintf("%s%s%s", goName, ".", v) - } - } - - return fields -} diff --git a/pkg/gogoproto/fields_test.go b/pkg/gogoproto/fields_test.go deleted file mode 100644 index 9eab1ec18d..0000000000 --- a/pkg/gogoproto/fields_test.go +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package gogoproto_test - -import ( - "fmt" - "testing" - - "github.com/smartystreets/assertions" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" - "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" - "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" -) - -func ExampleGoFieldsPaths() { - type cityDetails struct { - Name string `protobuf:"name=name_city"` - } - - type place struct { - NameOfTheRegion string `protobuf:"name=name_region"` - - CityDetails cityDetails `protobuf:"bytes,name=city"` - } - - london := place{ - CityDetails: cityDetails{Name: "London"}, - } - holland := place{ - NameOfTheRegion: "Holland", - } - - fields := gogoproto.GoFieldsPaths(ttnpb.FieldMask("city.name_city"), london) - fmt.Println(fields) - - fields = gogoproto.GoFieldsPaths(ttnpb.FieldMask("name_region"), holland) - fmt.Println(fields) - - // Output: [CityDetails.Name] - // [NameOfTheRegion] -} - -func TestGoFieldsPaths(t *testing.T) { - a := assertions.New(t) - - type cityDetails struct { - Name string `protobuf:"name=name_city"` - } - - type hasProtoRenaming struct { - NameOfTheRegion string `protobuf:"name=name_region"` - - CityDetails cityDetails `protobuf:"bytes,name=city"` - } - - for _, tc := range []struct { - fields, expected []string - }{ - { - fields: []string{"name_region", "name_city"}, - expected: []string{"NameOfTheRegion", "name_city"}, - }, - { - fields: []string{"name_region"}, - expected: []string{"NameOfTheRegion"}, - }, - { - fields: []string{"city.name_city"}, - expected: []string{"CityDetails.Name"}, - }, - } { - goFields := gogoproto.GoFieldsPaths(ttnpb.FieldMask(tc.fields...), hasProtoRenaming{ - NameOfTheRegion: "england", - CityDetails: cityDetails{ - Name: "london", - }, - }) - - a.So(goFields, should.HaveSameElementsDeep, tc.expected) - } -} - -func TestGoFieldsPathsEndDevice(t *testing.T) { - a := assertions.New(t) - - for _, tc := range []struct { - fields, expected []string - }{ - { - fields: []string{"mac_state", "frequency_plan_id"}, - expected: []string{"MacState", "FrequencyPlanId"}, - }, - { - fields: []string{"session.last_f_cnt_up"}, - expected: []string{"Session.LastFCntUp"}, - }, - { - fields: []string{"ids.application_ids.application_id"}, - expected: []string{"Ids.ApplicationIds.ApplicationId"}, - }, - } { - goFields := gogoproto.GoFieldsPaths(ttnpb.FieldMask(tc.fields...), ttnpb.EndDevice{ - Ids: &ttnpb.EndDeviceIdentifiers{ - ApplicationIds: &ttnpb.ApplicationIdentifiers{}, - }, - Session: &ttnpb.Session{ - LastFCntUp: 5, - }, - }) - - a.So(goFields, should.HaveSameElementsDeep, tc.expected) - } -} diff --git a/pkg/gogoproto/gogoproto.go b/pkg/gogoproto/gogoproto.go deleted file mode 100644 index 98a5f715c8..0000000000 --- a/pkg/gogoproto/gogoproto.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package gogoproto implements conversions from well-known gogo/profobuf types. -package gogoproto diff --git a/pkg/gogoproto/struct.go b/pkg/gogoproto/struct.go deleted file mode 100644 index 8f67165fb2..0000000000 --- a/pkg/gogoproto/struct.go +++ /dev/null @@ -1,254 +0,0 @@ -// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package gogoproto - -import ( - "fmt" - "reflect" - - "github.com/gogo/protobuf/types" - "go.thethings.network/lorawan-stack/v3/pkg/errors" -) - -// maxNestingDepth represents the maximum object depth to be marshalled. -// This is in line with the max nesting depth of the `encoding/json` package. -// https://github.com/golang/go/blob/176b63e7113b82c140a4ecb2620024526c2c42e3/src/encoding/json/scanner.go#L144-L146 -const maxNestingDepth = 10000 - -type serializationState struct { - depth int -} - -// Recurse returns an option that makes the stack advance with one level. -func (s *serializationState) Recurse() Option { - return func(ns *serializationState) { - ns.depth = s.depth + 1 - } -} - -// Option represents a serialization option. -type Option func(*serializationState) - -var errStackDepthExceeded = errors.DefineResourceExhausted("stack_depth_exceeded", "stack depth exceeded") - -func createSerializationState(opts ...Option) (*serializationState, error) { - serializationState := &serializationState{ - depth: 1, - } - for _, opt := range opts { - opt(serializationState) - } - if serializationState.depth > maxNestingDepth { - return nil, errStackDepthExceeded.New() - } - return serializationState, nil -} - -// Map returns the Struct proto as a map[string]interface{}. -func Map(p *types.Struct, opts ...Option) (map[string]interface{}, error) { - if p == nil || len(p.Fields) == 0 { - return nil, nil - } - state, err := createSerializationState(opts...) - if err != nil { - return nil, err - } - m := make(map[string]interface{}, len(p.Fields)) - for k, v := range p.Fields { - if v == nil { - continue - } - gv, err := Interface(v, state.Recurse()) - if err != nil { - return nil, err - } - m[k] = gv - } - return m, nil -} - -// Slice returns the ListValue proto as a []interface{}. -func Slice(l *types.ListValue, opts ...Option) ([]interface{}, error) { - if l == nil || len(l.Values) == 0 { - return nil, nil - } - state, err := createSerializationState(opts...) - if err != nil { - return nil, err - } - s := make([]interface{}, len(l.Values)) - for i, v := range l.Values { - gv, err := Interface(v, state.Recurse()) - if err != nil { - return nil, err - } - s[i] = gv - } - return s, nil -} - -// Interface returns the Value proto as an interface{}. -func Interface(v *types.Value, opts ...Option) (interface{}, error) { - switch v := v.GetKind().(type) { - case *types.Value_NullValue: - return nil, nil - case *types.Value_NumberValue: - return v.NumberValue, nil - case *types.Value_StringValue: - return v.StringValue, nil - case *types.Value_BoolValue: - return v.BoolValue, nil - case *types.Value_StructValue: - return Map(v.StructValue, opts...) - case *types.Value_ListValue: - return Slice(v.ListValue, opts...) - default: - return nil, fmt.Errorf("unmatched types type: %T", v) - } -} - -// Struct returns the map as a Struct proto. -func Struct(m map[string]interface{}, opts ...Option) (*types.Struct, error) { - state, err := createSerializationState(opts...) - if err != nil { - return nil, err - } - p := &types.Struct{ - Fields: make(map[string]*types.Value), - } - for k, v := range m { - pv, err := Value(v, state.Recurse()) - if err != nil { - return nil, err - } - p.Fields[k] = pv - } - return p, nil -} - -// List returns the slice as a ListValue proto. -func List(s []interface{}, opts ...Option) (*types.ListValue, error) { - state, err := createSerializationState(opts...) - if err != nil { - return nil, err - } - l := &types.ListValue{ - Values: make([]*types.Value, len(s)), - } - for i, v := range s { - pv, err := Value(v, state.Recurse()) - if err != nil { - return nil, err - } - l.Values[i] = pv - } - return l, nil -} - -func valueFromReflect(rv reflect.Value, opts ...Option) (*types.Value, error) { - switch k := rv.Kind(); k { - case reflect.Ptr: - if rv.IsNil() { - return &types.Value{Kind: &types.Value_NullValue{}}, nil - } - // It is not possible to have an infinite pointer type - // (pointer to pointer ad infinitum) without type erasure (interface{}). - // As such, it is not required to increase the stack depth while dealing - // with pointers, since a raw interface{} cannot be marshalled. - return valueFromReflect(rv.Elem(), opts...) - case reflect.String: - return &types.Value{Kind: &types.Value_StringValue{StringValue: rv.String()}}, nil - - case reflect.Bool: - return &types.Value{Kind: &types.Value_BoolValue{BoolValue: rv.Bool()}}, nil - - case reflect.Slice, reflect.Array: - if k == reflect.Slice && rv.IsNil() { - return &types.Value{Kind: &types.Value_NullValue{}}, nil - } - s := make([]interface{}, rv.Len()) - for i := 0; i < rv.Len(); i++ { - s[i] = rv.Index(i).Interface() - } - pv, err := List(s, opts...) - if err != nil { - return nil, err - } - return &types.Value{Kind: &types.Value_ListValue{ListValue: pv}}, nil - - case reflect.Map: - if rv.IsNil() { - return &types.Value{Kind: &types.Value_NullValue{}}, nil - } - m := make(map[string]interface{}, rv.Len()) - for _, key := range rv.MapKeys() { - m[fmt.Sprint(key.Interface())] = rv.MapIndex(key).Interface() - } - pv, err := Struct(m, opts...) - if err != nil { - return nil, err - } - return &types.Value{Kind: &types.Value_StructValue{StructValue: pv}}, nil - - case reflect.Struct: - state, err := createSerializationState(opts...) - if err != nil { - return nil, err - } - n := rv.NumField() - fields := make(map[string]*types.Value, n) - for i := 0; i < n; i++ { - f := rv.Field(i) - ft := f.Type() - if f.Type().PkgPath() != "" { - continue - } - pv, err := valueFromReflect(f, state.Recurse()) - if err != nil { - return nil, err - } - fields[ft.Name()] = pv - } - return &types.Value{Kind: &types.Value_StructValue{StructValue: &types.Struct{Fields: fields}}}, nil - - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return &types.Value{Kind: &types.Value_NumberValue{NumberValue: float64(rv.Int())}}, nil - - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: - return &types.Value{Kind: &types.Value_NumberValue{NumberValue: float64(rv.Uint())}}, nil - - case reflect.Float32, reflect.Float64: - return &types.Value{Kind: &types.Value_NumberValue{NumberValue: rv.Float()}}, nil - - case reflect.Complex64, reflect.Complex128: - return &types.Value{Kind: &types.Value_StringValue{StringValue: fmt.Sprint(rv.Complex())}}, nil - - default: - // either Invalid, Chan, Func, Interface or UnsafePointer. - return nil, fmt.Errorf("can not map a value of kind %s to a *types.Value", k) - } -} - -// Value returns the value as a Value proto -func Value(v interface{}, opts ...Option) (*types.Value, error) { - if v == nil { - return &types.Value{Kind: &types.Value_NullValue{}}, nil - } - pv, err := valueFromReflect(reflect.Indirect(reflect.ValueOf(v)), opts...) - if err != nil { - return nil, err - } - return pv, nil -} diff --git a/pkg/gogoproto/struct_test.go b/pkg/gogoproto/struct_test.go deleted file mode 100644 index 95dc14b579..0000000000 --- a/pkg/gogoproto/struct_test.go +++ /dev/null @@ -1,220 +0,0 @@ -// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package gogoproto_test - -import ( - "bytes" - "reflect" - "testing" - - pbtypes "github.com/gogo/protobuf/types" - "github.com/smartystreets/assertions" - "github.com/spf13/cast" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" - "go.thethings.network/lorawan-stack/v3/pkg/types" - "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" -) - -type jsonMarshaler struct { - Text string -} - -func (m jsonMarshaler) MarshalJSON() ([]byte, error) { - return bytes.ToUpper([]byte(`"` + m.Text + `"`)), nil -} - -func (m *jsonMarshaler) UnmarshalJSON(b []byte) error { - m.Text = string(bytes.ToLower(bytes.Trim(b, `"`))) - return nil -} - -func TestStructProto(t *testing.T) { - a := assertions.New(t) - - ptr := "ptr" - m := map[string]interface{}{ - "foo": "bar", - "ptr": &ptr, - "answer": 42, - "answer.precise": 42.0, - "works": true, - "empty": nil, - "list": []string{"a", "b", "c"}, - "map": map[string]string{"foo": "bar"}, - "eui": types.EUI64{1, 2, 3, 4, 5, 6, 7, 8}, - "jsonMarshaler": &jsonMarshaler{Text: "testtext"}, - } - s, err := gogoproto.Struct(m) - a.So(err, should.BeNil) - sm, err := gogoproto.Map(s) - a.So(err, should.BeNil) - for k, v := range m { - a.So(s.Fields, should.ContainKey, k) - a.So(sm, should.ContainKey, k) - if v == nil { - a.So(s.Fields[k].Kind, should.HaveSameTypeAs, &pbtypes.Value_NullValue{}) - a.So(sm[k], should.BeNil) - continue - } - - rv := reflect.Indirect(reflect.ValueOf(v)) - - switch kind := rv.Kind(); kind { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, - reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, - reflect.Float32, reflect.Float64: - - var vt float64 - a.So(s.Fields[k].Kind, should.HaveSameTypeAs, &pbtypes.Value_NumberValue{}) - a.So(sm[k], should.HaveSameTypeAs, vt) - a.So(sm[k], should.Equal, cast.ToFloat64(rv.Interface())) - - case reflect.Bool: - var vt bool - a.So(s.Fields[k].Kind, should.HaveSameTypeAs, &pbtypes.Value_BoolValue{}) - a.So(sm[k], should.HaveSameTypeAs, vt) - a.So(sm[k], should.Equal, rv.Bool()) - - case reflect.String: - var vt string - a.So(s.Fields[k].Kind, should.HaveSameTypeAs, &pbtypes.Value_StringValue{}) - a.So(sm[k], should.HaveSameTypeAs, vt) - a.So(sm[k], should.Equal, rv.String()) - - case reflect.Slice, reflect.Array: - var vt []interface{} - a.So(s.Fields[k].Kind, should.HaveSameTypeAs, &pbtypes.Value_ListValue{}) - a.So(sm[k], should.HaveSameTypeAs, vt) - if a.So(sm[k], should.HaveLength, rv.Len()) { - // TODO find a way to compare these values - //smv := reflect.ValueOf(sm[k]) - //for i := 0; i < rv.Len(); i++ { - //a.So(smv.Index(i).Interface(), should.Resemble, rv.Index(i).Interface()) - //} - } - - case reflect.Struct, reflect.Map: - var vt map[string]interface{} - a.So(s.Fields[k].Kind, should.HaveSameTypeAs, &pbtypes.Value_StructValue{}) - a.So(sm[k], should.HaveSameTypeAs, vt) - if kind == reflect.Map { - a.So(sm[k], should.HaveLength, rv.Len()) - } - - default: - panic("Unmatched kind: " + rv.Kind().String()) - } - pv, err := gogoproto.Value(rv.Interface()) - if a.So(err, should.BeNil) { - a.So(s.Fields[k], should.Resemble, pv) - - gv, err := gogoproto.Interface(pv) - if a.So(err, should.BeNil) { - a.So(sm[k], should.Resemble, gv) - } - } - } -} - -func TestRecursiveStructures(t *testing.T) { - t.Parallel() - - recursiveStruct := &pbtypes.Struct{Fields: make(map[string]*pbtypes.Value)} - recursiveStruct.Fields["test"] = &pbtypes.Value{ - Kind: &pbtypes.Value_StructValue{ - StructValue: recursiveStruct, - }, - } - recursiveList := &pbtypes.ListValue{Values: make([]*pbtypes.Value, 1)} - recursiveList.Values[0] = &pbtypes.Value{ - Kind: &pbtypes.Value_ListValue{ - ListValue: recursiveList, - }, - } - recursiveValueStruct := &pbtypes.Value{ - Kind: &pbtypes.Value_StructValue{ - StructValue: recursiveStruct, - }, - } - recursiveValueList := &pbtypes.Value{ - Kind: &pbtypes.Value_ListValue{ - ListValue: recursiveList, - }, - } - - recursiveMap := make(map[string]interface{}) - recursiveMap["test"] = recursiveMap - recursiveSlice := make([]interface{}, 1) - recursiveSlice[0] = recursiveSlice - type recursiveGoStruct struct { - self *recursiveGoStruct - } - recursiveGoStructValue := &recursiveGoStruct{} - recursiveGoStructValue.self = recursiveGoStructValue - - t.Run("Map", func(t *testing.T) { - t.Parallel() - - a := assertions.New(t) - _, err := gogoproto.Map(recursiveStruct) - a.So(err, should.NotBeNil) - }) - - t.Run("Slice", func(t *testing.T) { - t.Parallel() - - a := assertions.New(t) - _, err := gogoproto.Slice(recursiveList) - a.So(err, should.NotBeNil) - }) - - t.Run("Interface", func(t *testing.T) { - t.Parallel() - - a := assertions.New(t) - _, err := gogoproto.Interface(recursiveValueStruct) - a.So(err, should.NotBeNil) - _, err = gogoproto.Interface(recursiveValueList) - a.So(err, should.NotBeNil) - }) - - t.Run("Struct", func(t *testing.T) { - t.Parallel() - - a := assertions.New(t) - _, err := gogoproto.Struct(recursiveMap) - a.So(err, should.NotBeNil) - }) - - t.Run("List", func(t *testing.T) { - t.Parallel() - - a := assertions.New(t) - _, err := gogoproto.List(recursiveSlice) - a.So(err, should.NotBeNil) - }) - - t.Run("Value", func(t *testing.T) { - t.Parallel() - - a := assertions.New(t) - _, err := gogoproto.Value(recursiveSlice) - a.So(err, should.NotBeNil) - _, err = gogoproto.Value(recursiveMap) - a.So(err, should.NotBeNil) - _, err = gogoproto.Value(recursiveGoStructValue) - a.So(err, should.NotBeNil) - }) -} diff --git a/pkg/messageprocessors/cayennelpp/cayennelpp.go b/pkg/messageprocessors/cayennelpp/cayennelpp.go index 069c714492..41b7320c40 100644 --- a/pkg/messageprocessors/cayennelpp/cayennelpp.go +++ b/pkg/messageprocessors/cayennelpp/cayennelpp.go @@ -22,7 +22,7 @@ import ( lpp "github.com/TheThingsNetwork/go-cayenne-lib" "go.thethings.network/lorawan-stack/v3/pkg/errors" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" + "go.thethings.network/lorawan-stack/v3/pkg/goproto" "go.thethings.network/lorawan-stack/v3/pkg/messageprocessors" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" ) @@ -49,7 +49,7 @@ func (h *host) EncodeDownlink(ctx context.Context, ids *ttnpb.EndDeviceIdentifie if decoded == nil { return nil } - m, err := gogoproto.Map(decoded) + m, err := goproto.Map(decoded) if err != nil { return errInput.WithCause(err) } @@ -79,7 +79,7 @@ func (h *host) DecodeUplink(ctx context.Context, ids *ttnpb.EndDeviceIdentifiers if err := decoder.DecodeUplink(m); err != nil { return errOutput.WithCause(err) } - s, err := gogoproto.Struct(m) + s, err := goproto.Struct(m) if err != nil { return errOutput.WithCause(err) } @@ -96,7 +96,7 @@ func (h *host) DecodeDownlink(ctx context.Context, ids *ttnpb.EndDeviceIdentifie if err := decoder.DecodeDownlink(m); err != nil { return errOutput.WithCause(err) } - s, err := gogoproto.Struct(m) + s, err := goproto.Struct(m) if err != nil { return errOutput.WithCause(err) } diff --git a/pkg/messageprocessors/cayennelpp/cayennelpp_test.go b/pkg/messageprocessors/cayennelpp/cayennelpp_test.go index f40bf2fcbb..d5ea253d8f 100644 --- a/pkg/messageprocessors/cayennelpp/cayennelpp_test.go +++ b/pkg/messageprocessors/cayennelpp/cayennelpp_test.go @@ -19,7 +19,7 @@ import ( lpp "github.com/TheThingsNetwork/go-cayenne-lib" "github.com/smartystreets/assertions" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" + "go.thethings.network/lorawan-stack/v3/pkg/goproto" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" @@ -63,7 +63,7 @@ func TestEncode(t *testing.T) { message.DecodedPayload = nil err = host.DecodeDownlink(ctx, ids, nil, message, "") a.So(err, should.BeNil) - m, err := gogoproto.Map(message.DecodedPayload) + m, err := goproto.Map(message.DecodedPayload) a.So(err, should.BeNil) a.So(m["value_2"], should.AlmostEqual, -50.51, 0.01) } @@ -145,7 +145,7 @@ func TestDecode(t *testing.T) { err := host.DecodeUplink(ctx, ids, nil, message, "") a.So(err, should.BeNil) - m, err := gogoproto.Map(message.DecodedPayload) + m, err := goproto.Map(message.DecodedPayload) a.So(err, should.BeNil) a.So(m, should.HaveLength, 12) a.So(m["digital_in_1"], should.Equal, 255) diff --git a/pkg/messageprocessors/javascript/javascript.go b/pkg/messageprocessors/javascript/javascript.go index c9d4fcaf36..ed4962640b 100644 --- a/pkg/messageprocessors/javascript/javascript.go +++ b/pkg/messageprocessors/javascript/javascript.go @@ -23,7 +23,7 @@ import ( "strings" "go.thethings.network/lorawan-stack/v3/pkg/errors" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" + "go.thethings.network/lorawan-stack/v3/pkg/goproto" "go.thethings.network/lorawan-stack/v3/pkg/messageprocessors" "go.thethings.network/lorawan-stack/v3/pkg/messageprocessors/normalizedpayload" "go.thethings.network/lorawan-stack/v3/pkg/scripting" @@ -133,7 +133,7 @@ func (*host) encodeDownlink( if decoded == nil { return nil } - data, err := gogoproto.Map(decoded) + data, err := goproto.Map(decoded) if err != nil { return errInput.WithCause(err) } @@ -305,7 +305,7 @@ func (*host) decodeUplink( if errs := output.Decoded.Errors; len(errs) > 0 { return errOutputErrors.WithAttributes("errors", strings.Join(errs, ", ")) } - decodedPayload, err := gogoproto.Struct(output.Decoded.Data) + decodedPayload, err := goproto.Struct(output.Decoded.Data) if err != nil { return errOutput.WithCause(err) } @@ -339,7 +339,7 @@ func (*host) decodeUplink( } normalizedPayload := make([]*structpb.Struct, len(measurements)) for i := range measurements { - pb, err := gogoproto.Struct(measurements[i]) + pb, err := goproto.Struct(measurements[i]) if err != nil { return errOutput.WithCause(err) } @@ -474,7 +474,7 @@ func (*host) decodeDownlink( return errOutputErrors.WithAttributes("errors", strings.Join(output.Errors, ", ")) } - s, err := gogoproto.Struct(output.Data) + s, err := goproto.Struct(output.Data) if err != nil { return errOutput.WithCause(err) } diff --git a/pkg/messageprocessors/javascript/javascript_test.go b/pkg/messageprocessors/javascript/javascript_test.go index 778326185f..f0379651e1 100644 --- a/pkg/messageprocessors/javascript/javascript_test.go +++ b/pkg/messageprocessors/javascript/javascript_test.go @@ -19,7 +19,7 @@ import ( "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/errors" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" + "go.thethings.network/lorawan-stack/v3/pkg/goproto" "go.thethings.network/lorawan-stack/v3/pkg/messageprocessors/normalizedpayload" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" @@ -265,7 +265,7 @@ func TestLegacyDecodeUplink(t *testing.T) { ` err := host.DecodeUplink(ctx, ids, nil, message, script) a.So(err, should.BeNil) - m, err := gogoproto.Map(message.DecodedPayload) + m, err := goproto.Map(message.DecodedPayload) a.So(err, should.BeNil) a.So(m, should.Resemble, map[string]interface{}{ "temperature": -21.3, @@ -283,7 +283,7 @@ func TestLegacyDecodeUplink(t *testing.T) { ` err := host.DecodeUplink(ctx, ids, nil, message, script) a.So(err, should.BeNil) - m, err := gogoproto.Map(message.DecodedPayload) + m, err := goproto.Map(message.DecodedPayload) a.So(err, should.BeNil) a.So(m, should.Resemble, map[string]interface{}{ "temperature": -21.3, @@ -753,7 +753,7 @@ func TestDecodeUplink(t *testing.T) { ` err := host.DecodeUplink(ctx, ids, nil, message, script) a.So(err, should.BeNil) - m, err := gogoproto.Map(message.DecodedPayload) + m, err := goproto.Map(message.DecodedPayload) a.So(err, should.BeNil) a.So(m, should.Resemble, map[string]interface{}{ "event": "button", @@ -850,7 +850,7 @@ func TestDecodeDownlink(t *testing.T) { ` err := host.DecodeDownlink(ctx, ids, nil, message, script) a.So(err, should.BeNil) - m, err := gogoproto.Map(message.DecodedPayload) + m, err := goproto.Map(message.DecodedPayload) a.So(err, should.BeNil) a.So(m, should.Resemble, map[string]interface{}{ "value": -21.3, @@ -887,7 +887,7 @@ func TestDecodeDownlink(t *testing.T) { ` err := host.DecodeDownlink(ctx, ids, nil, message, script) a.So(err, should.BeNil) - m, err := gogoproto.Map(message.DecodedPayload) + m, err := goproto.Map(message.DecodedPayload) a.So(err, should.BeNil) a.So(m, should.Resemble, map[string]interface{}{ "color": "blue", diff --git a/pkg/scripting/javascript/javascript_test.go b/pkg/scripting/javascript/javascript_test.go index c172f8f441..bbbc6897d9 100644 --- a/pkg/scripting/javascript/javascript_test.go +++ b/pkg/scripting/javascript/javascript_test.go @@ -19,7 +19,6 @@ import ( "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/errors" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" "go.thethings.network/lorawan-stack/v3/pkg/goproto" "go.thethings.network/lorawan-stack/v3/pkg/scripting" "go.thethings.network/lorawan-stack/v3/pkg/scripting/javascript" @@ -122,7 +121,7 @@ func TestStackOverflow(t *testing.T) { err = as(&m) a.So(err, should.BeNil) - _, err = gogoproto.Struct(m) + _, err = goproto.Struct(m) a.So(err, should.NotBeNil) _, err = goproto.Struct(m) diff --git a/pkg/ttnpb/errors.go b/pkg/ttnpb/errors.go index 2beea801fc..6c80234770 100644 --- a/pkg/ttnpb/errors.go +++ b/pkg/ttnpb/errors.go @@ -19,7 +19,7 @@ import ( proto "github.com/golang/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/errors" - "go.thethings.network/lorawan-stack/v3/pkg/gogoproto" + "go.thethings.network/lorawan-stack/v3/pkg/goproto" "google.golang.org/protobuf/types/known/anypb" ) @@ -36,9 +36,9 @@ func (e errorDetails) Namespace() string { return e.GetNamespace() } func (e errorDetails) Name() string { return e.GetName() } func (e errorDetails) MessageFormat() string { return e.GetMessageFormat() } func (e errorDetails) PublicAttributes() map[string]interface{} { - attributes, err := gogoproto.Map(e.GetAttributes()) + attributes, err := goproto.Map(e.GetAttributes()) if err != nil { - panic(fmt.Sprintf("Failed to decode error attributes: %s", err)) // Likely a bug in gogoproto. + panic(fmt.Sprintf("Failed to decode error attributes: %s", err)) // Likely a bug in goproto. } return attributes } @@ -78,7 +78,7 @@ func ErrorDetailsToProto(e errors.ErrorDetails) *ErrorDetails { Code: e.Code(), } if attributes := e.PublicAttributes(); len(attributes) > 0 { - attributesStruct, err := gogoproto.Struct(attributes) + attributesStruct, err := goproto.Struct(attributes) if err != nil { panic(fmt.Sprintf("Failed to encode error attributes: %s", err)) // Likely a bug in ttn (invalid attribute type). } From 2a508a55d9a4a5143974094a04fe71d043096acd Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Mon, 19 Dec 2022 13:38:55 +0100 Subject: [PATCH 18/30] all: Use new proto package in imports --- cmd/ttn-lw-cli/commands/gateways.go | 2 +- .../io/formatters/protobuf.go | 2 +- .../io/formatters/protobuf_test.go | 2 +- .../io/packages/loradms/v1/api/messages.go | 2 +- .../io/packages/loragls/v3/package.go | 2 +- .../io/packages/redis/registry.go | 2 +- .../io/pubsub/provider/connection.go | 2 +- .../io/pubsub/redis/registry.go | 2 +- .../io/web/redis/registry.go | 2 +- pkg/applicationserver/io/web/webhooks.go | 2 +- pkg/band/mapping.go | 2 +- pkg/errors/conversion.go | 2 +- pkg/errors/details.go | 2 +- pkg/errors/details_test.go | 21 ------------------- pkg/errors/errors.go | 2 +- pkg/errors/grpc.go | 7 ++++--- pkg/events/cloud/cloud.go | 2 +- pkg/events/definitions.go | 2 +- pkg/events/events.go | 2 +- pkg/events/redis/codec.go | 2 +- pkg/gatewayserver/gatewayserver_test.go | 1 - pkg/gatewayserver/io/mqtt/format_protobuf.go | 2 +- pkg/gatewayserver/io/mqtt/mqtt_test.go | 3 +-- pkg/gatewayserver/io/uplink_token.go | 1 - pkg/gatewayserver/io/ws/ws_test.go | 2 +- pkg/identityserver/bunstore/picture.go | 2 +- pkg/joinserver/grpc_deviceregistry.go | 2 +- pkg/jsonpb/marshaling.go | 2 +- pkg/jsonpb/ttn.go | 2 +- pkg/networkserver/grpc_deviceregistry.go | 2 +- pkg/networkserver/grpc_gsns.go | 1 - .../test/shared/application_uplink_queue.go | 2 +- .../internal/test/shared/device_registry.go | 2 +- pkg/networkserver/redis/registry.go | 2 +- .../redis/uplink_deduplicator.go | 2 +- pkg/networkserver/registry.go | 2 +- pkg/redis/codec/main.go | 2 +- pkg/redis/redis.go | 2 +- pkg/redis/redis_test.go | 2 +- pkg/ttnpb/any.go | 2 +- pkg/ttnpb/copy.go | 2 +- pkg/ttnpb/errors.go | 2 +- pkg/util/rpctest/rpctest.pb.go | 2 +- pkg/util/test/assertions/proto.go | 2 +- pkg/util/test/events.go | 2 +- 45 files changed, 44 insertions(+), 68 deletions(-) diff --git a/cmd/ttn-lw-cli/commands/gateways.go b/cmd/ttn-lw-cli/commands/gateways.go index 9e7ddc70bc..99e42edf5b 100644 --- a/cmd/ttn-lw-cli/commands/gateways.go +++ b/cmd/ttn-lw-cli/commands/gateways.go @@ -19,7 +19,6 @@ import ( "strings" "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - "github.com/gogo/protobuf/proto" "github.com/spf13/cobra" "github.com/spf13/pflag" "go.thethings.network/lorawan-stack/v3/cmd/internal/io" @@ -30,6 +29,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" ttntypes "go.thethings.network/lorawan-stack/v3/pkg/types" "google.golang.org/grpc" + "google.golang.org/protobuf/proto" ) var ( diff --git a/pkg/applicationserver/io/formatters/protobuf.go b/pkg/applicationserver/io/formatters/protobuf.go index f1c74175b6..a16466ec08 100644 --- a/pkg/applicationserver/io/formatters/protobuf.go +++ b/pkg/applicationserver/io/formatters/protobuf.go @@ -15,8 +15,8 @@ package formatters import ( - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/proto" ) type protobuf struct{} diff --git a/pkg/applicationserver/io/formatters/protobuf_test.go b/pkg/applicationserver/io/formatters/protobuf_test.go index 5679fe93bf..98158c1283 100644 --- a/pkg/applicationserver/io/formatters/protobuf_test.go +++ b/pkg/applicationserver/io/formatters/protobuf_test.go @@ -18,11 +18,11 @@ import ( "strconv" "testing" - "github.com/gogo/protobuf/proto" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/formatters" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/structpb" ) diff --git a/pkg/applicationserver/io/packages/loradms/v1/api/messages.go b/pkg/applicationserver/io/packages/loradms/v1/api/messages.go index c0dd94e48f..c3059036fb 100644 --- a/pkg/applicationserver/io/packages/loradms/v1/api/messages.go +++ b/pkg/applicationserver/io/packages/loradms/v1/api/messages.go @@ -19,9 +19,9 @@ import ( "io" "net/http" - "github.com/golang/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/goproto" + "google.golang.org/protobuf/proto" ) const ( diff --git a/pkg/applicationserver/io/packages/loragls/v3/package.go b/pkg/applicationserver/io/packages/loragls/v3/package.go index 8c88f68457..7d11a1b918 100644 --- a/pkg/applicationserver/io/packages/loragls/v3/package.go +++ b/pkg/applicationserver/io/packages/loragls/v3/package.go @@ -19,7 +19,6 @@ import ( "fmt" "time" - "github.com/golang/protobuf/proto" apppayload "go.thethings.network/lorawan-application-payload" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/packages" @@ -32,6 +31,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" urlutil "go.thethings.network/lorawan-stack/v3/pkg/util/url" "google.golang.org/grpc/codes" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/structpb" "google.golang.org/protobuf/types/known/timestamppb" ) diff --git a/pkg/applicationserver/io/packages/redis/registry.go b/pkg/applicationserver/io/packages/redis/registry.go index 4c28111a2d..48eaf8a798 100644 --- a/pkg/applicationserver/io/packages/redis/registry.go +++ b/pkg/applicationserver/io/packages/redis/registry.go @@ -23,12 +23,12 @@ import ( "time" "github.com/go-redis/redis/v8" - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/log" ttnredis "go.thethings.network/lorawan-stack/v3/pkg/redis" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/timestamppb" ) diff --git a/pkg/applicationserver/io/pubsub/provider/connection.go b/pkg/applicationserver/io/pubsub/provider/connection.go index d32503b7e9..8296c3b83b 100644 --- a/pkg/applicationserver/io/pubsub/provider/connection.go +++ b/pkg/applicationserver/io/pubsub/provider/connection.go @@ -18,11 +18,11 @@ import ( "context" "reflect" - "github.com/golang/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "gocloud.dev/pubsub" "google.golang.org/grpc/codes" + "google.golang.org/protobuf/proto" ) // DownlinkSubscriptions contains the subscriptions for the push and replace queue operations. diff --git a/pkg/applicationserver/io/pubsub/redis/registry.go b/pkg/applicationserver/io/pubsub/redis/registry.go index 66ce749162..c6526eabe7 100644 --- a/pkg/applicationserver/io/pubsub/redis/registry.go +++ b/pkg/applicationserver/io/pubsub/redis/registry.go @@ -19,12 +19,12 @@ import ( "time" "github.com/go-redis/redis/v8" - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/pubsub" "go.thethings.network/lorawan-stack/v3/pkg/errors" ttnredis "go.thethings.network/lorawan-stack/v3/pkg/redis" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/timestamppb" ) diff --git a/pkg/applicationserver/io/web/redis/registry.go b/pkg/applicationserver/io/web/redis/registry.go index 152a765184..b74bd5e1be 100644 --- a/pkg/applicationserver/io/web/redis/registry.go +++ b/pkg/applicationserver/io/web/redis/registry.go @@ -21,11 +21,11 @@ import ( "time" "github.com/go-redis/redis/v8" - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/errors" ttnredis "go.thethings.network/lorawan-stack/v3/pkg/redis" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/timestamppb" ) diff --git a/pkg/applicationserver/io/web/webhooks.go b/pkg/applicationserver/io/web/webhooks.go index 48f2890c43..e7c6340ca9 100644 --- a/pkg/applicationserver/io/web/webhooks.go +++ b/pkg/applicationserver/io/web/webhooks.go @@ -24,7 +24,6 @@ import ( "strings" "sync" - "github.com/golang/protobuf/proto" "github.com/gorilla/mux" "github.com/jtacoma/uritemplates" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io" @@ -38,6 +37,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/webhandlers" "go.thethings.network/lorawan-stack/v3/pkg/webmiddleware" "go.thethings.network/lorawan-stack/v3/pkg/workerpool" + "google.golang.org/protobuf/proto" ) const ( diff --git a/pkg/band/mapping.go b/pkg/band/mapping.go index 6c6ad4b715..370395e728 100644 --- a/pkg/band/mapping.go +++ b/pkg/band/mapping.go @@ -15,9 +15,9 @@ package band import ( - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/proto" ) var errDataRateNotFound = errors.DefineNotFound( diff --git a/pkg/errors/conversion.go b/pkg/errors/conversion.go index f5804b375e..39064d6b58 100644 --- a/pkg/errors/conversion.go +++ b/pkg/errors/conversion.go @@ -22,8 +22,8 @@ import ( "net/url" "os" - "github.com/golang/protobuf/proto" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) var ( diff --git a/pkg/errors/details.go b/pkg/errors/details.go index 6ab666c21f..5e04915387 100644 --- a/pkg/errors/details.go +++ b/pkg/errors/details.go @@ -17,7 +17,7 @@ package errors import ( "errors" - "github.com/golang/protobuf/proto" + "google.golang.org/protobuf/proto" ) type detailer interface { diff --git a/pkg/errors/details_test.go b/pkg/errors/details_test.go index 1043dc2602..ee2fc5d749 100644 --- a/pkg/errors/details_test.go +++ b/pkg/errors/details_test.go @@ -18,22 +18,11 @@ import ( gerrors "errors" "testing" - "github.com/golang/protobuf/proto" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" ) -type detail string - -func (s *detail) Reset() { *s = "" } -func (s detail) String() string { return string(s) } -func (detail) ProtoMessage() {} - -func stringDetail(s string) *detail { - return (*detail)(&s) -} - func TestDetails(t *testing.T) { t.Parallel() a := assertions.New(t) @@ -45,14 +34,4 @@ func TestDetails(t *testing.T) { a.So(errors.Details(errInvalidFoo), should.BeEmpty) a.So(errors.Details(errInvalidFoo.GRPCStatus().Err()), should.BeEmpty) a.So(errors.Details(gerrors.New("go stdlib error")), should.BeEmpty) - - err1 := errInvalidFoo.WithDetails(stringDetail("foo"), stringDetail("bar")) - err2 := err1.WithDetails(stringDetail("baz")) - - a.So(err1, should.HaveSameErrorDefinitionAs, errInvalidFoo) - a.So(err1.Details(), should.Resemble, []proto.Message{stringDetail("foo"), stringDetail("bar")}) - - a.So(err2, should.HaveSameErrorDefinitionAs, err1) - a.So(err2, should.HaveSameErrorDefinitionAs, errInvalidFoo) - a.So(err2.Details(), should.Resemble, []proto.Message{stringDetail("foo"), stringDetail("bar"), stringDetail("baz")}) } diff --git a/pkg/errors/errors.go b/pkg/errors/errors.go index 34040ec39f..9f491a754b 100644 --- a/pkg/errors/errors.go +++ b/pkg/errors/errors.go @@ -21,9 +21,9 @@ import ( "fmt" "sync/atomic" - "github.com/golang/protobuf/proto" uuid "github.com/satori/go.uuid" "google.golang.org/grpc/codes" + "google.golang.org/protobuf/proto" ) // New returns an error that formats as the given text. diff --git a/pkg/errors/grpc.go b/pkg/errors/grpc.go index 177c2a2ff6..f973118173 100644 --- a/pkg/errors/grpc.go +++ b/pkg/errors/grpc.go @@ -17,10 +17,11 @@ package errors import ( "context" - "github.com/golang/protobuf/proto" + protov1 "github.com/golang/protobuf/proto" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" ) // FromGRPCStatus converts the gRPC status message into an Error. @@ -70,7 +71,7 @@ func (d *Definition) setGRPCStatus() { if ErrorDetailsToProto != nil { if pb := ErrorDetailsToProto(d); pb != nil { var err error - s, err = s.WithDetails(pb) + s, err = s.WithDetails(protov1.MessageV1(pb)) if err != nil { panic(err) // ErrorDetailsToProto generated an invalid proto. } @@ -100,7 +101,7 @@ func (e *Error) GRPCStatus() *status.Status { if ErrorDetailsToProto != nil { if pb := ErrorDetailsToProto(e); pb != nil { var err error - s, err = s.WithDetails(pb) + s, err = s.WithDetails(protov1.MessageV1(pb)) if err != nil { panic(err) // ErrorDetailsToProto generated an invalid proto. } diff --git a/pkg/events/cloud/cloud.go b/pkg/events/cloud/cloud.go index 36882ef7c2..c6a42a2d67 100644 --- a/pkg/events/cloud/cloud.go +++ b/pkg/events/cloud/cloud.go @@ -21,7 +21,6 @@ import ( "strings" "sync" - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/events" "go.thethings.network/lorawan-stack/v3/pkg/events/basic" "go.thethings.network/lorawan-stack/v3/pkg/log" @@ -29,6 +28,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "gocloud.dev/pubsub" + "google.golang.org/protobuf/proto" ) // NewPubSub creates a new PubSub that publishes and subscribes to Go Cloud. diff --git a/pkg/events/definitions.go b/pkg/events/definitions.go index 3a4f76ea2e..c49a494fd0 100644 --- a/pkg/events/definitions.go +++ b/pkg/events/definitions.go @@ -19,9 +19,9 @@ import ( "fmt" "sort" - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/i18n" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/proto" ) const i18nPrefix = "event" diff --git a/pkg/events/events.go b/pkg/events/events.go index be9af13cf8..8643e57bf7 100644 --- a/pkg/events/events.go +++ b/pkg/events/events.go @@ -25,11 +25,11 @@ import ( "strings" "time" - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/goproto" "go.thethings.network/lorawan-stack/v3/pkg/jsonpb" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/structpb" "google.golang.org/protobuf/types/known/timestamppb" diff --git a/pkg/events/redis/codec.go b/pkg/events/redis/codec.go index ada9bf7274..8ec28d78ca 100644 --- a/pkg/events/redis/codec.go +++ b/pkg/events/redis/codec.go @@ -18,11 +18,11 @@ import ( "encoding/base64" "strings" - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/events" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/proto" ) func encodeEventData(evt events.Event) (string, error) { diff --git a/pkg/gatewayserver/gatewayserver_test.go b/pkg/gatewayserver/gatewayserver_test.go index 614a747367..8306df9bd9 100644 --- a/pkg/gatewayserver/gatewayserver_test.go +++ b/pkg/gatewayserver/gatewayserver_test.go @@ -25,7 +25,6 @@ import ( "time" mqtt "github.com/eclipse/paho.mqtt.golang" - "github.com/gogo/protobuf/proto" "github.com/gorilla/websocket" "github.com/smartystreets/assertions" ttnpbv2 "go.thethings.network/lorawan-stack-legacy/v2/pkg/ttnpb" diff --git a/pkg/gatewayserver/io/mqtt/format_protobuf.go b/pkg/gatewayserver/io/mqtt/format_protobuf.go index 62e577b66b..2576bb11b5 100644 --- a/pkg/gatewayserver/io/mqtt/format_protobuf.go +++ b/pkg/gatewayserver/io/mqtt/format_protobuf.go @@ -17,9 +17,9 @@ package mqtt import ( "context" - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/gatewayserver/io/mqtt/topics" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/proto" ) type protobuf struct { diff --git a/pkg/gatewayserver/io/mqtt/mqtt_test.go b/pkg/gatewayserver/io/mqtt/mqtt_test.go index cbec8256ad..85cd19f9c3 100644 --- a/pkg/gatewayserver/io/mqtt/mqtt_test.go +++ b/pkg/gatewayserver/io/mqtt/mqtt_test.go @@ -39,7 +39,6 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -196,7 +195,7 @@ func TestTraffic(t *testing.T) { t.Run("Upstream", func(t *testing.T) { for _, tc := range []struct { Topic string - Message protoreflect.ProtoMessage + Message proto.Message OK bool }{ { diff --git a/pkg/gatewayserver/io/uplink_token.go b/pkg/gatewayserver/io/uplink_token.go index 7dfddbbfa1..7d680eb7aa 100644 --- a/pkg/gatewayserver/io/uplink_token.go +++ b/pkg/gatewayserver/io/uplink_token.go @@ -17,7 +17,6 @@ package io import ( "time" - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/gatewayserver/scheduling" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/protobuf/proto" diff --git a/pkg/gatewayserver/io/ws/ws_test.go b/pkg/gatewayserver/io/ws/ws_test.go index 8d70cf972c..1a792c9f51 100644 --- a/pkg/gatewayserver/io/ws/ws_test.go +++ b/pkg/gatewayserver/io/ws/ws_test.go @@ -25,7 +25,6 @@ import ( "testing" "time" - "github.com/gogo/protobuf/proto" "github.com/gorilla/websocket" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/band" @@ -48,6 +47,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/structpb" "google.golang.org/protobuf/types/known/timestamppb" ) diff --git a/pkg/identityserver/bunstore/picture.go b/pkg/identityserver/bunstore/picture.go index f405506b9b..1addd25237 100644 --- a/pkg/identityserver/bunstore/picture.go +++ b/pkg/identityserver/bunstore/picture.go @@ -17,9 +17,9 @@ package store import ( "context" - "github.com/gogo/protobuf/proto" "github.com/uptrace/bun" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/proto" ) // Picture is the picture model in the database. diff --git a/pkg/joinserver/grpc_deviceregistry.go b/pkg/joinserver/grpc_deviceregistry.go index 6344184eb3..0b4135b2a2 100644 --- a/pkg/joinserver/grpc_deviceregistry.go +++ b/pkg/joinserver/grpc_deviceregistry.go @@ -17,7 +17,6 @@ package joinserver import ( "context" - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/crypto/cryptoservices" "go.thethings.network/lorawan-stack/v3/pkg/crypto/cryptoutil" @@ -27,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/rpcmiddleware/warning" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/emptypb" ) diff --git a/pkg/jsonpb/marshaling.go b/pkg/jsonpb/marshaling.go index 8580fffecc..516c559592 100644 --- a/pkg/jsonpb/marshaling.go +++ b/pkg/jsonpb/marshaling.go @@ -12,7 +12,7 @@ import ( . "github.com/grpc-ecosystem/grpc-gateway/runtime" // nolint: golint "github.com/gogo/protobuf/jsonpb" - "github.com/gogo/protobuf/proto" + "google.golang.org/protobuf/proto" ) // GoGoJSONPb is a Marshaler which marshals/unmarshals into/from JSON diff --git a/pkg/jsonpb/ttn.go b/pkg/jsonpb/ttn.go index d114d1ee20..f7ebd99958 100644 --- a/pkg/jsonpb/ttn.go +++ b/pkg/jsonpb/ttn.go @@ -21,9 +21,9 @@ import ( "sort" "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" - "github.com/gogo/protobuf/proto" "github.com/grpc-ecosystem/grpc-gateway/runtime" "golang.org/x/exp/maps" + "google.golang.org/protobuf/proto" ) // TTN returns the default JSONPb marshaler of The Things Stack. diff --git a/pkg/networkserver/grpc_deviceregistry.go b/pkg/networkserver/grpc_deviceregistry.go index 1e3544e1a0..18eb6da3b1 100644 --- a/pkg/networkserver/grpc_deviceregistry.go +++ b/pkg/networkserver/grpc_deviceregistry.go @@ -20,7 +20,6 @@ import ( "fmt" "strings" - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/band" "go.thethings.network/lorawan-stack/v3/pkg/crypto" @@ -35,6 +34,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/specification/macspec" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/timestamppb" ) diff --git a/pkg/networkserver/grpc_gsns.go b/pkg/networkserver/grpc_gsns.go index 65bcbbb875..faf36a088f 100644 --- a/pkg/networkserver/grpc_gsns.go +++ b/pkg/networkserver/grpc_gsns.go @@ -20,7 +20,6 @@ import ( "fmt" "runtime/trace" - "github.com/gogo/protobuf/proto" clusterauth "go.thethings.network/lorawan-stack/v3/pkg/auth/cluster" "go.thethings.network/lorawan-stack/v3/pkg/band" "go.thethings.network/lorawan-stack/v3/pkg/crypto" diff --git a/pkg/networkserver/internal/test/shared/application_uplink_queue.go b/pkg/networkserver/internal/test/shared/application_uplink_queue.go index 26ec417911..184544fca7 100644 --- a/pkg/networkserver/internal/test/shared/application_uplink_queue.go +++ b/pkg/networkserver/internal/test/shared/application_uplink_queue.go @@ -20,13 +20,13 @@ import ( "testing" "time" - "github.com/gogo/protobuf/proto" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/errors" . "go.thethings.network/lorawan-stack/v3/pkg/networkserver" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/proto" ) // handleApplicationUplinkQueueTest runs a test suite on q. diff --git a/pkg/networkserver/internal/test/shared/device_registry.go b/pkg/networkserver/internal/test/shared/device_registry.go index 8e156cf17e..32c8528929 100644 --- a/pkg/networkserver/internal/test/shared/device_registry.go +++ b/pkg/networkserver/internal/test/shared/device_registry.go @@ -21,7 +21,6 @@ import ( "testing" "time" - "github.com/gogo/protobuf/proto" "github.com/kr/pretty" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/errors" @@ -31,6 +30,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/proto" ) func isNil(c interface{}) bool { diff --git a/pkg/networkserver/redis/registry.go b/pkg/networkserver/redis/registry.go index 634777b0ab..a7cf5db651 100644 --- a/pkg/networkserver/redis/registry.go +++ b/pkg/networkserver/redis/registry.go @@ -20,7 +20,6 @@ import ( "runtime/trace" "github.com/go-redis/redis/v8" - "github.com/gogo/protobuf/proto" "github.com/vmihailenco/msgpack/v5" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/log" @@ -30,6 +29,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/timestamppb" ) diff --git a/pkg/networkserver/redis/uplink_deduplicator.go b/pkg/networkserver/redis/uplink_deduplicator.go index b745d172dd..5fd46592e3 100644 --- a/pkg/networkserver/redis/uplink_deduplicator.go +++ b/pkg/networkserver/redis/uplink_deduplicator.go @@ -19,10 +19,10 @@ import ( "strconv" "github.com/go-redis/redis/v8" - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/networkserver/internal/time" ttnredis "go.thethings.network/lorawan-stack/v3/pkg/redis" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/proto" ) // UplinkDeduplicator is an implementation of networkserver.UplinkDeduplicator. diff --git a/pkg/networkserver/registry.go b/pkg/networkserver/registry.go index 69aacb4ae6..f059f9bc1b 100644 --- a/pkg/networkserver/registry.go +++ b/pkg/networkserver/registry.go @@ -18,12 +18,12 @@ import ( "bytes" "context" - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/internal/registry" "go.thethings.network/lorawan-stack/v3/pkg/log" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" + "google.golang.org/protobuf/proto" ) type UplinkMatch struct { diff --git a/pkg/redis/codec/main.go b/pkg/redis/codec/main.go index fbda095f47..baef7420f2 100644 --- a/pkg/redis/codec/main.go +++ b/pkg/redis/codec/main.go @@ -22,10 +22,10 @@ import ( "log" "os" - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/jsonpb" "go.thethings.network/lorawan-stack/v3/pkg/redis" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/proto" ) var json = jsonpb.TTN() diff --git a/pkg/redis/redis.go b/pkg/redis/redis.go index 471888260d..68c5d1c3b3 100644 --- a/pkg/redis/redis.go +++ b/pkg/redis/redis.go @@ -29,10 +29,10 @@ import ( "time" "github.com/go-redis/redis/v8" - "github.com/gogo/protobuf/proto" "github.com/oklog/ulid/v2" "go.thethings.network/lorawan-stack/v3/pkg/config/tlsconfig" "go.thethings.network/lorawan-stack/v3/pkg/log" + "google.golang.org/protobuf/proto" ) const ( diff --git a/pkg/redis/redis_test.go b/pkg/redis/redis_test.go index df72973c84..0282fbbe7a 100644 --- a/pkg/redis/redis_test.go +++ b/pkg/redis/redis_test.go @@ -21,13 +21,13 @@ import ( "time" "github.com/go-redis/redis/v8" - "github.com/gogo/protobuf/proto" "github.com/smartystreets/assertions" "go.thethings.network/lorawan-stack/v3/pkg/errors" . "go.thethings.network/lorawan-stack/v3/pkg/redis" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/proto" ) func TestInitTaskGroup(t *testing.T) { diff --git a/pkg/ttnpb/any.go b/pkg/ttnpb/any.go index 29b6d9749d..c2bff15249 100644 --- a/pkg/ttnpb/any.go +++ b/pkg/ttnpb/any.go @@ -15,7 +15,7 @@ package ttnpb import ( - proto "github.com/gogo/protobuf/proto" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/anypb" ) diff --git a/pkg/ttnpb/copy.go b/pkg/ttnpb/copy.go index 28db186a09..9f16f8164b 100644 --- a/pkg/ttnpb/copy.go +++ b/pkg/ttnpb/copy.go @@ -14,7 +14,7 @@ package ttnpb -import "github.com/gogo/protobuf/proto" +import "google.golang.org/protobuf/proto" // Clone creates a deep copy of the given message. func Clone[X proto.Message](in X) X { diff --git a/pkg/ttnpb/errors.go b/pkg/ttnpb/errors.go index 6c80234770..ebbbc5153a 100644 --- a/pkg/ttnpb/errors.go +++ b/pkg/ttnpb/errors.go @@ -17,9 +17,9 @@ package ttnpb import ( "fmt" - proto "github.com/golang/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/goproto" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/anypb" ) diff --git a/pkg/util/rpctest/rpctest.pb.go b/pkg/util/rpctest/rpctest.pb.go index 6cacbf6d56..6d7f0c5044 100644 --- a/pkg/util/rpctest/rpctest.pb.go +++ b/pkg/util/rpctest/rpctest.pb.go @@ -6,7 +6,7 @@ package rpctest import ( context "context" fmt "fmt" - proto "github.com/gogo/protobuf/proto" + proto "google.golang.org/protobuf/proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" diff --git a/pkg/util/test/assertions/proto.go b/pkg/util/test/assertions/proto.go index f2214d4b3f..341faaa6a8 100644 --- a/pkg/util/test/assertions/proto.go +++ b/pkg/util/test/assertions/proto.go @@ -20,8 +20,8 @@ import ( "reflect" "strings" - "github.com/gogo/protobuf/proto" "github.com/google/go-cmp/cmp" + "google.golang.org/protobuf/proto" ) func getProtoMessage(i interface{}) proto.Message { diff --git a/pkg/util/test/events.go b/pkg/util/test/events.go index 33a469b349..f2e42f2590 100644 --- a/pkg/util/test/events.go +++ b/pkg/util/test/events.go @@ -19,9 +19,9 @@ import ( "context" "sync" - "github.com/gogo/protobuf/proto" "go.thethings.network/lorawan-stack/v3/pkg/events" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + "google.golang.org/protobuf/proto" ) type MockEventPubSub struct { From 02e3f4be251393854f2c585ab5b2da031d2e85f1 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Mon, 19 Dec 2022 16:24:53 +0100 Subject: [PATCH 19/30] all: Use new gRPC Gateway runtime --- pkg/applicationserver/applicationserver.go | 2 +- pkg/applicationserver/io/grpc/grpc_util_test.go | 2 +- pkg/applicationserver/io/packages/packages.go | 2 +- pkg/applicationserver/io/packages/util_test.go | 2 +- pkg/applicationserver/io/pubsub/util_test.go | 2 +- pkg/applicationserver/io/web/util_test.go | 2 +- pkg/component/configuration_grpc.go | 2 +- pkg/deviceclaimingserver/deviceclaimingserver.go | 2 +- pkg/devicerepository/devicerepository.go | 2 +- pkg/devicetemplateconverter/devicetemplateconverter.go | 2 +- pkg/events/grpc/grpc.go | 2 +- pkg/gatewayconfigurationserver/server.go | 2 +- pkg/gatewayserver/gatewayserver.go | 2 +- pkg/gatewayserver/io/grpc/grpc_util_test.go | 2 +- pkg/identityserver/identityserver.go | 2 +- pkg/joinserver/joinserver.go | 2 +- pkg/networkserver/networkserver.go | 2 +- pkg/packetbrokeragent/agent.go | 2 +- pkg/packetbrokeragent/mock/gatewayserver.go | 2 +- pkg/packetbrokeragent/mock/networkserver.go | 2 +- pkg/qrcodegenerator/qrcodegenerator.go | 2 +- pkg/rpcmiddleware/discover/discover.go | 7 +++---- pkg/rpcserver/rpcserver.go | 4 ++-- 23 files changed, 26 insertions(+), 27 deletions(-) diff --git a/pkg/applicationserver/applicationserver.go b/pkg/applicationserver/applicationserver.go index 1102e2aa4b..8b26450983 100644 --- a/pkg/applicationserver/applicationserver.go +++ b/pkg/applicationserver/applicationserver.go @@ -22,7 +22,7 @@ import ( "runtime/trace" "time" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/distribution" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io" iogrpc "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/grpc" diff --git a/pkg/applicationserver/io/grpc/grpc_util_test.go b/pkg/applicationserver/io/grpc/grpc_util_test.go index fb6f7fc353..a971965032 100644 --- a/pkg/applicationserver/io/grpc/grpc_util_test.go +++ b/pkg/applicationserver/io/grpc/grpc_util_test.go @@ -18,7 +18,7 @@ import ( "context" "time" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/component" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/grpc" diff --git a/pkg/applicationserver/io/packages/packages.go b/pkg/applicationserver/io/packages/packages.go index 71dc534a8b..2a15678ca9 100644 --- a/pkg/applicationserver/io/packages/packages.go +++ b/pkg/applicationserver/io/packages/packages.go @@ -19,7 +19,7 @@ import ( "fmt" "time" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io" "go.thethings.network/lorawan-stack/v3/pkg/log" "go.thethings.network/lorawan-stack/v3/pkg/rpcserver" diff --git a/pkg/applicationserver/io/packages/util_test.go b/pkg/applicationserver/io/packages/util_test.go index 7ce2678db3..815fd701b1 100644 --- a/pkg/applicationserver/io/packages/util_test.go +++ b/pkg/applicationserver/io/packages/util_test.go @@ -18,7 +18,7 @@ import ( "context" "time" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/component" "go.thethings.network/lorawan-stack/v3/pkg/rpcserver" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" diff --git a/pkg/applicationserver/io/pubsub/util_test.go b/pkg/applicationserver/io/pubsub/util_test.go index d131212192..0f62568a20 100644 --- a/pkg/applicationserver/io/pubsub/util_test.go +++ b/pkg/applicationserver/io/pubsub/util_test.go @@ -18,7 +18,7 @@ import ( "context" "time" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/applicationserver/io/pubsub" "go.thethings.network/lorawan-stack/v3/pkg/component" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" diff --git a/pkg/applicationserver/io/web/util_test.go b/pkg/applicationserver/io/web/util_test.go index 8a80fc0f3c..c9110323f4 100644 --- a/pkg/applicationserver/io/web/util_test.go +++ b/pkg/applicationserver/io/web/util_test.go @@ -18,7 +18,7 @@ import ( "context" "time" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/component" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" diff --git a/pkg/component/configuration_grpc.go b/pkg/component/configuration_grpc.go index c4d89f7105..295160d844 100644 --- a/pkg/component/configuration_grpc.go +++ b/pkg/component/configuration_grpc.go @@ -17,7 +17,7 @@ package component import ( "context" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/band" "go.thethings.network/lorawan-stack/v3/pkg/frequencyplans" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" diff --git a/pkg/deviceclaimingserver/deviceclaimingserver.go b/pkg/deviceclaimingserver/deviceclaimingserver.go index ff494715a8..ca4ac10fc3 100644 --- a/pkg/deviceclaimingserver/deviceclaimingserver.go +++ b/pkg/deviceclaimingserver/deviceclaimingserver.go @@ -17,7 +17,7 @@ package deviceclaimingserver import ( "context" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/component" "go.thethings.network/lorawan-stack/v3/pkg/deviceclaimingserver/enddevices" "go.thethings.network/lorawan-stack/v3/pkg/log" diff --git a/pkg/devicerepository/devicerepository.go b/pkg/devicerepository/devicerepository.go index 47fae2de23..97545007c5 100644 --- a/pkg/devicerepository/devicerepository.go +++ b/pkg/devicerepository/devicerepository.go @@ -18,7 +18,7 @@ package devicerepository import ( "context" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/cluster" "go.thethings.network/lorawan-stack/v3/pkg/component" "go.thethings.network/lorawan-stack/v3/pkg/devicerepository/store" diff --git a/pkg/devicetemplateconverter/devicetemplateconverter.go b/pkg/devicetemplateconverter/devicetemplateconverter.go index 8c199a1cc8..6ce600d64c 100644 --- a/pkg/devicetemplateconverter/devicetemplateconverter.go +++ b/pkg/devicetemplateconverter/devicetemplateconverter.go @@ -18,7 +18,7 @@ package devicetemplateconverter import ( "context" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/component" "go.thethings.network/lorawan-stack/v3/pkg/devicetemplates" "go.thethings.network/lorawan-stack/v3/pkg/errors" diff --git a/pkg/events/grpc/grpc.go b/pkg/events/grpc/grpc.go index dca4771917..0de69e6009 100644 --- a/pkg/events/grpc/grpc.go +++ b/pkg/events/grpc/grpc.go @@ -24,7 +24,7 @@ import ( "strings" "time" - grpc_runtime "github.com/grpc-ecosystem/grpc-gateway/runtime" + grpc_runtime "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights/rightsutil" "go.thethings.network/lorawan-stack/v3/pkg/errors" diff --git a/pkg/gatewayconfigurationserver/server.go b/pkg/gatewayconfigurationserver/server.go index c905de850a..32f6a3e3e8 100644 --- a/pkg/gatewayconfigurationserver/server.go +++ b/pkg/gatewayconfigurationserver/server.go @@ -15,7 +15,7 @@ package gatewayconfigurationserver import ( - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/cluster" "go.thethings.network/lorawan-stack/v3/pkg/component" gcsv2 "go.thethings.network/lorawan-stack/v3/pkg/gatewayconfigurationserver/v2" diff --git a/pkg/gatewayserver/gatewayserver.go b/pkg/gatewayserver/gatewayserver.go index c90dbb6d51..1838f890f0 100644 --- a/pkg/gatewayserver/gatewayserver.go +++ b/pkg/gatewayserver/gatewayserver.go @@ -27,7 +27,7 @@ import ( "sync" "time" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/cluster" "go.thethings.network/lorawan-stack/v3/pkg/component" "go.thethings.network/lorawan-stack/v3/pkg/config" diff --git a/pkg/gatewayserver/io/grpc/grpc_util_test.go b/pkg/gatewayserver/io/grpc/grpc_util_test.go index e803e1686d..eb61fa1169 100644 --- a/pkg/gatewayserver/io/grpc/grpc_util_test.go +++ b/pkg/gatewayserver/io/grpc/grpc_util_test.go @@ -18,7 +18,7 @@ import ( "context" "time" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/component" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/grpc" diff --git a/pkg/identityserver/identityserver.go b/pkg/identityserver/identityserver.go index 38a3fe8c7b..09354e19f0 100644 --- a/pkg/identityserver/identityserver.go +++ b/pkg/identityserver/identityserver.go @@ -20,7 +20,7 @@ import ( "database/sql" "fmt" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/account" account_store "go.thethings.network/lorawan-stack/v3/pkg/account/store" "go.thethings.network/lorawan-stack/v3/pkg/auth/rights" diff --git a/pkg/joinserver/joinserver.go b/pkg/joinserver/joinserver.go index ff8c8f252a..60f6ae989a 100644 --- a/pkg/joinserver/joinserver.go +++ b/pkg/joinserver/joinserver.go @@ -21,7 +21,7 @@ import ( "crypto/rand" "encoding/binary" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" ulid "github.com/oklog/ulid/v2" "go.thethings.network/lorawan-stack/v3/pkg/cluster" "go.thethings.network/lorawan-stack/v3/pkg/component" diff --git a/pkg/networkserver/networkserver.go b/pkg/networkserver/networkserver.go index eeac54b22e..3fb931344a 100644 --- a/pkg/networkserver/networkserver.go +++ b/pkg/networkserver/networkserver.go @@ -22,7 +22,7 @@ import ( "os" "sync" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/cluster" "go.thethings.network/lorawan-stack/v3/pkg/component" "go.thethings.network/lorawan-stack/v3/pkg/errors" diff --git a/pkg/packetbrokeragent/agent.go b/pkg/packetbrokeragent/agent.go index 40ee06e7bd..606e336fb4 100644 --- a/pkg/packetbrokeragent/agent.go +++ b/pkg/packetbrokeragent/agent.go @@ -21,7 +21,7 @@ import ( "sync" "time" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" routingpb "go.packetbroker.org/api/routing" packetbroker "go.packetbroker.org/api/v3" "go.thethings.network/lorawan-stack/v3/pkg/cluster" diff --git a/pkg/packetbrokeragent/mock/gatewayserver.go b/pkg/packetbrokeragent/mock/gatewayserver.go index 639dc1ac2c..4dcdb9a339 100644 --- a/pkg/packetbrokeragent/mock/gatewayserver.go +++ b/pkg/packetbrokeragent/mock/gatewayserver.go @@ -17,7 +17,7 @@ package mock import ( "context" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/component" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/grpc" diff --git a/pkg/packetbrokeragent/mock/networkserver.go b/pkg/packetbrokeragent/mock/networkserver.go index 32e7e97cd6..0c88a189f6 100644 --- a/pkg/packetbrokeragent/mock/networkserver.go +++ b/pkg/packetbrokeragent/mock/networkserver.go @@ -17,7 +17,7 @@ package mock import ( "context" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/component" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/grpc" diff --git a/pkg/qrcodegenerator/qrcodegenerator.go b/pkg/qrcodegenerator/qrcodegenerator.go index 3d29e75546..6cd66e13d8 100644 --- a/pkg/qrcodegenerator/qrcodegenerator.go +++ b/pkg/qrcodegenerator/qrcodegenerator.go @@ -18,7 +18,7 @@ package qrcodegenerator import ( "context" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.thethings.network/lorawan-stack/v3/pkg/component" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/log" diff --git a/pkg/rpcmiddleware/discover/discover.go b/pkg/rpcmiddleware/discover/discover.go index 199579e0a7..657f99804b 100644 --- a/pkg/rpcmiddleware/discover/discover.go +++ b/pkg/rpcmiddleware/discover/discover.go @@ -267,10 +267,9 @@ func (r *clusterResolver) lookup() (*resolver.State, error) { state.Addresses[i] = resolver.Address{ Addr: fmt.Sprintf("%s:%d", name, addr.Port), ServerName: name, - Attributes: attributes.New( - "priority", int(addr.Priority), - "weight", int(addr.Weight), - ), + Attributes: attributes. + New("priority", int(addr.Priority)). + WithValue("weight", int(addr.Weight)), } } } diff --git a/pkg/rpcserver/rpcserver.go b/pkg/rpcserver/rpcserver.go index bcfe6b32bc..03ed41b5f8 100644 --- a/pkg/rpcserver/rpcserver.go +++ b/pkg/rpcserver/rpcserver.go @@ -29,7 +29,7 @@ import ( grpc_recovery "github.com/grpc-ecosystem/go-grpc-middleware/recovery" grpc_ctxtags "github.com/grpc-ecosystem/go-grpc-middleware/tags" grpc_opentracing "github.com/grpc-ecosystem/go-grpc-middleware/tracing/opentracing" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "go.opencensus.io/plugin/ocgrpc" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/events" @@ -215,7 +215,7 @@ func New(ctx context.Context, opts ...Option) *Server { server.ServeMux = runtime.NewServeMux( runtime.WithMarshalerOption("*", jsonpb.TTN()), runtime.WithMarshalerOption("text/event-stream", jsonpb.TTNEventStream()), - runtime.WithProtoErrorHandler(runtime.DefaultHTTPProtoErrorHandler), + runtime.WithErrorHandler(runtime.DefaultHTTPErrorHandler), runtime.WithMetadata(func(ctx context.Context, req *http.Request) metadata.MD { md := rpcmetadata.MD{ Host: req.Host, From 7b8e9a031473d20587431bde5770876a17b0a4a9 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Tue, 20 Dec 2022 10:05:02 +0100 Subject: [PATCH 20/30] all: Regenerate simulate command proto --- .../internal/simulate/simulate.pb.go | 750 +++++++++++------- .../simulate/simulate.pb.setters.fm.go | 8 +- .../internal/simulate/simulate.pb.util.fm.go | 33 + .../internal/simulate/simulate.pb.validate.go | 7 +- .../internal/simulate/simulate_flags.pb.go | 12 +- .../internal/simulate/simulate_json.pb.go | 415 ++++++++++ .../internal/simulate/simulate_util.go | 27 - 7 files changed, 926 insertions(+), 326 deletions(-) create mode 100644 cmd/ttn-lw-cli/internal/simulate/simulate.pb.util.fm.go create mode 100644 cmd/ttn-lw-cli/internal/simulate/simulate_json.pb.go diff --git a/cmd/ttn-lw-cli/internal/simulate/simulate.pb.go b/cmd/ttn-lw-cli/internal/simulate/simulate.pb.go index 5e7cc324a0..09d38a974e 100644 --- a/cmd/ttn-lw-cli/internal/simulate/simulate.pb.go +++ b/cmd/ttn-lw-cli/internal/simulate/simulate.pb.go @@ -1,444 +1,628 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. +// Copyright © 2022 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.4 // source: lorawan-stack/api/simulate.proto package simulate import ( - fmt "fmt" _ "github.com/TheThingsIndustries/protoc-gen-go-flags/annotations" - proto "github.com/gogo/protobuf/proto" - types "github.com/gogo/protobuf/types" - "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" - math "math" + ttnpb "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type SimulateMetadataParams struct { - Rssi float32 `protobuf:"fixed32,1,opt,name=rssi,proto3" json:"rssi,omitempty"` - Snr float32 `protobuf:"fixed32,2,opt,name=snr,proto3" json:"snr,omitempty"` - Timestamp uint32 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - Time *types.Timestamp `protobuf:"bytes,4,opt,name=time,proto3" json:"time,omitempty"` - LoRaWANVersion ttnpb.MACVersion `protobuf:"varint,5,opt,name=loRaWAN_version,json=loRaWANVersion,proto3,enum=ttn.lorawan.v3.MACVersion" json:"loRaWAN_version,omitempty"` - LoRaWAN_PHYVersion ttnpb.PHYVersion `protobuf:"varint,6,opt,name=loRaWAN_PHY_version,json=loRaWANPHYVersion,proto3,enum=ttn.lorawan.v3.PHYVersion" json:"loRaWAN_PHY_version,omitempty"` - BandId string `protobuf:"bytes,7,opt,name=band_id,json=bandId,proto3" json:"band_id,omitempty"` - Frequency uint64 `protobuf:"varint,8,opt,name=frequency,proto3" json:"frequency,omitempty"` - ChannelIndex uint32 `protobuf:"varint,9,opt,name=channel_index,json=channelIndex,proto3" json:"channel_index,omitempty"` - Bandwidth uint32 `protobuf:"varint,10,opt,name=bandwidth,proto3" json:"bandwidth,omitempty"` - SpreadingFactor uint32 `protobuf:"varint,11,opt,name=spreading_factor,json=spreadingFactor,proto3" json:"spreading_factor,omitempty"` - DataRateIndex uint32 `protobuf:"varint,12,opt,name=data_rate_index,json=dataRateIndex,proto3" json:"data_rate_index,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SimulateMetadataParams) Reset() { *m = SimulateMetadataParams{} } -func (m *SimulateMetadataParams) String() string { return proto.CompactTextString(m) } -func (*SimulateMetadataParams) ProtoMessage() {} -func (*SimulateMetadataParams) Descriptor() ([]byte, []int) { - return fileDescriptor_2b0e790be917a1eb, []int{0} -} -func (m *SimulateMetadataParams) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SimulateMetadataParams.Unmarshal(m, b) -} -func (m *SimulateMetadataParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SimulateMetadataParams.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Rssi float32 `protobuf:"fixed32,1,opt,name=rssi,proto3" json:"rssi,omitempty"` + Snr float32 `protobuf:"fixed32,2,opt,name=snr,proto3" json:"snr,omitempty"` + Timestamp uint32 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Time *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=time,proto3" json:"time,omitempty"` + LoRaWANVersion ttnpb.MACVersion `protobuf:"varint,5,opt,name=loRaWAN_version,json=loRaWANVersion,proto3,enum=ttn.lorawan.v3.MACVersion" json:"loRaWAN_version,omitempty"` + LoRaWAN_PHYVersion ttnpb.PHYVersion `protobuf:"varint,6,opt,name=loRaWAN_PHY_version,json=loRaWANPHYVersion,proto3,enum=ttn.lorawan.v3.PHYVersion" json:"loRaWAN_PHY_version,omitempty"` + BandId string `protobuf:"bytes,7,opt,name=band_id,json=bandId,proto3" json:"band_id,omitempty"` + Frequency uint64 `protobuf:"varint,8,opt,name=frequency,proto3" json:"frequency,omitempty"` + ChannelIndex uint32 `protobuf:"varint,9,opt,name=channel_index,json=channelIndex,proto3" json:"channel_index,omitempty"` + Bandwidth uint32 `protobuf:"varint,10,opt,name=bandwidth,proto3" json:"bandwidth,omitempty"` + SpreadingFactor uint32 `protobuf:"varint,11,opt,name=spreading_factor,json=spreadingFactor,proto3" json:"spreading_factor,omitempty"` + DataRateIndex uint32 `protobuf:"varint,12,opt,name=data_rate_index,json=dataRateIndex,proto3" json:"data_rate_index,omitempty"` } -func (m *SimulateMetadataParams) XXX_Merge(src proto.Message) { - xxx_messageInfo_SimulateMetadataParams.Merge(m, src) + +func (x *SimulateMetadataParams) Reset() { + *x = SimulateMetadataParams{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_simulate_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SimulateMetadataParams) XXX_Size() int { - return xxx_messageInfo_SimulateMetadataParams.Size(m) + +func (x *SimulateMetadataParams) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SimulateMetadataParams) XXX_DiscardUnknown() { - xxx_messageInfo_SimulateMetadataParams.DiscardUnknown(m) + +func (*SimulateMetadataParams) ProtoMessage() {} + +func (x *SimulateMetadataParams) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_simulate_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SimulateMetadataParams proto.InternalMessageInfo +// Deprecated: Use SimulateMetadataParams.ProtoReflect.Descriptor instead. +func (*SimulateMetadataParams) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_simulate_proto_rawDescGZIP(), []int{0} +} -func (m *SimulateMetadataParams) GetRssi() float32 { - if m != nil { - return m.Rssi +func (x *SimulateMetadataParams) GetRssi() float32 { + if x != nil { + return x.Rssi } return 0 } -func (m *SimulateMetadataParams) GetSnr() float32 { - if m != nil { - return m.Snr +func (x *SimulateMetadataParams) GetSnr() float32 { + if x != nil { + return x.Snr } return 0 } -func (m *SimulateMetadataParams) GetTimestamp() uint32 { - if m != nil { - return m.Timestamp +func (x *SimulateMetadataParams) GetTimestamp() uint32 { + if x != nil { + return x.Timestamp } return 0 } -func (m *SimulateMetadataParams) GetTime() *types.Timestamp { - if m != nil { - return m.Time +func (x *SimulateMetadataParams) GetTime() *timestamppb.Timestamp { + if x != nil { + return x.Time } return nil } -func (m *SimulateMetadataParams) GetLoRaWANVersion() ttnpb.MACVersion { - if m != nil { - return m.LoRaWANVersion +func (x *SimulateMetadataParams) GetLoRaWANVersion() ttnpb.MACVersion { + if x != nil { + return x.LoRaWANVersion } - return ttnpb.MACVersion_MAC_UNKNOWN + return ttnpb.MACVersion(0) } -func (m *SimulateMetadataParams) GetLoRaWAN_PHYVersion() ttnpb.PHYVersion { - if m != nil { - return m.LoRaWAN_PHYVersion +func (x *SimulateMetadataParams) GetLoRaWAN_PHYVersion() ttnpb.PHYVersion { + if x != nil { + return x.LoRaWAN_PHYVersion } - return ttnpb.PHYVersion_PHY_UNKNOWN + return ttnpb.PHYVersion(0) } -func (m *SimulateMetadataParams) GetBandId() string { - if m != nil { - return m.BandId +func (x *SimulateMetadataParams) GetBandId() string { + if x != nil { + return x.BandId } return "" } -func (m *SimulateMetadataParams) GetFrequency() uint64 { - if m != nil { - return m.Frequency +func (x *SimulateMetadataParams) GetFrequency() uint64 { + if x != nil { + return x.Frequency } return 0 } -func (m *SimulateMetadataParams) GetChannelIndex() uint32 { - if m != nil { - return m.ChannelIndex +func (x *SimulateMetadataParams) GetChannelIndex() uint32 { + if x != nil { + return x.ChannelIndex } return 0 } -func (m *SimulateMetadataParams) GetBandwidth() uint32 { - if m != nil { - return m.Bandwidth +func (x *SimulateMetadataParams) GetBandwidth() uint32 { + if x != nil { + return x.Bandwidth } return 0 } -func (m *SimulateMetadataParams) GetSpreadingFactor() uint32 { - if m != nil { - return m.SpreadingFactor +func (x *SimulateMetadataParams) GetSpreadingFactor() uint32 { + if x != nil { + return x.SpreadingFactor } return 0 } -func (m *SimulateMetadataParams) GetDataRateIndex() uint32 { - if m != nil { - return m.DataRateIndex +func (x *SimulateMetadataParams) GetDataRateIndex() uint32 { + if x != nil { + return x.DataRateIndex } return 0 } type SimulateJoinRequestParams struct { - JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` - DevEui []byte `protobuf:"bytes,2,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"` - DevNonce []byte `protobuf:"bytes,3,opt,name=dev_nonce,json=devNonce,proto3" json:"dev_nonce,omitempty"` - AppKey *ttnpb.KeyEnvelope `protobuf:"bytes,4,opt,name=app_key,json=appKey,proto3" json:"app_key,omitempty"` - NwkKey *ttnpb.KeyEnvelope `protobuf:"bytes,5,opt,name=nwk_key,json=nwkKey,proto3" json:"nwk_key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SimulateJoinRequestParams) Reset() { *m = SimulateJoinRequestParams{} } -func (m *SimulateJoinRequestParams) String() string { return proto.CompactTextString(m) } -func (*SimulateJoinRequestParams) ProtoMessage() {} -func (*SimulateJoinRequestParams) Descriptor() ([]byte, []int) { - return fileDescriptor_2b0e790be917a1eb, []int{1} -} -func (m *SimulateJoinRequestParams) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SimulateJoinRequestParams.Unmarshal(m, b) -} -func (m *SimulateJoinRequestParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SimulateJoinRequestParams.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + JoinEui []byte `protobuf:"bytes,1,opt,name=join_eui,json=joinEui,proto3" json:"join_eui,omitempty"` + DevEui []byte `protobuf:"bytes,2,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"` + DevNonce []byte `protobuf:"bytes,3,opt,name=dev_nonce,json=devNonce,proto3" json:"dev_nonce,omitempty"` + AppKey *ttnpb.KeyEnvelope `protobuf:"bytes,4,opt,name=app_key,json=appKey,proto3" json:"app_key,omitempty"` + NwkKey *ttnpb.KeyEnvelope `protobuf:"bytes,5,opt,name=nwk_key,json=nwkKey,proto3" json:"nwk_key,omitempty"` } -func (m *SimulateJoinRequestParams) XXX_Merge(src proto.Message) { - xxx_messageInfo_SimulateJoinRequestParams.Merge(m, src) + +func (x *SimulateJoinRequestParams) Reset() { + *x = SimulateJoinRequestParams{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_simulate_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SimulateJoinRequestParams) XXX_Size() int { - return xxx_messageInfo_SimulateJoinRequestParams.Size(m) + +func (x *SimulateJoinRequestParams) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SimulateJoinRequestParams) XXX_DiscardUnknown() { - xxx_messageInfo_SimulateJoinRequestParams.DiscardUnknown(m) + +func (*SimulateJoinRequestParams) ProtoMessage() {} + +func (x *SimulateJoinRequestParams) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_simulate_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SimulateJoinRequestParams proto.InternalMessageInfo +// Deprecated: Use SimulateJoinRequestParams.ProtoReflect.Descriptor instead. +func (*SimulateJoinRequestParams) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_simulate_proto_rawDescGZIP(), []int{1} +} -func (m *SimulateJoinRequestParams) GetJoinEui() []byte { - if m != nil { - return m.JoinEui +func (x *SimulateJoinRequestParams) GetJoinEui() []byte { + if x != nil { + return x.JoinEui } return nil } -func (m *SimulateJoinRequestParams) GetDevEui() []byte { - if m != nil { - return m.DevEui +func (x *SimulateJoinRequestParams) GetDevEui() []byte { + if x != nil { + return x.DevEui } return nil } -func (m *SimulateJoinRequestParams) GetDevNonce() []byte { - if m != nil { - return m.DevNonce +func (x *SimulateJoinRequestParams) GetDevNonce() []byte { + if x != nil { + return x.DevNonce } return nil } -func (m *SimulateJoinRequestParams) GetAppKey() *ttnpb.KeyEnvelope { - if m != nil { - return m.AppKey +func (x *SimulateJoinRequestParams) GetAppKey() *ttnpb.KeyEnvelope { + if x != nil { + return x.AppKey } return nil } -func (m *SimulateJoinRequestParams) GetNwkKey() *ttnpb.KeyEnvelope { - if m != nil { - return m.NwkKey +func (x *SimulateJoinRequestParams) GetNwkKey() *ttnpb.KeyEnvelope { + if x != nil { + return x.NwkKey } return nil } type SimulateDataUplinkParams struct { - DevAddr []byte `protobuf:"bytes,1,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` - FNwkSIntKey *ttnpb.KeyEnvelope `protobuf:"bytes,2,opt,name=f_nwk_s_int_key,json=fNwkSIntKey,proto3" json:"f_nwk_s_int_key,omitempty"` - SNwkSIntKey *ttnpb.KeyEnvelope `protobuf:"bytes,3,opt,name=s_nwk_s_int_key,json=sNwkSIntKey,proto3" json:"s_nwk_s_int_key,omitempty"` - NwkSEncKey *ttnpb.KeyEnvelope `protobuf:"bytes,4,opt,name=nwk_s_enc_key,json=nwkSEncKey,proto3" json:"nwk_s_enc_key,omitempty"` - AppSKey *ttnpb.KeyEnvelope `protobuf:"bytes,5,opt,name=app_s_key,json=appSKey,proto3" json:"app_s_key,omitempty"` - Adr bool `protobuf:"varint,6,opt,name=adr,proto3" json:"adr,omitempty"` - AdrAckReq bool `protobuf:"varint,7,opt,name=adr_ack_req,json=adrAckReq,proto3" json:"adr_ack_req,omitempty"` - Confirmed bool `protobuf:"varint,8,opt,name=confirmed,proto3" json:"confirmed,omitempty"` - Ack bool `protobuf:"varint,9,opt,name=ack,proto3" json:"ack,omitempty"` - FCnt uint32 `protobuf:"varint,10,opt,name=f_cnt,json=fCnt,proto3" json:"f_cnt,omitempty"` - FPort uint32 `protobuf:"varint,11,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` - FrmPayload []byte `protobuf:"bytes,12,opt,name=frm_payload,json=frmPayload,proto3" json:"frm_payload,omitempty"` - ConfFCnt uint32 `protobuf:"varint,13,opt,name=conf_f_cnt,json=confFCnt,proto3" json:"conf_f_cnt,omitempty"` - TxDrIdx uint32 `protobuf:"varint,14,opt,name=tx_dr_idx,json=txDrIdx,proto3" json:"tx_dr_idx,omitempty"` - TxChIdx uint32 `protobuf:"varint,15,opt,name=tx_ch_idx,json=txChIdx,proto3" json:"tx_ch_idx,omitempty"` - FOpts []byte `protobuf:"bytes,16,opt,name=f_opts,json=fOpts,proto3" json:"f_opts,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SimulateDataUplinkParams) Reset() { *m = SimulateDataUplinkParams{} } -func (m *SimulateDataUplinkParams) String() string { return proto.CompactTextString(m) } -func (*SimulateDataUplinkParams) ProtoMessage() {} -func (*SimulateDataUplinkParams) Descriptor() ([]byte, []int) { - return fileDescriptor_2b0e790be917a1eb, []int{2} -} -func (m *SimulateDataUplinkParams) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SimulateDataUplinkParams.Unmarshal(m, b) -} -func (m *SimulateDataUplinkParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SimulateDataUplinkParams.Marshal(b, m, deterministic) + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DevAddr []byte `protobuf:"bytes,1,opt,name=dev_addr,json=devAddr,proto3" json:"dev_addr,omitempty"` + FNwkSIntKey *ttnpb.KeyEnvelope `protobuf:"bytes,2,opt,name=f_nwk_s_int_key,json=fNwkSIntKey,proto3" json:"f_nwk_s_int_key,omitempty"` + SNwkSIntKey *ttnpb.KeyEnvelope `protobuf:"bytes,3,opt,name=s_nwk_s_int_key,json=sNwkSIntKey,proto3" json:"s_nwk_s_int_key,omitempty"` + NwkSEncKey *ttnpb.KeyEnvelope `protobuf:"bytes,4,opt,name=nwk_s_enc_key,json=nwkSEncKey,proto3" json:"nwk_s_enc_key,omitempty"` + AppSKey *ttnpb.KeyEnvelope `protobuf:"bytes,5,opt,name=app_s_key,json=appSKey,proto3" json:"app_s_key,omitempty"` + Adr bool `protobuf:"varint,6,opt,name=adr,proto3" json:"adr,omitempty"` + AdrAckReq bool `protobuf:"varint,7,opt,name=adr_ack_req,json=adrAckReq,proto3" json:"adr_ack_req,omitempty"` + Confirmed bool `protobuf:"varint,8,opt,name=confirmed,proto3" json:"confirmed,omitempty"` + Ack bool `protobuf:"varint,9,opt,name=ack,proto3" json:"ack,omitempty"` + FCnt uint32 `protobuf:"varint,10,opt,name=f_cnt,json=fCnt,proto3" json:"f_cnt,omitempty"` + FPort uint32 `protobuf:"varint,11,opt,name=f_port,json=fPort,proto3" json:"f_port,omitempty"` + FrmPayload []byte `protobuf:"bytes,12,opt,name=frm_payload,json=frmPayload,proto3" json:"frm_payload,omitempty"` + ConfFCnt uint32 `protobuf:"varint,13,opt,name=conf_f_cnt,json=confFCnt,proto3" json:"conf_f_cnt,omitempty"` + TxDrIdx uint32 `protobuf:"varint,14,opt,name=tx_dr_idx,json=txDrIdx,proto3" json:"tx_dr_idx,omitempty"` + TxChIdx uint32 `protobuf:"varint,15,opt,name=tx_ch_idx,json=txChIdx,proto3" json:"tx_ch_idx,omitempty"` + FOpts []byte `protobuf:"bytes,16,opt,name=f_opts,json=fOpts,proto3" json:"f_opts,omitempty"` } -func (m *SimulateDataUplinkParams) XXX_Merge(src proto.Message) { - xxx_messageInfo_SimulateDataUplinkParams.Merge(m, src) + +func (x *SimulateDataUplinkParams) Reset() { + *x = SimulateDataUplinkParams{} + if protoimpl.UnsafeEnabled { + mi := &file_lorawan_stack_api_simulate_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SimulateDataUplinkParams) XXX_Size() int { - return xxx_messageInfo_SimulateDataUplinkParams.Size(m) + +func (x *SimulateDataUplinkParams) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SimulateDataUplinkParams) XXX_DiscardUnknown() { - xxx_messageInfo_SimulateDataUplinkParams.DiscardUnknown(m) + +func (*SimulateDataUplinkParams) ProtoMessage() {} + +func (x *SimulateDataUplinkParams) ProtoReflect() protoreflect.Message { + mi := &file_lorawan_stack_api_simulate_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SimulateDataUplinkParams proto.InternalMessageInfo +// Deprecated: Use SimulateDataUplinkParams.ProtoReflect.Descriptor instead. +func (*SimulateDataUplinkParams) Descriptor() ([]byte, []int) { + return file_lorawan_stack_api_simulate_proto_rawDescGZIP(), []int{2} +} -func (m *SimulateDataUplinkParams) GetDevAddr() []byte { - if m != nil { - return m.DevAddr +func (x *SimulateDataUplinkParams) GetDevAddr() []byte { + if x != nil { + return x.DevAddr } return nil } -func (m *SimulateDataUplinkParams) GetFNwkSIntKey() *ttnpb.KeyEnvelope { - if m != nil { - return m.FNwkSIntKey +func (x *SimulateDataUplinkParams) GetFNwkSIntKey() *ttnpb.KeyEnvelope { + if x != nil { + return x.FNwkSIntKey } return nil } -func (m *SimulateDataUplinkParams) GetSNwkSIntKey() *ttnpb.KeyEnvelope { - if m != nil { - return m.SNwkSIntKey +func (x *SimulateDataUplinkParams) GetSNwkSIntKey() *ttnpb.KeyEnvelope { + if x != nil { + return x.SNwkSIntKey } return nil } -func (m *SimulateDataUplinkParams) GetNwkSEncKey() *ttnpb.KeyEnvelope { - if m != nil { - return m.NwkSEncKey +func (x *SimulateDataUplinkParams) GetNwkSEncKey() *ttnpb.KeyEnvelope { + if x != nil { + return x.NwkSEncKey } return nil } -func (m *SimulateDataUplinkParams) GetAppSKey() *ttnpb.KeyEnvelope { - if m != nil { - return m.AppSKey +func (x *SimulateDataUplinkParams) GetAppSKey() *ttnpb.KeyEnvelope { + if x != nil { + return x.AppSKey } return nil } -func (m *SimulateDataUplinkParams) GetAdr() bool { - if m != nil { - return m.Adr +func (x *SimulateDataUplinkParams) GetAdr() bool { + if x != nil { + return x.Adr } return false } -func (m *SimulateDataUplinkParams) GetAdrAckReq() bool { - if m != nil { - return m.AdrAckReq +func (x *SimulateDataUplinkParams) GetAdrAckReq() bool { + if x != nil { + return x.AdrAckReq } return false } -func (m *SimulateDataUplinkParams) GetConfirmed() bool { - if m != nil { - return m.Confirmed +func (x *SimulateDataUplinkParams) GetConfirmed() bool { + if x != nil { + return x.Confirmed } return false } -func (m *SimulateDataUplinkParams) GetAck() bool { - if m != nil { - return m.Ack +func (x *SimulateDataUplinkParams) GetAck() bool { + if x != nil { + return x.Ack } return false } -func (m *SimulateDataUplinkParams) GetFCnt() uint32 { - if m != nil { - return m.FCnt +func (x *SimulateDataUplinkParams) GetFCnt() uint32 { + if x != nil { + return x.FCnt } return 0 } -func (m *SimulateDataUplinkParams) GetFPort() uint32 { - if m != nil { - return m.FPort +func (x *SimulateDataUplinkParams) GetFPort() uint32 { + if x != nil { + return x.FPort } return 0 } -func (m *SimulateDataUplinkParams) GetFrmPayload() []byte { - if m != nil { - return m.FrmPayload +func (x *SimulateDataUplinkParams) GetFrmPayload() []byte { + if x != nil { + return x.FrmPayload } return nil } -func (m *SimulateDataUplinkParams) GetConfFCnt() uint32 { - if m != nil { - return m.ConfFCnt +func (x *SimulateDataUplinkParams) GetConfFCnt() uint32 { + if x != nil { + return x.ConfFCnt } return 0 } -func (m *SimulateDataUplinkParams) GetTxDrIdx() uint32 { - if m != nil { - return m.TxDrIdx +func (x *SimulateDataUplinkParams) GetTxDrIdx() uint32 { + if x != nil { + return x.TxDrIdx } return 0 } -func (m *SimulateDataUplinkParams) GetTxChIdx() uint32 { - if m != nil { - return m.TxChIdx +func (x *SimulateDataUplinkParams) GetTxChIdx() uint32 { + if x != nil { + return x.TxChIdx } return 0 } -func (m *SimulateDataUplinkParams) GetFOpts() []byte { - if m != nil { - return m.FOpts +func (x *SimulateDataUplinkParams) GetFOpts() []byte { + if x != nil { + return x.FOpts } return nil } -func init() { - proto.RegisterType((*SimulateMetadataParams)(nil), "ttn.lorawan.v3.simulateMetadataParams") - proto.RegisterType((*SimulateJoinRequestParams)(nil), "ttn.lorawan.v3.simulateJoinRequestParams") - proto.RegisterType((*SimulateDataUplinkParams)(nil), "ttn.lorawan.v3.simulateDataUplinkParams") -} - -func init() { proto.RegisterFile("lorawan-stack/api/simulate.proto", fileDescriptor_2b0e790be917a1eb) } - -var fileDescriptor_2b0e790be917a1eb = []byte{ - // 851 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xdb, 0x6e, 0xdb, 0x36, - 0x18, 0x86, 0xe2, 0x33, 0x6d, 0xc7, 0x1e, 0x8b, 0x6d, 0x8a, 0x1b, 0xac, 0x46, 0x07, 0x0c, 0xde, - 0x45, 0x24, 0xac, 0x19, 0x30, 0x60, 0x17, 0x03, 0xbc, 0x24, 0x45, 0xdd, 0xa0, 0x99, 0xa1, 0x64, - 0x1b, 0xba, 0x1b, 0x81, 0x16, 0x29, 0x99, 0x93, 0xfc, 0x53, 0x21, 0xe9, 0xd3, 0x2b, 0xed, 0x91, - 0x76, 0xb9, 0x47, 0xe8, 0x13, 0x0c, 0xa4, 0xa4, 0xb8, 0x87, 0x01, 0xcb, 0x1d, 0xf9, 0xfd, 0xdf, - 0xff, 0xfd, 0x47, 0x12, 0x8d, 0x33, 0x21, 0xc9, 0x96, 0xc0, 0x99, 0xd2, 0x24, 0x4a, 0x7d, 0x92, - 0x73, 0x5f, 0xf1, 0xd5, 0x3a, 0x23, 0x9a, 0x79, 0xb9, 0x14, 0x5a, 0xe0, 0x63, 0xad, 0xc1, 0x2b, - 0x59, 0xde, 0xe6, 0x7c, 0x74, 0x99, 0x70, 0xbd, 0x5c, 0x2f, 0xbc, 0x48, 0xac, 0xfc, 0xbb, 0x25, - 0xbb, 0x5b, 0x72, 0x48, 0xd4, 0x0c, 0xe8, 0x5a, 0x69, 0xc9, 0x99, 0xf2, 0xad, 0x57, 0x74, 0x96, - 0x30, 0x38, 0x4b, 0xc4, 0x59, 0x9c, 0x91, 0x44, 0xf9, 0x04, 0x40, 0x68, 0xa2, 0xb9, 0x00, 0x55, - 0xa8, 0x8e, 0x9e, 0x25, 0x42, 0x24, 0x19, 0x2b, 0xd8, 0x8b, 0x75, 0xec, 0x6b, 0xbe, 0x62, 0x4a, - 0x93, 0x55, 0x5e, 0x11, 0x3e, 0x4d, 0xac, 0x4a, 0xa2, 0x20, 0x9c, 0x7e, 0x4a, 0x48, 0xd9, 0xbe, - 0xd4, 0x7f, 0xfe, 0xae, 0x86, 0xbe, 0xa8, 0x0a, 0x79, 0xc3, 0x34, 0xa1, 0x44, 0x93, 0x39, 0x91, - 0x64, 0xa5, 0x30, 0x46, 0x75, 0xa9, 0x14, 0x77, 0x9d, 0xb1, 0x33, 0x39, 0x0a, 0xec, 0x19, 0x0f, - 0x51, 0x4d, 0x81, 0x74, 0x8f, 0x2c, 0x64, 0x8e, 0xf8, 0x14, 0x75, 0x1e, 0x52, 0x72, 0x6b, 0x63, - 0x67, 0xd2, 0x0f, 0x0e, 0x00, 0xf6, 0x50, 0xdd, 0x5c, 0xdc, 0xfa, 0xd8, 0x99, 0x74, 0x5f, 0x8c, - 0xbc, 0xa2, 0x1a, 0xaf, 0xaa, 0xc6, 0xbb, 0xab, 0x98, 0x81, 0xe5, 0xe1, 0x29, 0x3a, 0xce, 0x44, - 0x40, 0x7e, 0x9f, 0xde, 0x84, 0x1b, 0x26, 0x15, 0x17, 0x6e, 0x63, 0xec, 0x4c, 0x8e, 0x5f, 0x8c, - 0xbc, 0x0f, 0xbb, 0xeb, 0xbd, 0x99, 0x5e, 0xfc, 0x66, 0x09, 0x10, 0xf4, 0x4b, 0x8f, 0xe2, 0x8e, - 0x5f, 0xa3, 0x27, 0x95, 0xc4, 0xfc, 0xd5, 0xdb, 0x52, 0x06, 0xdc, 0xe6, 0x7f, 0xeb, 0xcc, 0x5f, - 0xbd, 0xad, 0x74, 0x3e, 0x2b, 0xdd, 0x0e, 0x10, 0xfe, 0x12, 0xb5, 0x16, 0x04, 0x68, 0xc8, 0xa9, - 0xdb, 0x1a, 0x3b, 0x93, 0x4e, 0xd0, 0x34, 0xd7, 0x19, 0x35, 0x55, 0xc7, 0x92, 0xdd, 0xaf, 0x19, - 0x44, 0x7b, 0xb7, 0x3d, 0x76, 0x26, 0xf5, 0xe0, 0x00, 0xe0, 0xaf, 0x51, 0x3f, 0x5a, 0x12, 0x00, - 0x96, 0x85, 0x1c, 0x28, 0xdb, 0xb9, 0x1d, 0xdb, 0x97, 0x5e, 0x09, 0xce, 0x0c, 0x66, 0x24, 0x8c, - 0xd8, 0x96, 0x53, 0xbd, 0x74, 0x51, 0xd1, 0xb8, 0x07, 0x00, 0x7f, 0x8b, 0x86, 0x2a, 0x97, 0x8c, - 0x50, 0x0e, 0x49, 0x18, 0x93, 0x48, 0x0b, 0xe9, 0x76, 0x2d, 0x69, 0xf0, 0x80, 0xbf, 0xb4, 0x30, - 0xfe, 0x06, 0x0d, 0xcc, 0xd4, 0x42, 0x49, 0x34, 0x2b, 0xe3, 0xf5, 0x2c, 0xb3, 0x6f, 0xe0, 0x80, - 0x68, 0x66, 0x03, 0xfe, 0xd8, 0x7e, 0xf7, 0xd7, 0x49, 0xbd, 0xed, 0x0c, 0x9d, 0xe7, 0xff, 0x38, - 0xe8, 0xa4, 0x1a, 0xfa, 0x6b, 0xc1, 0x21, 0x30, 0x89, 0x2b, 0x5d, 0xce, 0xfd, 0x04, 0xb5, 0xff, - 0x14, 0x1c, 0x42, 0xb6, 0x2e, 0x66, 0xdf, 0x0b, 0x5a, 0xe6, 0x7e, 0xb5, 0xe6, 0xa6, 0x1f, 0x94, - 0x6d, 0xac, 0xe5, 0xc8, 0x5a, 0x9a, 0x94, 0x6d, 0x8c, 0xe1, 0x29, 0xea, 0x18, 0x03, 0x08, 0x88, - 0x98, 0xdd, 0x82, 0x5e, 0xd0, 0xa6, 0x6c, 0x73, 0x63, 0xee, 0xf8, 0x7b, 0xd4, 0x22, 0x79, 0x1e, - 0xa6, 0x6c, 0x5f, 0xee, 0xc1, 0xd3, 0x8f, 0xa7, 0x70, 0xcd, 0xf6, 0x57, 0xb0, 0x61, 0x99, 0xc8, - 0x59, 0xd0, 0x24, 0x79, 0x7e, 0xcd, 0xf6, 0xc6, 0x0b, 0xb6, 0xa9, 0xf5, 0x6a, 0x3c, 0xc2, 0x0b, - 0xb6, 0xe9, 0x35, 0xdb, 0xbf, 0x57, 0xe4, 0xdf, 0x75, 0xe4, 0x56, 0x45, 0x5e, 0x12, 0x4d, 0x7e, - 0xcd, 0x33, 0x0e, 0xe9, 0xa1, 0x46, 0x93, 0x2f, 0xa1, 0x54, 0x56, 0x35, 0x52, 0xb6, 0x99, 0x52, - 0x2a, 0xf1, 0x14, 0x0d, 0xe2, 0xd0, 0x44, 0x56, 0x21, 0x07, 0x6d, 0xe3, 0x1f, 0xfd, 0x7f, 0xfc, - 0x6e, 0x7c, 0xb3, 0x4d, 0x6f, 0x67, 0xa0, 0x4d, 0xea, 0x53, 0x34, 0x50, 0x1f, 0x49, 0xd4, 0x1e, - 0x21, 0xa1, 0xde, 0x93, 0xf8, 0x09, 0xf5, 0x0b, 0x01, 0x06, 0xd1, 0x63, 0x3b, 0x87, 0x60, 0x9b, - 0xde, 0x5e, 0x41, 0x64, 0xfc, 0x7f, 0x40, 0x1d, 0xd3, 0x73, 0xf5, 0xd8, 0xfe, 0x99, 0x09, 0xdd, - 0x1a, 0xc7, 0x21, 0xaa, 0x11, 0x2a, 0xed, 0x73, 0x69, 0x07, 0xe6, 0x88, 0xbf, 0x42, 0x5d, 0x42, - 0x65, 0x48, 0xa2, 0x34, 0x94, 0xec, 0xde, 0x3e, 0x84, 0x76, 0xd0, 0x21, 0x54, 0x4e, 0xa3, 0x34, - 0x60, 0xf7, 0x66, 0x91, 0x23, 0x01, 0x31, 0x97, 0x2b, 0x46, 0xed, 0x5b, 0x68, 0x07, 0x07, 0xc0, - 0xea, 0x45, 0xa9, 0x7d, 0x01, 0x46, 0x2f, 0x4a, 0xf1, 0x13, 0xd4, 0x88, 0xc3, 0x08, 0x74, 0xb9, - 0xf4, 0xf5, 0xf8, 0x02, 0x34, 0xfe, 0x1c, 0x35, 0xe3, 0x30, 0x17, 0x52, 0x97, 0x5b, 0xde, 0x88, - 0xe7, 0x42, 0x6a, 0xfc, 0x0c, 0x75, 0x63, 0xb9, 0x0a, 0x73, 0xb2, 0xcf, 0x04, 0xa1, 0x76, 0xaf, - 0x7b, 0x01, 0x8a, 0xe5, 0x6a, 0x5e, 0x20, 0xf8, 0x14, 0x21, 0x13, 0x2b, 0x2c, 0x14, 0xfb, 0xd6, - 0xb7, 0x6d, 0x90, 0x97, 0x46, 0x75, 0x84, 0x3a, 0x7a, 0x17, 0x52, 0x19, 0x72, 0xba, 0x73, 0x8f, - 0xad, 0xb1, 0xa5, 0x77, 0x97, 0x72, 0x46, 0x77, 0xa5, 0x2d, 0x5a, 0x5a, 0xdb, 0xa0, 0xb2, 0x5d, - 0x2c, 0x8d, 0xcd, 0x66, 0x23, 0x72, 0xad, 0xdc, 0xa1, 0x8d, 0xd8, 0x88, 0x7f, 0xc9, 0xb5, 0x3a, - 0x2c, 0xd7, 0xcf, 0xdf, 0xfd, 0xe1, 0x27, 0xc2, 0xd3, 0x4b, 0xa6, 0xed, 0xb7, 0xee, 0x01, 0xd3, - 0x5b, 0x21, 0x53, 0xff, 0xc3, 0xbf, 0x76, 0x73, 0xee, 0xe7, 0x69, 0xe2, 0x6b, 0x0d, 0xf9, 0x62, - 0xd1, 0xb4, 0x9f, 0xde, 0xf9, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x2f, 0xbe, 0x5a, 0x95, 0x4a, - 0x06, 0x00, 0x00, +var File_lorawan_stack_api_simulate_proto protoreflect.FileDescriptor + +var file_lorawan_stack_api_simulate_proto_rawDesc = []byte{ + 0x0a, 0x20, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x0e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, + 0x76, 0x33, 0x1a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, + 0x68, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, + 0x2d, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x6c, 0x6f, 0x72, 0x61, 0x77, + 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x72, + 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x65, + 0x79, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf4, 0x03, 0x0a, 0x16, 0x73, 0x69, 0x6d, + 0x75, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x73, 0x73, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x04, 0x72, 0x73, 0x73, 0x69, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6e, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x73, 0x6e, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x6c, 0x6f, 0x52, 0x61, 0x57, + 0x41, 0x4e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, + 0x33, 0x2e, 0x4d, 0x41, 0x43, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6c, 0x6f, + 0x52, 0x61, 0x57, 0x41, 0x4e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x13, + 0x6c, 0x6f, 0x52, 0x61, 0x57, 0x41, 0x4e, 0x5f, 0x50, 0x48, 0x59, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x48, 0x59, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x6c, 0x6f, 0x52, 0x61, 0x57, 0x41, 0x4e, 0x50, 0x48, + 0x59, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x61, 0x6e, 0x64, + 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x64, 0x49, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, + 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, + 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x73, 0x70, + 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x26, 0x0a, + 0x0f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x61, 0x74, 0x65, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, + 0xe2, 0x01, 0x0a, 0x19, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x69, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x19, 0x0a, + 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x07, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x75, 0x69, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x5f, + 0x65, 0x75, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45, 0x75, + 0x69, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x64, 0x65, 0x76, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x34, + 0x0a, 0x07, 0x61, 0x70, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, + 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x06, 0x61, 0x70, + 0x70, 0x4b, 0x65, 0x79, 0x12, 0x34, 0x0a, 0x07, 0x6e, 0x77, 0x6b, 0x5f, 0x6b, 0x65, 0x79, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, + 0x70, 0x65, 0x52, 0x06, 0x6e, 0x77, 0x6b, 0x4b, 0x65, 0x79, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, + 0x08, 0x01, 0x10, 0x01, 0x22, 0xda, 0x04, 0x0a, 0x18, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x07, 0x64, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x12, 0x41, 0x0a, 0x0f, + 0x66, 0x5f, 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, + 0x70, 0x65, 0x52, 0x0b, 0x66, 0x4e, 0x77, 0x6b, 0x53, 0x49, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, + 0x41, 0x0a, 0x0f, 0x73, 0x5f, 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, + 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, + 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x4e, 0x77, 0x6b, 0x53, 0x49, 0x6e, 0x74, 0x4b, + 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x0d, 0x6e, 0x77, 0x6b, 0x5f, 0x73, 0x5f, 0x65, 0x6e, 0x63, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, + 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, + 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x52, 0x0a, 0x6e, 0x77, 0x6b, 0x53, 0x45, 0x6e, 0x63, 0x4b, + 0x65, 0x79, 0x12, 0x37, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x5f, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x74, 0x6e, 0x2e, 0x6c, 0x6f, 0x72, 0x61, + 0x77, 0x61, 0x6e, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, + 0x70, 0x65, 0x52, 0x07, 0x61, 0x70, 0x70, 0x53, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x61, + 0x64, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x64, 0x72, 0x12, 0x1e, 0x0a, + 0x0b, 0x61, 0x64, 0x72, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x09, 0x61, 0x64, 0x72, 0x41, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, + 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x63, 0x6b, 0x12, 0x13, 0x0a, + 0x05, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x66, 0x43, + 0x6e, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x66, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6d, + 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, + 0x66, 0x72, 0x6d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x63, 0x6f, + 0x6e, 0x66, 0x5f, 0x66, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, + 0x63, 0x6f, 0x6e, 0x66, 0x46, 0x43, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x64, + 0x72, 0x5f, 0x69, 0x64, 0x78, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, 0x78, 0x44, + 0x72, 0x49, 0x64, 0x78, 0x12, 0x1a, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x63, 0x68, 0x5f, 0x69, 0x64, + 0x78, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, 0x78, 0x43, 0x68, 0x49, 0x64, 0x78, + 0x12, 0x15, 0x0a, 0x06, 0x66, 0x5f, 0x6f, 0x70, 0x74, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x05, 0x66, 0x4f, 0x70, 0x74, 0x73, 0x3a, 0x08, 0xf2, 0xaa, 0x19, 0x04, 0x08, 0x01, 0x10, + 0x01, 0x42, 0x3a, 0x5a, 0x38, 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, + 0x6e, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, + 0x74, 0x6e, 0x70, 0x62, 0x2f, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_lorawan_stack_api_simulate_proto_rawDescOnce sync.Once + file_lorawan_stack_api_simulate_proto_rawDescData = file_lorawan_stack_api_simulate_proto_rawDesc +) + +func file_lorawan_stack_api_simulate_proto_rawDescGZIP() []byte { + file_lorawan_stack_api_simulate_proto_rawDescOnce.Do(func() { + file_lorawan_stack_api_simulate_proto_rawDescData = protoimpl.X.CompressGZIP(file_lorawan_stack_api_simulate_proto_rawDescData) + }) + return file_lorawan_stack_api_simulate_proto_rawDescData +} + +var file_lorawan_stack_api_simulate_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_lorawan_stack_api_simulate_proto_goTypes = []interface{}{ + (*SimulateMetadataParams)(nil), // 0: ttn.lorawan.v3.simulateMetadataParams + (*SimulateJoinRequestParams)(nil), // 1: ttn.lorawan.v3.simulateJoinRequestParams + (*SimulateDataUplinkParams)(nil), // 2: ttn.lorawan.v3.simulateDataUplinkParams + (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp + (ttnpb.MACVersion)(0), // 4: ttn.lorawan.v3.MACVersion + (ttnpb.PHYVersion)(0), // 5: ttn.lorawan.v3.PHYVersion + (*ttnpb.KeyEnvelope)(nil), // 6: ttn.lorawan.v3.KeyEnvelope +} +var file_lorawan_stack_api_simulate_proto_depIdxs = []int32{ + 3, // 0: ttn.lorawan.v3.simulateMetadataParams.time:type_name -> google.protobuf.Timestamp + 4, // 1: ttn.lorawan.v3.simulateMetadataParams.loRaWAN_version:type_name -> ttn.lorawan.v3.MACVersion + 5, // 2: ttn.lorawan.v3.simulateMetadataParams.loRaWAN_PHY_version:type_name -> ttn.lorawan.v3.PHYVersion + 6, // 3: ttn.lorawan.v3.simulateJoinRequestParams.app_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 6, // 4: ttn.lorawan.v3.simulateJoinRequestParams.nwk_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 6, // 5: ttn.lorawan.v3.simulateDataUplinkParams.f_nwk_s_int_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 6, // 6: ttn.lorawan.v3.simulateDataUplinkParams.s_nwk_s_int_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 6, // 7: ttn.lorawan.v3.simulateDataUplinkParams.nwk_s_enc_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 6, // 8: ttn.lorawan.v3.simulateDataUplinkParams.app_s_key:type_name -> ttn.lorawan.v3.KeyEnvelope + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name +} + +func init() { file_lorawan_stack_api_simulate_proto_init() } +func file_lorawan_stack_api_simulate_proto_init() { + if File_lorawan_stack_api_simulate_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_lorawan_stack_api_simulate_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SimulateMetadataParams); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_simulate_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SimulateJoinRequestParams); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lorawan_stack_api_simulate_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SimulateDataUplinkParams); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lorawan_stack_api_simulate_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_lorawan_stack_api_simulate_proto_goTypes, + DependencyIndexes: file_lorawan_stack_api_simulate_proto_depIdxs, + MessageInfos: file_lorawan_stack_api_simulate_proto_msgTypes, + }.Build() + File_lorawan_stack_api_simulate_proto = out.File + file_lorawan_stack_api_simulate_proto_rawDesc = nil + file_lorawan_stack_api_simulate_proto_goTypes = nil + file_lorawan_stack_api_simulate_proto_depIdxs = nil } diff --git a/cmd/ttn-lw-cli/internal/simulate/simulate.pb.setters.fm.go b/cmd/ttn-lw-cli/internal/simulate/simulate.pb.setters.fm.go index 84c68908d1..a53d7b8299 100644 --- a/cmd/ttn-lw-cli/internal/simulate/simulate.pb.setters.fm.go +++ b/cmd/ttn-lw-cli/internal/simulate/simulate.pb.setters.fm.go @@ -4,7 +4,7 @@ package simulate import ( fmt "fmt" - "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + ttnpb "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" ) func (dst *SimulateMetadataParams) SetFields(src *SimulateMetadataParams, paths ...string) error { @@ -56,8 +56,7 @@ func (dst *SimulateMetadataParams) SetFields(src *SimulateMetadataParams, paths if src != nil { dst.LoRaWANVersion = src.LoRaWANVersion } else { - var zero ttnpb.MACVersion - dst.LoRaWANVersion = zero + dst.LoRaWANVersion = 0 } case "loRaWAN_PHY_version": if len(subs) > 0 { @@ -66,8 +65,7 @@ func (dst *SimulateMetadataParams) SetFields(src *SimulateMetadataParams, paths if src != nil { dst.LoRaWAN_PHYVersion = src.LoRaWAN_PHYVersion } else { - var zero ttnpb.PHYVersion - dst.LoRaWAN_PHYVersion = zero + dst.LoRaWAN_PHYVersion = 0 } case "band_id": if len(subs) > 0 { diff --git a/cmd/ttn-lw-cli/internal/simulate/simulate.pb.util.fm.go b/cmd/ttn-lw-cli/internal/simulate/simulate.pb.util.fm.go new file mode 100644 index 0000000000..5f7026af4f --- /dev/null +++ b/cmd/ttn-lw-cli/internal/simulate/simulate.pb.util.fm.go @@ -0,0 +1,33 @@ +// Code generated by protoc-gen-fieldmask. DO NOT EDIT. + +package simulate + +import ( + "strings" +) + +// _processPaths returns paths as a pathMap. +func _processPaths(paths []string) map[string][]string { + if len(paths) == 0 { + return nil + } + pathMap := make(map[string][]string, len(paths)) + for _, p := range paths { + if !strings.Contains(p, ".") { + pathMap[p] = nil + continue + } + parts := strings.SplitN(p, ".", 2) + h, t := parts[0], parts[1] + if val, ok := pathMap[h]; ok { + if val == nil { + continue + } + pathMap[h] = append(pathMap[h], t) + } else { + pathMap[h] = []string{t} + } + } + + return pathMap +} diff --git a/cmd/ttn-lw-cli/internal/simulate/simulate.pb.validate.go b/cmd/ttn-lw-cli/internal/simulate/simulate.pb.validate.go index 34bd7cbf79..b717977c41 100644 --- a/cmd/ttn-lw-cli/internal/simulate/simulate.pb.validate.go +++ b/cmd/ttn-lw-cli/internal/simulate/simulate.pb.validate.go @@ -14,7 +14,7 @@ import ( "time" "unicode/utf8" - "github.com/gogo/protobuf/types" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -29,12 +29,9 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = types.DynamicAny{} + _ = anypb.Any{} ) -// define the regex for a UUID once up-front -var _simulate_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // ValidateFields checks the field values on SimulateMetadataParams with the // rules defined in the proto definition for this message. If any rules are // violated, an error is returned. diff --git a/cmd/ttn-lw-cli/internal/simulate/simulate_flags.pb.go b/cmd/ttn-lw-cli/internal/simulate/simulate_flags.pb.go index c1a5052db8..1c29675607 100644 --- a/cmd/ttn-lw-cli/internal/simulate/simulate_flags.pb.go +++ b/cmd/ttn-lw-cli/internal/simulate/simulate_flags.pb.go @@ -1,16 +1,16 @@ // Code generated by protoc-gen-go-flags. DO NOT EDIT. // versions: // - protoc-gen-go-flags v1.0.6 -// - protoc v3.9.1 +// - protoc v3.21.1 // source: lorawan-stack/api/simulate.proto package simulate import ( flagsplugin "github.com/TheThingsIndustries/protoc-gen-go-flags/flagsplugin" - gogo "github.com/TheThingsIndustries/protoc-gen-go-flags/gogo" + golang "github.com/TheThingsIndustries/protoc-gen-go-flags/golang" pflag "github.com/spf13/pflag" - "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" + ttnpb "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" ) // AddSelectFlagsForSimulateMetadataParams adds flags to select fields in SimulateMetadataParams. @@ -19,7 +19,7 @@ func AddSelectFlagsForSimulateMetadataParams(flags *pflag.FlagSet, prefix string flags.AddFlag(flagsplugin.NewBoolFlag(flagsplugin.Prefix("snr", prefix), flagsplugin.SelectDesc(flagsplugin.Prefix("snr", prefix), false), flagsplugin.WithHidden(hidden))) flags.AddFlag(flagsplugin.NewBoolFlag(flagsplugin.Prefix("timestamp", prefix), flagsplugin.SelectDesc(flagsplugin.Prefix("timestamp", prefix), false), flagsplugin.WithHidden(hidden))) flags.AddFlag(flagsplugin.NewBoolFlag(flagsplugin.Prefix("time", prefix), flagsplugin.SelectDesc(flagsplugin.Prefix("time", prefix), false), flagsplugin.WithHidden(hidden))) - flags.AddFlag(flagsplugin.NewBoolFlag(flagsplugin.Prefix("loRaWAN-versio", prefix), flagsplugin.SelectDesc(flagsplugin.Prefix("loRaWAN-versio", prefix), false), flagsplugin.WithHidden(hidden))) + flags.AddFlag(flagsplugin.NewBoolFlag(flagsplugin.Prefix("loRaWAN-version", prefix), flagsplugin.SelectDesc(flagsplugin.Prefix("loRaWAN-version", prefix), false), flagsplugin.WithHidden(hidden))) flags.AddFlag(flagsplugin.NewBoolFlag(flagsplugin.Prefix("loRaWAN-PHY-version", prefix), flagsplugin.SelectDesc(flagsplugin.Prefix("loRaWAN-PHY-version", prefix), false), flagsplugin.WithHidden(hidden))) flags.AddFlag(flagsplugin.NewBoolFlag(flagsplugin.Prefix("band-id", prefix), flagsplugin.SelectDesc(flagsplugin.Prefix("band-id", prefix), false), flagsplugin.WithHidden(hidden))) flags.AddFlag(flagsplugin.NewBoolFlag(flagsplugin.Prefix("frequency", prefix), flagsplugin.SelectDesc(flagsplugin.Prefix("frequency", prefix), false), flagsplugin.WithHidden(hidden))) @@ -100,7 +100,7 @@ func AddSetFlagsForSimulateMetadataParams(flags *pflag.FlagSet, prefix string, h flags.AddFlag(flagsplugin.NewFloat32Flag(flagsplugin.Prefix("snr", prefix), "", flagsplugin.WithHidden(hidden))) flags.AddFlag(flagsplugin.NewUint32Flag(flagsplugin.Prefix("timestamp", prefix), "", flagsplugin.WithHidden(hidden))) flags.AddFlag(flagsplugin.NewTimestampFlag(flagsplugin.Prefix("time", prefix), "", flagsplugin.WithHidden(hidden))) - flags.AddFlag(flagsplugin.NewStringFlag(flagsplugin.Prefix("loRaWAN-versio", prefix), flagsplugin.EnumValueDesc(ttnpb.MACVersion_value, ttnpb.MACVersion_customvalue), flagsplugin.WithHidden(hidden))) + flags.AddFlag(flagsplugin.NewStringFlag(flagsplugin.Prefix("loRaWAN-version", prefix), flagsplugin.EnumValueDesc(ttnpb.MACVersion_value, ttnpb.MACVersion_customvalue), flagsplugin.WithHidden(hidden))) flags.AddFlag(flagsplugin.NewStringFlag(flagsplugin.Prefix("loRaWAN-PHY-version", prefix), flagsplugin.EnumValueDesc(ttnpb.PHYVersion_value, ttnpb.PHYVersion_customvalue), flagsplugin.WithHidden(hidden))) flags.AddFlag(flagsplugin.NewStringFlag(flagsplugin.Prefix("band-id", prefix), "", flagsplugin.WithHidden(hidden))) flags.AddFlag(flagsplugin.NewUint64Flag(flagsplugin.Prefix("frequency", prefix), "", flagsplugin.WithHidden(hidden))) @@ -133,7 +133,7 @@ func (m *SimulateMetadataParams) SetFromFlags(flags *pflag.FlagSet, prefix strin if val, changed, err := flagsplugin.GetTimestamp(flags, flagsplugin.Prefix("time", prefix)); err != nil { return nil, err } else if changed { - m.Time = gogo.SetTimestamp(val) + m.Time = golang.SetTimestamp(val) paths = append(paths, flagsplugin.Prefix("time", prefix)) } if val, changed, err := flagsplugin.GetString(flags, flagsplugin.Prefix("loRaWAN_version", prefix)); err != nil { diff --git a/cmd/ttn-lw-cli/internal/simulate/simulate_json.pb.go b/cmd/ttn-lw-cli/internal/simulate/simulate_json.pb.go new file mode 100644 index 0000000000..0e37b7a7c9 --- /dev/null +++ b/cmd/ttn-lw-cli/internal/simulate/simulate_json.pb.go @@ -0,0 +1,415 @@ +// Code generated by protoc-gen-go-json. DO NOT EDIT. +// versions: +// - protoc-gen-go-json v1.4.1 +// - protoc v3.21.1 +// source: lorawan-stack/api/simulate.proto + +package simulate + +import ( + golang "github.com/TheThingsIndustries/protoc-gen-go-json/golang" + jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" + ttnpb "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" +) + +// MarshalProtoJSON marshals the SimulateMetadataParams message to JSON. +func (x *SimulateMetadataParams) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if x.Rssi != 0 || s.HasField("rssi") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("rssi") + s.WriteFloat32(x.Rssi) + } + if x.Snr != 0 || s.HasField("snr") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("snr") + s.WriteFloat32(x.Snr) + } + if x.Timestamp != 0 || s.HasField("timestamp") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("timestamp") + s.WriteUint32(x.Timestamp) + } + if x.Time != nil || s.HasField("time") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("time") + if x.Time == nil { + s.WriteNil() + } else { + golang.MarshalTimestamp(s, x.Time) + } + } + if x.LoRaWANVersion != 0 || s.HasField("loRaWAN_version") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("loRaWAN_version") + x.LoRaWANVersion.MarshalProtoJSON(s) + } + if x.LoRaWAN_PHYVersion != 0 || s.HasField("loRaWAN_PHY_version") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("loRaWAN_PHY_version") + x.LoRaWAN_PHYVersion.MarshalProtoJSON(s) + } + if x.BandId != "" || s.HasField("band_id") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("band_id") + s.WriteString(x.BandId) + } + if x.Frequency != 0 || s.HasField("frequency") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("frequency") + s.WriteUint64(x.Frequency) + } + if x.ChannelIndex != 0 || s.HasField("channel_index") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("channel_index") + s.WriteUint32(x.ChannelIndex) + } + if x.Bandwidth != 0 || s.HasField("bandwidth") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("bandwidth") + s.WriteUint32(x.Bandwidth) + } + if x.SpreadingFactor != 0 || s.HasField("spreading_factor") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("spreading_factor") + s.WriteUint32(x.SpreadingFactor) + } + if x.DataRateIndex != 0 || s.HasField("data_rate_index") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("data_rate_index") + s.WriteUint32(x.DataRateIndex) + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the SimulateMetadataParams to JSON. +func (x *SimulateMetadataParams) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the SimulateMetadataParams message from JSON. +func (x *SimulateMetadataParams) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "rssi": + s.AddField("rssi") + x.Rssi = s.ReadFloat32() + case "snr": + s.AddField("snr") + x.Snr = s.ReadFloat32() + case "timestamp": + s.AddField("timestamp") + x.Timestamp = s.ReadUint32() + case "time": + s.AddField("time") + if s.ReadNil() { + x.Time = nil + return + } + v := golang.UnmarshalTimestamp(s) + if s.Err() != nil { + return + } + x.Time = v + case "loRaWAN_version", "loRaWANVersion": + s.AddField("loRaWAN_version") + x.LoRaWANVersion.UnmarshalProtoJSON(s) + case "loRaWAN_PHY_version", "loRaWANPHYVersion": + s.AddField("loRaWAN_PHY_version") + x.LoRaWAN_PHYVersion.UnmarshalProtoJSON(s) + case "band_id", "bandId": + s.AddField("band_id") + x.BandId = s.ReadString() + case "frequency": + s.AddField("frequency") + x.Frequency = s.ReadUint64() + case "channel_index", "channelIndex": + s.AddField("channel_index") + x.ChannelIndex = s.ReadUint32() + case "bandwidth": + s.AddField("bandwidth") + x.Bandwidth = s.ReadUint32() + case "spreading_factor", "spreadingFactor": + s.AddField("spreading_factor") + x.SpreadingFactor = s.ReadUint32() + case "data_rate_index", "dataRateIndex": + s.AddField("data_rate_index") + x.DataRateIndex = s.ReadUint32() + } + }) +} + +// UnmarshalJSON unmarshals the SimulateMetadataParams from JSON. +func (x *SimulateMetadataParams) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the SimulateJoinRequestParams message to JSON. +func (x *SimulateJoinRequestParams) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if len(x.JoinEui) > 0 || s.HasField("join_eui") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("join_eui") + s.WriteBytes(x.JoinEui) + } + if len(x.DevEui) > 0 || s.HasField("dev_eui") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("dev_eui") + s.WriteBytes(x.DevEui) + } + if len(x.DevNonce) > 0 || s.HasField("dev_nonce") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("dev_nonce") + s.WriteBytes(x.DevNonce) + } + if x.AppKey != nil || s.HasField("app_key") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("app_key") + x.AppKey.MarshalProtoJSON(s.WithField("app_key")) + } + if x.NwkKey != nil || s.HasField("nwk_key") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("nwk_key") + x.NwkKey.MarshalProtoJSON(s.WithField("nwk_key")) + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the SimulateJoinRequestParams to JSON. +func (x *SimulateJoinRequestParams) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the SimulateJoinRequestParams message from JSON. +func (x *SimulateJoinRequestParams) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "join_eui", "joinEui": + s.AddField("join_eui") + x.JoinEui = s.ReadBytes() + case "dev_eui", "devEui": + s.AddField("dev_eui") + x.DevEui = s.ReadBytes() + case "dev_nonce", "devNonce": + s.AddField("dev_nonce") + x.DevNonce = s.ReadBytes() + case "app_key", "appKey": + if s.ReadNil() { + x.AppKey = nil + return + } + x.AppKey = &ttnpb.KeyEnvelope{} + x.AppKey.UnmarshalProtoJSON(s.WithField("app_key", true)) + case "nwk_key", "nwkKey": + if s.ReadNil() { + x.NwkKey = nil + return + } + x.NwkKey = &ttnpb.KeyEnvelope{} + x.NwkKey.UnmarshalProtoJSON(s.WithField("nwk_key", true)) + } + }) +} + +// UnmarshalJSON unmarshals the SimulateJoinRequestParams from JSON. +func (x *SimulateJoinRequestParams) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} + +// MarshalProtoJSON marshals the SimulateDataUplinkParams message to JSON. +func (x *SimulateDataUplinkParams) MarshalProtoJSON(s *jsonplugin.MarshalState) { + if x == nil { + s.WriteNil() + return + } + s.WriteObjectStart() + var wroteField bool + if len(x.DevAddr) > 0 || s.HasField("dev_addr") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("dev_addr") + s.WriteBytes(x.DevAddr) + } + if x.FNwkSIntKey != nil || s.HasField("f_nwk_s_int_key") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("f_nwk_s_int_key") + x.FNwkSIntKey.MarshalProtoJSON(s.WithField("f_nwk_s_int_key")) + } + if x.SNwkSIntKey != nil || s.HasField("s_nwk_s_int_key") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("s_nwk_s_int_key") + x.SNwkSIntKey.MarshalProtoJSON(s.WithField("s_nwk_s_int_key")) + } + if x.NwkSEncKey != nil || s.HasField("nwk_s_enc_key") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("nwk_s_enc_key") + x.NwkSEncKey.MarshalProtoJSON(s.WithField("nwk_s_enc_key")) + } + if x.AppSKey != nil || s.HasField("app_s_key") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("app_s_key") + x.AppSKey.MarshalProtoJSON(s.WithField("app_s_key")) + } + if x.Adr || s.HasField("adr") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("adr") + s.WriteBool(x.Adr) + } + if x.AdrAckReq || s.HasField("adr_ack_req") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("adr_ack_req") + s.WriteBool(x.AdrAckReq) + } + if x.Confirmed || s.HasField("confirmed") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("confirmed") + s.WriteBool(x.Confirmed) + } + if x.Ack || s.HasField("ack") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("ack") + s.WriteBool(x.Ack) + } + if x.FCnt != 0 || s.HasField("f_cnt") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("f_cnt") + s.WriteUint32(x.FCnt) + } + if x.FPort != 0 || s.HasField("f_port") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("f_port") + s.WriteUint32(x.FPort) + } + if len(x.FrmPayload) > 0 || s.HasField("frm_payload") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("frm_payload") + s.WriteBytes(x.FrmPayload) + } + if x.ConfFCnt != 0 || s.HasField("conf_f_cnt") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("conf_f_cnt") + s.WriteUint32(x.ConfFCnt) + } + if x.TxDrIdx != 0 || s.HasField("tx_dr_idx") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("tx_dr_idx") + s.WriteUint32(x.TxDrIdx) + } + if x.TxChIdx != 0 || s.HasField("tx_ch_idx") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("tx_ch_idx") + s.WriteUint32(x.TxChIdx) + } + if len(x.FOpts) > 0 || s.HasField("f_opts") { + s.WriteMoreIf(&wroteField) + s.WriteObjectField("f_opts") + s.WriteBytes(x.FOpts) + } + s.WriteObjectEnd() +} + +// MarshalJSON marshals the SimulateDataUplinkParams to JSON. +func (x *SimulateDataUplinkParams) MarshalJSON() ([]byte, error) { + return jsonplugin.DefaultMarshalerConfig.Marshal(x) +} + +// UnmarshalProtoJSON unmarshals the SimulateDataUplinkParams message from JSON. +func (x *SimulateDataUplinkParams) UnmarshalProtoJSON(s *jsonplugin.UnmarshalState) { + if s.ReadNil() { + return + } + s.ReadObject(func(key string) { + switch key { + default: + s.ReadAny() // ignore unknown field + case "dev_addr", "devAddr": + s.AddField("dev_addr") + x.DevAddr = s.ReadBytes() + case "f_nwk_s_int_key", "fNwkSIntKey": + if s.ReadNil() { + x.FNwkSIntKey = nil + return + } + x.FNwkSIntKey = &ttnpb.KeyEnvelope{} + x.FNwkSIntKey.UnmarshalProtoJSON(s.WithField("f_nwk_s_int_key", true)) + case "s_nwk_s_int_key", "sNwkSIntKey": + if s.ReadNil() { + x.SNwkSIntKey = nil + return + } + x.SNwkSIntKey = &ttnpb.KeyEnvelope{} + x.SNwkSIntKey.UnmarshalProtoJSON(s.WithField("s_nwk_s_int_key", true)) + case "nwk_s_enc_key", "nwkSEncKey": + if s.ReadNil() { + x.NwkSEncKey = nil + return + } + x.NwkSEncKey = &ttnpb.KeyEnvelope{} + x.NwkSEncKey.UnmarshalProtoJSON(s.WithField("nwk_s_enc_key", true)) + case "app_s_key", "appSKey": + if s.ReadNil() { + x.AppSKey = nil + return + } + x.AppSKey = &ttnpb.KeyEnvelope{} + x.AppSKey.UnmarshalProtoJSON(s.WithField("app_s_key", true)) + case "adr": + s.AddField("adr") + x.Adr = s.ReadBool() + case "adr_ack_req", "adrAckReq": + s.AddField("adr_ack_req") + x.AdrAckReq = s.ReadBool() + case "confirmed": + s.AddField("confirmed") + x.Confirmed = s.ReadBool() + case "ack": + s.AddField("ack") + x.Ack = s.ReadBool() + case "f_cnt", "fCnt": + s.AddField("f_cnt") + x.FCnt = s.ReadUint32() + case "f_port", "fPort": + s.AddField("f_port") + x.FPort = s.ReadUint32() + case "frm_payload", "frmPayload": + s.AddField("frm_payload") + x.FrmPayload = s.ReadBytes() + case "conf_f_cnt", "confFCnt": + s.AddField("conf_f_cnt") + x.ConfFCnt = s.ReadUint32() + case "tx_dr_idx", "txDrIdx": + s.AddField("tx_dr_idx") + x.TxDrIdx = s.ReadUint32() + case "tx_ch_idx", "txChIdx": + s.AddField("tx_ch_idx") + x.TxChIdx = s.ReadUint32() + case "f_opts", "fOpts": + s.AddField("f_opts") + x.FOpts = s.ReadBytes() + } + }) +} + +// UnmarshalJSON unmarshals the SimulateDataUplinkParams from JSON. +func (x *SimulateDataUplinkParams) UnmarshalJSON(b []byte) error { + return jsonplugin.DefaultUnmarshalerConfig.Unmarshal(b, x) +} diff --git a/cmd/ttn-lw-cli/internal/simulate/simulate_util.go b/cmd/ttn-lw-cli/internal/simulate/simulate_util.go index a2aa350eb1..c4332eceda 100644 --- a/cmd/ttn-lw-cli/internal/simulate/simulate_util.go +++ b/cmd/ttn-lw-cli/internal/simulate/simulate_util.go @@ -16,39 +16,12 @@ package simulate import ( - "strings" - "go.thethings.network/lorawan-stack/v3/pkg/band" "go.thethings.network/lorawan-stack/v3/pkg/errors" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "google.golang.org/protobuf/types/known/timestamppb" ) -func _processPaths(paths []string) map[string][]string { - if len(paths) == 0 { - return nil - } - pathMap := make(map[string][]string, len(paths)) - for _, p := range paths { - if !strings.Contains(p, ".") { - pathMap[p] = nil - continue - } - parts := strings.SplitN(p, ".", 2) - h, t := parts[0], parts[1] - if val, ok := pathMap[h]; ok { - if val == nil { - continue - } - pathMap[h] = append(pathMap[h], t) - } else { - pathMap[h] = []string{t} - } - } - - return pathMap -} - var ( errDataRate = errors.DefineInvalidArgument("data_rate", "data rate is invalid") errFrequency = errors.DefineInvalidArgument("frequency", "frequency is invalid") From 1e79590c9d44408c7d6a0700ed6185951bdd2e8b Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Tue, 20 Dec 2022 10:06:52 +0100 Subject: [PATCH 21/30] all: Regenerate rpctest proto --- pkg/util/rpctest/rpctest.pb.go | 560 ++++++++++------------------ pkg/util/rpctest/rpctest_grpc.pb.go | 303 +++++++++++++++ 2 files changed, 498 insertions(+), 365 deletions(-) create mode 100644 pkg/util/rpctest/rpctest_grpc.pb.go diff --git a/pkg/util/rpctest/rpctest.pb.go b/pkg/util/rpctest/rpctest.pb.go index 6d7f0c5044..d84c6e8901 100644 --- a/pkg/util/rpctest/rpctest.pb.go +++ b/pkg/util/rpctest/rpctest.pb.go @@ -1,410 +1,240 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: lorawan-stack/pkg/util/rpctest/rpctest.proto +// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.5 +// source: rpctest.proto package rpctest import ( - context "context" - fmt "fmt" - proto "google.golang.org/protobuf/proto" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type Foo struct { - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *Foo) Reset() { *m = Foo{} } -func (m *Foo) String() string { return proto.CompactTextString(m) } -func (*Foo) ProtoMessage() {} -func (*Foo) Descriptor() ([]byte, []int) { - return fileDescriptor_205509ffe52f0e65, []int{0} -} -func (m *Foo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Foo.Unmarshal(m, b) -} -func (m *Foo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Foo.Marshal(b, m, deterministic) -} -func (m *Foo) XXX_Merge(src proto.Message) { - xxx_messageInfo_Foo.Merge(m, src) -} -func (m *Foo) XXX_Size() int { - return xxx_messageInfo_Foo.Size(m) -} -func (m *Foo) XXX_DiscardUnknown() { - xxx_messageInfo_Foo.DiscardUnknown(m) + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` } -var xxx_messageInfo_Foo proto.InternalMessageInfo - -func (m *Foo) GetMessage() string { - if m != nil { - return m.Message +func (x *Foo) Reset() { + *x = Foo{} + if protoimpl.UnsafeEnabled { + mi := &file_rpctest_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -type Bar struct { - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +func (x *Foo) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *Bar) Reset() { *m = Bar{} } -func (m *Bar) String() string { return proto.CompactTextString(m) } -func (*Bar) ProtoMessage() {} -func (*Bar) Descriptor() ([]byte, []int) { - return fileDescriptor_205509ffe52f0e65, []int{1} -} -func (m *Bar) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Bar.Unmarshal(m, b) -} -func (m *Bar) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Bar.Marshal(b, m, deterministic) -} -func (m *Bar) XXX_Merge(src proto.Message) { - xxx_messageInfo_Bar.Merge(m, src) -} -func (m *Bar) XXX_Size() int { - return xxx_messageInfo_Bar.Size(m) -} -func (m *Bar) XXX_DiscardUnknown() { - xxx_messageInfo_Bar.DiscardUnknown(m) -} +func (*Foo) ProtoMessage() {} -var xxx_messageInfo_Bar proto.InternalMessageInfo - -func (m *Bar) GetMessage() string { - if m != nil { - return m.Message +func (x *Foo) ProtoReflect() protoreflect.Message { + mi := &file_rpctest_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" -} - -func init() { - proto.RegisterType((*Foo)(nil), "rpctest.Foo") - proto.RegisterType((*Bar)(nil), "rpctest.Bar") + return mi.MessageOf(x) } -func init() { - proto.RegisterFile("lorawan-stack/pkg/util/rpctest/rpctest.proto", fileDescriptor_205509ffe52f0e65) -} - -var fileDescriptor_205509ffe52f0e65 = []byte{ - // 215 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0xd0, 0xc1, 0x4a, 0x03, 0x31, - 0x10, 0xc6, 0x71, 0x83, 0xd8, 0x62, 0xe8, 0x29, 0xa7, 0xe2, 0x45, 0x29, 0x08, 0x3d, 0x68, 0x52, - 0x2c, 0x88, 0xe7, 0x08, 0xfb, 0x00, 0x16, 0x2f, 0xde, 0xc6, 0x3a, 0xa4, 0x61, 0x77, 0x33, 0xcb, - 0x64, 0xdc, 0xc5, 0xa7, 0xf3, 0xd5, 0x24, 0xe2, 0x22, 0x22, 0xca, 0x9e, 0xc2, 0x07, 0x3f, 0x32, - 0xf0, 0xd7, 0x57, 0x0d, 0x31, 0x0c, 0x90, 0xae, 0xb3, 0xc0, 0xbe, 0x76, 0x5d, 0x1d, 0xdc, 0xab, - 0xc4, 0xc6, 0x71, 0xb7, 0x17, 0xcc, 0x32, 0xbe, 0xb6, 0x63, 0x12, 0x32, 0xf3, 0xaf, 0xb9, 0x3a, - 0xd7, 0xc7, 0x15, 0x91, 0x59, 0xea, 0x79, 0x8b, 0x39, 0x43, 0xc0, 0xa5, 0xba, 0x50, 0xeb, 0xd3, - 0x87, 0x71, 0x16, 0xe0, 0x81, 0xff, 0x06, 0x37, 0xef, 0x4a, 0xcf, 0x2a, 0xa2, 0x82, 0x2e, 0xf5, - 0xc9, 0x63, 0x02, 0x7e, 0x33, 0x0b, 0x3b, 0x9e, 0xab, 0x88, 0xce, 0xbe, 0x97, 0x07, 0x5e, 0x1d, - 0x19, 0xab, 0x17, 0xf7, 0x4d, 0xc4, 0x24, 0x3b, 0x61, 0x84, 0xf6, 0x7f, 0xbd, 0x56, 0xc5, 0xef, - 0x90, 0x7b, 0xe4, 0x29, 0x7e, 0x53, 0xbc, 0xf6, 0xf1, 0x25, 0x4e, 0xfb, 0x7d, 0xa3, 0xfc, 0xdd, - 0xd3, 0x6d, 0x20, 0x2b, 0x07, 0x94, 0x43, 0x4c, 0x21, 0xdb, 0x84, 0x32, 0x10, 0xd7, 0xee, 0x67, - 0xd1, 0x7e, 0xfb, 0x2b, 0xea, 0xf3, 0xec, 0xb3, 0xe6, 0xf6, 0x23, 0x00, 0x00, 0xff, 0xff, 0x4a, - 0x45, 0x4a, 0xf3, 0x7d, 0x01, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// FooBarClient is the client API for FooBar service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type FooBarClient interface { - Unary(ctx context.Context, in *Foo, opts ...grpc.CallOption) (*Bar, error) - ClientStream(ctx context.Context, opts ...grpc.CallOption) (FooBar_ClientStreamClient, error) - ServerStream(ctx context.Context, in *Foo, opts ...grpc.CallOption) (FooBar_ServerStreamClient, error) - BidiStream(ctx context.Context, opts ...grpc.CallOption) (FooBar_BidiStreamClient, error) -} - -type fooBarClient struct { - cc *grpc.ClientConn -} - -func NewFooBarClient(cc *grpc.ClientConn) FooBarClient { - return &fooBarClient{cc} -} - -func (c *fooBarClient) Unary(ctx context.Context, in *Foo, opts ...grpc.CallOption) (*Bar, error) { - out := new(Bar) - err := c.cc.Invoke(ctx, "/rpctest.FooBar/Unary", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *fooBarClient) ClientStream(ctx context.Context, opts ...grpc.CallOption) (FooBar_ClientStreamClient, error) { - stream, err := c.cc.NewStream(ctx, &_FooBar_serviceDesc.Streams[0], "/rpctest.FooBar/ClientStream", opts...) - if err != nil { - return nil, err - } - x := &fooBarClientStreamClient{stream} - return x, nil -} - -type FooBar_ClientStreamClient interface { - Send(*Foo) error - CloseAndRecv() (*Bar, error) - grpc.ClientStream -} - -type fooBarClientStreamClient struct { - grpc.ClientStream -} - -func (x *fooBarClientStreamClient) Send(m *Foo) error { - return x.ClientStream.SendMsg(m) -} - -func (x *fooBarClientStreamClient) CloseAndRecv() (*Bar, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(Bar) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *fooBarClient) ServerStream(ctx context.Context, in *Foo, opts ...grpc.CallOption) (FooBar_ServerStreamClient, error) { - stream, err := c.cc.NewStream(ctx, &_FooBar_serviceDesc.Streams[1], "/rpctest.FooBar/ServerStream", opts...) - if err != nil { - return nil, err - } - x := &fooBarServerStreamClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type FooBar_ServerStreamClient interface { - Recv() (*Bar, error) - grpc.ClientStream -} - -type fooBarServerStreamClient struct { - grpc.ClientStream -} - -func (x *fooBarServerStreamClient) Recv() (*Bar, error) { - m := new(Bar) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil +// Deprecated: Use Foo.ProtoReflect.Descriptor instead. +func (*Foo) Descriptor() ([]byte, []int) { + return file_rpctest_proto_rawDescGZIP(), []int{0} } -func (c *fooBarClient) BidiStream(ctx context.Context, opts ...grpc.CallOption) (FooBar_BidiStreamClient, error) { - stream, err := c.cc.NewStream(ctx, &_FooBar_serviceDesc.Streams[2], "/rpctest.FooBar/BidiStream", opts...) - if err != nil { - return nil, err +func (x *Foo) GetMessage() string { + if x != nil { + return x.Message } - x := &fooBarBidiStreamClient{stream} - return x, nil -} - -type FooBar_BidiStreamClient interface { - Send(*Foo) error - Recv() (*Bar, error) - grpc.ClientStream + return "" } -type fooBarBidiStreamClient struct { - grpc.ClientStream -} +type Bar struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *fooBarBidiStreamClient) Send(m *Foo) error { - return x.ClientStream.SendMsg(m) + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` } -func (x *fooBarBidiStreamClient) Recv() (*Bar, error) { - m := new(Bar) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err +func (x *Bar) Reset() { + *x = Bar{} + if protoimpl.UnsafeEnabled { + mi := &file_rpctest_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return m, nil } -// FooBarServer is the server API for FooBar service. -type FooBarServer interface { - Unary(context.Context, *Foo) (*Bar, error) - ClientStream(FooBar_ClientStreamServer) error - ServerStream(*Foo, FooBar_ServerStreamServer) error - BidiStream(FooBar_BidiStreamServer) error +func (x *Bar) String() string { + return protoimpl.X.MessageStringOf(x) } -// UnimplementedFooBarServer can be embedded to have forward compatible implementations. -type UnimplementedFooBarServer struct { -} - -func (*UnimplementedFooBarServer) Unary(ctx context.Context, req *Foo) (*Bar, error) { - return nil, status.Errorf(codes.Unimplemented, "method Unary not implemented") -} -func (*UnimplementedFooBarServer) ClientStream(srv FooBar_ClientStreamServer) error { - return status.Errorf(codes.Unimplemented, "method ClientStream not implemented") -} -func (*UnimplementedFooBarServer) ServerStream(req *Foo, srv FooBar_ServerStreamServer) error { - return status.Errorf(codes.Unimplemented, "method ServerStream not implemented") -} -func (*UnimplementedFooBarServer) BidiStream(srv FooBar_BidiStreamServer) error { - return status.Errorf(codes.Unimplemented, "method BidiStream not implemented") -} - -func RegisterFooBarServer(s *grpc.Server, srv FooBarServer) { - s.RegisterService(&_FooBar_serviceDesc, srv) -} +func (*Bar) ProtoMessage() {} -func _FooBar_Unary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Foo) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FooBarServer).Unary(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/rpctest.FooBar/Unary", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FooBarServer).Unary(ctx, req.(*Foo)) +func (x *Bar) ProtoReflect() protoreflect.Message { + mi := &file_rpctest_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return interceptor(ctx, in, info, handler) -} - -func _FooBar_ClientStream_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(FooBarServer).ClientStream(&fooBarClientStreamServer{stream}) -} - -type FooBar_ClientStreamServer interface { - SendAndClose(*Bar) error - Recv() (*Foo, error) - grpc.ServerStream -} - -type fooBarClientStreamServer struct { - grpc.ServerStream + return mi.MessageOf(x) } -func (x *fooBarClientStreamServer) SendAndClose(m *Bar) error { - return x.ServerStream.SendMsg(m) -} - -func (x *fooBarClientStreamServer) Recv() (*Foo, error) { - m := new(Foo) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil +// Deprecated: Use Bar.ProtoReflect.Descriptor instead. +func (*Bar) Descriptor() ([]byte, []int) { + return file_rpctest_proto_rawDescGZIP(), []int{1} } -func _FooBar_ServerStream_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(Foo) - if err := stream.RecvMsg(m); err != nil { - return err +func (x *Bar) GetMessage() string { + if x != nil { + return x.Message } - return srv.(FooBarServer).ServerStream(m, &fooBarServerStreamServer{stream}) -} - -type FooBar_ServerStreamServer interface { - Send(*Bar) error - grpc.ServerStream -} - -type fooBarServerStreamServer struct { - grpc.ServerStream -} - -func (x *fooBarServerStreamServer) Send(m *Bar) error { - return x.ServerStream.SendMsg(m) -} - -func _FooBar_BidiStream_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(FooBarServer).BidiStream(&fooBarBidiStreamServer{stream}) -} - -type FooBar_BidiStreamServer interface { - Send(*Bar) error - Recv() (*Foo, error) - grpc.ServerStream -} - -type fooBarBidiStreamServer struct { - grpc.ServerStream -} - -func (x *fooBarBidiStreamServer) Send(m *Bar) error { - return x.ServerStream.SendMsg(m) + return "" } -func (x *fooBarBidiStreamServer) Recv() (*Foo, error) { - m := new(Foo) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +var File_rpctest_proto protoreflect.FileDescriptor + +var file_rpctest_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x72, 0x70, 0x63, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x07, 0x72, 0x70, 0x63, 0x74, 0x65, 0x73, 0x74, 0x22, 0x1f, 0x0a, 0x03, 0x46, 0x6f, 0x6f, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x1f, 0x0a, 0x03, 0x42, 0x61, 0x72, + 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0xbf, 0x01, 0x0a, 0x06, 0x46, + 0x6f, 0x6f, 0x42, 0x61, 0x72, 0x12, 0x25, 0x0a, 0x05, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x0c, + 0x2e, 0x72, 0x70, 0x63, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x6f, 0x1a, 0x0c, 0x2e, 0x72, + 0x70, 0x63, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x61, 0x72, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x0c, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x0c, 0x2e, 0x72, + 0x70, 0x63, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x6f, 0x1a, 0x0c, 0x2e, 0x72, 0x70, 0x63, + 0x74, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x61, 0x72, 0x22, 0x00, 0x28, 0x01, 0x12, 0x2e, 0x0a, 0x0c, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x0c, 0x2e, 0x72, + 0x70, 0x63, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x6f, 0x1a, 0x0c, 0x2e, 0x72, 0x70, 0x63, + 0x74, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x61, 0x72, 0x22, 0x00, 0x30, 0x01, 0x12, 0x2e, 0x0a, 0x0a, + 0x42, 0x69, 0x64, 0x69, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x0c, 0x2e, 0x72, 0x70, 0x63, + 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x6f, 0x1a, 0x0c, 0x2e, 0x72, 0x70, 0x63, 0x74, 0x65, + 0x73, 0x74, 0x2e, 0x42, 0x61, 0x72, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x38, 0x5a, 0x36, + 0x67, 0x6f, 0x2e, 0x74, 0x68, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x77, 0x61, 0x6e, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x75, 0x74, 0x69, 0x6c, 0x2f, 0x72, + 0x70, 0x63, 0x74, 0x65, 0x73, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_rpctest_proto_rawDescOnce sync.Once + file_rpctest_proto_rawDescData = file_rpctest_proto_rawDesc +) -var _FooBar_serviceDesc = grpc.ServiceDesc{ - ServiceName: "rpctest.FooBar", - HandlerType: (*FooBarServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Unary", - Handler: _FooBar_Unary_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "ClientStream", - Handler: _FooBar_ClientStream_Handler, - ClientStreams: true, - }, - { - StreamName: "ServerStream", - Handler: _FooBar_ServerStream_Handler, - ServerStreams: true, - }, - { - StreamName: "BidiStream", - Handler: _FooBar_BidiStream_Handler, - ServerStreams: true, - ClientStreams: true, +func file_rpctest_proto_rawDescGZIP() []byte { + file_rpctest_proto_rawDescOnce.Do(func() { + file_rpctest_proto_rawDescData = protoimpl.X.CompressGZIP(file_rpctest_proto_rawDescData) + }) + return file_rpctest_proto_rawDescData +} + +var file_rpctest_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_rpctest_proto_goTypes = []interface{}{ + (*Foo)(nil), // 0: rpctest.Foo + (*Bar)(nil), // 1: rpctest.Bar +} +var file_rpctest_proto_depIdxs = []int32{ + 0, // 0: rpctest.FooBar.Unary:input_type -> rpctest.Foo + 0, // 1: rpctest.FooBar.ClientStream:input_type -> rpctest.Foo + 0, // 2: rpctest.FooBar.ServerStream:input_type -> rpctest.Foo + 0, // 3: rpctest.FooBar.BidiStream:input_type -> rpctest.Foo + 1, // 4: rpctest.FooBar.Unary:output_type -> rpctest.Bar + 1, // 5: rpctest.FooBar.ClientStream:output_type -> rpctest.Bar + 1, // 6: rpctest.FooBar.ServerStream:output_type -> rpctest.Bar + 1, // 7: rpctest.FooBar.BidiStream:output_type -> rpctest.Bar + 4, // [4:8] is the sub-list for method output_type + 0, // [0:4] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_rpctest_proto_init() } +func file_rpctest_proto_init() { + if File_rpctest_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_rpctest_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Foo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpctest_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Bar); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_rpctest_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, }, - }, - Metadata: "lorawan-stack/pkg/util/rpctest/rpctest.proto", + GoTypes: file_rpctest_proto_goTypes, + DependencyIndexes: file_rpctest_proto_depIdxs, + MessageInfos: file_rpctest_proto_msgTypes, + }.Build() + File_rpctest_proto = out.File + file_rpctest_proto_rawDesc = nil + file_rpctest_proto_goTypes = nil + file_rpctest_proto_depIdxs = nil } diff --git a/pkg/util/rpctest/rpctest_grpc.pb.go b/pkg/util/rpctest/rpctest_grpc.pb.go new file mode 100644 index 0000000000..e149ae2c20 --- /dev/null +++ b/pkg/util/rpctest/rpctest_grpc.pb.go @@ -0,0 +1,303 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. + +package rpctest + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// FooBarClient is the client API for FooBar service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type FooBarClient interface { + Unary(ctx context.Context, in *Foo, opts ...grpc.CallOption) (*Bar, error) + ClientStream(ctx context.Context, opts ...grpc.CallOption) (FooBar_ClientStreamClient, error) + ServerStream(ctx context.Context, in *Foo, opts ...grpc.CallOption) (FooBar_ServerStreamClient, error) + BidiStream(ctx context.Context, opts ...grpc.CallOption) (FooBar_BidiStreamClient, error) +} + +type fooBarClient struct { + cc grpc.ClientConnInterface +} + +func NewFooBarClient(cc grpc.ClientConnInterface) FooBarClient { + return &fooBarClient{cc} +} + +func (c *fooBarClient) Unary(ctx context.Context, in *Foo, opts ...grpc.CallOption) (*Bar, error) { + out := new(Bar) + err := c.cc.Invoke(ctx, "/rpctest.FooBar/Unary", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *fooBarClient) ClientStream(ctx context.Context, opts ...grpc.CallOption) (FooBar_ClientStreamClient, error) { + stream, err := c.cc.NewStream(ctx, &FooBar_ServiceDesc.Streams[0], "/rpctest.FooBar/ClientStream", opts...) + if err != nil { + return nil, err + } + x := &fooBarClientStreamClient{stream} + return x, nil +} + +type FooBar_ClientStreamClient interface { + Send(*Foo) error + CloseAndRecv() (*Bar, error) + grpc.ClientStream +} + +type fooBarClientStreamClient struct { + grpc.ClientStream +} + +func (x *fooBarClientStreamClient) Send(m *Foo) error { + return x.ClientStream.SendMsg(m) +} + +func (x *fooBarClientStreamClient) CloseAndRecv() (*Bar, error) { + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + m := new(Bar) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *fooBarClient) ServerStream(ctx context.Context, in *Foo, opts ...grpc.CallOption) (FooBar_ServerStreamClient, error) { + stream, err := c.cc.NewStream(ctx, &FooBar_ServiceDesc.Streams[1], "/rpctest.FooBar/ServerStream", opts...) + if err != nil { + return nil, err + } + x := &fooBarServerStreamClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type FooBar_ServerStreamClient interface { + Recv() (*Bar, error) + grpc.ClientStream +} + +type fooBarServerStreamClient struct { + grpc.ClientStream +} + +func (x *fooBarServerStreamClient) Recv() (*Bar, error) { + m := new(Bar) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *fooBarClient) BidiStream(ctx context.Context, opts ...grpc.CallOption) (FooBar_BidiStreamClient, error) { + stream, err := c.cc.NewStream(ctx, &FooBar_ServiceDesc.Streams[2], "/rpctest.FooBar/BidiStream", opts...) + if err != nil { + return nil, err + } + x := &fooBarBidiStreamClient{stream} + return x, nil +} + +type FooBar_BidiStreamClient interface { + Send(*Foo) error + Recv() (*Bar, error) + grpc.ClientStream +} + +type fooBarBidiStreamClient struct { + grpc.ClientStream +} + +func (x *fooBarBidiStreamClient) Send(m *Foo) error { + return x.ClientStream.SendMsg(m) +} + +func (x *fooBarBidiStreamClient) Recv() (*Bar, error) { + m := new(Bar) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// FooBarServer is the server API for FooBar service. +// All implementations must embed UnimplementedFooBarServer +// for forward compatibility +type FooBarServer interface { + Unary(context.Context, *Foo) (*Bar, error) + ClientStream(FooBar_ClientStreamServer) error + ServerStream(*Foo, FooBar_ServerStreamServer) error + BidiStream(FooBar_BidiStreamServer) error + mustEmbedUnimplementedFooBarServer() +} + +// UnimplementedFooBarServer must be embedded to have forward compatible implementations. +type UnimplementedFooBarServer struct { +} + +func (UnimplementedFooBarServer) Unary(context.Context, *Foo) (*Bar, error) { + return nil, status.Errorf(codes.Unimplemented, "method Unary not implemented") +} +func (UnimplementedFooBarServer) ClientStream(FooBar_ClientStreamServer) error { + return status.Errorf(codes.Unimplemented, "method ClientStream not implemented") +} +func (UnimplementedFooBarServer) ServerStream(*Foo, FooBar_ServerStreamServer) error { + return status.Errorf(codes.Unimplemented, "method ServerStream not implemented") +} +func (UnimplementedFooBarServer) BidiStream(FooBar_BidiStreamServer) error { + return status.Errorf(codes.Unimplemented, "method BidiStream not implemented") +} +func (UnimplementedFooBarServer) mustEmbedUnimplementedFooBarServer() {} + +// UnsafeFooBarServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to FooBarServer will +// result in compilation errors. +type UnsafeFooBarServer interface { + mustEmbedUnimplementedFooBarServer() +} + +func RegisterFooBarServer(s grpc.ServiceRegistrar, srv FooBarServer) { + s.RegisterService(&FooBar_ServiceDesc, srv) +} + +func _FooBar_Unary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Foo) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(FooBarServer).Unary(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/rpctest.FooBar/Unary", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(FooBarServer).Unary(ctx, req.(*Foo)) + } + return interceptor(ctx, in, info, handler) +} + +func _FooBar_ClientStream_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(FooBarServer).ClientStream(&fooBarClientStreamServer{stream}) +} + +type FooBar_ClientStreamServer interface { + SendAndClose(*Bar) error + Recv() (*Foo, error) + grpc.ServerStream +} + +type fooBarClientStreamServer struct { + grpc.ServerStream +} + +func (x *fooBarClientStreamServer) SendAndClose(m *Bar) error { + return x.ServerStream.SendMsg(m) +} + +func (x *fooBarClientStreamServer) Recv() (*Foo, error) { + m := new(Foo) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func _FooBar_ServerStream_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(Foo) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(FooBarServer).ServerStream(m, &fooBarServerStreamServer{stream}) +} + +type FooBar_ServerStreamServer interface { + Send(*Bar) error + grpc.ServerStream +} + +type fooBarServerStreamServer struct { + grpc.ServerStream +} + +func (x *fooBarServerStreamServer) Send(m *Bar) error { + return x.ServerStream.SendMsg(m) +} + +func _FooBar_BidiStream_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(FooBarServer).BidiStream(&fooBarBidiStreamServer{stream}) +} + +type FooBar_BidiStreamServer interface { + Send(*Bar) error + Recv() (*Foo, error) + grpc.ServerStream +} + +type fooBarBidiStreamServer struct { + grpc.ServerStream +} + +func (x *fooBarBidiStreamServer) Send(m *Bar) error { + return x.ServerStream.SendMsg(m) +} + +func (x *fooBarBidiStreamServer) Recv() (*Foo, error) { + m := new(Foo) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// FooBar_ServiceDesc is the grpc.ServiceDesc for FooBar service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var FooBar_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "rpctest.FooBar", + HandlerType: (*FooBarServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Unary", + Handler: _FooBar_Unary_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "ClientStream", + Handler: _FooBar_ClientStream_Handler, + ClientStreams: true, + }, + { + StreamName: "ServerStream", + Handler: _FooBar_ServerStream_Handler, + ServerStreams: true, + }, + { + StreamName: "BidiStream", + Handler: _FooBar_BidiStream_Handler, + ServerStreams: true, + ClientStreams: true, + }, + }, + Metadata: "rpctest.proto", +} From a764641720944a01920f4da9de591e899612fff7 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Tue, 20 Dec 2022 10:25:41 +0100 Subject: [PATCH 22/30] all: Use proto.Marshal --- pkg/gatewayserver/gatewayserver_test.go | 4 ++-- pkg/gatewayserver/io/mqtt/format_protobufv2.go | 3 ++- pkg/gatewayserver/io/mqtt/format_protobufv2_test.go | 7 ++++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pkg/gatewayserver/gatewayserver_test.go b/pkg/gatewayserver/gatewayserver_test.go index 8306df9bd9..c8a88bb0b0 100644 --- a/pkg/gatewayserver/gatewayserver_test.go +++ b/pkg/gatewayserver/gatewayserver_test.go @@ -1908,7 +1908,7 @@ func TestUpdateVersionInfo(t *testing.T) { //nolint:paralleltest case <-ctx.Done(): return case stat := <-statCh: - buf, err := stat.Marshal() + buf, err := proto.Marshal(stat) if err != nil { cancel(err) return @@ -2113,7 +2113,7 @@ func TestBatchGetStatus(t *testing.T) { case <-ctx.Done(): return case stat := <-statCh: - buf, err := stat.Marshal() + buf, err := proto.Marshal(stat) if err != nil { cancel(err) return diff --git a/pkg/gatewayserver/io/mqtt/format_protobufv2.go b/pkg/gatewayserver/io/mqtt/format_protobufv2.go index cd4e6ceebe..4617e848c9 100644 --- a/pkg/gatewayserver/io/mqtt/format_protobufv2.go +++ b/pkg/gatewayserver/io/mqtt/format_protobufv2.go @@ -26,6 +26,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/gatewayserver/io/mqtt/topics" "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/datarate" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -83,7 +84,7 @@ func (protobufv2) FromDownlink(down *ttnpb.DownlinkMessage, _ *ttnpb.GatewayIden Lorawan: lorawan, }, } - return v2downlink.Marshal() + return proto.Marshal(v2downlink) } func (protobufv2) ToUplink(message []byte, ids *ttnpb.GatewayIdentifiers) (*ttnpb.UplinkMessage, error) { diff --git a/pkg/gatewayserver/io/mqtt/format_protobufv2_test.go b/pkg/gatewayserver/io/mqtt/format_protobufv2_test.go index 6b5c6d8db3..0ae8d8bf98 100644 --- a/pkg/gatewayserver/io/mqtt/format_protobufv2_test.go +++ b/pkg/gatewayserver/io/mqtt/format_protobufv2_test.go @@ -28,6 +28,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" "go.thethings.network/lorawan-stack/v3/pkg/util/test/assertions/should" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -81,7 +82,7 @@ func TestProtobufV2Downlink(t *testing.T) { }, }, } - expectedBuf, err := Expected.Marshal() + expectedBuf, err := proto.Marshal(Expected) if !a.So(err, should.BeNil) { t.Fatal("Could not marshal the v2 struct") } @@ -203,7 +204,7 @@ func TestProtobufV2Uplinks(t *testing.T) { } { tcok := t.Run(tc.Name, func(t *testing.T) { a := assertions.New(t) - buf, err := tc.Input.Marshal() + buf, err := proto.Marshal(tc.Input) if !a.So(err, should.BeNil) { t.FailNow() } @@ -360,7 +361,7 @@ func TestProtobufV2Status(t *testing.T) { } { tcok := t.Run(tc.Name, func(t *testing.T) { a := assertions.New(t) - buf, err := tc.input.Marshal() + buf, err := proto.Marshal(tc.input) if !a.So(err, should.BeNil) { t.FailNow() } From f0c63e221cce5f985730ad03ca252484c29d009e Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Tue, 20 Dec 2022 10:26:51 +0100 Subject: [PATCH 23/30] all: Use proto.Unmarshal --- pkg/gatewayserver/io/mqtt/format_protobufv2.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/gatewayserver/io/mqtt/format_protobufv2.go b/pkg/gatewayserver/io/mqtt/format_protobufv2.go index 4617e848c9..20c7ddadd2 100644 --- a/pkg/gatewayserver/io/mqtt/format_protobufv2.go +++ b/pkg/gatewayserver/io/mqtt/format_protobufv2.go @@ -89,7 +89,7 @@ func (protobufv2) FromDownlink(down *ttnpb.DownlinkMessage, _ *ttnpb.GatewayIden func (protobufv2) ToUplink(message []byte, ids *ttnpb.GatewayIdentifiers) (*ttnpb.UplinkMessage, error) { v2uplink := &ttnpbv2.UplinkMessage{} - err := v2uplink.Unmarshal(message) + err := proto.Unmarshal(message, v2uplink) if err != nil { return nil, err } @@ -165,7 +165,7 @@ var ttkgPlatformRegex = regexp.MustCompile(`The Things Gateway v1 - BL (r[0-9]+\ func (protobufv2) ToStatus(message []byte, _ *ttnpb.GatewayIdentifiers) (*ttnpb.GatewayStatus, error) { v2status := &ttnpbv2.StatusMessage{} - err := v2status.Unmarshal(message) + err := proto.Unmarshal(message, v2status) if err != nil { return nil, err } From ad9b755ded0c892858ab7c552128d03207d4cb59 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Tue, 20 Dec 2022 10:30:04 +0100 Subject: [PATCH 24/30] all: Use proto.Equal --- pkg/joinserver/redis/registry.go | 3 ++- pkg/networkserver/grpc_gsns.go | 2 +- .../internal/test/shared/device_registry.go | 26 +++---------------- 3 files changed, 7 insertions(+), 24 deletions(-) diff --git a/pkg/joinserver/redis/registry.go b/pkg/joinserver/redis/registry.go index f4c1a5944a..ae62cf2e56 100644 --- a/pkg/joinserver/redis/registry.go +++ b/pkg/joinserver/redis/registry.go @@ -29,6 +29,7 @@ import ( "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/types" "go.thethings.network/lorawan-stack/v3/pkg/unique" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -257,7 +258,7 @@ func (r *DeviceRegistry) set(ctx context.Context, tx *redis.Tx, uid string, gets if ttnpb.HasAnyField(sets, "provisioner_id") && pb.ProvisionerId != stored.ProvisionerId { return nil, errReadOnlyField.WithAttributes("field", "provisioner_id") } - if ttnpb.HasAnyField(sets, "provisioning_data") && !pb.ProvisioningData.Equal(stored.ProvisioningData) { + if ttnpb.HasAnyField(sets, "provisioning_data") && !proto.Equal(pb.ProvisioningData, stored.ProvisioningData) { return nil, errReadOnlyField.WithAttributes("field", "provisioning_data") } if err := cmd.ScanProto(updated); err != nil { diff --git a/pkg/networkserver/grpc_gsns.go b/pkg/networkserver/grpc_gsns.go index faf36a088f..ab0ed4e342 100644 --- a/pkg/networkserver/grpc_gsns.go +++ b/pkg/networkserver/grpc_gsns.go @@ -1009,7 +1009,7 @@ func (ns *NetworkServer) handleDataUplink(ctx context.Context, up *ttnpb.UplinkM return nil, nil, errOutdatedData.New() } - if !matched.Device.CreatedAt.Equal(stored.CreatedAt) || !matched.Device.UpdatedAt.Equal(stored.UpdatedAt) { + if !proto.Equal(matched.Device.CreatedAt, stored.CreatedAt) || !proto.Equal(matched.Device.UpdatedAt, stored.UpdatedAt) { matched, ok, err = ns.matchAndHandleDataUplink(ctx, stored, up, true, matched.cmacFMatchingResult) if err != nil { return nil, nil, err diff --git a/pkg/networkserver/internal/test/shared/device_registry.go b/pkg/networkserver/internal/test/shared/device_registry.go index 32c8528929..cd71f2ee4d 100644 --- a/pkg/networkserver/internal/test/shared/device_registry.go +++ b/pkg/networkserver/internal/test/shared/device_registry.go @@ -15,7 +15,6 @@ package test import ( - "bytes" "context" "reflect" "testing" @@ -53,35 +52,18 @@ func nilEquality(a interface{}, b interface{}) (bool, bool) { return false, false } -func protoEquals(a proto.Message, b proto.Message) bool { - if eq, ok := nilEquality(a, b); ok { - return eq - } - - ab, err := proto.Marshal(a) - if err != nil { - panic(err) - } - bb, err := proto.Marshal(b) - if err != nil { - panic(err) - } - - return bytes.Equal(ab, bb) -} - func uplinkMatchEquals(a *UplinkMatch, b *UplinkMatch) bool { if m, ok := nilEquality(a, b); ok { return m } - return protoEquals(a.ApplicationIdentifiers, b.ApplicationIdentifiers) && + return proto.Equal(a.ApplicationIdentifiers, b.ApplicationIdentifiers) && a.DeviceID == b.DeviceID && a.LoRaWANVersion == b.LoRaWANVersion && - protoEquals(a.FNwkSIntKey, b.FNwkSIntKey) && + proto.Equal(a.FNwkSIntKey, b.FNwkSIntKey) && a.LastFCnt == b.LastFCnt && - protoEquals(a.ResetsFCnt, b.ResetsFCnt) && - protoEquals(a.Supports32BitFCnt, b.Supports32BitFCnt) && + proto.Equal(a.ResetsFCnt, b.ResetsFCnt) && + proto.Equal(a.Supports32BitFCnt, b.Supports32BitFCnt) && a.IsPending == b.IsPending } From fec2ce91d4ff200ffcf80abd831dafdf8b6fb9f4 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Tue, 20 Dec 2022 10:33:54 +0100 Subject: [PATCH 25/30] all: Use native JSONPb package --- pkg/jsonpb/copy.sh | 19 - pkg/jsonpb/marshaling.go | 264 ----- pkg/jsonpb/ttn.go | 52 +- pkg/jsonpb/utils.go | 21 - pkg/ttnpb/enums.go | 29 - pkg/ttnpb/lorawan.go | 241 ---- pkg/ttnpb/testdata/ttnpb_encoding_golden.md | 1181 ++++++++----------- pkg/ttnpb/ttnpb.go | 60 - pkg/ttnpb/ttnpb_encoding_test.go | 52 - 9 files changed, 503 insertions(+), 1416 deletions(-) delete mode 100755 pkg/jsonpb/copy.sh delete mode 100644 pkg/jsonpb/marshaling.go delete mode 100644 pkg/jsonpb/utils.go delete mode 100644 pkg/ttnpb/enums.go diff --git a/pkg/jsonpb/copy.sh b/pkg/jsonpb/copy.sh deleted file mode 100755 index d58f25e8e1..0000000000 --- a/pkg/jsonpb/copy.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash - -go get -d -u github.com/grpc-ecosystem/grpc-gateway/... - -sed \ - -e 's:runtime:jsonpb:' \ - -e 's:golang/protobuf:gogo/protobuf:g' \ - -e 's:JSONPb:GoGoJSONPb:g' \ - -e 's:DecoderWrapper:GoGoDecoderWrapper:g' \ - -e 's:DisallowUnknownFields:GoGoDisallowUnknownFields:g' \ - -e '/import (/a \ - . "github.com/grpc-ecosystem/grpc-gateway/runtime" // nolint: golint' \ - $GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/runtime/marshal_jsonpb.go > marshaling.go - -GO111MODULE=on go run golang.org/x/tools/cmd/goimports -w marshaling.go - -echo "// Code generated from github.com/grpc-ecosystem/grpc-gateway/runtime by copy.sh - -$(cat marshaling.go)" > marshaling.go diff --git a/pkg/jsonpb/marshaling.go b/pkg/jsonpb/marshaling.go deleted file mode 100644 index 516c559592..0000000000 --- a/pkg/jsonpb/marshaling.go +++ /dev/null @@ -1,264 +0,0 @@ -// Code generated from github.com/grpc-ecosystem/grpc-gateway/runtime by copy.sh - -package jsonpb - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "reflect" - - . "github.com/grpc-ecosystem/grpc-gateway/runtime" // nolint: golint - - "github.com/gogo/protobuf/jsonpb" - "google.golang.org/protobuf/proto" -) - -// GoGoJSONPb is a Marshaler which marshals/unmarshals into/from JSON -// with the "github.com/gogo/protobuf/jsonpb". -// It supports fully functionality of protobuf unlike JSONBuiltin. -// -// The NewDecoder method returns a GoGoDecoderWrapper, so the underlying -// *json.Decoder methods can be used. -type GoGoJSONPb jsonpb.Marshaler - -// ContentType always returns "application/json". -func (*GoGoJSONPb) ContentType() string { - return "application/json" -} - -// Marshal marshals "v" into JSON. -func (j *GoGoJSONPb) Marshal(v interface{}) ([]byte, error) { - if _, ok := v.(proto.Message); !ok { - return j.marshalNonProtoField(v) - } - - var buf bytes.Buffer - if err := j.marshalTo(&buf, v); err != nil { - return nil, err - } - return buf.Bytes(), nil -} - -func (j *GoGoJSONPb) marshalTo(w io.Writer, v interface{}) error { - p, ok := v.(proto.Message) - if !ok { - buf, err := j.marshalNonProtoField(v) - if err != nil { - return err - } - _, err = w.Write(buf) - return err - } - return (*jsonpb.Marshaler)(j).Marshal(w, p) -} - -// protoMessageType is stored to prevent constant lookup of the same type at jsonpb. -var protoMessageType = reflect.TypeOf((*proto.Message)(nil)).Elem() - -// marshalNonProto marshals a non-message field of a protobuf message. -// This function does not correctly marshals arbitrary data structure into JSON, -// but it is only capable of marshaling non-message field values of protobuf, -// i.e. primitive types, enums; pointers to primitives or enums; maps from -// integer/string types to primitives/enums/pointers to messages. -func (j *GoGoJSONPb) marshalNonProtoField(v interface{}) ([]byte, error) { - if v == nil { - return []byte("null"), nil - } - rv := reflect.ValueOf(v) - for rv.Kind() == reflect.Ptr { - if rv.IsNil() { - return []byte("null"), nil - } - rv = rv.Elem() - } - - if rv.Kind() == reflect.Slice { - if rv.IsNil() { - if j.EmitDefaults { - return []byte("[]"), nil - } - return []byte("null"), nil - } - - if rv.Type().Elem().Implements(protoMessageType) { - var buf bytes.Buffer - err := buf.WriteByte('[') - if err != nil { - return nil, err - } - for i := 0; i < rv.Len(); i++ { - if i != 0 { - err = buf.WriteByte(',') - if err != nil { - return nil, err - } - } - if err = (*jsonpb.Marshaler)(j).Marshal(&buf, rv.Index(i).Interface().(proto.Message)); err != nil { - return nil, err - } - } - err = buf.WriteByte(']') - if err != nil { - return nil, err - } - - return buf.Bytes(), nil - } - } - - if rv.Kind() == reflect.Map { - m := make(map[string]*json.RawMessage) - for _, k := range rv.MapKeys() { - buf, err := j.Marshal(rv.MapIndex(k).Interface()) - if err != nil { - return nil, err - } - m[fmt.Sprintf("%v", k.Interface())] = (*json.RawMessage)(&buf) - } - if j.Indent != "" { - return json.MarshalIndent(m, "", j.Indent) - } - return json.Marshal(m) - } - if enum, ok := rv.Interface().(protoEnum); ok && !j.EnumsAsInts { - return json.Marshal(enum.String()) - } - return json.Marshal(rv.Interface()) -} - -// Unmarshal unmarshals JSON "data" into "v" -func (j *GoGoJSONPb) Unmarshal(data []byte, v interface{}) error { - return unmarshalGoGoJSONPb(data, v) -} - -// NewDecoder returns a Decoder which reads JSON stream from "r". -func (j *GoGoJSONPb) NewDecoder(r io.Reader) Decoder { - d := json.NewDecoder(r) - return GoGoDecoderWrapper{Decoder: d} -} - -// GoGoDecoderWrapper is a wrapper around a *json.Decoder that adds -// support for protos to the Decode method. -type GoGoDecoderWrapper struct { - *json.Decoder -} - -// Decode wraps the embedded decoder's Decode method to support -// protos using a jsonpb.Unmarshaler. -func (d GoGoDecoderWrapper) Decode(v interface{}) error { - return decodeGoGoJSONPb(d.Decoder, v) -} - -// NewEncoder returns an Encoder which writes JSON stream into "w". -func (j *GoGoJSONPb) NewEncoder(w io.Writer) Encoder { - return EncoderFunc(func(v interface{}) error { - if err := j.marshalTo(w, v); err != nil { - return err - } - // mimic json.Encoder by adding a newline (makes output - // easier to read when it contains multiple encoded items) - _, err := w.Write(j.Delimiter()) - return err - }) -} - -func unmarshalGoGoJSONPb(data []byte, v interface{}) error { - d := json.NewDecoder(bytes.NewReader(data)) - return decodeGoGoJSONPb(d, v) -} - -func decodeGoGoJSONPb(d *json.Decoder, v interface{}) error { - p, ok := v.(proto.Message) - if !ok { - return decodeNonProtoField(d, v) - } - unmarshaler := &jsonpb.Unmarshaler{AllowUnknownFields: allowUnknownFields} - return unmarshaler.UnmarshalNext(d, p) -} - -func decodeNonProtoField(d *json.Decoder, v interface{}) error { - rv := reflect.ValueOf(v) - if rv.Kind() != reflect.Ptr { - return fmt.Errorf("%T is not a pointer", v) - } - for rv.Kind() == reflect.Ptr { - if rv.IsNil() { - rv.Set(reflect.New(rv.Type().Elem())) - } - if rv.Type().ConvertibleTo(typeProtoMessage) { - unmarshaler := &jsonpb.Unmarshaler{AllowUnknownFields: allowUnknownFields} - return unmarshaler.UnmarshalNext(d, rv.Interface().(proto.Message)) - } - rv = rv.Elem() - } - if rv.Kind() == reflect.Map { - if rv.IsNil() { - rv.Set(reflect.MakeMap(rv.Type())) - } - conv, ok := convFromType[rv.Type().Key().Kind()] - if !ok { - return fmt.Errorf("unsupported type of map field key: %v", rv.Type().Key()) - } - - m := make(map[string]*json.RawMessage) - if err := d.Decode(&m); err != nil { - return err - } - for k, v := range m { - result := conv.Call([]reflect.Value{reflect.ValueOf(k)}) - if err := result[1].Interface(); err != nil { - return err.(error) - } - bk := result[0] - bv := reflect.New(rv.Type().Elem()) - if err := unmarshalGoGoJSONPb([]byte(*v), bv.Interface()); err != nil { - return err - } - rv.SetMapIndex(bk, bv.Elem()) - } - return nil - } - if _, ok := rv.Interface().(protoEnum); ok { - var repr interface{} - if err := d.Decode(&repr); err != nil { - return err - } - switch repr.(type) { - case string: - // TODO(yugui) Should use proto.StructProperties? - return fmt.Errorf("unmarshaling of symbolic enum %q not supported: %T", repr, rv.Interface()) - case float64: - rv.Set(reflect.ValueOf(int32(repr.(float64))).Convert(rv.Type())) - return nil - default: - return fmt.Errorf("cannot assign %#v into Go type %T", repr, rv.Interface()) - } - } - return d.Decode(v) -} - -type protoEnum interface { - fmt.Stringer - EnumDescriptor() ([]byte, []int) -} - -var typeProtoMessage = reflect.TypeOf((*proto.Message)(nil)).Elem() - -// Delimiter for newline encoded JSON streams. -func (j *GoGoJSONPb) Delimiter() []byte { - return []byte("\n") -} - -// allowUnknownFields helps not to return an error when the destination -// is a struct and the input contains object keys which do not match any -// non-ignored, exported fields in the destination. -var allowUnknownFields = true - -// GoGoDisallowUnknownFields enables option in decoder (unmarshaller) to -// return an error when it finds an unknown field. This function must be -// called before using the JSON marshaller. -func GoGoDisallowUnknownFields() { - allowUnknownFields = false -} diff --git a/pkg/jsonpb/ttn.go b/pkg/jsonpb/ttn.go index f7ebd99958..0ca5c3243a 100644 --- a/pkg/jsonpb/ttn.go +++ b/pkg/jsonpb/ttn.go @@ -1,4 +1,4 @@ -// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. +// Copyright © 2022 The Things Network Foundation, The Things Industries B.V. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -21,40 +21,44 @@ import ( "sort" "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" - "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" "golang.org/x/exp/maps" + "google.golang.org/protobuf/encoding/protojson" "google.golang.org/protobuf/proto" ) // TTN returns the default JSONPb marshaler of The Things Stack. func TTN() *TTNMarshaler { return &TTNMarshaler{ - GoGoJSONPb: &GoGoJSONPb{ - OrigName: true, - EnumsAsInts: true, + JSONPb: &runtime.JSONPb{ + MarshalOptions: protojson.MarshalOptions{ + AllowPartial: true, + UseProtoNames: true, + UseEnumNumbers: true, + }, + UnmarshalOptions: protojson.UnmarshalOptions{ + AllowPartial: true, + }, }, } } // TTNMarshaler is the JSON marshaler/unmarshaler that is used in grpc-gateway. type TTNMarshaler struct { - *GoGoJSONPb + *runtime.JSONPb } -// ContentType returns the content-type of the marshaler. -func (*TTNMarshaler) ContentType() string { return "application/json" } - // Marshal marshals v to JSON. func (m *TTNMarshaler) Marshal(v any) ([]byte, error) { - b, err := marshalAny(v, m.GoGoJSONPb) + b, err := marshalAny(v, m.JSONPb) if err != nil { return nil, err } - if m.GoGoJSONPb.Indent == "" { + if m.JSONPb.Indent == "" { return b, nil } var buf bytes.Buffer - if err = json.Indent(&buf, b, "", m.GoGoJSONPb.Indent); err != nil { + if err = json.Indent(&buf, b, "", m.JSONPb.Indent); err != nil { return nil, err } return buf.Bytes(), nil @@ -103,27 +107,27 @@ func marshalMap[X any](kv map[string]X, fallback runtime.Marshaler) ([]byte, err // NewEncoder returns a new JSON encoder that writes values to w. func (m *TTNMarshaler) NewEncoder(w io.Writer) runtime.Encoder { - return &TTNEncoder{w: w, gogo: m.GoGoJSONPb} + return &TTNEncoder{w: w, inner: m.JSONPb} } // TTNEncoder marshals values to JSON and writes them to an io.Writer. type TTNEncoder struct { - w io.Writer - gogo *GoGoJSONPb + w io.Writer + inner *runtime.JSONPb } // Encode marshals v to JSON and writes it to the writer. func (e *TTNEncoder) Encode(v any) error { - b, err := marshalAny(v, e.gogo) + b, err := marshalAny(v, e.inner) if err != nil { return err } - if e.gogo.Indent == "" { + if e.inner.Indent == "" { _, err = e.w.Write(b) return err } var buf bytes.Buffer - if err = json.Indent(&buf, b, "", e.gogo.Indent); err != nil { + if err = json.Indent(&buf, b, "", e.inner.Indent); err != nil { return err } _, err = io.Copy(e.w, &buf) @@ -135,18 +139,18 @@ func (m *TTNMarshaler) Unmarshal(data []byte, v any) error { if unmarshaler, ok := v.(jsonplugin.Unmarshaler); ok { return jsonplugin.UnmarshalerConfig{}.Unmarshal(data, unmarshaler) } - return m.GoGoJSONPb.Unmarshal(data, v) + return m.JSONPb.Unmarshal(data, v) } // NewDecoder returns a new JSON decoder that reads data from r. func (m *TTNMarshaler) NewDecoder(r io.Reader) runtime.Decoder { - return &TTNDecoder{d: json.NewDecoder(r), gogo: m.GoGoJSONPb} + return &TTNDecoder{d: json.NewDecoder(r), inner: m.JSONPb} } // TTNDecoder reads JSON data from an io.Reader and unmarshals that into values. type TTNDecoder struct { - d *json.Decoder - gogo *GoGoJSONPb + d *json.Decoder + inner *runtime.JSONPb } // Decode reads a value from the reader and unmarshals v from JSON. @@ -159,7 +163,7 @@ func (d *TTNDecoder) Decode(v any) error { } return jsonplugin.UnmarshalerConfig{}.Unmarshal(data, unmarshaler) } - return GoGoDecoderWrapper{Decoder: d.d}.Decode(v) + return runtime.DecoderWrapper{Decoder: d.d, UnmarshalOptions: d.inner.UnmarshalOptions}.Decode(v) } // TTNEventStream returns a TTN JsonPb marshaler with double newlines for @@ -172,6 +176,6 @@ type ttnEventStream struct { *TTNMarshaler } -func (*ttnEventStream) ContentType() string { return "text/event-stream" } +func (*ttnEventStream) ContentType(_ any) string { return "text/event-stream" } func (*ttnEventStream) Delimiter() []byte { return []byte{'\n', '\n'} } diff --git a/pkg/jsonpb/utils.go b/pkg/jsonpb/utils.go deleted file mode 100644 index 0ebf441bd5..0000000000 --- a/pkg/jsonpb/utils.go +++ /dev/null @@ -1,21 +0,0 @@ -// Code generated from github.com/grpc-ecosystem/grpc-gateway/runtime - -package jsonpb - -import ( - "reflect" - - "github.com/grpc-ecosystem/grpc-gateway/runtime" -) - -var convFromType = map[reflect.Kind]reflect.Value{ - reflect.String: reflect.ValueOf(runtime.String), - reflect.Bool: reflect.ValueOf(runtime.Bool), - reflect.Float64: reflect.ValueOf(runtime.Float64), - reflect.Float32: reflect.ValueOf(runtime.Float32), - reflect.Int64: reflect.ValueOf(runtime.Int64), - reflect.Int32: reflect.ValueOf(runtime.Int32), - reflect.Uint64: reflect.ValueOf(runtime.Uint64), - reflect.Uint32: reflect.ValueOf(runtime.Uint32), - reflect.Slice: reflect.ValueOf(runtime.Bytes), -} diff --git a/pkg/ttnpb/enums.go b/pkg/ttnpb/enums.go deleted file mode 100644 index 2b46cdf390..0000000000 --- a/pkg/ttnpb/enums.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright © 2019 The Things Network Foundation, The Things Industries B.V. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package ttnpb - -import ( - "github.com/gogo/protobuf/jsonpb" -) - -// UnmarshalJSONPB implements json.Unmarshaler interface. -func (v *KeyProvisioning) UnmarshalJSONPB(_ *jsonpb.Unmarshaler, b []byte) error { - return v.UnmarshalJSON(b) -} - -// UnmarshalJSONPB implements json.Unmarshaler interface. -func (v *KeySecurity) UnmarshalJSONPB(u *jsonpb.Unmarshaler, b []byte) error { - return v.UnmarshalJSON(b) -} diff --git a/pkg/ttnpb/lorawan.go b/pkg/ttnpb/lorawan.go index 4ab25a5bc5..c0f84555aa 100644 --- a/pkg/ttnpb/lorawan.go +++ b/pkg/ttnpb/lorawan.go @@ -19,7 +19,6 @@ import ( "strconv" "time" - "github.com/gogo/protobuf/jsonpb" "github.com/vmihailenco/msgpack/v5" "go.thethings.network/lorawan-stack/v3/pkg/types" ) @@ -107,12 +106,6 @@ func (v DataRateIndex) MarshalBinary() ([]byte, error) { return marshalBinaryEnum(int32(v)), nil } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v DataRateIndex) MarshalJSONPB(*jsonpb.Marshaler) ([]byte, error) { - // NOTE: This ignores m.EnumsAsInts and always marshals as int. - return v.MarshalJSON() -} - // UnmarshalBinary implements encoding.BinaryUnmarshaler interface. func (v *DataRateIndex) UnmarshalBinary(b []byte) error { i, err := unmarshalEnumFromBinary("DataRateIndex", DataRateIndex_name, b) @@ -123,11 +116,6 @@ func (v *DataRateIndex) UnmarshalBinary(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *DataRateIndex) UnmarshalJSONPB(_ *jsonpb.Unmarshaler, b []byte) error { - return v.UnmarshalJSON(b) -} - // MarshalBinary implements encoding.BinaryMarshaler interface. func (v *DataRateIndexValue) MarshalBinary() ([]byte, error) { return v.GetValue().MarshalBinary() @@ -138,11 +126,6 @@ func (v *DataRateIndexValue) MarshalText() ([]byte, error) { return v.GetValue().MarshalText() } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v *DataRateIndexValue) MarshalJSONPB(m *jsonpb.Marshaler) ([]byte, error) { - return v.GetValue().MarshalJSONPB(m) -} - // UnmarshalBinary implements encoding.BinaryUnmarshaler interface. func (v *DataRateIndexValue) UnmarshalBinary(b []byte) error { var vv DataRateIndex @@ -167,18 +150,6 @@ func (v *DataRateIndexValue) UnmarshalText(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *DataRateIndexValue) UnmarshalJSONPB(u *jsonpb.Unmarshaler, b []byte) error { - var vv DataRateIndex - if err := vv.UnmarshalJSONPB(u, b); err != nil { - return err - } - *v = DataRateIndexValue{ - Value: vv, - } - return nil -} - // FieldIsZero returns whether path p is zero. func (v *DataRateIndexValue) FieldIsZero(p string) bool { if v == nil { @@ -196,12 +167,6 @@ func (v DataRateOffset) MarshalBinary() ([]byte, error) { return marshalBinaryEnum(int32(v)), nil } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v DataRateOffset) MarshalJSONPB(*jsonpb.Marshaler) ([]byte, error) { - // NOTE: This ignores m.EnumsAsInts and always marshals as int. - return v.MarshalJSON() -} - // UnmarshalBinary implements encoding.BinaryUnmarshaler interface. func (v *DataRateOffset) UnmarshalBinary(b []byte) error { i, err := unmarshalEnumFromBinary("DataRateOffset", DataRateOffset_name, b) @@ -212,11 +177,6 @@ func (v *DataRateOffset) UnmarshalBinary(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *DataRateOffset) UnmarshalJSONPB(_ *jsonpb.Unmarshaler, b []byte) error { - return v.UnmarshalJSON(b) -} - // MarshalBinary implements encoding.BinaryMarshaler interface. func (v *DataRateOffsetValue) MarshalBinary() ([]byte, error) { return v.GetValue().MarshalBinary() @@ -227,11 +187,6 @@ func (v *DataRateOffsetValue) MarshalText() ([]byte, error) { return v.GetValue().MarshalText() } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v *DataRateOffsetValue) MarshalJSONPB(m *jsonpb.Marshaler) ([]byte, error) { - return v.GetValue().MarshalJSONPB(m) -} - // UnmarshalBinary implements encoding.BinaryUnmarshaler interface. func (v *DataRateOffsetValue) UnmarshalBinary(b []byte) error { var vv DataRateOffset @@ -256,18 +211,6 @@ func (v *DataRateOffsetValue) UnmarshalText(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *DataRateOffsetValue) UnmarshalJSONPB(u *jsonpb.Unmarshaler, b []byte) error { - var vv DataRateOffset - if err := vv.UnmarshalJSONPB(u, b); err != nil { - return err - } - *v = DataRateOffsetValue{ - Value: vv, - } - return nil -} - // FieldIsZero returns whether path p is zero. func (v *DataRateOffsetValue) FieldIsZero(p string) bool { if v == nil { @@ -285,11 +228,6 @@ func (v *FrequencyValue) MarshalText() ([]byte, error) { return []byte(strconv.FormatUint(v.GetValue(), 10)), nil } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v *FrequencyValue) MarshalJSONPB(*jsonpb.Marshaler) ([]byte, error) { - return v.MarshalJSON() -} - // UnmarshalText implements encoding.TextUnmarshaler interface. func (v *FrequencyValue) UnmarshalText(b []byte) error { var vv uint64 @@ -303,11 +241,6 @@ func (v *FrequencyValue) UnmarshalText(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *FrequencyValue) UnmarshalJSONPB(_ *jsonpb.Unmarshaler, b []byte) error { - return v.UnmarshalJSON(b) -} - // FieldIsZero returns whether path p is zero. func (v *FrequencyValue) FieldIsZero(p string) bool { if v == nil { @@ -325,11 +258,6 @@ func (v *ZeroableFrequencyValue) MarshalText() ([]byte, error) { return []byte(strconv.FormatUint(v.GetValue(), 10)), nil } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v *ZeroableFrequencyValue) MarshalJSONPB(*jsonpb.Marshaler) ([]byte, error) { - return v.MarshalJSON() -} - // UnmarshalText implements encoding.TextUnmarshaler interface. func (v *ZeroableFrequencyValue) UnmarshalText(b []byte) error { var vv uint64 @@ -343,11 +271,6 @@ func (v *ZeroableFrequencyValue) UnmarshalText(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *ZeroableFrequencyValue) UnmarshalJSONPB(_ *jsonpb.Unmarshaler, b []byte) error { - return v.UnmarshalJSON(b) -} - // FieldIsZero returns whether path p is zero. func (v *ZeroableFrequencyValue) FieldIsZero(p string) bool { if v == nil { @@ -453,11 +376,6 @@ func (v AggregatedDutyCycle) MarshalBinary() ([]byte, error) { return marshalBinaryEnum(int32(v)), nil } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v AggregatedDutyCycle) MarshalJSONPB(m *jsonpb.Marshaler) ([]byte, error) { - return marshalJSONPBEnum(m, AggregatedDutyCycle_name, int32(v)) -} - // UnmarshalBinary implements encoding.BinaryUnmarshaler interface. func (v *AggregatedDutyCycle) UnmarshalBinary(b []byte) error { i, err := unmarshalEnumFromBinary("AggregatedDutyCycle", AggregatedDutyCycle_name, b) @@ -468,11 +386,6 @@ func (v *AggregatedDutyCycle) UnmarshalBinary(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *AggregatedDutyCycle) UnmarshalJSONPB(_ *jsonpb.Unmarshaler, b []byte) error { - return v.UnmarshalJSON(b) -} - // MarshalBinary implements encoding.BinaryMarshaler interface. func (v *AggregatedDutyCycleValue) MarshalBinary() ([]byte, error) { return v.GetValue().MarshalBinary() @@ -483,11 +396,6 @@ func (v *AggregatedDutyCycleValue) MarshalText() ([]byte, error) { return v.GetValue().MarshalText() } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v *AggregatedDutyCycleValue) MarshalJSONPB(m *jsonpb.Marshaler) ([]byte, error) { - return v.GetValue().MarshalJSONPB(m) -} - // UnmarshalBinary implements encoding.BinaryUnmarshaler interface. func (v *AggregatedDutyCycleValue) UnmarshalBinary(b []byte) error { var vv AggregatedDutyCycle @@ -512,18 +420,6 @@ func (v *AggregatedDutyCycleValue) UnmarshalText(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *AggregatedDutyCycleValue) UnmarshalJSONPB(u *jsonpb.Unmarshaler, b []byte) error { - var vv AggregatedDutyCycle - if err := vv.UnmarshalJSONPB(u, b); err != nil { - return err - } - *v = AggregatedDutyCycleValue{ - Value: vv, - } - return nil -} - // FieldIsZero returns whether path p is zero. func (v *AggregatedDutyCycleValue) FieldIsZero(p string) bool { if v == nil { @@ -541,11 +437,6 @@ func (v PingSlotPeriod) MarshalBinary() ([]byte, error) { return marshalBinaryEnum(int32(v)), nil } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v PingSlotPeriod) MarshalJSONPB(m *jsonpb.Marshaler) ([]byte, error) { - return marshalJSONPBEnum(m, PingSlotPeriod_name, int32(v)) -} - // UnmarshalBinary implements encoding.BinaryUnmarshaler interface. func (v *PingSlotPeriod) UnmarshalBinary(b []byte) error { i, err := unmarshalEnumFromBinary("PingSlotPeriod", PingSlotPeriod_name, b) @@ -556,11 +447,6 @@ func (v *PingSlotPeriod) UnmarshalBinary(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *PingSlotPeriod) UnmarshalJSONPB(_ *jsonpb.Unmarshaler, b []byte) error { - return v.UnmarshalJSON(b) -} - // MarshalBinary implements encoding.BinaryMarshaler interface. func (v *PingSlotPeriodValue) MarshalBinary() ([]byte, error) { return v.GetValue().MarshalBinary() @@ -571,11 +457,6 @@ func (v *PingSlotPeriodValue) MarshalText() ([]byte, error) { return v.GetValue().MarshalText() } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v *PingSlotPeriodValue) MarshalJSONPB(m *jsonpb.Marshaler) ([]byte, error) { - return v.GetValue().MarshalJSONPB(m) -} - // UnmarshalBinary implements encoding.BinaryUnmarshaler interface. func (v *PingSlotPeriodValue) UnmarshalBinary(b []byte) error { var vv PingSlotPeriod @@ -600,18 +481,6 @@ func (v *PingSlotPeriodValue) UnmarshalText(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *PingSlotPeriodValue) UnmarshalJSONPB(u *jsonpb.Unmarshaler, b []byte) error { - var vv PingSlotPeriod - if err := vv.UnmarshalJSONPB(u, b); err != nil { - return err - } - *v = PingSlotPeriodValue{ - Value: vv, - } - return nil -} - // FieldIsZero returns whether path p is zero. func (v *PingSlotPeriodValue) FieldIsZero(p string) bool { if v == nil { @@ -684,27 +553,11 @@ func (v *DeviceEIRP) UnmarshalBinary(b []byte) error { return nil } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v DeviceEIRP) MarshalJSONPB(*jsonpb.Marshaler) ([]byte, error) { - // NOTE: This ignores m.EnumsAsInts and always marshals as int. - return v.MarshalJSON() -} - -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *DeviceEIRP) UnmarshalJSONPB(_ *jsonpb.Unmarshaler, b []byte) error { - return v.UnmarshalJSON(b) -} - // MarshalBinary implements encoding.BinaryMarshaler interface. func (v ADRAckLimitExponent) MarshalBinary() ([]byte, error) { return marshalBinaryEnum(int32(v)), nil } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v ADRAckLimitExponent) MarshalJSONPB(m *jsonpb.Marshaler) ([]byte, error) { - return marshalJSONPBEnum(m, ADRAckLimitExponent_name, int32(v)) -} - // UnmarshalBinary implements encoding.BinaryUnmarshaler interface. func (v *ADRAckLimitExponent) UnmarshalBinary(b []byte) error { i, err := unmarshalEnumFromBinary("ADRAckLimitExponent", ADRAckLimitExponent_name, b) @@ -715,11 +568,6 @@ func (v *ADRAckLimitExponent) UnmarshalBinary(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *ADRAckLimitExponent) UnmarshalJSONPB(_ *jsonpb.Unmarshaler, b []byte) error { - return v.UnmarshalJSON(b) -} - // MarshalBinary implements encoding.BinaryMarshaler interface. func (v *ADRAckLimitExponentValue) MarshalBinary() ([]byte, error) { return v.GetValue().MarshalBinary() @@ -730,11 +578,6 @@ func (v *ADRAckLimitExponentValue) MarshalText() ([]byte, error) { return v.GetValue().MarshalText() } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v *ADRAckLimitExponentValue) MarshalJSONPB(m *jsonpb.Marshaler) ([]byte, error) { - return v.GetValue().MarshalJSONPB(m) -} - // UnmarshalBinary implements encoding.BinaryUnmarshaler interface. func (v *ADRAckLimitExponentValue) UnmarshalBinary(b []byte) error { var vv ADRAckLimitExponent @@ -759,18 +602,6 @@ func (v *ADRAckLimitExponentValue) UnmarshalText(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *ADRAckLimitExponentValue) UnmarshalJSONPB(u *jsonpb.Unmarshaler, b []byte) error { - var vv ADRAckLimitExponent - if err := vv.UnmarshalJSONPB(u, b); err != nil { - return err - } - *v = ADRAckLimitExponentValue{ - Value: vv, - } - return nil -} - // FieldIsZero returns whether path p is zero. func (v *ADRAckLimitExponentValue) FieldIsZero(p string) bool { if v == nil { @@ -788,11 +619,6 @@ func (v ADRAckDelayExponent) MarshalBinary() ([]byte, error) { return marshalBinaryEnum(int32(v)), nil } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v ADRAckDelayExponent) MarshalJSONPB(m *jsonpb.Marshaler) ([]byte, error) { - return marshalJSONPBEnum(m, ADRAckDelayExponent_name, int32(v)) -} - // UnmarshalBinary implements encoding.BinaryUnmarshaler interface. func (v *ADRAckDelayExponent) UnmarshalBinary(b []byte) error { i, err := unmarshalEnumFromBinary("ADRAckDelayExponent", ADRAckDelayExponent_name, b) @@ -803,11 +629,6 @@ func (v *ADRAckDelayExponent) UnmarshalBinary(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *ADRAckDelayExponent) UnmarshalJSONPB(_ *jsonpb.Unmarshaler, b []byte) error { - return v.UnmarshalJSON(b) -} - // MarshalBinary implements encoding.BinaryMarshaler interface. func (v *ADRAckDelayExponentValue) MarshalBinary() ([]byte, error) { return v.GetValue().MarshalBinary() @@ -818,11 +639,6 @@ func (v *ADRAckDelayExponentValue) MarshalText() ([]byte, error) { return v.GetValue().MarshalText() } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v *ADRAckDelayExponentValue) MarshalJSONPB(m *jsonpb.Marshaler) ([]byte, error) { - return v.GetValue().MarshalJSONPB(m) -} - // UnmarshalBinary implements encoding.BinaryUnmarshaler interface. func (v *ADRAckDelayExponentValue) UnmarshalBinary(b []byte) error { var vv ADRAckDelayExponent @@ -847,18 +663,6 @@ func (v *ADRAckDelayExponentValue) UnmarshalText(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *ADRAckDelayExponentValue) UnmarshalJSONPB(u *jsonpb.Unmarshaler, b []byte) error { - var vv ADRAckDelayExponent - if err := vv.UnmarshalJSONPB(u, b); err != nil { - return err - } - *v = ADRAckDelayExponentValue{ - Value: vv, - } - return nil -} - // FieldIsZero returns whether path p is zero. func (v *ADRAckDelayExponentValue) FieldIsZero(p string) bool { if v == nil { @@ -876,12 +680,6 @@ func (v RxDelay) MarshalBinary() ([]byte, error) { return marshalBinaryEnum(int32(v)), nil } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v RxDelay) MarshalJSONPB(*jsonpb.Marshaler) ([]byte, error) { - // NOTE: This ignores m.EnumsAsInts and always marshals as int. - return v.MarshalJSON() -} - // UnmarshalBinary implements encoding.BinaryUnmarshaler interface. func (v *RxDelay) UnmarshalBinary(b []byte) error { i, err := unmarshalEnumFromBinary("RxDelay", RxDelay_name, b) @@ -892,11 +690,6 @@ func (v *RxDelay) UnmarshalBinary(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *RxDelay) UnmarshalJSONPB(_ *jsonpb.Unmarshaler, b []byte) error { - return v.UnmarshalJSON(b) -} - // MarshalBinary implements encoding.BinaryMarshaler interface. func (v *RxDelayValue) MarshalBinary() ([]byte, error) { return v.GetValue().MarshalBinary() @@ -907,11 +700,6 @@ func (v *RxDelayValue) MarshalText() ([]byte, error) { return v.GetValue().MarshalText() } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v *RxDelayValue) MarshalJSONPB(m *jsonpb.Marshaler) ([]byte, error) { - return v.GetValue().MarshalJSONPB(m) -} - // UnmarshalBinary implements encoding.BinaryUnmarshaler interface. func (v *RxDelayValue) UnmarshalBinary(b []byte) error { var vv RxDelay @@ -936,18 +724,6 @@ func (v *RxDelayValue) UnmarshalText(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *RxDelayValue) UnmarshalJSONPB(u *jsonpb.Unmarshaler, b []byte) error { - var vv RxDelay - if err := vv.UnmarshalJSONPB(u, b); err != nil { - return err - } - *v = RxDelayValue{ - Value: vv, - } - return nil -} - // FieldIsZero returns whether path p is zero. func (v *RxDelayValue) FieldIsZero(p string) bool { if v == nil { @@ -1354,11 +1130,6 @@ func (v *DeviceEIRPValue) MarshalText() ([]byte, error) { return v.GetValue().MarshalText() } -// MarshalJSONPB implements jsonpb.JSONPBMarshaler interface. -func (v *DeviceEIRPValue) MarshalJSONPB(m *jsonpb.Marshaler) ([]byte, error) { - return v.GetValue().MarshalJSONPB(m) -} - // UnmarshalBinary implements encoding.BinaryUnmarshaler interface. func (v *DeviceEIRPValue) UnmarshalBinary(b []byte) error { var vv DeviceEIRP @@ -1383,18 +1154,6 @@ func (v *DeviceEIRPValue) UnmarshalText(b []byte) error { return nil } -// UnmarshalJSONPB implements jsonpb.JSONPBUnmarshaler interface. -func (v *DeviceEIRPValue) UnmarshalJSONPB(u *jsonpb.Unmarshaler, b []byte) error { - var vv DeviceEIRP - if err := vv.UnmarshalJSONPB(u, b); err != nil { - return err - } - *v = DeviceEIRPValue{ - Value: vv, - } - return nil -} - // FieldIsZero returns whether path p is zero. func (v *DeviceEIRPValue) FieldIsZero(p string) bool { if v == nil { diff --git a/pkg/ttnpb/testdata/ttnpb_encoding_golden.md b/pkg/ttnpb/testdata/ttnpb_encoding_golden.md index a7054a2239..a57c844fad 100644 --- a/pkg/ttnpb/testdata/ttnpb_encoding_golden.md +++ b/pkg/ttnpb/testdata/ttnpb_encoding_golden.md @@ -16,22 +16,22 @@ Binary | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_512 | [9] Binary | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_64 | [6] Binary | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_8 | [3] Binary | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_8192 | [13] -Binary | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_1 | [0] -Binary | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_1024 | [10] -Binary | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_128 | [7] -Binary | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_16 | [4] -Binary | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_16384 | [14] -Binary | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_2 | [1] -Binary | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_2048 | [11] -Binary | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_256 | [8] -Binary | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_32 | [5] -Binary | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_32768 | [15] -Binary | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_4 | [2] -Binary | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_4096 | [12] -Binary | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_512 | [9] -Binary | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_64 | [6] -Binary | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_8 | [3] -Binary | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_8192 | [13] +Binary | ttnpb.ADRAckDelayExponentValue | | [0] +Binary | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_1024 | [10] +Binary | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_128 | [7] +Binary | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_16 | [4] +Binary | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_16384 | [14] +Binary | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_2 | [1] +Binary | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_2048 | [11] +Binary | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_256 | [8] +Binary | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_32 | [5] +Binary | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_32768 | [15] +Binary | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_4 | [2] +Binary | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_4096 | [12] +Binary | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_512 | [9] +Binary | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_64 | [6] +Binary | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_8 | [3] +Binary | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_8192 | [13] Binary | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_1 | [0] Binary | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_1024 | [10] Binary | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_128 | [7] @@ -48,22 +48,22 @@ Binary | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_512 | [9] Binary | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_64 | [6] Binary | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_8 | [3] Binary | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_8192 | [13] -Binary | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_1 | [0] -Binary | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_1024 | [10] -Binary | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_128 | [7] -Binary | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_16 | [4] -Binary | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_16384 | [14] -Binary | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_2 | [1] -Binary | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_2048 | [11] -Binary | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_256 | [8] -Binary | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_32 | [5] -Binary | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_32768 | [15] -Binary | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_4 | [2] -Binary | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_4096 | [12] -Binary | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_512 | [9] -Binary | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_64 | [6] -Binary | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_8 | [3] -Binary | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_8192 | [13] +Binary | ttnpb.ADRAckLimitExponentValue | | [0] +Binary | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_1024 | [10] +Binary | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_128 | [7] +Binary | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_16 | [4] +Binary | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_16384 | [14] +Binary | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_2 | [1] +Binary | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_2048 | [11] +Binary | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_256 | [8] +Binary | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_32 | [5] +Binary | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_32768 | [15] +Binary | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_4 | [2] +Binary | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_4096 | [12] +Binary | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_512 | [9] +Binary | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_64 | [6] +Binary | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_8 | [3] +Binary | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_8192 | [13] Binary | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_1 | [0] Binary | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_1024 | [10] Binary | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_128 | [7] @@ -80,22 +80,22 @@ Binary | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_512 | [9] Binary | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_64 | [6] Binary | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_8 | [3] Binary | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_8192 | [13] -Binary | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_1 | [0] -Binary | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_1024 | [10] -Binary | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_128 | [7] -Binary | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_16 | [4] -Binary | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_16384 | [14] -Binary | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_2 | [1] -Binary | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_2048 | [11] -Binary | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_256 | [8] -Binary | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_32 | [5] -Binary | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_32768 | [15] -Binary | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_4 | [2] -Binary | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_4096 | [12] -Binary | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_512 | [9] -Binary | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_64 | [6] -Binary | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_8 | [3] -Binary | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_8192 | [13] +Binary | ttnpb.AggregatedDutyCycleValue | | [0] +Binary | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_1024 | [10] +Binary | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_128 | [7] +Binary | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_16 | [4] +Binary | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_16384 | [14] +Binary | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_2 | [1] +Binary | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_2048 | [11] +Binary | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_256 | [8] +Binary | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_32 | [5] +Binary | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_32768 | [15] +Binary | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_4 | [2] +Binary | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_4096 | [12] +Binary | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_512 | [9] +Binary | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_64 | [6] +Binary | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_8 | [3] +Binary | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_8192 | [13] Binary | ttnpb.CFListType | CHANNEL_MASKS | [1] Binary | ttnpb.CFListType | FREQUENCIES | [0] Binary | ttnpb.Class | CLASS_A | [0] @@ -117,22 +117,22 @@ Binary | ttnpb.DataRateIndex | DATA_RATE_6 | [6] Binary | ttnpb.DataRateIndex | DATA_RATE_7 | [7] Binary | ttnpb.DataRateIndex | DATA_RATE_8 | [8] Binary | ttnpb.DataRateIndex | DATA_RATE_9 | [9] -Binary | ttnpb.DataRateIndexValue | 0 | [0] -Binary | ttnpb.DataRateIndexValue | 1 | [1] -Binary | ttnpb.DataRateIndexValue | 10 | [10] -Binary | ttnpb.DataRateIndexValue | 11 | [11] -Binary | ttnpb.DataRateIndexValue | 12 | [12] -Binary | ttnpb.DataRateIndexValue | 13 | [13] -Binary | ttnpb.DataRateIndexValue | 14 | [14] -Binary | ttnpb.DataRateIndexValue | 15 | [15] -Binary | ttnpb.DataRateIndexValue | 2 | [2] -Binary | ttnpb.DataRateIndexValue | 3 | [3] -Binary | ttnpb.DataRateIndexValue | 4 | [4] -Binary | ttnpb.DataRateIndexValue | 5 | [5] -Binary | ttnpb.DataRateIndexValue | 6 | [6] -Binary | ttnpb.DataRateIndexValue | 7 | [7] -Binary | ttnpb.DataRateIndexValue | 8 | [8] -Binary | ttnpb.DataRateIndexValue | 9 | [9] +Binary | ttnpb.DataRateIndexValue | | [0] +Binary | ttnpb.DataRateIndexValue | value:DATA_RATE_1 | [1] +Binary | ttnpb.DataRateIndexValue | value:DATA_RATE_10 | [10] +Binary | ttnpb.DataRateIndexValue | value:DATA_RATE_11 | [11] +Binary | ttnpb.DataRateIndexValue | value:DATA_RATE_12 | [12] +Binary | ttnpb.DataRateIndexValue | value:DATA_RATE_13 | [13] +Binary | ttnpb.DataRateIndexValue | value:DATA_RATE_14 | [14] +Binary | ttnpb.DataRateIndexValue | value:DATA_RATE_15 | [15] +Binary | ttnpb.DataRateIndexValue | value:DATA_RATE_2 | [2] +Binary | ttnpb.DataRateIndexValue | value:DATA_RATE_3 | [3] +Binary | ttnpb.DataRateIndexValue | value:DATA_RATE_4 | [4] +Binary | ttnpb.DataRateIndexValue | value:DATA_RATE_5 | [5] +Binary | ttnpb.DataRateIndexValue | value:DATA_RATE_6 | [6] +Binary | ttnpb.DataRateIndexValue | value:DATA_RATE_7 | [7] +Binary | ttnpb.DataRateIndexValue | value:DATA_RATE_8 | [8] +Binary | ttnpb.DataRateIndexValue | value:DATA_RATE_9 | [9] Binary | ttnpb.DataRateOffset | DATA_RATE_OFFSET_0 | [0] Binary | ttnpb.DataRateOffset | DATA_RATE_OFFSET_1 | [1] Binary | ttnpb.DataRateOffset | DATA_RATE_OFFSET_2 | [2] @@ -141,14 +141,14 @@ Binary | ttnpb.DataRateOffset | DATA_RATE_OFFSET_4 | [4] Binary | ttnpb.DataRateOffset | DATA_RATE_OFFSET_5 | [5] Binary | ttnpb.DataRateOffset | DATA_RATE_OFFSET_6 | [6] Binary | ttnpb.DataRateOffset | DATA_RATE_OFFSET_7 | [7] -Binary | ttnpb.DataRateOffsetValue | 0 | [0] -Binary | ttnpb.DataRateOffsetValue | 1 | [1] -Binary | ttnpb.DataRateOffsetValue | 2 | [2] -Binary | ttnpb.DataRateOffsetValue | 3 | [3] -Binary | ttnpb.DataRateOffsetValue | 4 | [4] -Binary | ttnpb.DataRateOffsetValue | 5 | [5] -Binary | ttnpb.DataRateOffsetValue | 6 | [6] -Binary | ttnpb.DataRateOffsetValue | 7 | [7] +Binary | ttnpb.DataRateOffsetValue | | [0] +Binary | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_1 | [1] +Binary | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_2 | [2] +Binary | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_3 | [3] +Binary | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_4 | [4] +Binary | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_5 | [5] +Binary | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_6 | [6] +Binary | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_7 | [7] Binary | ttnpb.DeviceEIRP | DEVICE_EIRP_10 | [1] Binary | ttnpb.DeviceEIRP | DEVICE_EIRP_12 | [2] Binary | ttnpb.DeviceEIRP | DEVICE_EIRP_13 | [3] @@ -165,22 +165,22 @@ Binary | ttnpb.DeviceEIRP | DEVICE_EIRP_30 | [13] Binary | ttnpb.DeviceEIRP | DEVICE_EIRP_33 | [14] Binary | ttnpb.DeviceEIRP | DEVICE_EIRP_36 | [15] Binary | ttnpb.DeviceEIRP | DEVICE_EIRP_8 | [0] -Binary | ttnpb.DeviceEIRPValue | DEVICE_EIRP_10 | [1] -Binary | ttnpb.DeviceEIRPValue | DEVICE_EIRP_12 | [2] -Binary | ttnpb.DeviceEIRPValue | DEVICE_EIRP_13 | [3] -Binary | ttnpb.DeviceEIRPValue | DEVICE_EIRP_14 | [4] -Binary | ttnpb.DeviceEIRPValue | DEVICE_EIRP_16 | [5] -Binary | ttnpb.DeviceEIRPValue | DEVICE_EIRP_18 | [6] -Binary | ttnpb.DeviceEIRPValue | DEVICE_EIRP_20 | [7] -Binary | ttnpb.DeviceEIRPValue | DEVICE_EIRP_21 | [8] -Binary | ttnpb.DeviceEIRPValue | DEVICE_EIRP_24 | [9] -Binary | ttnpb.DeviceEIRPValue | DEVICE_EIRP_26 | [10] -Binary | ttnpb.DeviceEIRPValue | DEVICE_EIRP_27 | [11] -Binary | ttnpb.DeviceEIRPValue | DEVICE_EIRP_29 | [12] -Binary | ttnpb.DeviceEIRPValue | DEVICE_EIRP_30 | [13] -Binary | ttnpb.DeviceEIRPValue | DEVICE_EIRP_33 | [14] -Binary | ttnpb.DeviceEIRPValue | DEVICE_EIRP_36 | [15] -Binary | ttnpb.DeviceEIRPValue | DEVICE_EIRP_8 | [0] +Binary | ttnpb.DeviceEIRPValue | | [0] +Binary | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_10 | [1] +Binary | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_12 | [2] +Binary | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_13 | [3] +Binary | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_14 | [4] +Binary | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_16 | [5] +Binary | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_18 | [6] +Binary | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_20 | [7] +Binary | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_21 | [8] +Binary | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_24 | [9] +Binary | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_26 | [10] +Binary | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_27 | [11] +Binary | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_29 | [12] +Binary | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_30 | [13] +Binary | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_33 | [14] +Binary | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_36 | [15] Binary | ttnpb.JoinRequestType | JOIN | [255] Binary | ttnpb.JoinRequestType | REJOIN_CONTEXT | [0] Binary | ttnpb.JoinRequestType | REJOIN_KEYS | [2] @@ -258,14 +258,14 @@ Binary | ttnpb.PingSlotPeriod | PING_EVERY_32S | [5] Binary | ttnpb.PingSlotPeriod | PING_EVERY_4S | [2] Binary | ttnpb.PingSlotPeriod | PING_EVERY_64S | [6] Binary | ttnpb.PingSlotPeriod | PING_EVERY_8S | [3] -Binary | ttnpb.PingSlotPeriodValue | PING_EVERY_128S | [7] -Binary | ttnpb.PingSlotPeriodValue | PING_EVERY_16S | [4] -Binary | ttnpb.PingSlotPeriodValue | PING_EVERY_1S | [0] -Binary | ttnpb.PingSlotPeriodValue | PING_EVERY_2S | [1] -Binary | ttnpb.PingSlotPeriodValue | PING_EVERY_32S | [5] -Binary | ttnpb.PingSlotPeriodValue | PING_EVERY_4S | [2] -Binary | ttnpb.PingSlotPeriodValue | PING_EVERY_64S | [6] -Binary | ttnpb.PingSlotPeriodValue | PING_EVERY_8S | [3] +Binary | ttnpb.PingSlotPeriodValue | | [0] +Binary | ttnpb.PingSlotPeriodValue | value:PING_EVERY_128S | [7] +Binary | ttnpb.PingSlotPeriodValue | value:PING_EVERY_16S | [4] +Binary | ttnpb.PingSlotPeriodValue | value:PING_EVERY_2S | [1] +Binary | ttnpb.PingSlotPeriodValue | value:PING_EVERY_32S | [5] +Binary | ttnpb.PingSlotPeriodValue | value:PING_EVERY_4S | [2] +Binary | ttnpb.PingSlotPeriodValue | value:PING_EVERY_64S | [6] +Binary | ttnpb.PingSlotPeriodValue | value:PING_EVERY_8S | [3] Binary | ttnpb.RejoinCountExponent | REJOIN_COUNT_1024 | [6] Binary | ttnpb.RejoinCountExponent | REJOIN_COUNT_128 | [3] Binary | ttnpb.RejoinCountExponent | REJOIN_COUNT_131072 | [13] @@ -325,22 +325,22 @@ Binary | ttnpb.RxDelay | RX_DELAY_6 | [6] Binary | ttnpb.RxDelay | RX_DELAY_7 | [7] Binary | ttnpb.RxDelay | RX_DELAY_8 | [8] Binary | ttnpb.RxDelay | RX_DELAY_9 | [9] -Binary | ttnpb.RxDelayValue | 0 | [0] -Binary | ttnpb.RxDelayValue | 1 | [1] -Binary | ttnpb.RxDelayValue | 10 | [10] -Binary | ttnpb.RxDelayValue | 11 | [11] -Binary | ttnpb.RxDelayValue | 12 | [12] -Binary | ttnpb.RxDelayValue | 13 | [13] -Binary | ttnpb.RxDelayValue | 14 | [14] -Binary | ttnpb.RxDelayValue | 15 | [15] -Binary | ttnpb.RxDelayValue | 2 | [2] -Binary | ttnpb.RxDelayValue | 3 | [3] -Binary | ttnpb.RxDelayValue | 4 | [4] -Binary | ttnpb.RxDelayValue | 5 | [5] -Binary | ttnpb.RxDelayValue | 6 | [6] -Binary | ttnpb.RxDelayValue | 7 | [7] -Binary | ttnpb.RxDelayValue | 8 | [8] -Binary | ttnpb.RxDelayValue | 9 | [9] +Binary | ttnpb.RxDelayValue | | [0] +Binary | ttnpb.RxDelayValue | value:RX_DELAY_1 | [1] +Binary | ttnpb.RxDelayValue | value:RX_DELAY_10 | [10] +Binary | ttnpb.RxDelayValue | value:RX_DELAY_11 | [11] +Binary | ttnpb.RxDelayValue | value:RX_DELAY_12 | [12] +Binary | ttnpb.RxDelayValue | value:RX_DELAY_13 | [13] +Binary | ttnpb.RxDelayValue | value:RX_DELAY_14 | [14] +Binary | ttnpb.RxDelayValue | value:RX_DELAY_15 | [15] +Binary | ttnpb.RxDelayValue | value:RX_DELAY_2 | [2] +Binary | ttnpb.RxDelayValue | value:RX_DELAY_3 | [3] +Binary | ttnpb.RxDelayValue | value:RX_DELAY_4 | [4] +Binary | ttnpb.RxDelayValue | value:RX_DELAY_5 | [5] +Binary | ttnpb.RxDelayValue | value:RX_DELAY_6 | [6] +Binary | ttnpb.RxDelayValue | value:RX_DELAY_7 | [7] +Binary | ttnpb.RxDelayValue | value:RX_DELAY_8 | [8] +Binary | ttnpb.RxDelayValue | value:RX_DELAY_9 | [9] Binary | ttnpb.TxSchedulePriority | ABOVE_NORMAL | [4] Binary | ttnpb.TxSchedulePriority | BELOW_NORMAL | [2] Binary | ttnpb.TxSchedulePriority | HIGH | [5] @@ -364,22 +364,22 @@ JSON | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_512 | "ADR_ACK_DELAY_512" JSON | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_64 | "ADR_ACK_DELAY_64" JSON | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_8 | "ADR_ACK_DELAY_8" JSON | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_8192 | "ADR_ACK_DELAY_8192" -JSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_1 | "ADR_ACK_DELAY_1" -JSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_1024 | "ADR_ACK_DELAY_1024" -JSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_128 | "ADR_ACK_DELAY_128" -JSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_16 | "ADR_ACK_DELAY_16" -JSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_16384 | "ADR_ACK_DELAY_16384" -JSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_2 | "ADR_ACK_DELAY_2" -JSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_2048 | "ADR_ACK_DELAY_2048" -JSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_256 | "ADR_ACK_DELAY_256" -JSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_32 | "ADR_ACK_DELAY_32" -JSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_32768 | "ADR_ACK_DELAY_32768" -JSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_4 | "ADR_ACK_DELAY_4" -JSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_4096 | "ADR_ACK_DELAY_4096" -JSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_512 | "ADR_ACK_DELAY_512" -JSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_64 | "ADR_ACK_DELAY_64" -JSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_8 | "ADR_ACK_DELAY_8" -JSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_8192 | "ADR_ACK_DELAY_8192" +JSON | ttnpb.ADRAckDelayExponentValue | | "ADR_ACK_DELAY_1" +JSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_1024 | "ADR_ACK_DELAY_1024" +JSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_128 | "ADR_ACK_DELAY_128" +JSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_16 | "ADR_ACK_DELAY_16" +JSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_16384 | "ADR_ACK_DELAY_16384" +JSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_2 | "ADR_ACK_DELAY_2" +JSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_2048 | "ADR_ACK_DELAY_2048" +JSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_256 | "ADR_ACK_DELAY_256" +JSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_32 | "ADR_ACK_DELAY_32" +JSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_32768 | "ADR_ACK_DELAY_32768" +JSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_4 | "ADR_ACK_DELAY_4" +JSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_4096 | "ADR_ACK_DELAY_4096" +JSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_512 | "ADR_ACK_DELAY_512" +JSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_64 | "ADR_ACK_DELAY_64" +JSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_8 | "ADR_ACK_DELAY_8" +JSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_8192 | "ADR_ACK_DELAY_8192" JSON | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_1 | "ADR_ACK_LIMIT_1" JSON | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_1024 | "ADR_ACK_LIMIT_1024" JSON | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_128 | "ADR_ACK_LIMIT_128" @@ -396,22 +396,22 @@ JSON | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_512 | "ADR_ACK_LIMIT_512" JSON | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_64 | "ADR_ACK_LIMIT_64" JSON | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_8 | "ADR_ACK_LIMIT_8" JSON | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_8192 | "ADR_ACK_LIMIT_8192" -JSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_1 | "ADR_ACK_LIMIT_1" -JSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_1024 | "ADR_ACK_LIMIT_1024" -JSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_128 | "ADR_ACK_LIMIT_128" -JSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_16 | "ADR_ACK_LIMIT_16" -JSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_16384 | "ADR_ACK_LIMIT_16384" -JSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_2 | "ADR_ACK_LIMIT_2" -JSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_2048 | "ADR_ACK_LIMIT_2048" -JSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_256 | "ADR_ACK_LIMIT_256" -JSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_32 | "ADR_ACK_LIMIT_32" -JSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_32768 | "ADR_ACK_LIMIT_32768" -JSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_4 | "ADR_ACK_LIMIT_4" -JSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_4096 | "ADR_ACK_LIMIT_4096" -JSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_512 | "ADR_ACK_LIMIT_512" -JSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_64 | "ADR_ACK_LIMIT_64" -JSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_8 | "ADR_ACK_LIMIT_8" -JSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_8192 | "ADR_ACK_LIMIT_8192" +JSON | ttnpb.ADRAckLimitExponentValue | | "ADR_ACK_LIMIT_1" +JSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_1024 | "ADR_ACK_LIMIT_1024" +JSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_128 | "ADR_ACK_LIMIT_128" +JSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_16 | "ADR_ACK_LIMIT_16" +JSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_16384 | "ADR_ACK_LIMIT_16384" +JSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_2 | "ADR_ACK_LIMIT_2" +JSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_2048 | "ADR_ACK_LIMIT_2048" +JSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_256 | "ADR_ACK_LIMIT_256" +JSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_32 | "ADR_ACK_LIMIT_32" +JSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_32768 | "ADR_ACK_LIMIT_32768" +JSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_4 | "ADR_ACK_LIMIT_4" +JSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_4096 | "ADR_ACK_LIMIT_4096" +JSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_512 | "ADR_ACK_LIMIT_512" +JSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_64 | "ADR_ACK_LIMIT_64" +JSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_8 | "ADR_ACK_LIMIT_8" +JSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_8192 | "ADR_ACK_LIMIT_8192" JSON | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_1 | "DUTY_CYCLE_1" JSON | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_1024 | "DUTY_CYCLE_1024" JSON | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_128 | "DUTY_CYCLE_128" @@ -428,24 +428,24 @@ JSON | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_512 | "DUTY_CYCLE_512" JSON | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_64 | "DUTY_CYCLE_64" JSON | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_8 | "DUTY_CYCLE_8" JSON | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_8192 | "DUTY_CYCLE_8192" -JSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_1 | "DUTY_CYCLE_1" -JSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_1024 | "DUTY_CYCLE_1024" -JSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_128 | "DUTY_CYCLE_128" -JSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_16 | "DUTY_CYCLE_16" -JSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_16384 | "DUTY_CYCLE_16384" -JSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_2 | "DUTY_CYCLE_2" -JSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_2048 | "DUTY_CYCLE_2048" -JSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_256 | "DUTY_CYCLE_256" -JSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_32 | "DUTY_CYCLE_32" -JSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_32768 | "DUTY_CYCLE_32768" -JSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_4 | "DUTY_CYCLE_4" -JSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_4096 | "DUTY_CYCLE_4096" -JSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_512 | "DUTY_CYCLE_512" -JSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_64 | "DUTY_CYCLE_64" -JSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_8 | "DUTY_CYCLE_8" -JSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_8192 | "DUTY_CYCLE_8192" -JSON | ttnpb.BoolValue | false | false -JSON | ttnpb.BoolValue | true | true +JSON | ttnpb.AggregatedDutyCycleValue | | "DUTY_CYCLE_1" +JSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_1024 | "DUTY_CYCLE_1024" +JSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_128 | "DUTY_CYCLE_128" +JSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_16 | "DUTY_CYCLE_16" +JSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_16384 | "DUTY_CYCLE_16384" +JSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_2 | "DUTY_CYCLE_2" +JSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_2048 | "DUTY_CYCLE_2048" +JSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_256 | "DUTY_CYCLE_256" +JSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_32 | "DUTY_CYCLE_32" +JSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_32768 | "DUTY_CYCLE_32768" +JSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_4 | "DUTY_CYCLE_4" +JSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_4096 | "DUTY_CYCLE_4096" +JSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_512 | "DUTY_CYCLE_512" +JSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_64 | "DUTY_CYCLE_64" +JSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_8 | "DUTY_CYCLE_8" +JSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_8192 | "DUTY_CYCLE_8192" +JSON | ttnpb.BoolValue | | false +JSON | ttnpb.BoolValue | value:true | true JSON | ttnpb.CFListType | CHANNEL_MASKS | "CHANNEL_MASKS" JSON | ttnpb.CFListType | FREQUENCIES | "FREQUENCIES" JSON | ttnpb.Class | CLASS_A | "CLASS_A" @@ -467,22 +467,22 @@ JSON | ttnpb.DataRateIndex | DATA_RATE_6 | 6 JSON | ttnpb.DataRateIndex | DATA_RATE_7 | 7 JSON | ttnpb.DataRateIndex | DATA_RATE_8 | 8 JSON | ttnpb.DataRateIndex | DATA_RATE_9 | 9 -JSON | ttnpb.DataRateIndexValue | 0 | 0 -JSON | ttnpb.DataRateIndexValue | 1 | 1 -JSON | ttnpb.DataRateIndexValue | 10 | 10 -JSON | ttnpb.DataRateIndexValue | 11 | 11 -JSON | ttnpb.DataRateIndexValue | 12 | 12 -JSON | ttnpb.DataRateIndexValue | 13 | 13 -JSON | ttnpb.DataRateIndexValue | 14 | 14 -JSON | ttnpb.DataRateIndexValue | 15 | 15 -JSON | ttnpb.DataRateIndexValue | 2 | 2 -JSON | ttnpb.DataRateIndexValue | 3 | 3 -JSON | ttnpb.DataRateIndexValue | 4 | 4 -JSON | ttnpb.DataRateIndexValue | 5 | 5 -JSON | ttnpb.DataRateIndexValue | 6 | 6 -JSON | ttnpb.DataRateIndexValue | 7 | 7 -JSON | ttnpb.DataRateIndexValue | 8 | 8 -JSON | ttnpb.DataRateIndexValue | 9 | 9 +JSON | ttnpb.DataRateIndexValue | | 0 +JSON | ttnpb.DataRateIndexValue | value:DATA_RATE_1 | 1 +JSON | ttnpb.DataRateIndexValue | value:DATA_RATE_10 | 10 +JSON | ttnpb.DataRateIndexValue | value:DATA_RATE_11 | 11 +JSON | ttnpb.DataRateIndexValue | value:DATA_RATE_12 | 12 +JSON | ttnpb.DataRateIndexValue | value:DATA_RATE_13 | 13 +JSON | ttnpb.DataRateIndexValue | value:DATA_RATE_14 | 14 +JSON | ttnpb.DataRateIndexValue | value:DATA_RATE_15 | 15 +JSON | ttnpb.DataRateIndexValue | value:DATA_RATE_2 | 2 +JSON | ttnpb.DataRateIndexValue | value:DATA_RATE_3 | 3 +JSON | ttnpb.DataRateIndexValue | value:DATA_RATE_4 | 4 +JSON | ttnpb.DataRateIndexValue | value:DATA_RATE_5 | 5 +JSON | ttnpb.DataRateIndexValue | value:DATA_RATE_6 | 6 +JSON | ttnpb.DataRateIndexValue | value:DATA_RATE_7 | 7 +JSON | ttnpb.DataRateIndexValue | value:DATA_RATE_8 | 8 +JSON | ttnpb.DataRateIndexValue | value:DATA_RATE_9 | 9 JSON | ttnpb.DataRateOffset | DATA_RATE_OFFSET_0 | 0 JSON | ttnpb.DataRateOffset | DATA_RATE_OFFSET_1 | 1 JSON | ttnpb.DataRateOffset | DATA_RATE_OFFSET_2 | 2 @@ -491,14 +491,14 @@ JSON | ttnpb.DataRateOffset | DATA_RATE_OFFSET_4 | 4 JSON | ttnpb.DataRateOffset | DATA_RATE_OFFSET_5 | 5 JSON | ttnpb.DataRateOffset | DATA_RATE_OFFSET_6 | 6 JSON | ttnpb.DataRateOffset | DATA_RATE_OFFSET_7 | 7 -JSON | ttnpb.DataRateOffsetValue | 0 | 0 -JSON | ttnpb.DataRateOffsetValue | 1 | 1 -JSON | ttnpb.DataRateOffsetValue | 2 | 2 -JSON | ttnpb.DataRateOffsetValue | 3 | 3 -JSON | ttnpb.DataRateOffsetValue | 4 | 4 -JSON | ttnpb.DataRateOffsetValue | 5 | 5 -JSON | ttnpb.DataRateOffsetValue | 6 | 6 -JSON | ttnpb.DataRateOffsetValue | 7 | 7 +JSON | ttnpb.DataRateOffsetValue | | 0 +JSON | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_1 | 1 +JSON | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_2 | 2 +JSON | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_3 | 3 +JSON | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_4 | 4 +JSON | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_5 | 5 +JSON | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_6 | 6 +JSON | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_7 | 7 JSON | ttnpb.DeviceEIRP | DEVICE_EIRP_10 | "DEVICE_EIRP_10" JSON | ttnpb.DeviceEIRP | DEVICE_EIRP_12 | "DEVICE_EIRP_12" JSON | ttnpb.DeviceEIRP | DEVICE_EIRP_13 | "DEVICE_EIRP_13" @@ -515,25 +515,25 @@ JSON | ttnpb.DeviceEIRP | DEVICE_EIRP_30 | "DEVICE_EIRP_30" JSON | ttnpb.DeviceEIRP | DEVICE_EIRP_33 | "DEVICE_EIRP_33" JSON | ttnpb.DeviceEIRP | DEVICE_EIRP_36 | "DEVICE_EIRP_36" JSON | ttnpb.DeviceEIRP | DEVICE_EIRP_8 | "DEVICE_EIRP_8" -JSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_10 | "DEVICE_EIRP_10" -JSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_12 | "DEVICE_EIRP_12" -JSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_13 | "DEVICE_EIRP_13" -JSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_14 | "DEVICE_EIRP_14" -JSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_16 | "DEVICE_EIRP_16" -JSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_18 | "DEVICE_EIRP_18" -JSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_20 | "DEVICE_EIRP_20" -JSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_21 | "DEVICE_EIRP_21" -JSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_24 | "DEVICE_EIRP_24" -JSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_26 | "DEVICE_EIRP_26" -JSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_27 | "DEVICE_EIRP_27" -JSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_29 | "DEVICE_EIRP_29" -JSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_30 | "DEVICE_EIRP_30" -JSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_33 | "DEVICE_EIRP_33" -JSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_36 | "DEVICE_EIRP_36" -JSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_8 | "DEVICE_EIRP_8" -JSON | ttnpb.FrequencyValue | 100000 | "100000" -JSON | ttnpb.FrequencyValue | 2000000 | "2000000" -JSON | ttnpb.FrequencyValue | 30000000 | "30000000" +JSON | ttnpb.DeviceEIRPValue | | "DEVICE_EIRP_8" +JSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_10 | "DEVICE_EIRP_10" +JSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_12 | "DEVICE_EIRP_12" +JSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_13 | "DEVICE_EIRP_13" +JSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_14 | "DEVICE_EIRP_14" +JSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_16 | "DEVICE_EIRP_16" +JSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_18 | "DEVICE_EIRP_18" +JSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_20 | "DEVICE_EIRP_20" +JSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_21 | "DEVICE_EIRP_21" +JSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_24 | "DEVICE_EIRP_24" +JSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_26 | "DEVICE_EIRP_26" +JSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_27 | "DEVICE_EIRP_27" +JSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_29 | "DEVICE_EIRP_29" +JSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_30 | "DEVICE_EIRP_30" +JSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_33 | "DEVICE_EIRP_33" +JSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_36 | "DEVICE_EIRP_36" +JSON | ttnpb.FrequencyValue | value:100000 | "100000" +JSON | ttnpb.FrequencyValue | value:2000000 | "2000000" +JSON | ttnpb.FrequencyValue | value:30000000 | "30000000" JSON | ttnpb.GatewayAntennaPlacement | INDOOR | "INDOOR" JSON | ttnpb.GatewayAntennaPlacement | OUTDOOR | "OUTDOOR" JSON | ttnpb.GatewayAntennaPlacement | PLACEMENT_UNKNOWN | "PLACEMENT_UNKNOWN" @@ -626,14 +626,14 @@ JSON | ttnpb.PingSlotPeriod | PING_EVERY_32S | "PING_EVERY_32S" JSON | ttnpb.PingSlotPeriod | PING_EVERY_4S | "PING_EVERY_4S" JSON | ttnpb.PingSlotPeriod | PING_EVERY_64S | "PING_EVERY_64S" JSON | ttnpb.PingSlotPeriod | PING_EVERY_8S | "PING_EVERY_8S" -JSON | ttnpb.PingSlotPeriodValue | PING_EVERY_128S | "PING_EVERY_128S" -JSON | ttnpb.PingSlotPeriodValue | PING_EVERY_16S | "PING_EVERY_16S" -JSON | ttnpb.PingSlotPeriodValue | PING_EVERY_1S | "PING_EVERY_1S" -JSON | ttnpb.PingSlotPeriodValue | PING_EVERY_2S | "PING_EVERY_2S" -JSON | ttnpb.PingSlotPeriodValue | PING_EVERY_32S | "PING_EVERY_32S" -JSON | ttnpb.PingSlotPeriodValue | PING_EVERY_4S | "PING_EVERY_4S" -JSON | ttnpb.PingSlotPeriodValue | PING_EVERY_64S | "PING_EVERY_64S" -JSON | ttnpb.PingSlotPeriodValue | PING_EVERY_8S | "PING_EVERY_8S" +JSON | ttnpb.PingSlotPeriodValue | | "PING_EVERY_1S" +JSON | ttnpb.PingSlotPeriodValue | value:PING_EVERY_128S | "PING_EVERY_128S" +JSON | ttnpb.PingSlotPeriodValue | value:PING_EVERY_16S | "PING_EVERY_16S" +JSON | ttnpb.PingSlotPeriodValue | value:PING_EVERY_2S | "PING_EVERY_2S" +JSON | ttnpb.PingSlotPeriodValue | value:PING_EVERY_32S | "PING_EVERY_32S" +JSON | ttnpb.PingSlotPeriodValue | value:PING_EVERY_4S | "PING_EVERY_4S" +JSON | ttnpb.PingSlotPeriodValue | value:PING_EVERY_64S | "PING_EVERY_64S" +JSON | ttnpb.PingSlotPeriodValue | value:PING_EVERY_8S | "PING_EVERY_8S" JSON | ttnpb.RejoinCountExponent | REJOIN_COUNT_1024 | "REJOIN_COUNT_1024" JSON | ttnpb.RejoinCountExponent | REJOIN_COUNT_128 | "REJOIN_COUNT_128" JSON | ttnpb.RejoinCountExponent | REJOIN_COUNT_131072 | "REJOIN_COUNT_131072" @@ -757,22 +757,22 @@ JSON | ttnpb.RxDelay | RX_DELAY_6 | 6 JSON | ttnpb.RxDelay | RX_DELAY_7 | 7 JSON | ttnpb.RxDelay | RX_DELAY_8 | 8 JSON | ttnpb.RxDelay | RX_DELAY_9 | 9 -JSON | ttnpb.RxDelayValue | 0 | 0 -JSON | ttnpb.RxDelayValue | 1 | 1 -JSON | ttnpb.RxDelayValue | 10 | 10 -JSON | ttnpb.RxDelayValue | 11 | 11 -JSON | ttnpb.RxDelayValue | 12 | 12 -JSON | ttnpb.RxDelayValue | 13 | 13 -JSON | ttnpb.RxDelayValue | 14 | 14 -JSON | ttnpb.RxDelayValue | 15 | 15 -JSON | ttnpb.RxDelayValue | 2 | 2 -JSON | ttnpb.RxDelayValue | 3 | 3 -JSON | ttnpb.RxDelayValue | 4 | 4 -JSON | ttnpb.RxDelayValue | 5 | 5 -JSON | ttnpb.RxDelayValue | 6 | 6 -JSON | ttnpb.RxDelayValue | 7 | 7 -JSON | ttnpb.RxDelayValue | 8 | 8 -JSON | ttnpb.RxDelayValue | 9 | 9 +JSON | ttnpb.RxDelayValue | | 0 +JSON | ttnpb.RxDelayValue | value:RX_DELAY_1 | 1 +JSON | ttnpb.RxDelayValue | value:RX_DELAY_10 | 10 +JSON | ttnpb.RxDelayValue | value:RX_DELAY_11 | 11 +JSON | ttnpb.RxDelayValue | value:RX_DELAY_12 | 12 +JSON | ttnpb.RxDelayValue | value:RX_DELAY_13 | 13 +JSON | ttnpb.RxDelayValue | value:RX_DELAY_14 | 14 +JSON | ttnpb.RxDelayValue | value:RX_DELAY_15 | 15 +JSON | ttnpb.RxDelayValue | value:RX_DELAY_2 | 2 +JSON | ttnpb.RxDelayValue | value:RX_DELAY_3 | 3 +JSON | ttnpb.RxDelayValue | value:RX_DELAY_4 | 4 +JSON | ttnpb.RxDelayValue | value:RX_DELAY_5 | 5 +JSON | ttnpb.RxDelayValue | value:RX_DELAY_6 | 6 +JSON | ttnpb.RxDelayValue | value:RX_DELAY_7 | 7 +JSON | ttnpb.RxDelayValue | value:RX_DELAY_8 | 8 +JSON | ttnpb.RxDelayValue | value:RX_DELAY_9 | 9 JSON | ttnpb.State | STATE_APPROVED | "STATE_APPROVED" JSON | ttnpb.State | STATE_FLAGGED | "STATE_FLAGGED" JSON | ttnpb.State | STATE_REJECTED | "STATE_REJECTED" @@ -785,241 +785,10 @@ JSON | ttnpb.TxSchedulePriority | HIGHEST | "HIGHEST" JSON | ttnpb.TxSchedulePriority | LOW | "LOW" JSON | ttnpb.TxSchedulePriority | LOWEST | "LOWEST" JSON | ttnpb.TxSchedulePriority | NORMAL | "NORMAL" -JSON | ttnpb.ZeroableFrequencyValue | 0 | "0" -JSON | ttnpb.ZeroableFrequencyValue | 100000 | "100000" -JSON | ttnpb.ZeroableFrequencyValue | 2000000 | "2000000" -JSON | ttnpb.ZeroableFrequencyValue | 30000000 | "30000000" -JSONPB | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_1 | "ADR_ACK_DELAY_1" -JSONPB | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_1024 | "ADR_ACK_DELAY_1024" -JSONPB | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_128 | "ADR_ACK_DELAY_128" -JSONPB | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_16 | "ADR_ACK_DELAY_16" -JSONPB | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_16384 | "ADR_ACK_DELAY_16384" -JSONPB | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_2 | "ADR_ACK_DELAY_2" -JSONPB | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_2048 | "ADR_ACK_DELAY_2048" -JSONPB | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_256 | "ADR_ACK_DELAY_256" -JSONPB | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_32 | "ADR_ACK_DELAY_32" -JSONPB | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_32768 | "ADR_ACK_DELAY_32768" -JSONPB | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_4 | "ADR_ACK_DELAY_4" -JSONPB | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_4096 | "ADR_ACK_DELAY_4096" -JSONPB | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_512 | "ADR_ACK_DELAY_512" -JSONPB | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_64 | "ADR_ACK_DELAY_64" -JSONPB | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_8 | "ADR_ACK_DELAY_8" -JSONPB | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_8192 | "ADR_ACK_DELAY_8192" -JSONPB | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_1 | "ADR_ACK_DELAY_1" -JSONPB | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_1024 | "ADR_ACK_DELAY_1024" -JSONPB | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_128 | "ADR_ACK_DELAY_128" -JSONPB | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_16 | "ADR_ACK_DELAY_16" -JSONPB | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_16384 | "ADR_ACK_DELAY_16384" -JSONPB | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_2 | "ADR_ACK_DELAY_2" -JSONPB | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_2048 | "ADR_ACK_DELAY_2048" -JSONPB | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_256 | "ADR_ACK_DELAY_256" -JSONPB | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_32 | "ADR_ACK_DELAY_32" -JSONPB | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_32768 | "ADR_ACK_DELAY_32768" -JSONPB | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_4 | "ADR_ACK_DELAY_4" -JSONPB | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_4096 | "ADR_ACK_DELAY_4096" -JSONPB | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_512 | "ADR_ACK_DELAY_512" -JSONPB | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_64 | "ADR_ACK_DELAY_64" -JSONPB | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_8 | "ADR_ACK_DELAY_8" -JSONPB | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_8192 | "ADR_ACK_DELAY_8192" -JSONPB | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_1 | "ADR_ACK_LIMIT_1" -JSONPB | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_1024 | "ADR_ACK_LIMIT_1024" -JSONPB | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_128 | "ADR_ACK_LIMIT_128" -JSONPB | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_16 | "ADR_ACK_LIMIT_16" -JSONPB | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_16384 | "ADR_ACK_LIMIT_16384" -JSONPB | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_2 | "ADR_ACK_LIMIT_2" -JSONPB | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_2048 | "ADR_ACK_LIMIT_2048" -JSONPB | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_256 | "ADR_ACK_LIMIT_256" -JSONPB | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_32 | "ADR_ACK_LIMIT_32" -JSONPB | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_32768 | "ADR_ACK_LIMIT_32768" -JSONPB | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_4 | "ADR_ACK_LIMIT_4" -JSONPB | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_4096 | "ADR_ACK_LIMIT_4096" -JSONPB | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_512 | "ADR_ACK_LIMIT_512" -JSONPB | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_64 | "ADR_ACK_LIMIT_64" -JSONPB | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_8 | "ADR_ACK_LIMIT_8" -JSONPB | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_8192 | "ADR_ACK_LIMIT_8192" -JSONPB | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_1 | "ADR_ACK_LIMIT_1" -JSONPB | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_1024 | "ADR_ACK_LIMIT_1024" -JSONPB | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_128 | "ADR_ACK_LIMIT_128" -JSONPB | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_16 | "ADR_ACK_LIMIT_16" -JSONPB | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_16384 | "ADR_ACK_LIMIT_16384" -JSONPB | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_2 | "ADR_ACK_LIMIT_2" -JSONPB | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_2048 | "ADR_ACK_LIMIT_2048" -JSONPB | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_256 | "ADR_ACK_LIMIT_256" -JSONPB | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_32 | "ADR_ACK_LIMIT_32" -JSONPB | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_32768 | "ADR_ACK_LIMIT_32768" -JSONPB | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_4 | "ADR_ACK_LIMIT_4" -JSONPB | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_4096 | "ADR_ACK_LIMIT_4096" -JSONPB | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_512 | "ADR_ACK_LIMIT_512" -JSONPB | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_64 | "ADR_ACK_LIMIT_64" -JSONPB | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_8 | "ADR_ACK_LIMIT_8" -JSONPB | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_8192 | "ADR_ACK_LIMIT_8192" -JSONPB | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_1 | "DUTY_CYCLE_1" -JSONPB | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_1024 | "DUTY_CYCLE_1024" -JSONPB | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_128 | "DUTY_CYCLE_128" -JSONPB | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_16 | "DUTY_CYCLE_16" -JSONPB | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_16384 | "DUTY_CYCLE_16384" -JSONPB | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_2 | "DUTY_CYCLE_2" -JSONPB | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_2048 | "DUTY_CYCLE_2048" -JSONPB | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_256 | "DUTY_CYCLE_256" -JSONPB | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_32 | "DUTY_CYCLE_32" -JSONPB | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_32768 | "DUTY_CYCLE_32768" -JSONPB | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_4 | "DUTY_CYCLE_4" -JSONPB | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_4096 | "DUTY_CYCLE_4096" -JSONPB | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_512 | "DUTY_CYCLE_512" -JSONPB | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_64 | "DUTY_CYCLE_64" -JSONPB | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_8 | "DUTY_CYCLE_8" -JSONPB | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_8192 | "DUTY_CYCLE_8192" -JSONPB | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_1 | "DUTY_CYCLE_1" -JSONPB | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_1024 | "DUTY_CYCLE_1024" -JSONPB | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_128 | "DUTY_CYCLE_128" -JSONPB | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_16 | "DUTY_CYCLE_16" -JSONPB | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_16384 | "DUTY_CYCLE_16384" -JSONPB | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_2 | "DUTY_CYCLE_2" -JSONPB | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_2048 | "DUTY_CYCLE_2048" -JSONPB | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_256 | "DUTY_CYCLE_256" -JSONPB | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_32 | "DUTY_CYCLE_32" -JSONPB | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_32768 | "DUTY_CYCLE_32768" -JSONPB | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_4 | "DUTY_CYCLE_4" -JSONPB | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_4096 | "DUTY_CYCLE_4096" -JSONPB | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_512 | "DUTY_CYCLE_512" -JSONPB | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_64 | "DUTY_CYCLE_64" -JSONPB | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_8 | "DUTY_CYCLE_8" -JSONPB | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_8192 | "DUTY_CYCLE_8192" -JSONPB | ttnpb.DataRateIndex | DATA_RATE_0 | 0 -JSONPB | ttnpb.DataRateIndex | DATA_RATE_1 | 1 -JSONPB | ttnpb.DataRateIndex | DATA_RATE_10 | 10 -JSONPB | ttnpb.DataRateIndex | DATA_RATE_11 | 11 -JSONPB | ttnpb.DataRateIndex | DATA_RATE_12 | 12 -JSONPB | ttnpb.DataRateIndex | DATA_RATE_13 | 13 -JSONPB | ttnpb.DataRateIndex | DATA_RATE_14 | 14 -JSONPB | ttnpb.DataRateIndex | DATA_RATE_15 | 15 -JSONPB | ttnpb.DataRateIndex | DATA_RATE_2 | 2 -JSONPB | ttnpb.DataRateIndex | DATA_RATE_3 | 3 -JSONPB | ttnpb.DataRateIndex | DATA_RATE_4 | 4 -JSONPB | ttnpb.DataRateIndex | DATA_RATE_5 | 5 -JSONPB | ttnpb.DataRateIndex | DATA_RATE_6 | 6 -JSONPB | ttnpb.DataRateIndex | DATA_RATE_7 | 7 -JSONPB | ttnpb.DataRateIndex | DATA_RATE_8 | 8 -JSONPB | ttnpb.DataRateIndex | DATA_RATE_9 | 9 -JSONPB | ttnpb.DataRateIndexValue | 0 | 0 -JSONPB | ttnpb.DataRateIndexValue | 1 | 1 -JSONPB | ttnpb.DataRateIndexValue | 10 | 10 -JSONPB | ttnpb.DataRateIndexValue | 11 | 11 -JSONPB | ttnpb.DataRateIndexValue | 12 | 12 -JSONPB | ttnpb.DataRateIndexValue | 13 | 13 -JSONPB | ttnpb.DataRateIndexValue | 14 | 14 -JSONPB | ttnpb.DataRateIndexValue | 15 | 15 -JSONPB | ttnpb.DataRateIndexValue | 2 | 2 -JSONPB | ttnpb.DataRateIndexValue | 3 | 3 -JSONPB | ttnpb.DataRateIndexValue | 4 | 4 -JSONPB | ttnpb.DataRateIndexValue | 5 | 5 -JSONPB | ttnpb.DataRateIndexValue | 6 | 6 -JSONPB | ttnpb.DataRateIndexValue | 7 | 7 -JSONPB | ttnpb.DataRateIndexValue | 8 | 8 -JSONPB | ttnpb.DataRateIndexValue | 9 | 9 -JSONPB | ttnpb.DataRateOffset | DATA_RATE_OFFSET_0 | 0 -JSONPB | ttnpb.DataRateOffset | DATA_RATE_OFFSET_1 | 1 -JSONPB | ttnpb.DataRateOffset | DATA_RATE_OFFSET_2 | 2 -JSONPB | ttnpb.DataRateOffset | DATA_RATE_OFFSET_3 | 3 -JSONPB | ttnpb.DataRateOffset | DATA_RATE_OFFSET_4 | 4 -JSONPB | ttnpb.DataRateOffset | DATA_RATE_OFFSET_5 | 5 -JSONPB | ttnpb.DataRateOffset | DATA_RATE_OFFSET_6 | 6 -JSONPB | ttnpb.DataRateOffset | DATA_RATE_OFFSET_7 | 7 -JSONPB | ttnpb.DataRateOffsetValue | 0 | 0 -JSONPB | ttnpb.DataRateOffsetValue | 1 | 1 -JSONPB | ttnpb.DataRateOffsetValue | 2 | 2 -JSONPB | ttnpb.DataRateOffsetValue | 3 | 3 -JSONPB | ttnpb.DataRateOffsetValue | 4 | 4 -JSONPB | ttnpb.DataRateOffsetValue | 5 | 5 -JSONPB | ttnpb.DataRateOffsetValue | 6 | 6 -JSONPB | ttnpb.DataRateOffsetValue | 7 | 7 -JSONPB | ttnpb.DeviceEIRP | DEVICE_EIRP_10 | "DEVICE_EIRP_10" -JSONPB | ttnpb.DeviceEIRP | DEVICE_EIRP_12 | "DEVICE_EIRP_12" -JSONPB | ttnpb.DeviceEIRP | DEVICE_EIRP_13 | "DEVICE_EIRP_13" -JSONPB | ttnpb.DeviceEIRP | DEVICE_EIRP_14 | "DEVICE_EIRP_14" -JSONPB | ttnpb.DeviceEIRP | DEVICE_EIRP_16 | "DEVICE_EIRP_16" -JSONPB | ttnpb.DeviceEIRP | DEVICE_EIRP_18 | "DEVICE_EIRP_18" -JSONPB | ttnpb.DeviceEIRP | DEVICE_EIRP_20 | "DEVICE_EIRP_20" -JSONPB | ttnpb.DeviceEIRP | DEVICE_EIRP_21 | "DEVICE_EIRP_21" -JSONPB | ttnpb.DeviceEIRP | DEVICE_EIRP_24 | "DEVICE_EIRP_24" -JSONPB | ttnpb.DeviceEIRP | DEVICE_EIRP_26 | "DEVICE_EIRP_26" -JSONPB | ttnpb.DeviceEIRP | DEVICE_EIRP_27 | "DEVICE_EIRP_27" -JSONPB | ttnpb.DeviceEIRP | DEVICE_EIRP_29 | "DEVICE_EIRP_29" -JSONPB | ttnpb.DeviceEIRP | DEVICE_EIRP_30 | "DEVICE_EIRP_30" -JSONPB | ttnpb.DeviceEIRP | DEVICE_EIRP_33 | "DEVICE_EIRP_33" -JSONPB | ttnpb.DeviceEIRP | DEVICE_EIRP_36 | "DEVICE_EIRP_36" -JSONPB | ttnpb.DeviceEIRP | DEVICE_EIRP_8 | "DEVICE_EIRP_8" -JSONPB | ttnpb.DeviceEIRPValue | DEVICE_EIRP_10 | "DEVICE_EIRP_10" -JSONPB | ttnpb.DeviceEIRPValue | DEVICE_EIRP_12 | "DEVICE_EIRP_12" -JSONPB | ttnpb.DeviceEIRPValue | DEVICE_EIRP_13 | "DEVICE_EIRP_13" -JSONPB | ttnpb.DeviceEIRPValue | DEVICE_EIRP_14 | "DEVICE_EIRP_14" -JSONPB | ttnpb.DeviceEIRPValue | DEVICE_EIRP_16 | "DEVICE_EIRP_16" -JSONPB | ttnpb.DeviceEIRPValue | DEVICE_EIRP_18 | "DEVICE_EIRP_18" -JSONPB | ttnpb.DeviceEIRPValue | DEVICE_EIRP_20 | "DEVICE_EIRP_20" -JSONPB | ttnpb.DeviceEIRPValue | DEVICE_EIRP_21 | "DEVICE_EIRP_21" -JSONPB | ttnpb.DeviceEIRPValue | DEVICE_EIRP_24 | "DEVICE_EIRP_24" -JSONPB | ttnpb.DeviceEIRPValue | DEVICE_EIRP_26 | "DEVICE_EIRP_26" -JSONPB | ttnpb.DeviceEIRPValue | DEVICE_EIRP_27 | "DEVICE_EIRP_27" -JSONPB | ttnpb.DeviceEIRPValue | DEVICE_EIRP_29 | "DEVICE_EIRP_29" -JSONPB | ttnpb.DeviceEIRPValue | DEVICE_EIRP_30 | "DEVICE_EIRP_30" -JSONPB | ttnpb.DeviceEIRPValue | DEVICE_EIRP_33 | "DEVICE_EIRP_33" -JSONPB | ttnpb.DeviceEIRPValue | DEVICE_EIRP_36 | "DEVICE_EIRP_36" -JSONPB | ttnpb.DeviceEIRPValue | DEVICE_EIRP_8 | "DEVICE_EIRP_8" -JSONPB | ttnpb.FrequencyValue | 100000 | "100000" -JSONPB | ttnpb.FrequencyValue | 2000000 | "2000000" -JSONPB | ttnpb.FrequencyValue | 30000000 | "30000000" -JSONPB | ttnpb.PingSlotPeriod | PING_EVERY_128S | "PING_EVERY_128S" -JSONPB | ttnpb.PingSlotPeriod | PING_EVERY_16S | "PING_EVERY_16S" -JSONPB | ttnpb.PingSlotPeriod | PING_EVERY_1S | "PING_EVERY_1S" -JSONPB | ttnpb.PingSlotPeriod | PING_EVERY_2S | "PING_EVERY_2S" -JSONPB | ttnpb.PingSlotPeriod | PING_EVERY_32S | "PING_EVERY_32S" -JSONPB | ttnpb.PingSlotPeriod | PING_EVERY_4S | "PING_EVERY_4S" -JSONPB | ttnpb.PingSlotPeriod | PING_EVERY_64S | "PING_EVERY_64S" -JSONPB | ttnpb.PingSlotPeriod | PING_EVERY_8S | "PING_EVERY_8S" -JSONPB | ttnpb.PingSlotPeriodValue | PING_EVERY_128S | "PING_EVERY_128S" -JSONPB | ttnpb.PingSlotPeriodValue | PING_EVERY_16S | "PING_EVERY_16S" -JSONPB | ttnpb.PingSlotPeriodValue | PING_EVERY_1S | "PING_EVERY_1S" -JSONPB | ttnpb.PingSlotPeriodValue | PING_EVERY_2S | "PING_EVERY_2S" -JSONPB | ttnpb.PingSlotPeriodValue | PING_EVERY_32S | "PING_EVERY_32S" -JSONPB | ttnpb.PingSlotPeriodValue | PING_EVERY_4S | "PING_EVERY_4S" -JSONPB | ttnpb.PingSlotPeriodValue | PING_EVERY_64S | "PING_EVERY_64S" -JSONPB | ttnpb.PingSlotPeriodValue | PING_EVERY_8S | "PING_EVERY_8S" -JSONPB | ttnpb.RxDelay | RX_DELAY_0 | 0 -JSONPB | ttnpb.RxDelay | RX_DELAY_1 | 1 -JSONPB | ttnpb.RxDelay | RX_DELAY_10 | 10 -JSONPB | ttnpb.RxDelay | RX_DELAY_11 | 11 -JSONPB | ttnpb.RxDelay | RX_DELAY_12 | 12 -JSONPB | ttnpb.RxDelay | RX_DELAY_13 | 13 -JSONPB | ttnpb.RxDelay | RX_DELAY_14 | 14 -JSONPB | ttnpb.RxDelay | RX_DELAY_15 | 15 -JSONPB | ttnpb.RxDelay | RX_DELAY_2 | 2 -JSONPB | ttnpb.RxDelay | RX_DELAY_3 | 3 -JSONPB | ttnpb.RxDelay | RX_DELAY_4 | 4 -JSONPB | ttnpb.RxDelay | RX_DELAY_5 | 5 -JSONPB | ttnpb.RxDelay | RX_DELAY_6 | 6 -JSONPB | ttnpb.RxDelay | RX_DELAY_7 | 7 -JSONPB | ttnpb.RxDelay | RX_DELAY_8 | 8 -JSONPB | ttnpb.RxDelay | RX_DELAY_9 | 9 -JSONPB | ttnpb.RxDelayValue | 0 | 0 -JSONPB | ttnpb.RxDelayValue | 1 | 1 -JSONPB | ttnpb.RxDelayValue | 10 | 10 -JSONPB | ttnpb.RxDelayValue | 11 | 11 -JSONPB | ttnpb.RxDelayValue | 12 | 12 -JSONPB | ttnpb.RxDelayValue | 13 | 13 -JSONPB | ttnpb.RxDelayValue | 14 | 14 -JSONPB | ttnpb.RxDelayValue | 15 | 15 -JSONPB | ttnpb.RxDelayValue | 2 | 2 -JSONPB | ttnpb.RxDelayValue | 3 | 3 -JSONPB | ttnpb.RxDelayValue | 4 | 4 -JSONPB | ttnpb.RxDelayValue | 5 | 5 -JSONPB | ttnpb.RxDelayValue | 6 | 6 -JSONPB | ttnpb.RxDelayValue | 7 | 7 -JSONPB | ttnpb.RxDelayValue | 8 | 8 -JSONPB | ttnpb.RxDelayValue | 9 | 9 -JSONPB | ttnpb.ZeroableFrequencyValue | 0 | "0" -JSONPB | ttnpb.ZeroableFrequencyValue | 100000 | "100000" -JSONPB | ttnpb.ZeroableFrequencyValue | 2000000 | "2000000" -JSONPB | ttnpb.ZeroableFrequencyValue | 30000000 | "30000000" +JSON | ttnpb.ZeroableFrequencyValue | | "0" +JSON | ttnpb.ZeroableFrequencyValue | value:100000 | "100000" +JSON | ttnpb.ZeroableFrequencyValue | value:2000000 | "2000000" +JSON | ttnpb.ZeroableFrequencyValue | value:30000000 | "30000000" ProtoJSON | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_1 | "ADR_ACK_DELAY_1" ProtoJSON | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_1024 | "ADR_ACK_DELAY_1024" ProtoJSON | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_128 | "ADR_ACK_DELAY_128" @@ -1036,22 +805,22 @@ ProtoJSON | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_512 | "ADR_ACK_DELAY_512" ProtoJSON | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_64 | "ADR_ACK_DELAY_64" ProtoJSON | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_8 | "ADR_ACK_DELAY_8" ProtoJSON | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_8192 | "ADR_ACK_DELAY_8192" -ProtoJSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_1 | "ADR_ACK_DELAY_1" -ProtoJSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_1024 | "ADR_ACK_DELAY_1024" -ProtoJSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_128 | "ADR_ACK_DELAY_128" -ProtoJSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_16 | "ADR_ACK_DELAY_16" -ProtoJSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_16384 | "ADR_ACK_DELAY_16384" -ProtoJSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_2 | "ADR_ACK_DELAY_2" -ProtoJSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_2048 | "ADR_ACK_DELAY_2048" -ProtoJSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_256 | "ADR_ACK_DELAY_256" -ProtoJSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_32 | "ADR_ACK_DELAY_32" -ProtoJSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_32768 | "ADR_ACK_DELAY_32768" -ProtoJSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_4 | "ADR_ACK_DELAY_4" -ProtoJSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_4096 | "ADR_ACK_DELAY_4096" -ProtoJSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_512 | "ADR_ACK_DELAY_512" -ProtoJSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_64 | "ADR_ACK_DELAY_64" -ProtoJSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_8 | "ADR_ACK_DELAY_8" -ProtoJSON | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_8192 | "ADR_ACK_DELAY_8192" +ProtoJSON | ttnpb.ADRAckDelayExponentValue | | "ADR_ACK_DELAY_1" +ProtoJSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_1024 | "ADR_ACK_DELAY_1024" +ProtoJSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_128 | "ADR_ACK_DELAY_128" +ProtoJSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_16 | "ADR_ACK_DELAY_16" +ProtoJSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_16384 | "ADR_ACK_DELAY_16384" +ProtoJSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_2 | "ADR_ACK_DELAY_2" +ProtoJSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_2048 | "ADR_ACK_DELAY_2048" +ProtoJSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_256 | "ADR_ACK_DELAY_256" +ProtoJSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_32 | "ADR_ACK_DELAY_32" +ProtoJSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_32768 | "ADR_ACK_DELAY_32768" +ProtoJSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_4 | "ADR_ACK_DELAY_4" +ProtoJSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_4096 | "ADR_ACK_DELAY_4096" +ProtoJSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_512 | "ADR_ACK_DELAY_512" +ProtoJSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_64 | "ADR_ACK_DELAY_64" +ProtoJSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_8 | "ADR_ACK_DELAY_8" +ProtoJSON | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_8192 | "ADR_ACK_DELAY_8192" ProtoJSON | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_1 | "ADR_ACK_LIMIT_1" ProtoJSON | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_1024 | "ADR_ACK_LIMIT_1024" ProtoJSON | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_128 | "ADR_ACK_LIMIT_128" @@ -1068,22 +837,22 @@ ProtoJSON | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_512 | "ADR_ACK_LIMIT_512" ProtoJSON | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_64 | "ADR_ACK_LIMIT_64" ProtoJSON | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_8 | "ADR_ACK_LIMIT_8" ProtoJSON | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_8192 | "ADR_ACK_LIMIT_8192" -ProtoJSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_1 | "ADR_ACK_LIMIT_1" -ProtoJSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_1024 | "ADR_ACK_LIMIT_1024" -ProtoJSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_128 | "ADR_ACK_LIMIT_128" -ProtoJSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_16 | "ADR_ACK_LIMIT_16" -ProtoJSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_16384 | "ADR_ACK_LIMIT_16384" -ProtoJSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_2 | "ADR_ACK_LIMIT_2" -ProtoJSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_2048 | "ADR_ACK_LIMIT_2048" -ProtoJSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_256 | "ADR_ACK_LIMIT_256" -ProtoJSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_32 | "ADR_ACK_LIMIT_32" -ProtoJSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_32768 | "ADR_ACK_LIMIT_32768" -ProtoJSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_4 | "ADR_ACK_LIMIT_4" -ProtoJSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_4096 | "ADR_ACK_LIMIT_4096" -ProtoJSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_512 | "ADR_ACK_LIMIT_512" -ProtoJSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_64 | "ADR_ACK_LIMIT_64" -ProtoJSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_8 | "ADR_ACK_LIMIT_8" -ProtoJSON | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_8192 | "ADR_ACK_LIMIT_8192" +ProtoJSON | ttnpb.ADRAckLimitExponentValue | | "ADR_ACK_LIMIT_1" +ProtoJSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_1024 | "ADR_ACK_LIMIT_1024" +ProtoJSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_128 | "ADR_ACK_LIMIT_128" +ProtoJSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_16 | "ADR_ACK_LIMIT_16" +ProtoJSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_16384 | "ADR_ACK_LIMIT_16384" +ProtoJSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_2 | "ADR_ACK_LIMIT_2" +ProtoJSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_2048 | "ADR_ACK_LIMIT_2048" +ProtoJSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_256 | "ADR_ACK_LIMIT_256" +ProtoJSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_32 | "ADR_ACK_LIMIT_32" +ProtoJSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_32768 | "ADR_ACK_LIMIT_32768" +ProtoJSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_4 | "ADR_ACK_LIMIT_4" +ProtoJSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_4096 | "ADR_ACK_LIMIT_4096" +ProtoJSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_512 | "ADR_ACK_LIMIT_512" +ProtoJSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_64 | "ADR_ACK_LIMIT_64" +ProtoJSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_8 | "ADR_ACK_LIMIT_8" +ProtoJSON | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_8192 | "ADR_ACK_LIMIT_8192" ProtoJSON | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_1 | "DUTY_CYCLE_1" ProtoJSON | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_1024 | "DUTY_CYCLE_1024" ProtoJSON | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_128 | "DUTY_CYCLE_128" @@ -1100,24 +869,24 @@ ProtoJSON | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_512 | "DUTY_CYCLE_512" ProtoJSON | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_64 | "DUTY_CYCLE_64" ProtoJSON | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_8 | "DUTY_CYCLE_8" ProtoJSON | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_8192 | "DUTY_CYCLE_8192" -ProtoJSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_1 | "DUTY_CYCLE_1" -ProtoJSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_1024 | "DUTY_CYCLE_1024" -ProtoJSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_128 | "DUTY_CYCLE_128" -ProtoJSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_16 | "DUTY_CYCLE_16" -ProtoJSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_16384 | "DUTY_CYCLE_16384" -ProtoJSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_2 | "DUTY_CYCLE_2" -ProtoJSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_2048 | "DUTY_CYCLE_2048" -ProtoJSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_256 | "DUTY_CYCLE_256" -ProtoJSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_32 | "DUTY_CYCLE_32" -ProtoJSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_32768 | "DUTY_CYCLE_32768" -ProtoJSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_4 | "DUTY_CYCLE_4" -ProtoJSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_4096 | "DUTY_CYCLE_4096" -ProtoJSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_512 | "DUTY_CYCLE_512" -ProtoJSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_64 | "DUTY_CYCLE_64" -ProtoJSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_8 | "DUTY_CYCLE_8" -ProtoJSON | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_8192 | "DUTY_CYCLE_8192" -ProtoJSON | ttnpb.BoolValue | false | false -ProtoJSON | ttnpb.BoolValue | true | true +ProtoJSON | ttnpb.AggregatedDutyCycleValue | | "DUTY_CYCLE_1" +ProtoJSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_1024 | "DUTY_CYCLE_1024" +ProtoJSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_128 | "DUTY_CYCLE_128" +ProtoJSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_16 | "DUTY_CYCLE_16" +ProtoJSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_16384 | "DUTY_CYCLE_16384" +ProtoJSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_2 | "DUTY_CYCLE_2" +ProtoJSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_2048 | "DUTY_CYCLE_2048" +ProtoJSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_256 | "DUTY_CYCLE_256" +ProtoJSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_32 | "DUTY_CYCLE_32" +ProtoJSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_32768 | "DUTY_CYCLE_32768" +ProtoJSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_4 | "DUTY_CYCLE_4" +ProtoJSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_4096 | "DUTY_CYCLE_4096" +ProtoJSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_512 | "DUTY_CYCLE_512" +ProtoJSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_64 | "DUTY_CYCLE_64" +ProtoJSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_8 | "DUTY_CYCLE_8" +ProtoJSON | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_8192 | "DUTY_CYCLE_8192" +ProtoJSON | ttnpb.BoolValue | | false +ProtoJSON | ttnpb.BoolValue | value:true | true ProtoJSON | ttnpb.CFListType | CHANNEL_MASKS | "CHANNEL_MASKS" ProtoJSON | ttnpb.CFListType | FREQUENCIES | "FREQUENCIES" ProtoJSON | ttnpb.Class | CLASS_A | "CLASS_A" @@ -1139,22 +908,22 @@ ProtoJSON | ttnpb.DataRateIndex | DATA_RATE_6 | 6 ProtoJSON | ttnpb.DataRateIndex | DATA_RATE_7 | 7 ProtoJSON | ttnpb.DataRateIndex | DATA_RATE_8 | 8 ProtoJSON | ttnpb.DataRateIndex | DATA_RATE_9 | 9 -ProtoJSON | ttnpb.DataRateIndexValue | 0 | 0 -ProtoJSON | ttnpb.DataRateIndexValue | 1 | 1 -ProtoJSON | ttnpb.DataRateIndexValue | 10 | 10 -ProtoJSON | ttnpb.DataRateIndexValue | 11 | 11 -ProtoJSON | ttnpb.DataRateIndexValue | 12 | 12 -ProtoJSON | ttnpb.DataRateIndexValue | 13 | 13 -ProtoJSON | ttnpb.DataRateIndexValue | 14 | 14 -ProtoJSON | ttnpb.DataRateIndexValue | 15 | 15 -ProtoJSON | ttnpb.DataRateIndexValue | 2 | 2 -ProtoJSON | ttnpb.DataRateIndexValue | 3 | 3 -ProtoJSON | ttnpb.DataRateIndexValue | 4 | 4 -ProtoJSON | ttnpb.DataRateIndexValue | 5 | 5 -ProtoJSON | ttnpb.DataRateIndexValue | 6 | 6 -ProtoJSON | ttnpb.DataRateIndexValue | 7 | 7 -ProtoJSON | ttnpb.DataRateIndexValue | 8 | 8 -ProtoJSON | ttnpb.DataRateIndexValue | 9 | 9 +ProtoJSON | ttnpb.DataRateIndexValue | | 0 +ProtoJSON | ttnpb.DataRateIndexValue | value:DATA_RATE_1 | 1 +ProtoJSON | ttnpb.DataRateIndexValue | value:DATA_RATE_10 | 10 +ProtoJSON | ttnpb.DataRateIndexValue | value:DATA_RATE_11 | 11 +ProtoJSON | ttnpb.DataRateIndexValue | value:DATA_RATE_12 | 12 +ProtoJSON | ttnpb.DataRateIndexValue | value:DATA_RATE_13 | 13 +ProtoJSON | ttnpb.DataRateIndexValue | value:DATA_RATE_14 | 14 +ProtoJSON | ttnpb.DataRateIndexValue | value:DATA_RATE_15 | 15 +ProtoJSON | ttnpb.DataRateIndexValue | value:DATA_RATE_2 | 2 +ProtoJSON | ttnpb.DataRateIndexValue | value:DATA_RATE_3 | 3 +ProtoJSON | ttnpb.DataRateIndexValue | value:DATA_RATE_4 | 4 +ProtoJSON | ttnpb.DataRateIndexValue | value:DATA_RATE_5 | 5 +ProtoJSON | ttnpb.DataRateIndexValue | value:DATA_RATE_6 | 6 +ProtoJSON | ttnpb.DataRateIndexValue | value:DATA_RATE_7 | 7 +ProtoJSON | ttnpb.DataRateIndexValue | value:DATA_RATE_8 | 8 +ProtoJSON | ttnpb.DataRateIndexValue | value:DATA_RATE_9 | 9 ProtoJSON | ttnpb.DataRateOffset | DATA_RATE_OFFSET_0 | 0 ProtoJSON | ttnpb.DataRateOffset | DATA_RATE_OFFSET_1 | 1 ProtoJSON | ttnpb.DataRateOffset | DATA_RATE_OFFSET_2 | 2 @@ -1163,14 +932,14 @@ ProtoJSON | ttnpb.DataRateOffset | DATA_RATE_OFFSET_4 | 4 ProtoJSON | ttnpb.DataRateOffset | DATA_RATE_OFFSET_5 | 5 ProtoJSON | ttnpb.DataRateOffset | DATA_RATE_OFFSET_6 | 6 ProtoJSON | ttnpb.DataRateOffset | DATA_RATE_OFFSET_7 | 7 -ProtoJSON | ttnpb.DataRateOffsetValue | 0 | 0 -ProtoJSON | ttnpb.DataRateOffsetValue | 1 | 1 -ProtoJSON | ttnpb.DataRateOffsetValue | 2 | 2 -ProtoJSON | ttnpb.DataRateOffsetValue | 3 | 3 -ProtoJSON | ttnpb.DataRateOffsetValue | 4 | 4 -ProtoJSON | ttnpb.DataRateOffsetValue | 5 | 5 -ProtoJSON | ttnpb.DataRateOffsetValue | 6 | 6 -ProtoJSON | ttnpb.DataRateOffsetValue | 7 | 7 +ProtoJSON | ttnpb.DataRateOffsetValue | | 0 +ProtoJSON | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_1 | 1 +ProtoJSON | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_2 | 2 +ProtoJSON | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_3 | 3 +ProtoJSON | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_4 | 4 +ProtoJSON | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_5 | 5 +ProtoJSON | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_6 | 6 +ProtoJSON | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_7 | 7 ProtoJSON | ttnpb.DeviceEIRP | DEVICE_EIRP_10 | "DEVICE_EIRP_10" ProtoJSON | ttnpb.DeviceEIRP | DEVICE_EIRP_12 | "DEVICE_EIRP_12" ProtoJSON | ttnpb.DeviceEIRP | DEVICE_EIRP_13 | "DEVICE_EIRP_13" @@ -1187,25 +956,25 @@ ProtoJSON | ttnpb.DeviceEIRP | DEVICE_EIRP_30 | "DEVICE_EIRP_30" ProtoJSON | ttnpb.DeviceEIRP | DEVICE_EIRP_33 | "DEVICE_EIRP_33" ProtoJSON | ttnpb.DeviceEIRP | DEVICE_EIRP_36 | "DEVICE_EIRP_36" ProtoJSON | ttnpb.DeviceEIRP | DEVICE_EIRP_8 | "DEVICE_EIRP_8" -ProtoJSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_10 | "DEVICE_EIRP_10" -ProtoJSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_12 | "DEVICE_EIRP_12" -ProtoJSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_13 | "DEVICE_EIRP_13" -ProtoJSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_14 | "DEVICE_EIRP_14" -ProtoJSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_16 | "DEVICE_EIRP_16" -ProtoJSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_18 | "DEVICE_EIRP_18" -ProtoJSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_20 | "DEVICE_EIRP_20" -ProtoJSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_21 | "DEVICE_EIRP_21" -ProtoJSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_24 | "DEVICE_EIRP_24" -ProtoJSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_26 | "DEVICE_EIRP_26" -ProtoJSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_27 | "DEVICE_EIRP_27" -ProtoJSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_29 | "DEVICE_EIRP_29" -ProtoJSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_30 | "DEVICE_EIRP_30" -ProtoJSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_33 | "DEVICE_EIRP_33" -ProtoJSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_36 | "DEVICE_EIRP_36" -ProtoJSON | ttnpb.DeviceEIRPValue | DEVICE_EIRP_8 | "DEVICE_EIRP_8" -ProtoJSON | ttnpb.FrequencyValue | 100000 | "100000" -ProtoJSON | ttnpb.FrequencyValue | 2000000 | "2000000" -ProtoJSON | ttnpb.FrequencyValue | 30000000 | "30000000" +ProtoJSON | ttnpb.DeviceEIRPValue | | "DEVICE_EIRP_8" +ProtoJSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_10 | "DEVICE_EIRP_10" +ProtoJSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_12 | "DEVICE_EIRP_12" +ProtoJSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_13 | "DEVICE_EIRP_13" +ProtoJSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_14 | "DEVICE_EIRP_14" +ProtoJSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_16 | "DEVICE_EIRP_16" +ProtoJSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_18 | "DEVICE_EIRP_18" +ProtoJSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_20 | "DEVICE_EIRP_20" +ProtoJSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_21 | "DEVICE_EIRP_21" +ProtoJSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_24 | "DEVICE_EIRP_24" +ProtoJSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_26 | "DEVICE_EIRP_26" +ProtoJSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_27 | "DEVICE_EIRP_27" +ProtoJSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_29 | "DEVICE_EIRP_29" +ProtoJSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_30 | "DEVICE_EIRP_30" +ProtoJSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_33 | "DEVICE_EIRP_33" +ProtoJSON | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_36 | "DEVICE_EIRP_36" +ProtoJSON | ttnpb.FrequencyValue | value:100000 | "100000" +ProtoJSON | ttnpb.FrequencyValue | value:2000000 | "2000000" +ProtoJSON | ttnpb.FrequencyValue | value:30000000 | "30000000" ProtoJSON | ttnpb.GatewayAntennaPlacement | INDOOR | "INDOOR" ProtoJSON | ttnpb.GatewayAntennaPlacement | OUTDOOR | "OUTDOOR" ProtoJSON | ttnpb.GatewayAntennaPlacement | PLACEMENT_UNKNOWN | "PLACEMENT_UNKNOWN" @@ -1298,14 +1067,14 @@ ProtoJSON | ttnpb.PingSlotPeriod | PING_EVERY_32S | "PING_EVERY_32S" ProtoJSON | ttnpb.PingSlotPeriod | PING_EVERY_4S | "PING_EVERY_4S" ProtoJSON | ttnpb.PingSlotPeriod | PING_EVERY_64S | "PING_EVERY_64S" ProtoJSON | ttnpb.PingSlotPeriod | PING_EVERY_8S | "PING_EVERY_8S" -ProtoJSON | ttnpb.PingSlotPeriodValue | PING_EVERY_128S | "PING_EVERY_128S" -ProtoJSON | ttnpb.PingSlotPeriodValue | PING_EVERY_16S | "PING_EVERY_16S" -ProtoJSON | ttnpb.PingSlotPeriodValue | PING_EVERY_1S | "PING_EVERY_1S" -ProtoJSON | ttnpb.PingSlotPeriodValue | PING_EVERY_2S | "PING_EVERY_2S" -ProtoJSON | ttnpb.PingSlotPeriodValue | PING_EVERY_32S | "PING_EVERY_32S" -ProtoJSON | ttnpb.PingSlotPeriodValue | PING_EVERY_4S | "PING_EVERY_4S" -ProtoJSON | ttnpb.PingSlotPeriodValue | PING_EVERY_64S | "PING_EVERY_64S" -ProtoJSON | ttnpb.PingSlotPeriodValue | PING_EVERY_8S | "PING_EVERY_8S" +ProtoJSON | ttnpb.PingSlotPeriodValue | | "PING_EVERY_1S" +ProtoJSON | ttnpb.PingSlotPeriodValue | value:PING_EVERY_128S | "PING_EVERY_128S" +ProtoJSON | ttnpb.PingSlotPeriodValue | value:PING_EVERY_16S | "PING_EVERY_16S" +ProtoJSON | ttnpb.PingSlotPeriodValue | value:PING_EVERY_2S | "PING_EVERY_2S" +ProtoJSON | ttnpb.PingSlotPeriodValue | value:PING_EVERY_32S | "PING_EVERY_32S" +ProtoJSON | ttnpb.PingSlotPeriodValue | value:PING_EVERY_4S | "PING_EVERY_4S" +ProtoJSON | ttnpb.PingSlotPeriodValue | value:PING_EVERY_64S | "PING_EVERY_64S" +ProtoJSON | ttnpb.PingSlotPeriodValue | value:PING_EVERY_8S | "PING_EVERY_8S" ProtoJSON | ttnpb.RejoinCountExponent | REJOIN_COUNT_1024 | "REJOIN_COUNT_1024" ProtoJSON | ttnpb.RejoinCountExponent | REJOIN_COUNT_128 | "REJOIN_COUNT_128" ProtoJSON | ttnpb.RejoinCountExponent | REJOIN_COUNT_131072 | "REJOIN_COUNT_131072" @@ -1429,22 +1198,22 @@ ProtoJSON | ttnpb.RxDelay | RX_DELAY_6 | 6 ProtoJSON | ttnpb.RxDelay | RX_DELAY_7 | 7 ProtoJSON | ttnpb.RxDelay | RX_DELAY_8 | 8 ProtoJSON | ttnpb.RxDelay | RX_DELAY_9 | 9 -ProtoJSON | ttnpb.RxDelayValue | 0 | 0 -ProtoJSON | ttnpb.RxDelayValue | 1 | 1 -ProtoJSON | ttnpb.RxDelayValue | 10 | 10 -ProtoJSON | ttnpb.RxDelayValue | 11 | 11 -ProtoJSON | ttnpb.RxDelayValue | 12 | 12 -ProtoJSON | ttnpb.RxDelayValue | 13 | 13 -ProtoJSON | ttnpb.RxDelayValue | 14 | 14 -ProtoJSON | ttnpb.RxDelayValue | 15 | 15 -ProtoJSON | ttnpb.RxDelayValue | 2 | 2 -ProtoJSON | ttnpb.RxDelayValue | 3 | 3 -ProtoJSON | ttnpb.RxDelayValue | 4 | 4 -ProtoJSON | ttnpb.RxDelayValue | 5 | 5 -ProtoJSON | ttnpb.RxDelayValue | 6 | 6 -ProtoJSON | ttnpb.RxDelayValue | 7 | 7 -ProtoJSON | ttnpb.RxDelayValue | 8 | 8 -ProtoJSON | ttnpb.RxDelayValue | 9 | 9 +ProtoJSON | ttnpb.RxDelayValue | | 0 +ProtoJSON | ttnpb.RxDelayValue | value:RX_DELAY_1 | 1 +ProtoJSON | ttnpb.RxDelayValue | value:RX_DELAY_10 | 10 +ProtoJSON | ttnpb.RxDelayValue | value:RX_DELAY_11 | 11 +ProtoJSON | ttnpb.RxDelayValue | value:RX_DELAY_12 | 12 +ProtoJSON | ttnpb.RxDelayValue | value:RX_DELAY_13 | 13 +ProtoJSON | ttnpb.RxDelayValue | value:RX_DELAY_14 | 14 +ProtoJSON | ttnpb.RxDelayValue | value:RX_DELAY_15 | 15 +ProtoJSON | ttnpb.RxDelayValue | value:RX_DELAY_2 | 2 +ProtoJSON | ttnpb.RxDelayValue | value:RX_DELAY_3 | 3 +ProtoJSON | ttnpb.RxDelayValue | value:RX_DELAY_4 | 4 +ProtoJSON | ttnpb.RxDelayValue | value:RX_DELAY_5 | 5 +ProtoJSON | ttnpb.RxDelayValue | value:RX_DELAY_6 | 6 +ProtoJSON | ttnpb.RxDelayValue | value:RX_DELAY_7 | 7 +ProtoJSON | ttnpb.RxDelayValue | value:RX_DELAY_8 | 8 +ProtoJSON | ttnpb.RxDelayValue | value:RX_DELAY_9 | 9 ProtoJSON | ttnpb.State | STATE_APPROVED | "STATE_APPROVED" ProtoJSON | ttnpb.State | STATE_FLAGGED | "STATE_FLAGGED" ProtoJSON | ttnpb.State | STATE_REJECTED | "STATE_REJECTED" @@ -1457,10 +1226,10 @@ ProtoJSON | ttnpb.TxSchedulePriority | HIGHEST | "HIGHEST" ProtoJSON | ttnpb.TxSchedulePriority | LOW | "LOW" ProtoJSON | ttnpb.TxSchedulePriority | LOWEST | "LOWEST" ProtoJSON | ttnpb.TxSchedulePriority | NORMAL | "NORMAL" -ProtoJSON | ttnpb.ZeroableFrequencyValue | 0 | "0" -ProtoJSON | ttnpb.ZeroableFrequencyValue | 100000 | "100000" -ProtoJSON | ttnpb.ZeroableFrequencyValue | 2000000 | "2000000" -ProtoJSON | ttnpb.ZeroableFrequencyValue | 30000000 | "30000000" +ProtoJSON | ttnpb.ZeroableFrequencyValue | | "0" +ProtoJSON | ttnpb.ZeroableFrequencyValue | value:100000 | "100000" +ProtoJSON | ttnpb.ZeroableFrequencyValue | value:2000000 | "2000000" +ProtoJSON | ttnpb.ZeroableFrequencyValue | value:30000000 | "30000000" Text | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_1 | ADR_ACK_DELAY_1 Text | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_1024 | ADR_ACK_DELAY_1024 Text | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_128 | ADR_ACK_DELAY_128 @@ -1477,22 +1246,22 @@ Text | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_512 | ADR_ACK_DELAY_512 Text | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_64 | ADR_ACK_DELAY_64 Text | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_8 | ADR_ACK_DELAY_8 Text | ttnpb.ADRAckDelayExponent | ADR_ACK_DELAY_8192 | ADR_ACK_DELAY_8192 -Text | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_1 | ADR_ACK_DELAY_1 -Text | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_1024 | ADR_ACK_DELAY_1024 -Text | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_128 | ADR_ACK_DELAY_128 -Text | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_16 | ADR_ACK_DELAY_16 -Text | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_16384 | ADR_ACK_DELAY_16384 -Text | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_2 | ADR_ACK_DELAY_2 -Text | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_2048 | ADR_ACK_DELAY_2048 -Text | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_256 | ADR_ACK_DELAY_256 -Text | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_32 | ADR_ACK_DELAY_32 -Text | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_32768 | ADR_ACK_DELAY_32768 -Text | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_4 | ADR_ACK_DELAY_4 -Text | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_4096 | ADR_ACK_DELAY_4096 -Text | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_512 | ADR_ACK_DELAY_512 -Text | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_64 | ADR_ACK_DELAY_64 -Text | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_8 | ADR_ACK_DELAY_8 -Text | ttnpb.ADRAckDelayExponentValue | ADR_ACK_DELAY_8192 | ADR_ACK_DELAY_8192 +Text | ttnpb.ADRAckDelayExponentValue | | ADR_ACK_DELAY_1 +Text | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_1024 | ADR_ACK_DELAY_1024 +Text | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_128 | ADR_ACK_DELAY_128 +Text | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_16 | ADR_ACK_DELAY_16 +Text | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_16384 | ADR_ACK_DELAY_16384 +Text | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_2 | ADR_ACK_DELAY_2 +Text | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_2048 | ADR_ACK_DELAY_2048 +Text | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_256 | ADR_ACK_DELAY_256 +Text | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_32 | ADR_ACK_DELAY_32 +Text | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_32768 | ADR_ACK_DELAY_32768 +Text | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_4 | ADR_ACK_DELAY_4 +Text | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_4096 | ADR_ACK_DELAY_4096 +Text | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_512 | ADR_ACK_DELAY_512 +Text | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_64 | ADR_ACK_DELAY_64 +Text | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_8 | ADR_ACK_DELAY_8 +Text | ttnpb.ADRAckDelayExponentValue | value:ADR_ACK_DELAY_8192 | ADR_ACK_DELAY_8192 Text | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_1 | ADR_ACK_LIMIT_1 Text | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_1024 | ADR_ACK_LIMIT_1024 Text | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_128 | ADR_ACK_LIMIT_128 @@ -1509,22 +1278,22 @@ Text | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_512 | ADR_ACK_LIMIT_512 Text | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_64 | ADR_ACK_LIMIT_64 Text | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_8 | ADR_ACK_LIMIT_8 Text | ttnpb.ADRAckLimitExponent | ADR_ACK_LIMIT_8192 | ADR_ACK_LIMIT_8192 -Text | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_1 | ADR_ACK_LIMIT_1 -Text | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_1024 | ADR_ACK_LIMIT_1024 -Text | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_128 | ADR_ACK_LIMIT_128 -Text | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_16 | ADR_ACK_LIMIT_16 -Text | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_16384 | ADR_ACK_LIMIT_16384 -Text | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_2 | ADR_ACK_LIMIT_2 -Text | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_2048 | ADR_ACK_LIMIT_2048 -Text | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_256 | ADR_ACK_LIMIT_256 -Text | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_32 | ADR_ACK_LIMIT_32 -Text | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_32768 | ADR_ACK_LIMIT_32768 -Text | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_4 | ADR_ACK_LIMIT_4 -Text | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_4096 | ADR_ACK_LIMIT_4096 -Text | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_512 | ADR_ACK_LIMIT_512 -Text | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_64 | ADR_ACK_LIMIT_64 -Text | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_8 | ADR_ACK_LIMIT_8 -Text | ttnpb.ADRAckLimitExponentValue | ADR_ACK_LIMIT_8192 | ADR_ACK_LIMIT_8192 +Text | ttnpb.ADRAckLimitExponentValue | | ADR_ACK_LIMIT_1 +Text | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_1024 | ADR_ACK_LIMIT_1024 +Text | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_128 | ADR_ACK_LIMIT_128 +Text | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_16 | ADR_ACK_LIMIT_16 +Text | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_16384 | ADR_ACK_LIMIT_16384 +Text | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_2 | ADR_ACK_LIMIT_2 +Text | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_2048 | ADR_ACK_LIMIT_2048 +Text | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_256 | ADR_ACK_LIMIT_256 +Text | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_32 | ADR_ACK_LIMIT_32 +Text | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_32768 | ADR_ACK_LIMIT_32768 +Text | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_4 | ADR_ACK_LIMIT_4 +Text | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_4096 | ADR_ACK_LIMIT_4096 +Text | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_512 | ADR_ACK_LIMIT_512 +Text | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_64 | ADR_ACK_LIMIT_64 +Text | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_8 | ADR_ACK_LIMIT_8 +Text | ttnpb.ADRAckLimitExponentValue | value:ADR_ACK_LIMIT_8192 | ADR_ACK_LIMIT_8192 Text | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_1 | DUTY_CYCLE_1 Text | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_1024 | DUTY_CYCLE_1024 Text | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_128 | DUTY_CYCLE_128 @@ -1541,24 +1310,24 @@ Text | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_512 | DUTY_CYCLE_512 Text | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_64 | DUTY_CYCLE_64 Text | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_8 | DUTY_CYCLE_8 Text | ttnpb.AggregatedDutyCycle | DUTY_CYCLE_8192 | DUTY_CYCLE_8192 -Text | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_1 | DUTY_CYCLE_1 -Text | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_1024 | DUTY_CYCLE_1024 -Text | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_128 | DUTY_CYCLE_128 -Text | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_16 | DUTY_CYCLE_16 -Text | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_16384 | DUTY_CYCLE_16384 -Text | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_2 | DUTY_CYCLE_2 -Text | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_2048 | DUTY_CYCLE_2048 -Text | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_256 | DUTY_CYCLE_256 -Text | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_32 | DUTY_CYCLE_32 -Text | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_32768 | DUTY_CYCLE_32768 -Text | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_4 | DUTY_CYCLE_4 -Text | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_4096 | DUTY_CYCLE_4096 -Text | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_512 | DUTY_CYCLE_512 -Text | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_64 | DUTY_CYCLE_64 -Text | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_8 | DUTY_CYCLE_8 -Text | ttnpb.AggregatedDutyCycleValue | DUTY_CYCLE_8192 | DUTY_CYCLE_8192 -Text | ttnpb.BoolValue | false | false -Text | ttnpb.BoolValue | true | true +Text | ttnpb.AggregatedDutyCycleValue | | DUTY_CYCLE_1 +Text | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_1024 | DUTY_CYCLE_1024 +Text | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_128 | DUTY_CYCLE_128 +Text | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_16 | DUTY_CYCLE_16 +Text | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_16384 | DUTY_CYCLE_16384 +Text | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_2 | DUTY_CYCLE_2 +Text | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_2048 | DUTY_CYCLE_2048 +Text | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_256 | DUTY_CYCLE_256 +Text | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_32 | DUTY_CYCLE_32 +Text | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_32768 | DUTY_CYCLE_32768 +Text | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_4 | DUTY_CYCLE_4 +Text | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_4096 | DUTY_CYCLE_4096 +Text | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_512 | DUTY_CYCLE_512 +Text | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_64 | DUTY_CYCLE_64 +Text | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_8 | DUTY_CYCLE_8 +Text | ttnpb.AggregatedDutyCycleValue | value:DUTY_CYCLE_8192 | DUTY_CYCLE_8192 +Text | ttnpb.BoolValue | | false +Text | ttnpb.BoolValue | value:true | true Text | ttnpb.CFListType | CHANNEL_MASKS | CHANNEL_MASKS Text | ttnpb.CFListType | FREQUENCIES | FREQUENCIES Text | ttnpb.Class | CLASS_A | CLASS_A @@ -1580,22 +1349,22 @@ Text | ttnpb.DataRateIndex | DATA_RATE_6 | 6 Text | ttnpb.DataRateIndex | DATA_RATE_7 | 7 Text | ttnpb.DataRateIndex | DATA_RATE_8 | 8 Text | ttnpb.DataRateIndex | DATA_RATE_9 | 9 -Text | ttnpb.DataRateIndexValue | 0 | 0 -Text | ttnpb.DataRateIndexValue | 1 | 1 -Text | ttnpb.DataRateIndexValue | 10 | 10 -Text | ttnpb.DataRateIndexValue | 11 | 11 -Text | ttnpb.DataRateIndexValue | 12 | 12 -Text | ttnpb.DataRateIndexValue | 13 | 13 -Text | ttnpb.DataRateIndexValue | 14 | 14 -Text | ttnpb.DataRateIndexValue | 15 | 15 -Text | ttnpb.DataRateIndexValue | 2 | 2 -Text | ttnpb.DataRateIndexValue | 3 | 3 -Text | ttnpb.DataRateIndexValue | 4 | 4 -Text | ttnpb.DataRateIndexValue | 5 | 5 -Text | ttnpb.DataRateIndexValue | 6 | 6 -Text | ttnpb.DataRateIndexValue | 7 | 7 -Text | ttnpb.DataRateIndexValue | 8 | 8 -Text | ttnpb.DataRateIndexValue | 9 | 9 +Text | ttnpb.DataRateIndexValue | | 0 +Text | ttnpb.DataRateIndexValue | value:DATA_RATE_1 | 1 +Text | ttnpb.DataRateIndexValue | value:DATA_RATE_10 | 10 +Text | ttnpb.DataRateIndexValue | value:DATA_RATE_11 | 11 +Text | ttnpb.DataRateIndexValue | value:DATA_RATE_12 | 12 +Text | ttnpb.DataRateIndexValue | value:DATA_RATE_13 | 13 +Text | ttnpb.DataRateIndexValue | value:DATA_RATE_14 | 14 +Text | ttnpb.DataRateIndexValue | value:DATA_RATE_15 | 15 +Text | ttnpb.DataRateIndexValue | value:DATA_RATE_2 | 2 +Text | ttnpb.DataRateIndexValue | value:DATA_RATE_3 | 3 +Text | ttnpb.DataRateIndexValue | value:DATA_RATE_4 | 4 +Text | ttnpb.DataRateIndexValue | value:DATA_RATE_5 | 5 +Text | ttnpb.DataRateIndexValue | value:DATA_RATE_6 | 6 +Text | ttnpb.DataRateIndexValue | value:DATA_RATE_7 | 7 +Text | ttnpb.DataRateIndexValue | value:DATA_RATE_8 | 8 +Text | ttnpb.DataRateIndexValue | value:DATA_RATE_9 | 9 Text | ttnpb.DataRateOffset | DATA_RATE_OFFSET_0 | 0 Text | ttnpb.DataRateOffset | DATA_RATE_OFFSET_1 | 1 Text | ttnpb.DataRateOffset | DATA_RATE_OFFSET_2 | 2 @@ -1604,14 +1373,14 @@ Text | ttnpb.DataRateOffset | DATA_RATE_OFFSET_4 | 4 Text | ttnpb.DataRateOffset | DATA_RATE_OFFSET_5 | 5 Text | ttnpb.DataRateOffset | DATA_RATE_OFFSET_6 | 6 Text | ttnpb.DataRateOffset | DATA_RATE_OFFSET_7 | 7 -Text | ttnpb.DataRateOffsetValue | 0 | 0 -Text | ttnpb.DataRateOffsetValue | 1 | 1 -Text | ttnpb.DataRateOffsetValue | 2 | 2 -Text | ttnpb.DataRateOffsetValue | 3 | 3 -Text | ttnpb.DataRateOffsetValue | 4 | 4 -Text | ttnpb.DataRateOffsetValue | 5 | 5 -Text | ttnpb.DataRateOffsetValue | 6 | 6 -Text | ttnpb.DataRateOffsetValue | 7 | 7 +Text | ttnpb.DataRateOffsetValue | | 0 +Text | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_1 | 1 +Text | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_2 | 2 +Text | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_3 | 3 +Text | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_4 | 4 +Text | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_5 | 5 +Text | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_6 | 6 +Text | ttnpb.DataRateOffsetValue | value:DATA_RATE_OFFSET_7 | 7 Text | ttnpb.DeviceEIRP | DEVICE_EIRP_10 | DEVICE_EIRP_10 Text | ttnpb.DeviceEIRP | DEVICE_EIRP_12 | DEVICE_EIRP_12 Text | ttnpb.DeviceEIRP | DEVICE_EIRP_13 | DEVICE_EIRP_13 @@ -1628,25 +1397,25 @@ Text | ttnpb.DeviceEIRP | DEVICE_EIRP_30 | DEVICE_EIRP_30 Text | ttnpb.DeviceEIRP | DEVICE_EIRP_33 | DEVICE_EIRP_33 Text | ttnpb.DeviceEIRP | DEVICE_EIRP_36 | DEVICE_EIRP_36 Text | ttnpb.DeviceEIRP | DEVICE_EIRP_8 | DEVICE_EIRP_8 -Text | ttnpb.DeviceEIRPValue | DEVICE_EIRP_10 | DEVICE_EIRP_10 -Text | ttnpb.DeviceEIRPValue | DEVICE_EIRP_12 | DEVICE_EIRP_12 -Text | ttnpb.DeviceEIRPValue | DEVICE_EIRP_13 | DEVICE_EIRP_13 -Text | ttnpb.DeviceEIRPValue | DEVICE_EIRP_14 | DEVICE_EIRP_14 -Text | ttnpb.DeviceEIRPValue | DEVICE_EIRP_16 | DEVICE_EIRP_16 -Text | ttnpb.DeviceEIRPValue | DEVICE_EIRP_18 | DEVICE_EIRP_18 -Text | ttnpb.DeviceEIRPValue | DEVICE_EIRP_20 | DEVICE_EIRP_20 -Text | ttnpb.DeviceEIRPValue | DEVICE_EIRP_21 | DEVICE_EIRP_21 -Text | ttnpb.DeviceEIRPValue | DEVICE_EIRP_24 | DEVICE_EIRP_24 -Text | ttnpb.DeviceEIRPValue | DEVICE_EIRP_26 | DEVICE_EIRP_26 -Text | ttnpb.DeviceEIRPValue | DEVICE_EIRP_27 | DEVICE_EIRP_27 -Text | ttnpb.DeviceEIRPValue | DEVICE_EIRP_29 | DEVICE_EIRP_29 -Text | ttnpb.DeviceEIRPValue | DEVICE_EIRP_30 | DEVICE_EIRP_30 -Text | ttnpb.DeviceEIRPValue | DEVICE_EIRP_33 | DEVICE_EIRP_33 -Text | ttnpb.DeviceEIRPValue | DEVICE_EIRP_36 | DEVICE_EIRP_36 -Text | ttnpb.DeviceEIRPValue | DEVICE_EIRP_8 | DEVICE_EIRP_8 -Text | ttnpb.FrequencyValue | 100000 | 100000 -Text | ttnpb.FrequencyValue | 2000000 | 2000000 -Text | ttnpb.FrequencyValue | 30000000 | 30000000 +Text | ttnpb.DeviceEIRPValue | | DEVICE_EIRP_8 +Text | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_10 | DEVICE_EIRP_10 +Text | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_12 | DEVICE_EIRP_12 +Text | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_13 | DEVICE_EIRP_13 +Text | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_14 | DEVICE_EIRP_14 +Text | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_16 | DEVICE_EIRP_16 +Text | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_18 | DEVICE_EIRP_18 +Text | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_20 | DEVICE_EIRP_20 +Text | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_21 | DEVICE_EIRP_21 +Text | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_24 | DEVICE_EIRP_24 +Text | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_26 | DEVICE_EIRP_26 +Text | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_27 | DEVICE_EIRP_27 +Text | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_29 | DEVICE_EIRP_29 +Text | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_30 | DEVICE_EIRP_30 +Text | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_33 | DEVICE_EIRP_33 +Text | ttnpb.DeviceEIRPValue | value:DEVICE_EIRP_36 | DEVICE_EIRP_36 +Text | ttnpb.FrequencyValue | value:100000 | 100000 +Text | ttnpb.FrequencyValue | value:2000000 | 2000000 +Text | ttnpb.FrequencyValue | value:30000000 | 30000000 Text | ttnpb.GatewayAntennaPlacement | INDOOR | INDOOR Text | ttnpb.GatewayAntennaPlacement | OUTDOOR | OUTDOOR Text | ttnpb.GatewayAntennaPlacement | PLACEMENT_UNKNOWN | PLACEMENT_UNKNOWN @@ -1739,14 +1508,14 @@ Text | ttnpb.PingSlotPeriod | PING_EVERY_32S | PING_EVERY_32S Text | ttnpb.PingSlotPeriod | PING_EVERY_4S | PING_EVERY_4S Text | ttnpb.PingSlotPeriod | PING_EVERY_64S | PING_EVERY_64S Text | ttnpb.PingSlotPeriod | PING_EVERY_8S | PING_EVERY_8S -Text | ttnpb.PingSlotPeriodValue | PING_EVERY_128S | PING_EVERY_128S -Text | ttnpb.PingSlotPeriodValue | PING_EVERY_16S | PING_EVERY_16S -Text | ttnpb.PingSlotPeriodValue | PING_EVERY_1S | PING_EVERY_1S -Text | ttnpb.PingSlotPeriodValue | PING_EVERY_2S | PING_EVERY_2S -Text | ttnpb.PingSlotPeriodValue | PING_EVERY_32S | PING_EVERY_32S -Text | ttnpb.PingSlotPeriodValue | PING_EVERY_4S | PING_EVERY_4S -Text | ttnpb.PingSlotPeriodValue | PING_EVERY_64S | PING_EVERY_64S -Text | ttnpb.PingSlotPeriodValue | PING_EVERY_8S | PING_EVERY_8S +Text | ttnpb.PingSlotPeriodValue | | PING_EVERY_1S +Text | ttnpb.PingSlotPeriodValue | value:PING_EVERY_128S | PING_EVERY_128S +Text | ttnpb.PingSlotPeriodValue | value:PING_EVERY_16S | PING_EVERY_16S +Text | ttnpb.PingSlotPeriodValue | value:PING_EVERY_2S | PING_EVERY_2S +Text | ttnpb.PingSlotPeriodValue | value:PING_EVERY_32S | PING_EVERY_32S +Text | ttnpb.PingSlotPeriodValue | value:PING_EVERY_4S | PING_EVERY_4S +Text | ttnpb.PingSlotPeriodValue | value:PING_EVERY_64S | PING_EVERY_64S +Text | ttnpb.PingSlotPeriodValue | value:PING_EVERY_8S | PING_EVERY_8S Text | ttnpb.RejoinCountExponent | REJOIN_COUNT_1024 | REJOIN_COUNT_1024 Text | ttnpb.RejoinCountExponent | REJOIN_COUNT_128 | REJOIN_COUNT_128 Text | ttnpb.RejoinCountExponent | REJOIN_COUNT_131072 | REJOIN_COUNT_131072 @@ -1870,22 +1639,22 @@ Text | ttnpb.RxDelay | RX_DELAY_6 | 6 Text | ttnpb.RxDelay | RX_DELAY_7 | 7 Text | ttnpb.RxDelay | RX_DELAY_8 | 8 Text | ttnpb.RxDelay | RX_DELAY_9 | 9 -Text | ttnpb.RxDelayValue | 0 | 0 -Text | ttnpb.RxDelayValue | 1 | 1 -Text | ttnpb.RxDelayValue | 10 | 10 -Text | ttnpb.RxDelayValue | 11 | 11 -Text | ttnpb.RxDelayValue | 12 | 12 -Text | ttnpb.RxDelayValue | 13 | 13 -Text | ttnpb.RxDelayValue | 14 | 14 -Text | ttnpb.RxDelayValue | 15 | 15 -Text | ttnpb.RxDelayValue | 2 | 2 -Text | ttnpb.RxDelayValue | 3 | 3 -Text | ttnpb.RxDelayValue | 4 | 4 -Text | ttnpb.RxDelayValue | 5 | 5 -Text | ttnpb.RxDelayValue | 6 | 6 -Text | ttnpb.RxDelayValue | 7 | 7 -Text | ttnpb.RxDelayValue | 8 | 8 -Text | ttnpb.RxDelayValue | 9 | 9 +Text | ttnpb.RxDelayValue | | 0 +Text | ttnpb.RxDelayValue | value:RX_DELAY_1 | 1 +Text | ttnpb.RxDelayValue | value:RX_DELAY_10 | 10 +Text | ttnpb.RxDelayValue | value:RX_DELAY_11 | 11 +Text | ttnpb.RxDelayValue | value:RX_DELAY_12 | 12 +Text | ttnpb.RxDelayValue | value:RX_DELAY_13 | 13 +Text | ttnpb.RxDelayValue | value:RX_DELAY_14 | 14 +Text | ttnpb.RxDelayValue | value:RX_DELAY_15 | 15 +Text | ttnpb.RxDelayValue | value:RX_DELAY_2 | 2 +Text | ttnpb.RxDelayValue | value:RX_DELAY_3 | 3 +Text | ttnpb.RxDelayValue | value:RX_DELAY_4 | 4 +Text | ttnpb.RxDelayValue | value:RX_DELAY_5 | 5 +Text | ttnpb.RxDelayValue | value:RX_DELAY_6 | 6 +Text | ttnpb.RxDelayValue | value:RX_DELAY_7 | 7 +Text | ttnpb.RxDelayValue | value:RX_DELAY_8 | 8 +Text | ttnpb.RxDelayValue | value:RX_DELAY_9 | 9 Text | ttnpb.State | STATE_APPROVED | STATE_APPROVED Text | ttnpb.State | STATE_FLAGGED | STATE_FLAGGED Text | ttnpb.State | STATE_REJECTED | STATE_REJECTED @@ -1898,7 +1667,7 @@ Text | ttnpb.TxSchedulePriority | HIGHEST | HIGHEST Text | ttnpb.TxSchedulePriority | LOW | LOW Text | ttnpb.TxSchedulePriority | LOWEST | LOWEST Text | ttnpb.TxSchedulePriority | NORMAL | NORMAL -Text | ttnpb.ZeroableFrequencyValue | 0 | 0 -Text | ttnpb.ZeroableFrequencyValue | 100000 | 100000 -Text | ttnpb.ZeroableFrequencyValue | 2000000 | 2000000 -Text | ttnpb.ZeroableFrequencyValue | 30000000 | 30000000 +Text | ttnpb.ZeroableFrequencyValue | | 0 +Text | ttnpb.ZeroableFrequencyValue | value:100000 | 100000 +Text | ttnpb.ZeroableFrequencyValue | value:2000000 | 2000000 +Text | ttnpb.ZeroableFrequencyValue | value:30000000 | 30000000 diff --git a/pkg/ttnpb/ttnpb.go b/pkg/ttnpb/ttnpb.go index 969208638e..a51eefcac2 100644 --- a/pkg/ttnpb/ttnpb.go +++ b/pkg/ttnpb/ttnpb.go @@ -15,11 +15,8 @@ package ttnpb import ( - "encoding/json" "math" - "strconv" - "github.com/gogo/protobuf/jsonpb" "go.thethings.network/lorawan-stack/v3/pkg/util/byteutil" ) @@ -36,28 +33,6 @@ func marshalBinaryEnum(v int32) []byte { } } -func marshalJSONEnum(names map[int32]string, v int32) ([]byte, error) { - s, ok := names[v] - if ok { - return json.Marshal(s) - } - return json.Marshal(v) -} - -func marshalJSONPBEnum(m *jsonpb.Marshaler, names map[int32]string, v int32) ([]byte, error) { - if m.EnumsAsInts { - return json.Marshal(strconv.Itoa(int(v))) - } - return json.Marshal(names[v]) -} - -func unmarshalJSONString(b []byte) ([]byte, bool) { - if len(b) >= 2 && b[0] == '"' && b[len(b)-1] == '"' { - return b[1 : len(b)-1], true - } - return b, false -} - func unmarshalEnumFromBinary(typName string, names map[int32]string, b []byte) (int32, error) { if len(b) > 4 { return 0, errCouldNotParse(typName)(string(b)) @@ -68,38 +43,3 @@ func unmarshalEnumFromBinary(typName string, names map[int32]string, b []byte) ( } return i, nil } - -func unmarshalEnumFromNumber(typName string, names map[int32]string, b []byte) (int32, error) { - s := string(b) - i64, err := strconv.ParseInt(s, 10, 32) - if err != nil { - return 0, errCouldNotParse(typName)(s).WithCause(err) - } - i := int32(i64) - if _, ok := names[i]; !ok { - return 0, errCouldNotParse(typName)(s) - } - return i, nil -} - -func unmarshalEnumFromText(typName string, values map[string]int32, b []byte) (int32, error) { - s := string(b) - i, ok := values[s] - if !ok { - return 0, errCouldNotParse(typName)(s) - } - return i, nil -} - -func unmarshalEnumFromTextPrefix(typName string, values map[string]int32, prefix string, b []byte) (int32, error) { - s := string(b) - i, ok := values[s] - if ok { - return i, nil - } - i, ok = values[prefix+s] - if ok { - return i, nil - } - return 0, errCouldNotParse(typName)(s) -} diff --git a/pkg/ttnpb/ttnpb_encoding_test.go b/pkg/ttnpb/ttnpb_encoding_test.go index b0b424317c..ceaed95e69 100644 --- a/pkg/ttnpb/ttnpb_encoding_test.go +++ b/pkg/ttnpb/ttnpb_encoding_test.go @@ -27,7 +27,6 @@ import ( "testing" jsonplugin "github.com/TheThingsIndustries/protoc-gen-go-json/jsonplugin" - "github.com/gogo/protobuf/jsonpb" "github.com/smartystreets/assertions" . "go.thethings.network/lorawan-stack/v3/pkg/ttnpb" "go.thethings.network/lorawan-stack/v3/pkg/util/test" @@ -329,24 +328,6 @@ func TestMarshalers(t *testing.T) { err = got.UnmarshalText(b) a.So(err, should.BeNil) a.So(reflect.Indirect(reflect.ValueOf(got)).Interface(), should.Resemble, v) - - sv, ok := v.(fmt.Stringer) - if !ok { - // Structs (e.g. Value wrappers) implement String() on pointer types and do not - // require compatibility of string and text encoding - return - } - var s string - if !a.So(func() { s = sv.String() }, should.NotPanic) { - t.Fatalf("Failed to call String()") - } - - got = newV().(encoding.TextUnmarshaler) - err = got.UnmarshalText([]byte(s)) - if !a.So(err, should.BeNil) { - t.Error(test.FormatError(err)) - } - a.So(reflect.Indirect(reflect.ValueOf(got)).Interface(), should.Resemble, v) }) } @@ -394,39 +375,6 @@ func TestMarshalers(t *testing.T) { }) } - if m, ok := v.(jsonpb.JSONPBMarshaler); ok { - t.Run("JSONPB", func(t *testing.T) { - a := assertions.New(t) - b, err := m.MarshalJSONPB(&jsonpb.Marshaler{}) - if !a.So(err, should.BeNil) { - t.Error(test.FormatError(err)) - } - outLines = append(outLines, fmt.Sprintf(`JSONPB | %s | %v | %s`, typName, v, b)) - - { - got, ok := newV().(jsonpb.JSONPBUnmarshaler) - if !ok { - t.Fatalf("%T does not implement JSONPBUnmarshaler", newV()) - } - - err = got.UnmarshalJSONPB(&jsonpb.Unmarshaler{}, b) - if !a.So(err, should.BeNil) { - t.Error(test.FormatError(err)) - } - a.So(reflect.Indirect(reflect.ValueOf(got)).Interface(), should.Resemble, v) - } - - { - got := newV() - err = json.Unmarshal(b, got) - if !a.So(err, should.BeNil) { - t.Error(test.FormatError(err)) - } - a.So(reflect.Indirect(reflect.ValueOf(got)).Interface(), should.Resemble, v) - } - }) - } - if m, ok := v.(jsonplugin.Marshaler); ok { t.Run("ProtoJSON", func(t *testing.T) { a := assertions.New(t) From c0f289000996188d5f27391d9cb95c14a5111532 Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Tue, 15 Nov 2022 15:53:24 +0100 Subject: [PATCH 26/30] all: Remove manual Azure MSI blob implementation --- pkg/blob/azure_msi.go | 93 ------------------------------------------- pkg/blob/bucket.go | 9 +++-- 2 files changed, 5 insertions(+), 97 deletions(-) delete mode 100644 pkg/blob/azure_msi.go diff --git a/pkg/blob/azure_msi.go b/pkg/blob/azure_msi.go deleted file mode 100644 index 39c228f9e5..0000000000 --- a/pkg/blob/azure_msi.go +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright © 2021 The Things Network Foundation, The Things Industries B.V. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package blob - -// This code has been copy-pasted from https://github.com/google/go-cloud/blob/master/blob/azureblob/azureblob.go -// because the gocloud.dev package is pinned to version v0.19.0, which doesn't support MSI. - -import ( - "strconv" - "time" - - "github.com/Azure/azure-storage-blob-go/azblob" - "github.com/Azure/go-autorest/autorest/adal" - "github.com/Azure/go-autorest/autorest/azure" - "gocloud.dev/blob/azureblob" -) - -const ( - tokenRefreshTolerance = 300 -) - -// openerFromMSI acquires an MSI token and returns TokenCredential backed URLOpener -func openerFromMSI(accountName azureblob.AccountName, clientID ClientID, opts azureblob.Options) (*azureblob.URLOpener, error) { - spToken, err := getMSIServicePrincipalToken(azure.PublicCloud.ResourceIdentifiers.Storage, clientID) - if err != nil { - return nil, err - } - - err = spToken.Refresh() - if err != nil { - return nil, err - } - - credential := azblob.NewTokenCredential(spToken.Token().AccessToken, defaultTokenRefreshFunction(spToken)) - return &azureblob.URLOpener{ - AccountName: accountName, - Pipeline: azureblob.NewPipeline(credential, azblob.PipelineOptions{}), - Options: opts, - }, nil -} - -var defaultTokenRefreshFunction = func(spToken *adal.ServicePrincipalToken) func(credential azblob.TokenCredential) time.Duration { - return func(credential azblob.TokenCredential) time.Duration { - err := spToken.Refresh() - if err != nil { - return 0 - } - expiresIn, err := strconv.ParseInt(string(spToken.Token().ExpiresIn), 10, 64) - if err != nil { - return 0 - } - credential.SetToken(spToken.Token().AccessToken) - return time.Duration(expiresIn-tokenRefreshTolerance) * time.Second - } -} - -// ClientID represents the client ID, which is a specifier of particular identity to use when many are available. -type ClientID string - -// getMSIServicePrincipalToken retrieves Azure API Service Principal token. -func getMSIServicePrincipalToken(resource string, clientID ClientID) (*adal.ServicePrincipalToken, error) { - msiEndpoint, err := adal.GetMSIEndpoint() - if err != nil { - return nil, err - } - - var token *adal.ServicePrincipalToken - if clientID == "" { - token, err = adal.NewServicePrincipalTokenFromMSI(msiEndpoint, resource) - } else { - opts := &adal.ManagedIdentityOptions{ - ClientID: string(clientID), - } - token, err = adal.NewServicePrincipalTokenFromManagedIdentity(resource, opts) - } - - if err != nil { - return nil, err - } - return token, nil -} diff --git a/pkg/blob/bucket.go b/pkg/blob/bucket.go index 196eb0235c..0d8be68163 100644 --- a/pkg/blob/bucket.go +++ b/pkg/blob/bucket.go @@ -16,7 +16,6 @@ package blob import ( "context" - "net/url" "os" "path/filepath" @@ -61,15 +60,17 @@ func AWS(ctx context.Context, bucket string, conf *aws.Config) (*blob.Bucket, er // Azure returns an open bucket that is connected to container containerName in storage account accountName. func Azure(ctx context.Context, accountName, containerName string) (*blob.Bucket, error) { - o, err := openerFromMSI(azureblob.AccountName(accountName), "", azureblob.Options{}) + serviceURL, err := azureblob.NewServiceURL(&azureblob.ServiceURLOptions{ + AccountName: accountName, + }) if err != nil { return nil, err } - url, err := url.Parse("azblob://" + containerName) + serviceClient, err := azureblob.NewDefaultServiceClient(serviceURL) if err != nil { return nil, err } - return o.OpenBucketURL(ctx, url) + return azureblob.OpenBucket(ctx, serviceClient, containerName, &azureblob.Options{}) } func GCP(ctx context.Context, bucket string, jsonCredentials []byte) (*blob.Bucket, error) { From aa577547b675b0de8cf0251bd0077658b0fb5a8c Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Fri, 16 Dec 2022 15:30:36 +0100 Subject: [PATCH 27/30] all: Update dependencies --- go.mod | 251 +- go.sum | 2245 +++++++++++++-- .../provider/mqtt/driver_internal_test.go | 4 +- tools/go.mod | 283 +- tools/go.sum | 2532 +++++++++++++++-- 5 files changed, 4469 insertions(+), 846 deletions(-) diff --git a/go.mod b/go.mod index 6c4a34573d..64f8c56cb5 100644 --- a/go.mod +++ b/go.mod @@ -2,37 +2,9 @@ module go.thethings.network/lorawan-stack/v3 go 1.19 -// Use our fork of grpc-gateway. -replace github.com/grpc-ecosystem/grpc-gateway => github.com/TheThingsIndustries/grpc-gateway v1.15.2-gogo - -// But the original grpc-gateway v2. -replace github.com/grpc-ecosystem/grpc-gateway/v2 => github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.3 - -// Use our fork of gogo/protobuf. -replace github.com/gogo/protobuf => github.com/TheThingsIndustries/gogoprotobuf v1.3.1 - // Use our fork of throttled/throttled/v2. replace github.com/throttled/throttled/v2 => github.com/TheThingsIndustries/throttled/v2 v2.7.1-noredis -// Pin dependencies that would break because of our old golang/protobuf. -replace ( - cloud.google.com/go => cloud.google.com/go v0.81.0 - cloud.google.com/go/pubsub => cloud.google.com/go/pubsub v1.3.1 - cloud.google.com/go/storage => cloud.google.com/go/storage v1.16.0 - github.com/Azure/azure-storage-blob-go => github.com/Azure/azure-storage-blob-go v0.10.0 - github.com/golang/protobuf => github.com/golang/protobuf v1.3.5 - github.com/googleapis/gax-go/v2 => github.com/googleapis/gax-go/v2 v2.0.5 - github.com/onsi/gomega => github.com/onsi/gomega v1.10.0 - github.com/prometheus/client_golang => github.com/prometheus/client_golang v1.11.0 - github.com/spf13/cobra => github.com/spf13/cobra v1.2.1 - github.com/spf13/viper => github.com/spf13/viper v1.8.1 - gocloud.dev => gocloud.dev v0.19.0 - gocloud.dev/pubsub/natspubsub => gocloud.dev/pubsub/natspubsub v0.19.0 - google.golang.org/api => google.golang.org/api v0.53.0 - google.golang.org/genproto => google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884 - google.golang.org/grpc => google.golang.org/grpc v1.33.1 -) - // See https://github.com/mattn/go-ieproxy/issues/31 replace github.com/mattn/go-ieproxy => github.com/mattn/go-ieproxy v0.0.1 @@ -40,130 +12,141 @@ replace github.com/mattn/go-ieproxy => github.com/mattn/go-ieproxy v0.0.1 replace github.com/mitchellh/mapstructure v1.4.3 => github.com/TheThingsIndustries/mapstructure v0.0.0-20220329135826-c42f9f170b2a require ( - contrib.go.opencensus.io/exporter/prometheus v0.4.0 - // NOTE: github.com/Azure/azure-storage-blob-go is actually a different version (see above). - github.com/Azure/azure-storage-blob-go v0.10.0 - github.com/Azure/go-autorest/autorest v0.11.24 - github.com/Azure/go-autorest/autorest/adal v0.9.18 + contrib.go.opencensus.io/exporter/prometheus v0.4.2 github.com/Masterminds/sprig/v3 v3.2.2 github.com/TheThingsIndustries/mystique v0.0.0-20211230093812-d4088bd06959 github.com/TheThingsIndustries/protoc-gen-go-flags v1.0.6 github.com/TheThingsIndustries/protoc-gen-go-json v1.4.2 github.com/TheThingsNetwork/go-cayenne-lib v1.1.0 - github.com/aws/aws-sdk-go v1.42.53 + github.com/aws/aws-sdk-go v1.44.137 github.com/blang/semver v3.5.1+incompatible github.com/blevesearch/bleve v1.0.14 github.com/bluele/gcache v0.0.2 github.com/disintegration/imaging v1.6.2 - github.com/dop251/goja v0.0.0-20220815083517-0c74f9139fd6 + github.com/dop251/goja v0.0.0-20221115122301-6c0d9883792e github.com/dustin/go-humanize v1.0.0 - github.com/eclipse/paho.mqtt.golang v1.3.5 + github.com/eclipse/paho.mqtt.golang v1.4.2 github.com/emersion/go-smtp v0.15.0 - github.com/envoyproxy/protoc-gen-validate v0.6.3 - github.com/felixge/httpsnoop v1.0.2 - github.com/getsentry/sentry-go v0.12.0 - github.com/go-redis/redis/v8 v8.11.4 - github.com/gogo/protobuf v1.3.2 + github.com/envoyproxy/protoc-gen-validate v0.9.0 + github.com/felixge/httpsnoop v1.0.3 + github.com/getsentry/sentry-go v0.15.0 + github.com/go-redis/redis/v8 v8.11.5 github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f - // NOTE: github.com/golang/protobuf is actually a different version (see above). github.com/golang/protobuf v1.5.2 github.com/google/go-cmp v0.5.9 + github.com/google/uuid v1.3.0 github.com/gorilla/csrf v1.7.1 github.com/gorilla/handlers v1.5.1 github.com/gorilla/mux v1.8.0 github.com/gorilla/schema v1.2.0 github.com/gorilla/securecookie v1.1.1 - github.com/gorilla/websocket v1.4.2 - github.com/gotnospirit/messageformat v0.0.0-20190719172517-c1d0bdacdea2 + github.com/gorilla/websocket v1.5.0 + github.com/gotnospirit/messageformat v0.0.0-20221001023931-dfe49f1eb092 github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.0.0-00010101000000-000000000000 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.13.0 github.com/hellofresh/health-go/v5 v5.0.0 github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef github.com/iancoleman/strcase v0.2.0 github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa github.com/jackc/pgx/v5 v5.2.0 github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115 - github.com/jarcoal/httpmock v1.1.0 + github.com/jarcoal/httpmock v1.2.0 github.com/jaytaylor/html2text v0.0.0-20211105163654-bc68cce691ba github.com/json-iterator/go v1.1.12 github.com/jtacoma/uritemplates v1.0.0 - github.com/kr/pretty v0.3.0 - github.com/lib/pq v1.10.6 - github.com/mitchellh/mapstructure v1.4.3 + github.com/kr/pretty v0.3.1 + github.com/lib/pq v1.10.7 + github.com/mitchellh/mapstructure v1.5.0 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 - github.com/nats-io/nats-server/v2 v2.7.4 - github.com/nats-io/nats.go v1.13.1-0.20220308171302-2f2f6968e98d - github.com/oklog/ulid/v2 v2.0.2 + github.com/nats-io/nats-server/v2 v2.9.6 + github.com/nats-io/nats.go v1.20.0 + github.com/oklog/ulid/v2 v2.1.0 github.com/openshift/osin v1.0.1 github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 github.com/pkg/errors v0.9.1 - github.com/prometheus/client_golang v1.11.0 + github.com/prometheus/client_golang v1.14.0 github.com/satori/go.uuid v1.2.0 - github.com/sendgrid/sendgrid-go v3.11.0+incompatible + github.com/sendgrid/sendgrid-go v3.12.0+incompatible github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e - github.com/smartystreets/assertions v1.2.1 - github.com/spf13/cast v1.4.1 - // NOTE: github.com/spf13/cobra is actually a different version (see above). - github.com/spf13/cobra v1.2.1 + github.com/smartystreets/assertions v1.13.0 + github.com/spf13/cast v1.5.0 + github.com/spf13/cobra v1.6.1 github.com/spf13/pflag v1.0.5 - // NOTE: github.com/spf13/viper is actually a different version (see above). - github.com/spf13/viper v1.10.1 + github.com/spf13/viper v1.14.0 github.com/throttled/throttled v2.2.5+incompatible - github.com/throttled/throttled/v2 v2.7.1 + github.com/throttled/throttled/v2 v2.0.0-00010101000000-000000000000 github.com/uptrace/bun v1.1.8 github.com/uptrace/bun/dialect/pgdialect v1.1.8 github.com/uptrace/bun/driver/pgdriver v1.1.8 github.com/vmihailenco/msgpack/v5 v5.3.5 - go.opencensus.io v0.23.0 - go.opentelemetry.io/otel v1.10.0 - go.opentelemetry.io/otel/trace v1.10.0 - go.packetbroker.org/api/iam v1.5.27-tts - go.packetbroker.org/api/iam/v2 v2.7.8-tts - go.packetbroker.org/api/mapping/v2 v2.1.27-tts - go.packetbroker.org/api/routing v1.8.18-tts - go.packetbroker.org/api/v3 v3.12.4-tts + go.opencensus.io v0.24.0 + go.opentelemetry.io/otel v1.11.1 + go.opentelemetry.io/otel/trace v1.11.1 + go.packetbroker.org/api/iam v1.5.27 + go.packetbroker.org/api/iam/v2 v2.7.8 + go.packetbroker.org/api/mapping/v2 v2.1.27 + go.packetbroker.org/api/routing v1.8.18 + go.packetbroker.org/api/v3 v3.12.4 go.thethings.network/lorawan-application-payload v0.0.0-20220125153912-1198ff1e403e - go.thethings.network/lorawan-stack-legacy/v2 v2.0.2 - go.uber.org/zap v1.21.0 - // NOTE: gocloud.dev is actually a different version (see above). - gocloud.dev v0.20.0 - // NOTE: gocloud.dev/pubsub/natspubsub is actually a different version (see above). - gocloud.dev/pubsub/natspubsub v0.19.0 + go.thethings.network/lorawan-stack-legacy/v2 v2.1.0-rc0 + go.uber.org/zap v1.23.0 + gocloud.dev v0.27.0 + gocloud.dev/pubsub/natspubsub v0.27.0 golang.org/x/crypto v0.5.0 - golang.org/x/exp v0.0.0-20220706164943-b4a6d9510983 + golang.org/x/exp v0.0.0-20221114191408-850992195362 golang.org/x/net v0.5.0 - golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 - golang.org/x/sync v0.0.0-20220923202941-7f9b1623fab7 - // NOTE: google.golang.org/genproto is actually a different version (see above). - google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd - // NOTE: google.golang.org/grpc is actually a different version (see above). - google.golang.org/grpc v1.46.2 + golang.org/x/oauth2 v0.2.0 + golang.org/x/sync v0.1.0 + google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1 + google.golang.org/grpc v1.50.1 + google.golang.org/protobuf v1.28.1 gopkg.in/mail.v2 v2.3.1 gopkg.in/square/go-jose.v2 v2.6.0 gopkg.in/yaml.v2 v2.4.0 ) require ( - cloud.google.com/go v0.90.0 // indirect - cloud.google.com/go/pubsub v1.3.1 // indirect - cloud.google.com/go/storage v1.16.0 // indirect - github.com/Azure/azure-pipeline-go v0.2.3 // indirect + cloud.google.com/go v0.105.0 // indirect + cloud.google.com/go/compute v1.12.1 // indirect + cloud.google.com/go/compute/metadata v0.2.1 // indirect + cloud.google.com/go/iam v0.7.0 // indirect + cloud.google.com/go/pubsub v1.24.0 // indirect + cloud.google.com/go/storage v1.27.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect - github.com/Azure/go-autorest/autorest/azure/auth v0.5.10 // indirect - github.com/Azure/go-autorest/autorest/azure/cli v0.4.4 // indirect - github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect - github.com/Azure/go-autorest/logger v0.2.1 // indirect - github.com/Azure/go-autorest/tracing v0.6.0 // indirect + github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.1.1 // indirect - github.com/RoaringBitmap/roaring v0.9.4 // indirect + github.com/RoaringBitmap/roaring v0.4.23 // indirect + github.com/aws/aws-sdk-go-v2 v1.16.8 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.3 // indirect + github.com/aws/aws-sdk-go-v2/config v1.15.15 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.12.10 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9 // indirect + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.21 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.15 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.9 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.6 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.10 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.9 // indirect + github.com/aws/aws-sdk-go-v2/service/s3 v1.27.2 // indirect + github.com/aws/aws-sdk-go-v2/service/sns v1.17.10 // indirect + github.com/aws/aws-sdk-go-v2/service/sqs v1.19.1 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.11.13 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.16.10 // indirect + github.com/aws/smithy-go v1.12.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bits-and-blooms/bitset v1.2.1 // indirect github.com/blevesearch/go-porterstemmer v1.0.3 // indirect - github.com/blevesearch/mmap-go v1.0.3 // indirect + github.com/blevesearch/mmap-go v1.0.2 // indirect github.com/blevesearch/segment v0.9.0 // indirect github.com/blevesearch/snowballstem v0.9.0 // indirect github.com/blevesearch/zap/v11 v11.0.14 // indirect @@ -173,90 +156,90 @@ require ( github.com/blevesearch/zap/v15 v15.0.3 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/couchbase/vellum v1.0.2 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.1 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/dlclark/regexp2 v1.7.0 // indirect - github.com/emersion/go-sasl v0.0.0-20211008083017-0b9dcfb154ac // indirect - github.com/fsnotify/fsnotify v1.5.1 // indirect - github.com/go-kit/log v0.2.0 // indirect + github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2 // indirect + github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.5.1 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect - github.com/golang-jwt/jwt/v4 v4.3.0 // indirect + github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/google/uuid v1.3.0 + github.com/gomodule/redigo v1.8.9 // indirect github.com/google/wire v0.5.0 // indirect - github.com/googleapis/gax-go v2.0.2+incompatible // indirect - github.com/googleapis/gax-go/v2 v2.1.1 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.0 // indirect + github.com/googleapis/gax-go/v2 v2.6.0 // indirect github.com/gotnospirit/makeplural v0.0.0-20180622080156-a5f48d94d976 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/huandu/xstrings v1.3.1 // indirect - github.com/imdario/mergo v0.3.11 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/imdario/mergo v0.3.12 // indirect + github.com/inconshreveable/mousetrap v1.0.1 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect - github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect + github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect github.com/jacobsa/oglematchers v0.0.0-20150720000706-141901ea67cd // indirect github.com/jacobsa/oglemock v0.0.0-20150831005832-e94d794d06ff // indirect github.com/jacobsa/ogletest v0.0.0-20170503003838-80d50a735a11 // indirect github.com/jacobsa/reqtrace v0.0.0-20150505043853-245c9e0234cb // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/jstemmer/go-junit-report v0.9.1 // indirect github.com/klauspost/compress v1.15.11 // indirect github.com/kr/text v0.2.0 // indirect - github.com/magiconair/properties v1.8.5 // indirect - github.com/mattn/go-ieproxy v0.0.3 // indirect - github.com/mattn/go-runewidth v0.0.13 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect + github.com/kylelemons/godebug v1.1.0 // indirect + github.com/magiconair/properties v1.8.6 // indirect + github.com/mattn/go-runewidth v0.0.14 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect github.com/minio/highwayhash v1.0.2 // indirect github.com/mitchellh/copystructure v1.0.0 // indirect github.com/mitchellh/reflectwalk v1.0.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mschoch/smat v0.2.0 // indirect - github.com/nats-io/jwt/v2 v2.2.1-0.20220113022732-58e87895b296 // indirect + github.com/nats-io/jwt/v2 v2.3.0 // indirect github.com/nats-io/nkeys v0.3.0 // indirect github.com/nats-io/nuid v1.0.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect - github.com/pborman/uuid v1.2.1 // indirect - github.com/pelletier/go-toml v1.9.4 // indirect - github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.32.1 // indirect - github.com/prometheus/procfs v0.7.3 // indirect - github.com/prometheus/statsd_exporter v0.22.4 // indirect - github.com/rivo/uniseg v0.2.0 // indirect - github.com/rogpeppe/go-internal v1.8.1 // indirect + github.com/pborman/uuid v1.2.0 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect + github.com/pelletier/go-toml/v2 v2.0.5 // indirect + github.com/philhofer/fwd v1.0.0 // indirect + github.com/prometheus/client_model v0.3.0 // indirect + github.com/prometheus/common v0.37.0 // indirect + github.com/prometheus/procfs v0.8.0 // indirect + github.com/prometheus/statsd_exporter v0.22.7 // indirect + github.com/rivo/uniseg v0.4.3 // indirect + github.com/rogpeppe/go-internal v1.9.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/sendgrid/rest v2.6.8+incompatible // indirect + github.com/sendgrid/rest v2.6.9+incompatible // indirect github.com/shopspring/decimal v1.2.0 // indirect - github.com/spf13/afero v1.8.1 // indirect + github.com/spf13/afero v1.9.2 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect github.com/steveyen/gtreap v0.1.0 // indirect - github.com/subosito/gotenv v1.2.0 // indirect + github.com/subosito/gotenv v1.4.1 // indirect + github.com/tinylib/msgp v1.1.0 // indirect github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/willf/bitset v1.1.11 // indirect go.etcd.io/bbolt v1.3.6 // indirect go.uber.org/atomic v1.10.0 // indirect - go.uber.org/multierr v1.7.0 // indirect - golang.org/x/image v0.0.0-20211028202545-6944b10bf410 // indirect - golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect + go.uber.org/multierr v1.8.0 // indirect + golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 // indirect golang.org/x/sys v0.4.0 // indirect golang.org/x/term v0.4.0 // indirect golang.org/x/text v0.6.0 // indirect - golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect - golang.org/x/tools v0.1.12 // indirect - golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect - google.golang.org/api v0.61.0 // indirect + golang.org/x/time v0.0.0-20220922220347-f3bd1da661af // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + google.golang.org/api v0.102.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/protobuf v1.28.1 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect - gopkg.in/ini.v1 v1.66.4 // indirect - mellium.im/sasl v0.3.1 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + mellium.im/sasl v0.3.0 // indirect ) diff --git a/go.sum b/go.sum index d772f8b512..1c5f87097a 100644 --- a/go.sum +++ b/go.sum @@ -1,88 +1,198 @@ -bazil.org/fuse v0.0.0-20180421153158-65cc252bf669/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= -cloud.google.com/go v0.81.0 h1:at8Tk2zUz63cLPR0JPWm5vp77pEZmzxEQBEfRKn1VV8= +bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM= +cloud.google.com/go v0.16.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.103.0/go.mod h1:vwLx1nqLrzLX/fpwSMOXmFIqBOyHsvHbnAdbGSJ+mKk= +cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= +cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.12.1 h1:gKVJMEyqV5c/UnpzjjQbo3Rjvvqpr9B1DFSbJC4OXr0= +cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute/metadata v0.2.1 h1:efOwf5ymceDhK6PKMnnrTHP4pppY5L22mle96M1yP48= +cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/pubsub v1.3.1 h1:ukjixP1wl0LpnZ6LWtZJ0mX5tBmjp1f8Sqer8Z2OMUU= +cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= +cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.7.0 h1:k4MuwOsS7zGJJ+QfZ5vBK8SgHBAvYN/23BWsiihJ1vs= +cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= +cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= +cloud.google.com/go/longrunning v0.3.0 h1:NjljC+FYPV3uh5/OwWT6pVU+doBqMg2x/rZlE+CamDs= +cloud.google.com/go/monitoring v1.1.0/go.mod h1:L81pzz7HKn14QCMaCs6NTQkdBnE87TElyanS95vIcl4= +cloud.google.com/go/monitoring v1.5.0/go.mod h1:/o9y8NYX5j91JjD/JvGLYbi86kL11OjyJXq2XziLJu4= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.16.0 h1:1UwAux2OZP4310YXg5ohqBEpV16Y93uZG4+qOX7K2Kg= -cloud.google.com/go/storage v1.16.0/go.mod h1:ieKBmUyzcftN5tbxwnXClMKH00CfcQ+xL6NN0r5QfmE= -contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= -contrib.go.opencensus.io/exporter/ocagent v0.5.0/go.mod h1:ImxhfLRpxoYiSq891pBrLVhN+qmP8BTVvdH2YLs7Gl0= -contrib.go.opencensus.io/exporter/prometheus v0.4.0 h1:0QfIkj9z/iVZgK31D9H9ohjjIDApI2GOPScCKwxedbs= -contrib.go.opencensus.io/exporter/prometheus v0.4.0/go.mod h1:o7cosnyfuPVK0tB8q0QmaQNhGnptITnPQB+z1+qeFB0= -contrib.go.opencensus.io/exporter/stackdriver v0.12.1/go.mod h1:iwB6wGarfphGGe/e5CWqyUk/cLzKnWsOKPVW3no6OTw= -contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= -contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcigGlFvXwEGEnkRLA= +cloud.google.com/go/pubsub v1.24.0 h1:aCS6wSMzrc602OeXUMA66KGlyXxpdkHdwN+FSBv/sUg= +cloud.google.com/go/pubsub v1.24.0/go.mod h1:rWv09Te1SsRpRGPiWOMDKraMQTJyJps4MkUCoMGUgqw= +cloud.google.com/go/secretmanager v1.5.0/go.mod h1:5C9kM+RwSpkURNovKySkNvGQLUaOgyoR5W0RUx2SyHQ= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.24.0/go.mod h1:3xrJEFMXBsQLgxwThyjuD3aYlroL0TMRec1ypGUQ0KE= +cloud.google.com/go/storage v1.27.0 h1:YOO045NZI9RKfCj1c5A/ZtuuENUc8OAW+gHdGnDgyMQ= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/trace v1.0.0/go.mod h1:4iErSByzxkyHWzzlAj63/Gmjz0NH1ASqhJguHpGcr6A= +cloud.google.com/go/trace v1.2.0/go.mod h1:Wc8y/uYyOhPy12KEnXG9XGrvfMz5F5SrYecQlbW1rwM= +code.cloudfoundry.org/clock v0.0.0-20180518195852-02e53af36e6c/go.mod h1:QD9Lzhd/ux6eNQVUDVRJX/RKTigpewimNYBi7ivZKY8= +contrib.go.opencensus.io/exporter/aws v0.0.0-20200617204711-c478e41e60e9/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= +contrib.go.opencensus.io/exporter/prometheus v0.4.2 h1:sqfsYl5GIY/L570iT+l93ehxaWJs2/OwXtiWwew3oAg= +contrib.go.opencensus.io/exporter/prometheus v0.4.2/go.mod h1:dvEHbiKmgvbr5pjaF9fpw1KeYcjrnC1J8B+JKjsZyRQ= +contrib.go.opencensus.io/exporter/stackdriver v0.13.13/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= +contrib.go.opencensus.io/integrations/ocsql v0.1.7/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -github.com/Azure/azure-amqp-common-go/v2 v2.1.0/go.mod h1:R8rea+gJRuJR6QxTir/XuEd+YuKoUiazDC/N96FiDEU= -github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= -github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= -github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U= -github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= -github.com/Azure/azure-sdk-for-go v29.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v30.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-service-bus-go v0.9.1/go.mod h1:yzBx6/BUGfjfeqbRZny9AQIbIe3AcV9WZbAdpkoXOa0= -github.com/Azure/azure-storage-blob-go v0.10.0 h1:evCwGreYo3XLeBV4vSxLbLiYb6e0SzsJiXQVRGsRXxs= -github.com/Azure/azure-storage-blob-go v0.10.0/go.mod h1:ep1edmW+kNQx4UfWM9heESNmQdijykocJ0YOxmMX8SE= -github.com/Azure/go-autorest v12.0.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= +github.com/Azure/azure-amqp-common-go/v3 v3.2.3/go.mod h1:7rPmbSfszeovxGfc5fSAXE4ehlXQZHpMja2OtxC2Tas= +github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v63.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v65.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v66.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1 h1:tz19qLF65vuu2ibfTqGVJxG/zZAI27NEIIbvAOQwYbw= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0 h1:Yoicul8bnVdQrhDMTHxdEckRGX01XvwXDHUT9zYZ3k0= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0/go.mod h1:+6sju8gk8FRmSajX3Oz4G5Gm7P+mbqE9FVaXXFYTkCM= +github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0 h1:jp0dGvZ7ZK0mgqnTSClMxa5xuRL7NZgHameVYF6BurY= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.0.2/go.mod h1:LH9XQnMr2ZYxQdVdCrzLO9mxeDyrDFa6wbSI3x5zCZk= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1 h1:QSdcrd/UFJv6Bp/CfoVf2SrENpFn9P6Yh8yb+xNhYMM= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1/go.mod h1:eZ4g6GUvXiGulfIbbhh1Xr4XwUYaYaWMqzGD/284wCA= +github.com/Azure/go-amqp v0.17.0/go.mod h1:9YJ3RhxRT1gquYnzpZO1vcYMMpAdJT+QEg6fwmw9Zlg= +github.com/Azure/go-amqp v0.17.5/go.mod h1:9YJ3RhxRT1gquYnzpZO1vcYMMpAdJT+QEg6fwmw9Zlg= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest v0.11.19/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest v0.11.24 h1:1fIGgHKqVm54KIPT+q8Zmd1QlVsmHqeUGso5qm2BqqE= +github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= +github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/adal v0.8.3/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest v0.11.25/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= +github.com/Azure/go-autorest/autorest v0.11.27/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= +github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA= +github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/adal v0.9.14/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/adal v0.9.18 h1:kLnPsRjzZZUF3K5REu/Kc+qMQrvuza2bwSnNdhmzLfQ= github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= -github.com/Azure/go-autorest/autorest/azure/auth v0.5.10 h1:F9A3Z++TtAoFysBsNOIJILoHuYBaYvhVGsMGEqPtIS8= -github.com/Azure/go-autorest/autorest/azure/auth v0.5.10/go.mod h1:zQXYYNX9kXzRMrJNVXWUfNy38oPMF5/2TeZ4Wylc9fE= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.2/go.mod h1:7qkJkT+j6b+hIpzMOwPChJhTqS8VbsqqgULzMNRugoM= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.4 h1:iuooz5cZL6VRcO7DVSFYxRcouqn6bFVE/e77Wts50Zk= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.4/go.mod h1:yAQ2b6eP/CmLPnmLvxtT1ALIY3OR1oFcCqVBi8vHiTc= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= -github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= +github.com/Azure/go-autorest/autorest/adal v0.9.20/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= +github.com/Azure/go-autorest/autorest/adal v0.9.21/go.mod h1:zua7mBUaCc5YnSLKYgGJR/w5ePdMDA6H56upLsHzA9U= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.11/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.5/go.mod h1:ADQAXrkgm7acgWVUNamOgh8YNrv4p27l3Wc55oVfpzg= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.6/go.mod h1:piCfgPho7BiIDdEQ1+g4VmKyD5y+p/XtSNqE6Hc4QD0= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= -github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= +github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= +github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU= +github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk= +github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= +github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= +github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= -github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0 h1:WVsrXCnHlDDX8ls+tootqRE87/hL9S/g4ewig9RsD/c= +github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= -github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= -github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20191009163259-e802c2cb94ae/go.mod h1:mjwGPas4yKduTyubHvD1Atl9r1rUq8DfVy+gkVvZ+oo= -github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/GoogleCloudPlatform/cloudsql-proxy v1.31.2/go.mod h1:qR6jVnZTKDCW3j+fC9mOEPHm++1nKDMkqbbkD6KNsfo= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8= github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= +github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= +github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= +github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= +github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= +github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= +github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= +github.com/Microsoft/hcsshim v0.8.20/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= +github.com/Microsoft/hcsshim v0.8.21/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= +github.com/Microsoft/hcsshim v0.8.23/go.mod h1:4zegtUJth7lAvFyc6cH2gGQ5B3OFQim01nnU2M8jKDg= +github.com/Microsoft/hcsshim v0.9.2/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc= +github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= +github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/RoaringBitmap/roaring v0.4.23 h1:gpyfd12QohbqhFO4NVDUdoPOCXsyahYRQhINmlHxKeo= github.com/RoaringBitmap/roaring v0.4.23/go.mod h1:D0gp8kJQgE1A4LQ5wFLggQEyvDi06Mq5mKs52e1TwOo= -github.com/RoaringBitmap/roaring v0.9.4 h1:ckvZSX5gwCRaJYBNe7syNawCU5oruY9gQmjXlp4riwo= -github.com/RoaringBitmap/roaring v0.9.4/go.mod h1:icnadbWcNyfEHlYdr+tDlOTih1Bf/h+rzPpv4sbomAA= -github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= -github.com/TheThingsIndustries/gogoprotobuf v1.3.1 h1:bjjlt2OLpIpUxinNSvZH/0wQxzA0/5DKKthBfo3YjO0= -github.com/TheThingsIndustries/gogoprotobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/TheThingsIndustries/grpc-gateway v1.15.2-gogo h1:rWB4sbEKoL7xUC9ixUkJOBlPOeF0hcwzXHTISXZM7eA= -github.com/TheThingsIndustries/grpc-gateway v1.15.2-gogo/go.mod h1:fU1VeKM8T+38FAMQNH0zO2BT6grnMyphff4CD9w1DTM= -github.com/TheThingsIndustries/mapstructure v0.0.0-20220329135826-c42f9f170b2a h1:b/0P0Ria7uJgfGnk6dgPdarnaYR/KGV92Dr7mxejME8= +github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/TheThingsIndustries/mapstructure v0.0.0-20220329135826-c42f9f170b2a/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/TheThingsIndustries/mystique v0.0.0-20211230093812-d4088bd06959 h1:YRyHofsKjSff/aofUxYl0PuSibYaYZMXGrOGD4w1ayE= github.com/TheThingsIndustries/mystique v0.0.0-20211230093812-d4088bd06959/go.mod h1:zJmv+zv/E4SFsThOS+ExjtJf3M1x2MOziwyHI7l5zZo= @@ -94,27 +204,98 @@ github.com/TheThingsIndustries/throttled/v2 v2.7.1-noredis h1:uashKgjy7XCNZNb00+ github.com/TheThingsIndustries/throttled/v2 v2.7.1-noredis/go.mod h1:XC/YhKcHsxRy8shbYICwf+oWeYTCC2kpL5/clSJbt+U= github.com/TheThingsNetwork/go-cayenne-lib v1.1.0 h1:uw+WnTMSSwTo58/ob3ktWNBiCY2psIof8p3lKdxreAE= github.com/TheThingsNetwork/go-cayenne-lib v1.1.0/go.mod h1:HTTus7UIBhXKvLIeNGybbG1o7wr4zwwVbbUXwFqrtp0= -github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= +github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= -github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.19.45/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.42.53 h1:56T04NWcmc0ZVYFbUc6HdewDQ9iHQFlmS6hj96dRjJs= -github.com/aws/aws-sdk-go v1.42.53/go.mod h1:OGr6lGMAKGlG9CVrYnWYDKIyb829c6EVBRjxqjmPepc= -github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go v1.43.11/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.45/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.68/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.137 h1:GH2bUPiW7/gHtB04NxQOSOrKqFNjLGKmqt5YaO+K1SE= +github.com/aws/aws-sdk-go v1.44.137/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aws/aws-sdk-go-v2 v1.16.8 h1:gOe9UPR98XSf7oEJCcojYg+N2/jCRm4DdeIsP85pIyQ= +github.com/aws/aws-sdk-go-v2 v1.16.8/go.mod h1:6CpKuLXg2w7If3ABZCl/qZ6rEgwtjZTn4eAf4RcEyuw= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.3 h1:S/ZBwevQkr7gv5YxONYpGQxlMFFYSRfz3RMcjsC9Qhk= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.3/go.mod h1:gNsR5CaXKmQSSzrmGxmwmct/r+ZBfbxorAuXYsj/M5Y= +github.com/aws/aws-sdk-go-v2/config v1.15.15 h1:yBV+J7Au5KZwOIrIYhYkTGJbifZPCkAnCFSvGsF3ui8= +github.com/aws/aws-sdk-go-v2/config v1.15.15/go.mod h1:A1Lzyy/o21I5/s2FbyX5AevQfSVXpvvIDCoVFD0BC4E= +github.com/aws/aws-sdk-go-v2/credentials v1.12.10 h1:7gGcMQePejwiKoDWjB9cWnpfVdnz/e5JwJFuT6OrroI= +github.com/aws/aws-sdk-go-v2/credentials v1.12.10/go.mod h1:g5eIM5XRs/OzIIK81QMBl+dAuDyoLN0VYaLP+tBqEOk= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9 h1:hz8tc+OW17YqxyFFPSkvfSikbqWcyyHRyPVSTzC0+aI= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9/go.mod h1:KDCCm4ONIdHtUloDcFvK2+vshZvx4Zmj7UMDfusuz5s= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.21 h1:bpiKFJ9aC0xTVpygSRRRL/YHC1JZ+pHQHENATHuoiwo= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.21/go.mod h1:iIYPrQ2rYfZiB/iADYlhj9HHZ9TTi6PqKQPAqygohbE= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.15 h1:bx5F2mr6H6FC7zNIQoDoUr8wEKnvmwRncujT3FYRtic= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.15/go.mod h1:pWrr2OoHlT7M/Pd2y4HV3gJyPb3qj5qMmnPkKSNPYK4= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.9 h1:5sbyznZC2TeFpa4fvtpvpcGbzeXEEs1l1Jo51ynUNsQ= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.9/go.mod h1:08tUpeSGN33QKSO7fwxXczNfiwCpbj+GxK6XKwqWVv0= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16 h1:f0ySVcmQhwmzn7zQozd8wBM3yuGBfzdpsOaKQ0/Epzw= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16/go.mod h1:CYmI+7x03jjJih8kBEEFKRQc40UjUokT0k7GbvrhhTc= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.6 h1:3L8pcjvgaSOs0zzZcMKzxDSkYKEpwJ2dNVDdxm68jAY= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.6/go.mod h1:O7Oc4peGZDEKlddivslfYFvAbgzvl/GH3J8j3JIGBXc= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.3 h1:4n4KCtv5SUoT5Er5XV41huuzrCqepxlW3SDI9qHQebc= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.3/go.mod h1:gkb2qADY+OHaGLKNTYxMaQNacfeyQpZ4csDTQMeFmcw= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.10 h1:7LJcuRalaLw+GYQTMGmVUl4opg2HrDZkvn/L3KvIQfw= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.10/go.mod h1:Qks+dxK3O+Z2deAhNo6cJ8ls1bam3tUGUAcgxQP1c70= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9 h1:sHfDuhbOuuWSIAEDd3pma6p0JgUcR2iePxtCE8gfCxQ= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9/go.mod h1:yQowTpvdZkFVuHrLBXmczat4W+WJKg/PafBZnGBLga0= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.9 h1:sJdKvydGYDML9LTFcp6qq6Z5fIjN0Rdq2Gvw1hUg8tc= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.9/go.mod h1:Rc5+wn2k8gFSi3V1Ch4mhxOzjMh+bYSXVFfVaqowQOY= +github.com/aws/aws-sdk-go-v2/service/kms v1.18.1/go.mod h1:4PZMUkc9rXHWGVB5J9vKaZy3D7Nai79ORworQ3ASMiM= +github.com/aws/aws-sdk-go-v2/service/s3 v1.27.2 h1:NvzGue25jKnuAsh6yQ+TZ4ResMcnp49AWgWGm2L4b5o= +github.com/aws/aws-sdk-go-v2/service/s3 v1.27.2/go.mod h1:u+566cosFI+d+motIz3USXEh6sN8Nq4GrNXSg2RXVMo= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.15.14/go.mod h1:xakbH8KMsQQKqzX87uyyzTHshc/0/Df8bsTneTS5pFU= +github.com/aws/aws-sdk-go-v2/service/sns v1.17.10 h1:ZZuqucIwjbUEJqxxR++VDZX9BcMbX5ZcQaKoWul/ELk= +github.com/aws/aws-sdk-go-v2/service/sns v1.17.10/go.mod h1:uITsRNVMeCB3MkWpXxXw0eDz8pW4TYLzj+eyQtbhSxM= +github.com/aws/aws-sdk-go-v2/service/sqs v1.19.1 h1:HaQD4g8eumwEW218TgQzhnwTXmq77ZogA67SxBnGyPc= +github.com/aws/aws-sdk-go-v2/service/sqs v1.19.1/go.mod h1:A94o564Gj+Yn+7QO1eLFeI7UVv3riy/YBFOfICVqFvU= +github.com/aws/aws-sdk-go-v2/service/ssm v1.27.6/go.mod h1:fiFzQgj4xNOg4/wqmAiPvzgDMXPD+cUEplX/CYn+0j0= +github.com/aws/aws-sdk-go-v2/service/sso v1.11.13 h1:DQpf+al+aWozOEmVEdml67qkVZ6vdtGUi71BZZWw40k= +github.com/aws/aws-sdk-go-v2/service/sso v1.11.13/go.mod h1:d7ptRksDDgvXaUvxyHZ9SYh+iMDymm94JbVcgvSYSzU= +github.com/aws/aws-sdk-go-v2/service/sts v1.16.10 h1:7tquJrhjYz2EsCBvA9VTl+sBAAh1bv7h/sGASdZOGGo= +github.com/aws/aws-sdk-go-v2/service/sts v1.16.10/go.mod h1:cftkHYN6tCDNfkSasAmclSfl4l7cySoay8vz7p/ce0E= +github.com/aws/smithy-go v1.12.0 h1:gXpeZel/jPoWQ7OEmLIgCUnhkFftqNfwWUwAHSlp1v0= +github.com/aws/smithy-go v1.12.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= +github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bits-and-blooms/bitset v1.2.1 h1:M+/hrU9xlMp7t4TyTDQW97d3tRPVuKFC6zBEK16QnXY= -github.com/bits-and-blooms/bitset v1.2.1/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blevesearch/bleve v1.0.14 h1:Q8r+fHTt35jtGXJUM0ULwM3Tzg+MRfyai4ZkWDy2xO4= @@ -124,9 +305,8 @@ github.com/blevesearch/blevex v1.0.0/go.mod h1:2rNVqoG2BZI8t1/P1awgTKnGlx5MP9Zbt github.com/blevesearch/cld2 v0.0.0-20200327141045-8b5f551d37f5/go.mod h1:PN0QNTLs9+j1bKy3d/GB/59wsNBFC4sWLWG3k69lWbc= github.com/blevesearch/go-porterstemmer v1.0.3 h1:GtmsqID0aZdCSNiY8SkuPJ12pD4jI+DdXTAn4YRcHCo= github.com/blevesearch/go-porterstemmer v1.0.3/go.mod h1:angGc5Ht+k2xhJdZi511LtmxuEf0OVpvUUNrwmM1P7M= +github.com/blevesearch/mmap-go v1.0.2 h1:JtMHb+FgQCTTYIhtMvimw15dJwu1Y5lrZDMOFXVWPk0= github.com/blevesearch/mmap-go v1.0.2/go.mod h1:ol2qBqYaOUsGdm7aRMRrYGgPvnwLe6Y+7LMvAB5IbSA= -github.com/blevesearch/mmap-go v1.0.3 h1:7QkALgFNooSq3a46AE+pWeKASAZc9SiNFJhDGF1NDx4= -github.com/blevesearch/mmap-go v1.0.3/go.mod h1:pYvKl/grLQrBxuaRYgoTssa4rVujYYeenDp++2E+yvs= github.com/blevesearch/segment v0.9.0 h1:5lG7yBCx98or7gK2cHMKPukPZ/31Kag7nONpoBt22Ac= github.com/blevesearch/segment v0.9.0/go.mod h1:9PfHYUdQCgHktBgvtUOF4x+pc4/l8rdH0u5spnW85UQ= github.com/blevesearch/snowballstem v0.9.0 h1:lMQ189YspGP6sXvZQ4WZ+MLawfV8wOmPoD/iWeNXm8s= @@ -143,223 +323,668 @@ github.com/blevesearch/zap/v15 v15.0.3 h1:Ylj8Oe+mo0P25tr9iLPp33lN6d4qcztGjaIsP5 github.com/blevesearch/zap/v15 v15.0.3/go.mod h1:iuwQrImsh1WjWJ0Ue2kBqY83a0rFtJTqfa9fp1rbVVU= github.com/bluele/gcache v0.0.2 h1:WcbfdXICg7G/DGBh1PFfcirkWOQV+v077yF1pSy3DGw= github.com/bluele/gcache v0.0.2/go.mod h1:m15KV+ECjptwSPxKhOhQoAFQVtUFjTVkc3H8o0t/fp0= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bradfitz/gomemcache v0.0.0-20170208213004-1952afaa557d/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= -github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= +github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= +github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= +github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= +github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= +github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= +github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= +github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= +github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= +github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= +github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= +github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= +github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= +github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= +github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= +github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= +github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= +github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= +github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= +github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= +github.com/containerd/cgroups v1.0.3/go.mod h1:/ofk34relqNjSGyqPrmEULrO4Sc8LJhvJmWbUCUKqj8= +github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= +github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= +github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= +github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= +github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.9/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= +github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= +github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= +github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= +github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= +github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= +github.com/containerd/containerd v1.5.8/go.mod h1:YdFSv5bTFLpG2HIYmfqDpSYYTDX+mc5qtSuYx1YUb/s= +github.com/containerd/containerd v1.6.1/go.mod h1:1nJz5xCZPusx6jJU8Frfct988y0NpumIq9ODB0kLtoE= +github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= +github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= +github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= +github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= +github.com/containerd/continuity v0.2.2/go.mod h1:pWygW9u7LtS1o4N/Tn0FoCFDIXZ7rxcMX7HX1Dmibvk= +github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= +github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= +github.com/containerd/go-cni v1.1.0/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= +github.com/containerd/go-cni v1.1.3/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= +github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= +github.com/containerd/go-runc v0.0.0-20201020171139-16b287bc67d0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= +github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= +github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= +github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= +github.com/containerd/imgcrypt v1.1.3/go.mod h1:/TPA1GIDXMzbj01yd8pIbQiLdQxed5ue1wb8bP7PQu4= +github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= +github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= +github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= +github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= +github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= +github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= +github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= +github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= +github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v0.0.0-20210324211415-d5c4544f0433/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v1.0.1/go.mod h1:AKuhXbN5EzmD4yTNtfSsX3tPcmtrBI6QcRV0NiNt15Y= +github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= +github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= +github.com/containernetworking/plugins v1.0.1/go.mod h1:QHCfGpaTwYTbbH+nZXKVTxNBDZcxSOplJT5ico8/FLE= +github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= +github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= +github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= +github.com/containers/ocicrypt v1.1.2/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-iptables v0.6.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q= +github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/couchbase/ghistogram v0.1.0/go.mod h1:s1Jhy76zqfEecpNWJfWUiKZookAFaiGOEoyzgHt9i7k= github.com/couchbase/moss v0.1.0/go.mod h1:9MaHIaRuy9pvLPUJxB8sh8OrLfyDczECVL37grCIubs= github.com/couchbase/vellum v1.0.2 h1:BrbP0NKiyDdndMPec8Jjhy0U47CZ0Lgx3xUC2r9rZqw= github.com/couchbase/vellum v1.0.2/go.mod h1:FcwrEivFpNi24R3jLOs3n+fs5RnuQnQqCLBJ1uAg1W4= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.1 h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU= -github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= +github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d h1:SwD98825d6bdB+pEuTxWOXiSjBrHdOl/UVp75eI7JT8= github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d/go.mod h1:URriBxXwVq5ijiJ12C7iIZqlA69nTlI+LgI6/pwftG8= github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= github.com/cznic/strutil v0.0.0-20181122101858-275e90344537/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc= +github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= +github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= +github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= +github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/denisenkom/go-mssqldb v0.12.2/go.mod h1:lnIw1mZukFRZDJYQ0Pb833QS2IaC3l5HkEfra2LJ+sk= +github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= +github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= -github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= +github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= -github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/digitalocean/godo v1.78.0/go.mod h1:GBmu8MkjZmNARE7IXRPmkbbnocNN8+uBm0xbEVw2LCs= +github.com/digitalocean/godo v1.81.0/go.mod h1:BPCqvwbjbGqxuUnIKB4EvS/AX7IDnNmt5fwvIkWo+ew= github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c= github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4= github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/dlclark/regexp2 v1.7.0 h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo= github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= +github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= +github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.14+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.17+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= +github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= +github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= -github.com/dop251/goja v0.0.0-20220815083517-0c74f9139fd6 h1:xHdUVG+c8SWJnct16Z3QJOVlaYo3OwoJyamo6kR6OL0= -github.com/dop251/goja v0.0.0-20220815083517-0c74f9139fd6/go.mod h1:yRkwfj0CBpOGre+TwBsqPV0IH0Pk73e4PXJOeNDboGs= +github.com/dop251/goja v0.0.0-20221115122301-6c0d9883792e h1:Uo51nR73BJlci20AE5tXT5qiLSGZy5LHnRlKt7VkcUM= +github.com/dop251/goja v0.0.0-20221115122301-6c0d9883792e/go.mod h1:yRkwfj0CBpOGre+TwBsqPV0IH0Pk73e4PXJOeNDboGs= github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d/go.mod h1:DngW8aVqWbuLRMHItjPUyqdj+HWPvnQe8V8y1nDpIbM= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eclipse/paho.mqtt.golang v1.3.5 h1:sWtmgNxYM9P2sP+xEItMozsR3w0cqZFlqnNN1bdl41Y= -github.com/eclipse/paho.mqtt.golang v1.3.5/go.mod h1:eTzb4gxwwyWpqBUHGQZ4ABAV7+Jgm1PklsYT/eo8Hcc= -github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/eclipse/paho.mqtt.golang v1.4.2 h1:66wOzfUHSSI1zamx7jR6yMEI5EuHnT1G6rNA5PM12m4= +github.com/eclipse/paho.mqtt.golang v1.4.2/go.mod h1:JGt0RsEwEX+Xa/agj90YJ9d9DH2b7upDZMK9HRbFvCA= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 h1:OJyUGMJTzHTd1XQp98QTaHernxMYzRaOasRir9hUlFQ= github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21/go.mod h1:iL2twTeMvZnrg54ZoPDNfJaJaqy0xIQFuBdrLsmspwQ= -github.com/emersion/go-sasl v0.0.0-20211008083017-0b9dcfb154ac h1:tn/OQ2PmwQ0XFVgAHfjlLyqMewry25Rz7jWnVoh4Ggs= -github.com/emersion/go-sasl v0.0.0-20211008083017-0b9dcfb154ac/go.mod h1:iL2twTeMvZnrg54ZoPDNfJaJaqy0xIQFuBdrLsmspwQ= github.com/emersion/go-smtp v0.15.0 h1:3+hMGMGrqP/lqd7qoxZc1hTU8LY8gHV9RFGWlqSDmP8= github.com/emersion/go-smtp v0.15.0/go.mod h1:qm27SGYgoIPRot6ubfQ/GpiPy/g3PaZAVRxiO/sDUgQ= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.3 h1:HkntewfZJ9RofA/FX38zBCeIAqlLDFLbAI6eTpZqFJw= -github.com/envoyproxy/protoc-gen-validate v0.6.3/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= -github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= +github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= +github.com/envoyproxy/protoc-gen-validate v0.9.0 h1:wyv+mWIshClA4g6hTlKD9xb6fiNAnDu3+8qYf7KSuSE= +github.com/envoyproxy/protoc-gen-validate v0.9.0/go.mod h1:aUb/JIPT9p8VQ1hMxCrB3/NZSvKoF7fPIE1ULgCIVz0= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= -github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= +github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/fsnotify/fsnotify v1.4.3-0.20170329110642-4da3e2cfbabc/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= +github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/garyburd/redigo v1.1.1-0.20170914051019-70e1b1943d4f/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= -github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= -github.com/getsentry/sentry-go v0.12.0 h1:era7g0re5iY13bHSdN/xMkyV+5zZppjRVQhZrXCaEIk= -github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= +github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= +github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= +github.com/getsentry/sentry-go v0.15.0 h1:CP9bmA7pralrVUedYZsmIHWpq/pBtXTSew7xvVpfLaA= +github.com/getsentry/sentry-go v0.15.0/go.mod h1:RZPJKSw+adu8PBNygiri/A98FqVr2HtRckJk9XVxJ9I= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= -github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= +github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2 h1:Ujru1hufTHVb++eG6OuNDKMxZnGIvF6o/u8q/8h2+I4= github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= +github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31 h1:gclg6gY70GLy3PbkQ1AERPfmLMMagS60DKF78eWwLn8= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= -github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= -github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0 h1:7i2K3eKTos3Vc0enKCfnVcgHh2olr/MyfboYq7cAcFw= github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= -github.com/go-redis/redis/v8 v8.11.4 h1:kHoYkfZP6+pe04aFTnhDH6GDROa5yJdHJVNxV3F46Tg= -github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w= +github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= +github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= +github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= +github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g= +github.com/go-openapi/runtime v0.23.1/go.mod h1:AKurw9fNre+h3ELZfk6ILsfvPN+bvvlaU/M9q/r9hpk= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= +github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg= +github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= +github.com/go-openapi/strfmt v0.21.2/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= +github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= +github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.6.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= +github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= +github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= +github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= +github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= +github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= +github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= +github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= +github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= +github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= +github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= +github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= +github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= +github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= +github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= +github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= +github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= +github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= +github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= +github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= +github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= +github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= +github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= -github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs= +github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f h1:16RtHeWGkJMc80Etb8RPCcKevXGldr57+LOyZt8zOlg= github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f/go.mod h1:ijRvpgDJDI262hYq/IQVYgf8hd8IHUs93Ol0kvMBAx4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/lint v0.0.0-20170918230701-e5d664eb928e/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/protobuf v1.3.5 h1:F768QJ1E9tib+q5Sc8MkdJi1RxLTbRcTf8LJV56aRls= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38 h1:y0Wmhvml7cGnzPa9nocn/fMraMH/lMDdeG+rkx4VgYY= -github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/gomodule/redigo v1.8.9 h1:Sl3u+2BI/kk+VEatbj0scLdrFhjPmbxOc1myhDP41ws= +github.com/gomodule/redigo v1.8.9/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= github.com/google/go-cmp v0.1.1-0.20171103154506-982329095285/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/go-replayers/grpcreplay v0.1.0 h1:eNb1y9rZFmY4ax45uEEECSa8fsxGRU+8Bil52ASAwic= -github.com/google/go-replayers/grpcreplay v0.1.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= -github.com/google/go-replayers/httpreplay v0.1.0 h1:AX7FUb4BjrrzNvblr/OlgwrmFiep6soj5K2QSDW7BGk= -github.com/google/go-replayers/httpreplay v0.1.0/go.mod h1:YKZViNhiGgqdBlUbI2MwGpq4pXxNmhJLPHQ7cv2b5no= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/google/go-replayers/grpcreplay v1.1.0 h1:S5+I3zYyZ+GQz68OfbURDdt/+cSMqCK1wrvNx7WBzTE= +github.com/google/go-replayers/grpcreplay v1.1.0/go.mod h1:qzAvJ8/wi57zq7gWqaE6AwLM6miiXUQwP1S+I9icmhk= +github.com/google/go-replayers/httpreplay v1.1.1 h1:H91sIMlt1NZzN7R+/ASswyouLJfW0WLW7fhyUFvDEkY= +github.com/google/go-replayers/httpreplay v1.1.1/go.mod h1:gN9GeLIs7l6NUoVaSSnv2RiqK1NiwAmD0MrKeC9IIks= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible h1:xmapqc1AyLoB+ddYT6r04bD9lIjlOqGaREovi0SzFaE= github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.1.0 h1:wCKgOCHuUEVfsaQLpPSJb7VdYCdTVZQAuOdYm1yc/60= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210506205249-923b5ab0fc1a/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= +github.com/google/pprof v0.0.0-20220608213341-c488b8fa1db3/go.mod h1:gSuNB+gJaOiQKLEZ+q+PK9Mq3SOzhRcw2GsGS/FhYDk= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/wire v0.3.0/go.mod h1:i1DMg/Lu8Sz5yYl25iOdmc5CT5qusaa+zmRWs16741s= github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8= github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0 h1:y8Yozv7SZtlU//QXbezB6QkpuE6jMD2/gfzk4AftXjs= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= -github.com/googleapis/gax-go v2.0.2+incompatible h1:silFMLAnr330+NRuag/VjIGF7TLp/LBrV2CJKFLWEww= -github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= -github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.6.0 h1:SXk3ABtQYDT/OH8jAyvEOQ58mgawq5C4o/4/89qN2ZU= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= +github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gophercloud/gophercloud v0.24.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= +github.com/gophercloud/gophercloud v0.25.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99 h1:twflg0XRTjwKpxb/jFExr4HGq6on2dEOmnL6FV+fgPw= github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/csrf v1.7.1 h1:Ir3o2c1/Uzj6FBxMlAUB6SivgVMy1ONXwYgXn+/aHPE= github.com/gorilla/csrf v1.7.1/go.mod h1:+a/4tCmqhG6/w4oafeAZ9pEa3/NZOWYVbD9fV0FwIQA= +github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc= github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gotnospirit/makeplural v0.0.0-20180622080156-a5f48d94d976 h1:b70jEaX2iaJSPZULSUxKtm73LBfsCrMsIlYCUgNGSIs= github.com/gotnospirit/makeplural v0.0.0-20180622080156-a5f48d94d976/go.mod h1:ZGQeOwybjD8lkCjIyJfqR5LD2wMVHJ31d6GdPxoTsWY= -github.com/gotnospirit/messageformat v0.0.0-20190719172517-c1d0bdacdea2 h1:yUr520KXfjzq/QTGZ2h+DvEydkyBfvifw6ksyDW3Lpg= -github.com/gotnospirit/messageformat v0.0.0-20190719172517-c1d0bdacdea2/go.mod h1:NO9UUa4C4cSmRsYSfZMAKhI5ifCRzOjSGe/pi7TKRvs= +github.com/gotnospirit/messageformat v0.0.0-20221001023931-dfe49f1eb092 h1:c7gcNWTSr1gtLp6PyYi3wzvFCEcHJ4YRobDgqmIgf7Q= +github.com/gotnospirit/messageformat v0.0.0-20221001023931-dfe49f1eb092/go.mod h1:ZZAN4fkkful3l1lpJwF8JbW41ZiG9TwJ2ZlqzQovBNU= +github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= github.com/gregjones/httpcache v0.0.0-20170920190843-316c5e0ff04e/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.3 h1:BGNSrTRW4rwfhJiFwvwF4XQ0Y72Jj9YEgxVrtovbD5o= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.3/go.mod h1:VHn7KgNsRriXa4mcgtkpR00OXyQY6g67JWMvn+R27A4= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.2/go.mod h1:chrfS3YoLAlKTRE5cFWvCbt8uGAjshktT4PveTUpsFQ= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.13.0 h1:fi9bGIUJOGzzrHBbP8NWbTfNC5fKO6X7kFw40TOqGB8= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.13.0/go.mod h1:uY3Aurq+SxwQCpdX91xZ9CgxIMT1EsYtcidljXufYIY= +github.com/hanwen/go-fuse v1.0.0/go.mod h1:unqXarDXqzAk0rt98O2tVndEPIpUgLD9+rwFisZH3Ok= +github.com/hanwen/go-fuse/v2 v2.1.0/go.mod h1:oRyA5eK+pvJyv5otpO/DgccS8y/RvYMaO00GgRLGryc= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= +github.com/hashicorp/consul/api v1.13.0/go.mod h1:ZlVrynguJKcYr54zGaDbaL3fOvKC9m72FhPvA8T35KQ= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= +github.com/hashicorp/cronexpr v1.1.1/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= +github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v0.12.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.2.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -374,38 +999,89 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/memberlist v0.3.1/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/nomad/api v0.0.0-20220629141207-c2428e1673ec/go.mod h1:jP79oXjopTyH6E8LF0CEMq67STgrlmBRIyijA0tuR5o= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hellofresh/health-go/v5 v5.0.0 h1:jxjllHekqEU4VYIajKJtFoOxDp1YaaygNWwAoZwWFh0= github.com/hellofresh/health-go/v5 v5.0.0/go.mod h1:9hFVIBdKkxrg1bJurUPlw1D/0FWhl47IVfGYPy4Op9o= +github.com/hetznercloud/hcloud-go v1.33.1/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= +github.com/hetznercloud/hcloud-go v1.35.0/go.mod h1:mepQwR6va27S3UQthaEPGS86jtzSY9xWL1e9dyxXpgA= github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef h1:A9HsByNhogrvm9cWb28sjiS3i7tcKCkflWFEkHfuAgM= github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.3.1 h1:4jgBlKK6tLKFvO8u5pmYjG91cqytmDCDvGh7ECVFfFs= github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= +github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/ikawaha/kagome.ipadic v1.1.2/go.mod h1:DPSBbU0czaJhAb/5uKQZHMc9MTVRpDugJfX+HddPHHg= -github.com/imdario/mergo v0.3.11 h1:3tnifQM4i+fbajXKBHXWEH+KvNHqojZ778UH75j3bGA= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= +github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/log15 v0.0.0-20170622235902-74a0988b5f80/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= -github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= -github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= -github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= -github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= +github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= +github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/intel/goresctrl v0.2.0/go.mod h1:+CZdzouYFn5EsxgqAQTEzMfwKwuc0fVdMrT9FCCAVRQ= +github.com/ionos-cloud/sdk-go/v6 v6.1.0/go.mod h1:Ox3W0iiEz0GHnfY9e5LmAxwklsxguuNFEUSu0gVRTME= +github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= +github.com/j-keck/arping v1.0.2/go.mod h1:aJbELhR92bSk7tp79AWM/ftfc90EfEi2bQJrbBFOsPw= +github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= +github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= +github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= +github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= +github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= +github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= +github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= +github.com/jackc/pgconn v1.12.1/go.mod h1:ZkhRC59Llhrq3oSfrikvwQ5NaxYExr6twkdkMLaKono= github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa h1:s+4MhCQ6YrzisK6hFJUX53drDT4UsSW3DEhKn0ifuHw= github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa/go.mod h1:a/s9Lp5W7n/DD0VrVoyJ00FbP2ytTPDVOivvn2bMlds= +github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= +github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= +github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= -github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= -github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= +github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.3.0/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= +github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= +github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= +github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= +github.com/jackc/pgtype v1.11.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= +github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= +github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= +github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= +github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= +github.com/jackc/pgx/v4 v4.16.1/go.mod h1:SIhx0D5hoADaiXZVyv+3gSm3LCIIINTVO0PficsvWGQ= github.com/jackc/pgx/v5 v5.2.0 h1:NdPpngX0Y6z6XDFKqmFQaE+bCtkqzvQIOt1wvBlAqs8= github.com/jackc/pgx/v5 v5.2.0/go.mod h1:Ptn7zmohNsWEsdxRawMzk3gaKma2obW+NWTnKa0S4nk= +github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.2.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115 h1:YuDUUFNM21CAbyPOpOP8BicaTD/0klJEKt5p8yuw+uY= github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115/go.mod h1:LadVJg0XuawGk+8L1rYnIED8451UyNxEMdTWCEt5kmU= github.com/jacobsa/oglematchers v0.0.0-20150720000706-141901ea67cd h1:9GCSedGjMcLZCrusBZuo4tyKLpKUPenUUqi34AkuFmA= @@ -416,13 +1092,15 @@ github.com/jacobsa/ogletest v0.0.0-20170503003838-80d50a735a11 h1:BMb8s3ENQLt5ul github.com/jacobsa/ogletest v0.0.0-20170503003838-80d50a735a11/go.mod h1:+DBdDyfoO2McrOyDemRBq0q9CMEByef7sYl7JH5Q3BI= github.com/jacobsa/reqtrace v0.0.0-20150505043853-245c9e0234cb h1:uSWBjJdMf47kQlXMwWEfmc864bA1wAC+Kl3ApryuG9Y= github.com/jacobsa/reqtrace v0.0.0-20150505043853-245c9e0234cb/go.mod h1:ivcmUvxXWjb27NsPEaiYK7AidlZXS7oQ5PowUS9z3I4= -github.com/jarcoal/httpmock v1.1.0 h1:F47ChZj1Y2zFsCXxNkBPwNNKnAyOATcdQibk0qEdVCE= -github.com/jarcoal/httpmock v1.1.0/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= +github.com/jarcoal/httpmock v1.2.0 h1:gSvTxxFR/MEMfsGrvRbdfpRUMBStovlSRLw0Ep1bwwc= +github.com/jarcoal/httpmock v1.2.0/go.mod h1:oCoTsnAz4+UoOUIf5lJOWV2QQIW5UoeUI6aM2YnWAZk= github.com/jaytaylor/html2text v0.0.0-20211105163654-bc68cce691ba h1:QFQpJdgbON7I0jr2hYW7Bs+XV0qjc3d5tZoDnRFnqTg= github.com/jaytaylor/html2text v0.0.0-20211105163654-bc68cce691ba/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk= +github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= @@ -430,95 +1108,166 @@ github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGw github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtacoma/uritemplates v1.0.0 h1:xwx5sBF7pPAb0Uj8lDC1Q/aBPpOFyQza7OC705ZlLCo= github.com/jtacoma/uritemplates v1.0.0/go.mod h1:IhIICdE9OcvgUnGwTtJxgBQ+VrTrti5PcbLVSJianO8= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= -github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= -github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= -github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= -github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= -github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= +github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= +github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/kljensen/snowball v0.6.0/go.mod h1:27N7E8fVU5H68RlUmnWwZCfxgt4POBJfENGMvNRhldw= +github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= -github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= -github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= +github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linode/linodego v1.4.0/go.mod h1:PVsRxSlOiJyvG4/scTszpmZDTdgS+to3X6eS8pRrWI8= +github.com/linode/linodego v1.8.0/go.mod h1:heqhl91D8QTPVm2k9qZHP78zzbOdTFLXE9NJc3bcc50= +github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.7.4-0.20170902060319-8d7837e64d3c/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= +github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= +github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.0.10-0.20170816031813-ad5389df28cd/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-ieproxy v0.0.1 h1:qiyop7gCflfhwCzGyeT0gro3sF9AIg9HU98JORTkqfI= -github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-isatty v0.0.2/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= -github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= -github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/maxatome/go-testdeep v1.11.0 h1:Tgh5efyCYyJFGUYiT0qxBSIDeXw0F5zSoatlou685kk= +github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= +github.com/microsoft/ApplicationInsights-Go v0.4.4/go.mod h1:fKRUseBqkw6bDiXTs3ESTiU/4YTIHsQS4W3fP2ieF4U= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/miekg/dns v1.1.48/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= +github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= +github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v0.0.0-20170523030023-d0303fe80992/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= +github.com/moby/sys/signal v0.6.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= +github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= +github.com/moby/sys/symlink v0.2.0/go.mod h1:7uZVF2dqJjG/NsClqul95CqKOBRQyYSNnJ6BMgR/gFs= +github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= +github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= +github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -526,171 +1275,387 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= -github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/mschoch/smat v0.2.0 h1:8imxQsjDm8yFEAVBe7azKmKSgzSkZXDuKkSq9374khM= github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nats-io/jwt v0.2.6/go.mod h1:mQxQ0uHQ9FhEVPIcTSKwx2lqZEpXWWcCgA7R6NrWvvY= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/jwt/v2 v2.2.1-0.20220113022732-58e87895b296 h1:vU9tpM3apjYlLLeY23zRWJ9Zktr5jp+mloR942LEOpY= github.com/nats-io/jwt/v2 v2.2.1-0.20220113022732-58e87895b296/go.mod h1:0tqz9Hlu6bCBFLWAASKhE5vUA4c24L9KPUUgvwumE/k= -github.com/nats-io/nats-server/v2 v2.0.0/go.mod h1:RyVdsHHvY4B6c9pWG+uRLpZ0h0XsqiuKp2XCTurP5LI= -github.com/nats-io/nats-server/v2 v2.7.4 h1:c+BZJ3rGzUKCBIM4IXO8uNT2u1vajGbD1kPA6wqCEaM= -github.com/nats-io/nats-server/v2 v2.7.4/go.mod h1:1vZ2Nijh8tcyNe8BDVyTviCd9NYzRbubQYiEHsvOQWc= -github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= +github.com/nats-io/jwt/v2 v2.3.0 h1:z2mA1a7tIf5ShggOFlR1oBPgd6hGqcDYsISxZByUzdI= +github.com/nats-io/jwt/v2 v2.3.0/go.mod h1:0tqz9Hlu6bCBFLWAASKhE5vUA4c24L9KPUUgvwumE/k= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats-server/v2 v2.7.2/go.mod h1:tckmrt0M6bVaDT3kmh9UrIq/CBOBBse+TpXQi5ldaa8= +github.com/nats-io/nats-server/v2 v2.9.6 h1:RTtK+rv/4CcliOuqGsy58g7MuWkBaWmF5TUNwuUo9Uw= +github.com/nats-io/nats-server/v2 v2.9.6/go.mod h1:AB6hAnGZDlYfqb7CTAm66ZKMZy9DpfierY1/PbpvI2g= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nats.go v1.13.1-0.20220308171302-2f2f6968e98d h1:zJf4l8Kp67RIZhoVeniSLZs69SHNgjLHz0aNsqPPlx8= -github.com/nats-io/nats.go v1.13.1-0.20220308171302-2f2f6968e98d/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= -github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= +github.com/nats-io/nats.go v1.13.1-0.20220121202836-972a071d373d/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= +github.com/nats-io/nats.go v1.16.0/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= +github.com/nats-io/nats.go v1.20.0 h1:T8JJnQfVSdh1CzGiwAOv5hEobYCBho/0EupGznYw0oM= +github.com/nats-io/nats.go v1.20.0/go.mod h1:tLqubohF7t4z3du1QDPYJIQQyhb4wl6DhjxEajSI7UA= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.3.0 h1:cgM5tL53EvYRU+2YLXIK0G2mJtK12Ft9oeooSZMA2G8= github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4= github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/ulid/v2 v2.0.2 h1:r4fFzBm+bv0wNKNh5eXTwU7i85y5x+uwkxCUTNVQqLc= -github.com/oklog/ulid/v2 v2.0.2/go.mod h1:mtBL0Qe/0HAx6/a4Z30qxVIAL1eQDweXq5lxOEiwQ68= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/oklog/ulid/v2 v2.1.0 h1:+9lhoxAP56we25tyYETBBY1YLA2SaoLvUFgrP2miPJU= +github.com/oklog/ulid/v2 v2.1.0/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/gomega v1.10.0 h1:Gwkk+PTu/nfOwNMtUB/mRUv0X7ewW5dO4AERT1ThVKo= -github.com/onsi/gomega v1.10.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= +github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= +github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.2-0.20211117181255-693428a734f5/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= +github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= +github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= +github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= +github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= +github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= +github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= +github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= github.com/openshift/osin v1.0.1 h1:2hYushQtTLGVfnKAmz1+/ln5GZD0ykJCavs2JIwVEfQ= github.com/openshift/osin v1.0.1/go.mod h1:/gGuqQHvGNST0GB+Pomi3398FTdcM+9UaXafpqHvfDM= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= -github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= -github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.0.1-0.20170904195809-1d6b12b7cb29/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= +github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= -github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= +github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/philhofer/fwd v1.0.0 h1:UbZqGr5Y38ApvM/V/jEljVxwocdweyH+vmYvRPBnbqQ= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= -github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= +github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= +github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= +github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= +github.com/prometheus/alertmanager v0.24.0/go.mod h1:r6fy/D7FRuZh5YbnX6J3MBY0eI4Pb5yPYS7/bPSXXqI= +github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= +github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= +github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= +github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= +github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= +github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= +github.com/prometheus/common/assets v0.1.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= +github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= +github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= +github.com/prometheus/exporter-toolkit v0.7.1/go.mod h1:ZUBIj498ePooX9t/2xtDjeQYwvRpiPP2lh5u4iblj2g= +github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/statsd_exporter v0.21.0/go.mod h1:rbT83sZq2V+p73lHhPZfMc3MLCHmSHelCh9hSGYNLTQ= -github.com/prometheus/statsd_exporter v0.22.4 h1:bGhC0iI9DM8m9KIUlbcr3uzXnopagrajEKoP790256k= -github.com/prometheus/statsd_exporter v0.22.4/go.mod h1:N4Z1+iSqc9rnxlT1N8Qn3l65Vzb5t4Uq0jpg8nxyhio= +github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= +github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= +github.com/prometheus/prometheus v0.35.0/go.mod h1:7HaLx5kEPKJ0GDgbODG0fZgXbQ8K/XjZNJXQmbmgQlY= +github.com/prometheus/prometheus v0.37.0/go.mod h1:egARUgz+K93zwqsVIAneFlLZefyGOON44WyAp4Xqbbk= +github.com/prometheus/statsd_exporter v0.22.7 h1:7Pji/i2GuhK6Lu7DHrtTkFmNBCudCPT1pX2CziuyQR0= +github.com/prometheus/statsd_exporter v0.22.7/go.mod h1:N/TevpjkIh9ccs6nuzY3jQn9dFqnUakOjnEuMPJJJnI= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rakyll/embedmd v0.0.0-20171029212350-c8060a0752a2/go.mod h1:7jOTMgqac46PZcF54q6l2hkLEG8op93fZu61KmxWDV4= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= +github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= -github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= +github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= +github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= +github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= +github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sendgrid/rest v2.6.8+incompatible h1:GldbsYQ10qackj/IH9DskKhMm5Q10lpMJznaRAj+zOQ= -github.com/sendgrid/rest v2.6.8+incompatible/go.mod h1:kXX7q3jZtJXK5c5qK83bSGMdV6tsOE70KbHoqJls4lE= -github.com/sendgrid/sendgrid-go v3.11.0+incompatible h1:qxQFf21EMuIy3TvlEO7JVzwdXEJLaLwVRT4GFBKktic= -github.com/sendgrid/sendgrid-go v3.11.0+incompatible/go.mod h1:QRQt+LX/NmgVEvmdRw0VT/QgUn499+iza2FnDca9fg8= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= +github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= +github.com/sendgrid/rest v2.6.9+incompatible h1:1EyIcsNdn9KIisLW50MKwmSRSK+ekueiEMJ7NEoxJo0= +github.com/sendgrid/rest v2.6.9+incompatible/go.mod h1:kXX7q3jZtJXK5c5qK83bSGMdV6tsOE70KbHoqJls4lE= +github.com/sendgrid/sendgrid-go v3.12.0+incompatible h1:/N2vx18Fg1KmQOh6zESc5FJB8pYwt5QFBDflYPh1KVg= +github.com/sendgrid/sendgrid-go v3.12.0+incompatible/go.mod h1:QRQt+LX/NmgVEvmdRw0VT/QgUn499+iza2FnDca9fg8= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= +github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0= github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= -github.com/smartystreets/assertions v1.2.1 h1:bKNHfEv7tSIjZ8JbKaFjzFINljxG4lzZvmHUnElzOIg= -github.com/smartystreets/assertions v1.2.1/go.mod h1:wDmR7qL282YbGsPy6H/yAsesrxfxaaSlJazyFLYVFx8= +github.com/smartystreets/assertions v1.13.0 h1:Dx1kYM01xsSqKPno3aqLnrwac2LetPvN23diwyr69Qs= +github.com/smartystreets/assertions v1.13.0/go.mod h1:wDmR7qL282YbGsPy6H/yAsesrxfxaaSlJazyFLYVFx8= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v0.0.0-20170901052352-ee1bd8ee15a1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.8.1 h1:izYHOT71f9iZ7iq37Uqjael60/vYC6vMtzedudZ0zEk= -github.com/spf13/afero v1.8.1/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= +github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/cast v1.1.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= -github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= -github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= +github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= +github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= +github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= +github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/jwalterweatherman v0.0.0-20170901151539-12bd96e66386/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1-0.20170901120850-7aff26db30c1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.8.1 h1:Kq1fyeebqsBfbjZj4EL7gj2IO0mMaiyjYUWcUsl2O44= -github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/spf13/viper v1.0.0/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/spf13/viper v1.14.0 h1:Rg7d3Lo706X9tHsJMUjdiwMpHB7W8WnSVOssIY+JElU= +github.com/spf13/viper v1.14.0/go.mod h1:WT//axPky3FdvXHzGw33dNdXXXfFQqmEalje+egj8As= github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf h1:pvbZ0lM0XWPBqUKqFU8cmavspvIl9nulOYwdy6IFRRo= github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf/go.mod h1:RJID2RhlZKId02nZ62WenDCkgHFerpIOmW0iT7GKmXM= +github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/steveyen/gtreap v0.1.0 h1:CjhzTa274PyJLJuMZwIzCO1PfC00oRa8d1Kc78bFXJM= github.com/steveyen/gtreap v0.1.0/go.mod h1:kl/5J7XbrOmlIbYIXdRHDDE5QxHqpk0cmkT7Z4dM9/Y= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= -github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stvp/go-udp-testing v0.0.0-20201019212854-469649b16807/go.mod h1:7jxmlfBCDBXRzr0eAQJ48XC1hBu1np4CS5+cHEYfwpc= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= +github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= +github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= github.com/tebeka/snowball v0.4.2/go.mod h1:4IfL14h1lvwZcp1sfXuuc7/7yCsvVffTWxWxCLfFpYg= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= +github.com/tedsuo/ifrit v0.0.0-20180802180643-bea94bb476cc/go.mod h1:eyZnKCc955uh98WQvzOm0dgAeLnf2O0Rz0LPoC5ze+0= github.com/throttled/throttled v2.2.5+incompatible h1:65UB52X0qNTYiT0Sohp8qLYVFwZQPDw85uSa65OljjQ= github.com/throttled/throttled v2.2.5+incompatible/go.mod h1:0BjlrEGQmvxps+HuXLsyRdqpSRvJpq0PNIsOtqP9Nos= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tinylib/msgp v1.1.0 h1:9fQd+ICuRIu/ue4vxJZu6/LzxN0HwMds2nq/0cFvxHU= github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc h1:9lRDQMhESg+zvGYmW5DyG0UqvY96Bu5QYsTLvCHdrgo= github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc/go.mod h1:bciPuU6GHm1iF1pBvUfxfsH0Wmnc2VbpgvbI9ZWuIRs= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/uptrace/bun v1.1.8 h1:slxuaP4LYWFbPRUmTtQhfJN+6eX/6ar2HDKYTcI50SA= github.com/uptrace/bun v1.1.8/go.mod h1:iT89ESdV3uMupD9ixt6Khidht+BK0STabK/LeZE+B84= @@ -698,244 +1663,541 @@ github.com/uptrace/bun/dialect/pgdialect v1.1.8 h1:wayJhjYDPGv8tgOBLolbBtSFQ0Tih github.com/uptrace/bun/dialect/pgdialect v1.1.8/go.mod h1:nNbU8PHTjTUM+CRtGmqyBb9zcuRAB8I680/qoFSmBUk= github.com/uptrace/bun/driver/pgdriver v1.1.8 h1:gyL22axRQfjJS2Umq0erzJnp0bLOdUE8/USKZHPQB8o= github.com/uptrace/bun/driver/pgdriver v1.1.8/go.mod h1:4tHK0h7a/UoldBoe9J3GU4tEYjr3mkd62U3Kq3PVk3E= -github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= +github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= +github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= +github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= github.com/vitorsalgado/mocha/v2 v2.0.2 h1:wb1QCRzVkp8uhRcUYmb9jJfbMj/qbiqcDyD8rD+Ldfw= github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU= github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/vultr/govultr/v2 v2.17.2/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI= github.com/willf/bitset v1.1.10/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/willf/bitset v1.1.11 h1:N7Z7E9UvjW+sGsEl7k/SJrvY2reP1A07MrGuCjIOjRE= github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= +github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= +github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= +github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= -github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= -github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= +github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= +github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= +github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= +github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= +go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= +go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= +go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= +go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= +go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= +go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= +go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/otel v1.10.0 h1:Y7DTJMR6zs1xkS/upamJYk0SxxN4C9AqRd77jmZnyY4= -go.opentelemetry.io/otel v1.10.0/go.mod h1:NbvWjCthWHKBEUMpf0/v8ZRZlni86PpGFEMA9pnQSnQ= -go.opentelemetry.io/otel/trace v1.10.0 h1:npQMbR8o7mum8uF95yFbOEJffhs1sbCOfDh8zAJiH5E= -go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/AzrK+kxfGqySM= -go.packetbroker.org/api/iam v1.5.27-tts h1:SHOL3Bf5RkKtVCwqRqVG2t4Jt/+NfJYiLp9GYpdcr3s= -go.packetbroker.org/api/iam v1.5.27-tts/go.mod h1:Zf/yONsx9NVY2Y3tlxV1xChwXq04OMbjfvCjkv7sZU0= -go.packetbroker.org/api/iam/v2 v2.7.8-tts h1:NpvEYz2zHA1bNzB58gLd+OosIaXKEOi2++8iLFQzBL4= -go.packetbroker.org/api/iam/v2 v2.7.8-tts/go.mod h1:X02eQUe1RrnmHsQGZjwvD30aSmiO8VV61mCBvoqlWtI= -go.packetbroker.org/api/mapping/v2 v2.1.27-tts h1:KTiH2bVD70bfkFmQipvZHj4oZa1xZOomMfrKFWumuXo= -go.packetbroker.org/api/mapping/v2 v2.1.27-tts/go.mod h1:NQzfb7pk8T84LH/o8lQSHl69WRNk/VKY9iHT9kjNHyU= -go.packetbroker.org/api/routing v1.8.18-tts h1:deogqPO0afgKqHrQH12JIJYwPutBnwmTgRah6G7d9JY= -go.packetbroker.org/api/routing v1.8.18-tts/go.mod h1:r7KJxKcPxX0DKPubxD4ZlEKe7NZV2MPyoMEJFzwC7YI= -go.packetbroker.org/api/v3 v3.12.3-tts/go.mod h1:KCAfVflcBNfqRj1lR6CzDz/4lqPSsrduxV73inCxBuE= -go.packetbroker.org/api/v3 v3.12.4-tts h1:9jtuy4k/G4kYR/F+lMyFrEtsGgXFr9u7LeGLxZvkaTQ= -go.packetbroker.org/api/v3 v3.12.4-tts/go.mod h1:KCAfVflcBNfqRj1lR6CzDz/4lqPSsrduxV73inCxBuE= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.28.0/go.mod h1:vEhqr0m4eTc+DWxfsXoXue2GBgV2uUwVznkGIHW/e5w= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.31.0/go.mod h1:PFmBsWbldL1kiWZk9+0LBZz2brhByaGsvp6pRICMlPE= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0/go.mod h1:5eCOqeGphOyz6TsY3ZDNjE33SM/TFAK3RGuCL2naTgY= +go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= +go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= +go.opentelemetry.io/otel v1.6.0/go.mod h1:bfJD2DZVw0LBxghOTlgnlI0CV3hLDu9XF/QKOUXMTQQ= +go.opentelemetry.io/otel v1.6.1/go.mod h1:blzUabWHkX6LJewxvadmzafgh/wnvBSDBdOuwkAtrWQ= +go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= +go.opentelemetry.io/otel v1.11.1 h1:4WLLAmcfkmDk2ukNXJyq3/kiz/3UzCaYq6PskJsaou4= +go.opentelemetry.io/otel v1.11.1/go.mod h1:1nNhXBbWSD0nsL38H6btgnFN2k4i0sNLHNNMZMSbUGE= +go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.6.1/go.mod h1:NEu79Xo32iVb+0gVNV8PMd7GoWqnyDXRlj04yFjqz40= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0/go.mod h1:M1hVZHNxcbkAlcvrOMlpQ4YOO3Awf+4N2dxkZL3xm04= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0/go.mod h1:hO1KLR7jcKaDDKDkvI9dP/FIhpmna5lkqPUQdEjFAM8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.6.1/go.mod h1:YJ/JbY5ag/tSQFXzH3mtDmHqzF3aFn3DI/aB1n7pt4w= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0/go.mod h1:ceUgdyfNv4h4gLxHR0WNfDiiVmZFodZhZSbOLhpxqXE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0/go.mod h1:keUU7UfnwWTWpJ+FWnyqmogPa82nuU5VUANFq49hlMY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.6.1/go.mod h1:UJJXJj0rltNIemDMwkOJyggsvyMG9QHfJeFH0HS5JjM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.7.0/go.mod h1:E+/KKhwOSw8yoPxSSuUHG6vKppkvhN+S1Jc7Nib3k3o= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.3.0/go.mod h1:QNX1aly8ehqqX1LEa6YniTU7VY9I6R3X/oPxhGdTceE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.6.1/go.mod h1:DAKwdo06hFLc0U88O10x4xnb5sc7dDRDqRuiN+io8JE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.7.0/go.mod h1:aFXT9Ng2seM9eizF+LfKiyPBGy8xIZKwhusC1gIu3hA= +go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= +go.opentelemetry.io/otel/metric v0.28.0/go.mod h1:TrzsfQAmQaB1PDcdhBauLMk7nyyg9hm+GoQq/ekE9Iw= +go.opentelemetry.io/otel/metric v0.30.0/go.mod h1:/ShZ7+TS4dHzDFmfi1kSXMhMVubNoP0oIaBp70J6UXU= +go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= +go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= +go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= +go.opentelemetry.io/otel/sdk v1.6.1/go.mod h1:IVYrddmFZ+eJqu2k38qD3WezFR2pymCzm8tdxyh3R4E= +go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU= +go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= +go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= +go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= +go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= +go.opentelemetry.io/otel/trace v1.6.0/go.mod h1:qs7BrU5cZ8dXQHBGxHMOxwME/27YH2qEp4/+tZLLwJE= +go.opentelemetry.io/otel/trace v1.6.1/go.mod h1:RkFRM1m0puWIq10oxImnGEduNBzxiN7TXluRBtE+5j0= +go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= +go.opentelemetry.io/otel/trace v1.11.1 h1:ofxdnzsNrGBYXbP7t7zpUK281+go5rF7dvdIZXF8gdQ= +go.opentelemetry.io/otel/trace v1.11.1/go.mod h1:f/Q9G7vzk5u91PhbmKbg1Qn0rzH1LJ4vbPHFGkTPtOk= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= +go.opentelemetry.io/proto/otlp v0.12.1/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.16.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.packetbroker.org/api/iam v1.5.27 h1:11zFINS05aYg6pSuJpS7ObE6GvU7rgzKpjrpXDDXcBA= +go.packetbroker.org/api/iam v1.5.27/go.mod h1:6XUeoMoCi9wkbTNR6PKPzbLMasGr6d4eM2p/DqHyEx4= +go.packetbroker.org/api/iam/v2 v2.7.8 h1:7ejsuOcxfxc3qiuIfwjXLukcGrN60walAi9Gb8CcDII= +go.packetbroker.org/api/iam/v2 v2.7.8/go.mod h1:zU/7Ec1x/71YncuQrm2vxlYJiCpj1gZzitOSFr6BVuM= +go.packetbroker.org/api/mapping/v2 v2.1.27 h1:j4swqJJPN74W28bRMtVM5o/Ms8XVFS7PXgIymR7yWF0= +go.packetbroker.org/api/mapping/v2 v2.1.27/go.mod h1:O1M0oa+6Pn7HjmnhlKv6qzGVjpecU8YcPkv76W+WH78= +go.packetbroker.org/api/routing v1.8.18 h1:U6ctgJcTS3wEJ4rqNwM/j2XUGouOL59Zl0zO/RxKdjA= +go.packetbroker.org/api/routing v1.8.18/go.mod h1:mwfrtAZH5kFGd4HXpKYFOgMbQ5tiA/n+soS7ajG0azU= +go.packetbroker.org/api/v3 v3.12.4 h1:3BGiYBgN20SaUrlucpIZ+PWy7Az/foM/ilM4zRs2iEk= +go.packetbroker.org/api/v3 v3.12.4/go.mod h1:ovVOyAdBDz8eT6B6JIOnDefQRTcGl42vhszDlbqTxGY= go.thethings.network/lorawan-application-payload v0.0.0-20220125153912-1198ff1e403e h1:TWGQ3lh7gI2W5hnb6qPdpoAa0d7s/XPwvgf2VVCMJaY= go.thethings.network/lorawan-application-payload v0.0.0-20220125153912-1198ff1e403e/go.mod h1:/smENFuESiJCyWRsHRLBjbZGMN889BORQXIPP6NlpZE= -go.thethings.network/lorawan-stack-legacy/v2 v2.0.2 h1:AXv7hAtYj0dPocFF6rhWwW5WvOVSm/YNk3yihgNYcXE= -go.thethings.network/lorawan-stack-legacy/v2 v2.0.2/go.mod h1:6ytuRb3k6/f/lJFvJpOaPS4abTDp2mdcE9EIZZV1v9U= +go.thethings.network/lorawan-stack-legacy/v2 v2.1.0-rc0 h1:vEWJBr+NbiUb0GR4RHAwTymLguBeJJC9Sx9AwY5zy3E= +go.thethings.network/lorawan-stack-legacy/v2 v2.1.0-rc0/go.mod h1:a8I+BLav5HrtQo02RqxCFwgFvv08tBrIQLb4oMKdaC8= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= +go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= +go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.7.0 h1:zaiO/rmgFjbmCXdSYJWQcdvOCsthmdaHfr3Gm2Kx4Ec= -go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= +go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= -gocloud.dev v0.19.0 h1:EDRyaRAnMGSq/QBto486gWFxMLczAfIYUmusV7XLNBM= -gocloud.dev v0.19.0/go.mod h1:SmKwiR8YwIMMJvQBKLsC3fHNyMwXLw3PMDO+VVteJMI= -gocloud.dev/pubsub/natspubsub v0.19.0 h1:hjWncQpWGfnlklMbkD66rb90tOdu8doTCqQk+N4hPfs= -gocloud.dev/pubsub/natspubsub v0.19.0/go.mod h1:XhdKKQYls8VY3onuEI4yFZpQ2auD+XvuJkkkce654ko= +go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +gocloud.dev v0.27.0 h1:j0WTUsnKTxCsWO7y8T+YCiBZUmLl9w/WIowqAY3yo0g= +gocloud.dev v0.27.0/go.mod h1:YlYKhYsY5/1JdHGWQDkAuqkezVKowu7qbe9aIeUF6p0= +gocloud.dev/pubsub/natspubsub v0.27.0 h1:67CpqtGNKaUzhdtDKPrxy27qJq9sqz4TP1ejwPAut9w= +gocloud.dev/pubsub/natspubsub v0.27.0/go.mod h1:NhnGDMXowllCRR+HojvlJ8Q7OTGxYvDPH64KtKQAJBE= +golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200206161412-a0c6ece9d31a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20220706164943-b4a6d9510983 h1:sUweFwmLOje8KNfXAVqGGAsmgJ/F8jJ6wBLJDt4BTKY= -golang.org/x/exp v0.0.0-20220706164943-b4a6d9510983/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20221114191408-850992195362 h1:NoHlPRbyl1VFI6FjwHtPQCN7wAMXI6cKcqrmXhOOfBQ= +golang.org/x/exp v0.0.0-20221114191408-850992195362/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 h1:hVwzHzIUGRjiF7EcUjqNxk3NCfkPxbDKRdnNE1Rpg0U= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20211028202545-6944b10bf410 h1:hTftEOvwiOq2+O8k2D5/Q7COC7k5Qcrgc2TFURJYnvQ= -golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= +golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220802222814-0bcc04d9c69b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/oauth2 v0.0.0-20170912212905-13449ad91cb2/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210615190721-d04028783cf1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 h1:OSnWWcOd/CtWQC2cYSBgbTSJv3ciqd8r54ySIW2y3RE= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220628200809-02e64fa58f26/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220722155238-128564f6959c/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.2.0 h1:GtQkldQ9m7yvzCL1V+LrYow3Khe0eJH0w7RbX/VbaIU= +golang.org/x/oauth2 v0.2.0/go.mod h1:Cwn6afJ8jrQwYMxQDTpISoXmXW9I6qF6vDeuuoX3Ibs= golang.org/x/sync v0.0.0-20170517211232-f52d1811a629/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220923202941-7f9b1623fab7 h1:ZrnxWX62AgTKOSagEqxvb3ffipvEDX2pl7E1TdqLqIc= -golang.org/x/sync v0.0.0-20220923202941-7f9b1623fab7/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181221143128-b4a75ba826a6/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190620070143-6f217b454f45/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501145240-bc7a7d42d5c3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210903071746-97244b99971b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220708085239-5a0f0661e09d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220731174439-a90be440212d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -944,92 +2206,483 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20170424234030-8be79e1e0910/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= +golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af h1:Yx9k8YCG3dvF87UAn2tu2HQLf2dt/eR1bXxpLMWeH+Y= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= +golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.53.0 h1:tR42CQpqOvZcatWtP2TRJdQCQaD0SVxTDIv+vCphrZs= -google.golang.org/api v0.53.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20170921000349-586095a6e407/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= +google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.86.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.91.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.102.0 h1:JxJl2qQ85fRMPNvlZY/enexbxpCjLwGhZUtgfGeQ51I= +google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884 h1:fiNLklpBwWK1mth30Hlwk+fcdBmIALlgF5iy77O37Ig= +google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= +google.golang.org/genproto v0.0.0-20170918111702-1e559d0a00ee/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/grpc v1.33.1 h1:DGeFlSan2f+WEtCERJ4J9GJWk15TxUi8QGagfI87Xyc= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210921142501-181ce0d877f6/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211018162055-cf77aa76bad2/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220802133213-ce4fa296bf78/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1 h1:jCw9YRd2s40X9Vxi4zKsPRvSPlHWNqadVkpbMsCPzPQ= +google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.2.1-0.20170921194603-d4b75ebd4f9f/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= -gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= +gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mail.v2 v2.3.1 h1:WYFn/oANrAGP2C0dcV6/pbkPzv8yGzqTjPmTeO7qoXk= gopkg.in/mail.v2 v2.3.1/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw= -gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI= gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/telebot.v3 v3.0.0/go.mod h1:7rExV8/0mDDNu9epSrDm/8j22KLaActH1Tbee6YjzWg= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= +gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -mellium.im/sasl v0.3.1 h1:wE0LW6g7U83vhvxjC1IY8DnXM+EU095yeo8XClvCdfo= -mellium.im/sasl v0.3.1/go.mod h1:xm59PUYpZHhgQ9ZqoJ5QaCqzWMi8IeS49dhp6plPCzw= -pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= +k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= +k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= +k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= +k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8= +k8s.io/api v0.24.2/go.mod h1:AHqbSkTm6YrQ0ObxjO3Pmp/ubFF/KuM7jU+3khoBsOg= +k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= +k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= +k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0U= +k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= +k8s.io/apimachinery v0.24.2/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= +k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= +k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= +k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= +k8s.io/apiserver v0.22.5/go.mod h1:s2WbtgZAkTKt679sYtSudEQrTGWUSQAPe6MupLnlmaQ= +k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= +k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= +k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= +k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= +k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4= +k8s.io/client-go v0.24.2/go.mod h1:zg4Xaoo+umDsfCWr4fCnmLEtQXyCNXCvJuSsglNcV30= +k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= +k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= +k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= +k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= +k8s.io/component-base v0.22.5/go.mod h1:VK3I+TjuF9eaa+Ln67dKxhGar5ynVbwnGrUiNF4MqCI= +k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= +k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= +k8s.io/cri-api v0.23.1/go.mod h1:REJE3PSU0h/LOV1APBrupxrEJqnoxZC8KWzkBUHwrK4= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= +k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.70.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= +k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= +k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= +k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= +k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= +k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +mellium.im/sasl v0.3.0 h1:0qoaTCTo5Py7u/g0cBIQZcMOgG/5LM71nshbXwznBh8= +mellium.im/sasl v0.3.0/go.mod h1:xm59PUYpZHhgQ9ZqoJ5QaCqzWMi8IeS49dhp6plPCzw= +nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= +sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/pkg/applicationserver/io/pubsub/provider/mqtt/driver_internal_test.go b/pkg/applicationserver/io/pubsub/provider/mqtt/driver_internal_test.go index 86f1931306..9c75be81bb 100644 --- a/pkg/applicationserver/io/pubsub/provider/mqtt/driver_internal_test.go +++ b/pkg/applicationserver/io/pubsub/provider/mqtt/driver_internal_test.go @@ -53,8 +53,8 @@ func (h *harness) CreateSubscription(ctx context.Context, t driver.Topic, testNa return dt, func() {}, nil } -func (h *harness) MakeNonexistentSubscription(ctx context.Context) (driver.Subscription, error) { - return (*subscription)(nil), nil +func (h *harness) MakeNonexistentSubscription(ctx context.Context) (driver.Subscription, func(), error) { + return (*subscription)(nil), func() {}, nil } func (h *harness) Close() { diff --git a/tools/go.mod b/tools/go.mod index 4f7055573c..bfe45282f0 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -4,79 +4,70 @@ go 1.19 replace go.thethings.network/lorawan-stack/v3 => ../ -// Use our fork of grpc-gateway. -replace github.com/grpc-ecosystem/grpc-gateway => github.com/TheThingsIndustries/grpc-gateway v1.15.2-gogo - -// But the original grpc-gateway v2. -replace github.com/grpc-ecosystem/grpc-gateway/v2 => github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.3 - -// Use our fork of gogo/protobuf. -replace github.com/gogo/protobuf => github.com/TheThingsIndustries/gogoprotobuf v1.3.1 - // Use our fork of throttled/throttled/v2. replace github.com/throttled/throttled/v2 => github.com/TheThingsIndustries/throttled/v2 v2.7.1-noredis -// Pin dependencies that would break because of our old golang/protobuf. -replace ( - cloud.google.com/go => cloud.google.com/go v0.81.0 - cloud.google.com/go/pubsub => cloud.google.com/go/pubsub v1.3.1 - cloud.google.com/go/storage => cloud.google.com/go/storage v1.16.0 - github.com/Azure/azure-storage-blob-go => github.com/Azure/azure-storage-blob-go v0.10.0 - github.com/golang/protobuf => github.com/golang/protobuf v1.3.5 - github.com/googleapis/gax-go/v2 => github.com/googleapis/gax-go/v2 v2.0.5 - github.com/onsi/gomega => github.com/onsi/gomega v1.10.0 - github.com/prometheus/client_golang => github.com/prometheus/client_golang v1.11.0 - github.com/spf13/cobra => github.com/spf13/cobra v1.2.1 - github.com/spf13/viper => github.com/spf13/viper v1.8.1 - gocloud.dev => gocloud.dev v0.19.0 - gocloud.dev/pubsub/natspubsub => gocloud.dev/pubsub/natspubsub v0.19.0 - google.golang.org/api => google.golang.org/api v0.53.0 - google.golang.org/genproto => google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884 - google.golang.org/grpc => google.golang.org/grpc v1.33.1 -) - -// Do not upgrade go-sqlmock beyond v1.3.0. -// See https://github.com/heptiolabs/healthcheck/issues/23. -replace gopkg.in/DATA-DOG/go-sqlmock.v1 => gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0 - require ( github.com/TheThingsIndustries/magepkg v0.0.0-20190214092847-6c0299b7c3ed github.com/blang/semver v3.5.1+incompatible github.com/client9/misspell v0.3.4 - github.com/cloudflare/cfssl v1.4.1 + github.com/cloudflare/cfssl v1.6.3 github.com/magefile/mage v1.14.0 - github.com/mattn/goveralls v0.0.5 + github.com/mattn/goveralls v0.0.11 go.thethings.network/lorawan-stack/v3 v3.0.0-00010101000000-000000000000 gopkg.in/yaml.v2 v2.4.0 ) require ( - cloud.google.com/go v0.90.0 // indirect - cloud.google.com/go/pubsub v1.3.1 // indirect - cloud.google.com/go/storage v1.16.0 // indirect - contrib.go.opencensus.io/exporter/prometheus v0.4.0 // indirect - github.com/Azure/azure-pipeline-go v0.2.3 // indirect - github.com/Azure/azure-storage-blob-go v0.10.0 // indirect + cloud.google.com/go v0.105.0 // indirect + cloud.google.com/go/compute v1.12.1 // indirect + cloud.google.com/go/compute/metadata v0.2.1 // indirect + cloud.google.com/go/iam v0.7.0 // indirect + cloud.google.com/go/pubsub v1.24.0 // indirect + cloud.google.com/go/storage v1.28.0 // indirect + contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect - github.com/Azure/go-autorest/autorest v0.11.24 // indirect - github.com/Azure/go-autorest/autorest/adal v0.9.18 // indirect - github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect - github.com/Azure/go-autorest/logger v0.2.1 // indirect - github.com/Azure/go-autorest/tracing v0.6.0 // indirect + github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.1.1 // indirect github.com/Masterminds/sprig/v3 v3.2.2 // indirect - github.com/RoaringBitmap/roaring v0.9.4 // indirect + github.com/RoaringBitmap/roaring v0.4.23 // indirect github.com/TheThingsIndustries/mystique v0.0.0-20211230093812-d4088bd06959 // indirect github.com/TheThingsIndustries/protoc-gen-go-flags v1.0.6 // indirect github.com/TheThingsIndustries/protoc-gen-go-json v1.4.2 // indirect github.com/TheThingsNetwork/go-cayenne-lib v1.1.0 // indirect - github.com/aws/aws-sdk-go v1.42.53 // indirect + github.com/aws/aws-sdk-go v1.44.137 // indirect + github.com/aws/aws-sdk-go-v2 v1.16.8 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.3 // indirect + github.com/aws/aws-sdk-go-v2/config v1.15.15 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.12.10 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9 // indirect + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.21 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.15 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.9 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.6 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.10 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.9 // indirect + github.com/aws/aws-sdk-go-v2/service/s3 v1.27.2 // indirect + github.com/aws/aws-sdk-go-v2/service/sns v1.17.10 // indirect + github.com/aws/aws-sdk-go-v2/service/sqs v1.19.1 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.11.13 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.16.10 // indirect + github.com/aws/smithy-go v1.12.0 // indirect + github.com/benbjohnson/clock v1.3.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bits-and-blooms/bitset v1.2.1 // indirect + github.com/bgentry/speakeasy v0.1.0 // indirect github.com/blevesearch/bleve v1.0.14 // indirect github.com/blevesearch/go-porterstemmer v1.0.3 // indirect - github.com/blevesearch/mmap-go v1.0.3 // indirect + github.com/blevesearch/mmap-go v1.0.2 // indirect github.com/blevesearch/segment v0.9.0 // indirect github.com/blevesearch/snowballstem v0.9.0 // indirect github.com/blevesearch/zap/v11 v11.0.14 // indirect @@ -85,162 +76,204 @@ require ( github.com/blevesearch/zap/v14 v14.0.5 // indirect github.com/blevesearch/zap/v15 v15.0.3 // indirect github.com/bluele/gcache v0.0.2 // indirect + github.com/cenkalti/backoff/v4 v4.1.3 // indirect + github.com/census-instrumentation/opencensus-proto v0.3.0 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 // indirect + github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc // indirect + github.com/coreos/go-semver v0.3.0 // indirect + github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/couchbase/vellum v1.0.2 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.1 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect - github.com/dimchansky/utfbom v1.1.1 // indirect github.com/disintegration/imaging v1.6.2 // indirect github.com/dlclark/regexp2 v1.7.0 // indirect - github.com/dop251/goja v0.0.0-20220815083517-0c74f9139fd6 // indirect + github.com/dop251/goja v0.0.0-20221115122301-6c0d9883792e // indirect github.com/dustin/go-humanize v1.0.0 // indirect - github.com/eclipse/paho.mqtt.golang v1.3.5 // indirect - github.com/envoyproxy/protoc-gen-validate v0.6.3 // indirect - github.com/felixge/httpsnoop v1.0.2 // indirect - github.com/fsnotify/fsnotify v1.5.1 // indirect - github.com/getsentry/sentry-go v0.12.0 // indirect - github.com/go-kit/log v0.2.0 // indirect + github.com/eclipse/paho.mqtt.golang v1.4.2 // indirect + github.com/envoyproxy/go-control-plane v0.10.3 // indirect + github.com/envoyproxy/protoc-gen-validate v0.9.0 // indirect + github.com/felixge/httpsnoop v1.0.3 // indirect + github.com/form3tech-oss/jwt-go v3.2.5+incompatible // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/fullstorydev/grpcurl v1.8.1 // indirect + github.com/getsentry/sentry-go v0.15.0 // indirect + github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2 // indirect + github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.5.1 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-redis/redis/v8 v8.11.4 // indirect + github.com/go-redis/redis/v8 v8.11.5 // indirect github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v4 v4.3.0 // indirect + github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f // indirect + github.com/golang/glog v1.0.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/mock v1.6.0 // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/google/certificate-transparency-go v1.0.21 // indirect + github.com/google/btree v1.1.2 // indirect + github.com/google/certificate-transparency-go v1.1.2-0.20210511102531-373a877eec92 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/uuid v1.3.0 // indirect github.com/google/wire v0.5.0 // indirect - github.com/googleapis/gax-go v2.0.2+incompatible // indirect - github.com/googleapis/gax-go/v2 v2.1.1 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.0 // indirect + github.com/googleapis/gax-go/v2 v2.6.0 // indirect github.com/gorilla/csrf v1.7.1 // indirect github.com/gorilla/handlers v1.5.1 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/gorilla/schema v1.2.0 // indirect github.com/gorilla/securecookie v1.1.1 // indirect - github.com/gorilla/websocket v1.4.2 // indirect + github.com/gorilla/websocket v1.5.0 // indirect github.com/gotnospirit/makeplural v0.0.0-20180622080156-a5f48d94d976 // indirect - github.com/gotnospirit/messageformat v0.0.0-20190719172517-c1d0bdacdea2 // indirect + github.com/gotnospirit/messageformat v0.0.0-20221001023931-dfe49f1eb092 // indirect github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.0.0-00010101000000-000000000000 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.13.0 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hellofresh/health-go/v5 v5.0.0 // indirect github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef // indirect github.com/huandu/xstrings v1.3.1 // indirect - github.com/imdario/mergo v0.3.11 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/imdario/mergo v0.3.12 // indirect + github.com/inconshreveable/mousetrap v1.0.1 // indirect github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa // indirect github.com/jackc/pgpassfile v1.0.0 // indirect - github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect + github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect github.com/jackc/pgx/v5 v5.2.0 // indirect github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115 // indirect github.com/jaytaylor/html2text v0.0.0-20211105163654-bc68cce691ba // indirect + github.com/jhump/protoreflect v1.8.2 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/jmoiron/sqlx v1.3.3 // indirect + github.com/jonboulle/clockwork v0.3.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/jstemmer/go-junit-report v0.9.1 // indirect github.com/jtacoma/uritemplates v1.0.0 // indirect - github.com/lib/pq v1.10.6 // indirect - github.com/magiconair/properties v1.8.5 // indirect - github.com/mattn/go-ieproxy v0.0.3 // indirect - github.com/mattn/go-runewidth v0.0.13 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect + github.com/kylelemons/godebug v1.1.0 // indirect + github.com/lib/pq v1.10.7 // indirect + github.com/magiconair/properties v1.8.6 // indirect + github.com/mattn/go-runewidth v0.0.14 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mitchellh/copystructure v1.0.0 // indirect - github.com/mitchellh/mapstructure v1.4.3 // indirect - github.com/mitchellh/reflectwalk v1.0.0 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mitchellh/reflectwalk v1.0.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mschoch/smat v0.2.0 // indirect - github.com/nats-io/nats.go v1.13.1-0.20220308171302-2f2f6968e98d // indirect + github.com/nats-io/nats.go v1.20.0 // indirect github.com/nats-io/nkeys v0.3.0 // indirect github.com/nats-io/nuid v1.0.1 // indirect - github.com/oklog/ulid/v2 v2.0.2 // indirect + github.com/oklog/ulid/v2 v2.1.0 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/openshift/osin v1.0.1 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect - github.com/pborman/uuid v1.2.1 // indirect - github.com/pelletier/go-toml v1.9.4 // indirect + github.com/pborman/uuid v1.2.0 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect + github.com/pelletier/go-toml/v2 v2.0.5 // indirect + github.com/philhofer/fwd v1.0.0 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/prometheus/client_golang v1.11.0 // indirect - github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.32.1 // indirect - github.com/prometheus/procfs v0.7.3 // indirect - github.com/prometheus/statsd_exporter v0.22.4 // indirect - github.com/rivo/uniseg v0.2.0 // indirect + github.com/prometheus/client_golang v1.14.0 // indirect + github.com/prometheus/client_model v0.3.0 // indirect + github.com/prometheus/common v0.37.0 // indirect + github.com/prometheus/procfs v0.8.0 // indirect + github.com/prometheus/statsd_exporter v0.22.7 // indirect + github.com/rivo/uniseg v0.4.3 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/satori/go.uuid v1.2.0 // indirect - github.com/sendgrid/rest v2.6.8+incompatible // indirect - github.com/sendgrid/sendgrid-go v3.11.0+incompatible // indirect + github.com/sendgrid/rest v2.6.9+incompatible // indirect + github.com/sendgrid/sendgrid-go v3.12.0+incompatible // indirect github.com/shopspring/decimal v1.2.0 // indirect + github.com/sirupsen/logrus v1.9.0 // indirect github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e // indirect - github.com/spf13/afero v1.8.1 // indirect - github.com/spf13/cast v1.4.1 // indirect - github.com/spf13/cobra v1.2.1 // indirect + github.com/soheilhy/cmux v0.1.5 // indirect + github.com/spf13/afero v1.9.2 // indirect + github.com/spf13/cast v1.5.0 // indirect + github.com/spf13/cobra v1.6.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.10.1 // indirect + github.com/spf13/viper v1.14.0 // indirect github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect github.com/steveyen/gtreap v0.1.0 // indirect - github.com/subosito/gotenv v1.2.0 // indirect + github.com/subosito/gotenv v1.4.1 // indirect github.com/throttled/throttled v2.2.5+incompatible // indirect - github.com/throttled/throttled/v2 v2.7.1 // indirect + github.com/throttled/throttled/v2 v2.0.0-00010101000000-000000000000 // indirect + github.com/tinylib/msgp v1.1.0 // indirect + github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 // indirect github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc // indirect github.com/uptrace/bun v1.1.8 // indirect github.com/uptrace/bun/dialect/pgdialect v1.1.8 // indirect github.com/uptrace/bun/driver/pgdriver v1.1.8 // indirect + github.com/urfave/cli v1.22.5 // indirect github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect - github.com/weppos/publicsuffix-go v0.5.0 // indirect + github.com/weppos/publicsuffix-go v0.15.1-0.20210511084619-b1f36a2d6c0b // indirect github.com/willf/bitset v1.1.11 // indirect - github.com/zmap/zcrypto v0.0.0-20190729165852-9051775e6a2e // indirect - github.com/zmap/zlint v0.0.0-20190806154020-fd021b4cfbeb // indirect + github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect + github.com/zmap/zcrypto v0.0.0-20210511125630-18f1e0152cfc // indirect + github.com/zmap/zlint/v3 v3.1.0 // indirect go.etcd.io/bbolt v1.3.6 // indirect - go.opencensus.io v0.23.0 // indirect - go.opentelemetry.io/otel v1.10.0 // indirect - go.opentelemetry.io/otel/trace v1.10.0 // indirect - go.packetbroker.org/api/iam v1.5.27-tts // indirect - go.packetbroker.org/api/iam/v2 v2.7.8-tts // indirect - go.packetbroker.org/api/mapping/v2 v2.1.27-tts // indirect - go.packetbroker.org/api/routing v1.8.18-tts // indirect - go.packetbroker.org/api/v3 v3.12.4-tts // indirect + go.etcd.io/etcd/api/v3 v3.5.5 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.5 // indirect + go.etcd.io/etcd/client/v2 v2.305.5 // indirect + go.etcd.io/etcd/client/v3 v3.5.5 // indirect + go.etcd.io/etcd/etcdctl/v3 v3.5.5 // indirect + go.etcd.io/etcd/etcdutl/v3 v3.5.5 // indirect + go.etcd.io/etcd/pkg/v3 v3.5.5 // indirect + go.etcd.io/etcd/raft/v3 v3.5.5 // indirect + go.etcd.io/etcd/server/v3 v3.5.5 // indirect + go.etcd.io/etcd/tests/v3 v3.5.5 // indirect + go.etcd.io/etcd/v3 v3.5.5 // indirect + go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.4 // indirect + go.opentelemetry.io/otel v1.11.1 // indirect + go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.11.1 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.11.1 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.11.1 // indirect + go.opentelemetry.io/otel/sdk v1.11.1 // indirect + go.opentelemetry.io/otel/trace v1.11.1 // indirect + go.opentelemetry.io/proto/otlp v0.19.0 // indirect + go.packetbroker.org/api/iam v1.5.27 // indirect + go.packetbroker.org/api/iam/v2 v2.7.8 // indirect + go.packetbroker.org/api/mapping/v2 v2.1.27 // indirect + go.packetbroker.org/api/routing v1.8.18 // indirect + go.packetbroker.org/api/v3 v3.12.4 // indirect go.thethings.network/lorawan-application-payload v0.0.0-20220125153912-1198ff1e403e // indirect - go.thethings.network/lorawan-stack-legacy/v2 v2.0.2 // indirect + go.thethings.network/lorawan-stack-legacy/v2 v2.1.0-rc0 // indirect go.uber.org/atomic v1.10.0 // indirect - go.uber.org/multierr v1.7.0 // indirect - go.uber.org/zap v1.21.0 // indirect - gocloud.dev v0.20.0 // indirect - gocloud.dev/pubsub/natspubsub v0.19.0 // indirect + go.uber.org/multierr v1.8.0 // indirect + go.uber.org/zap v1.23.0 // indirect + gocloud.dev v0.27.0 // indirect + gocloud.dev/pubsub/natspubsub v0.27.0 // indirect golang.org/x/crypto v0.5.0 // indirect - golang.org/x/exp v0.0.0-20220706164943-b4a6d9510983 // indirect - golang.org/x/image v0.0.0-20211028202545-6944b10bf410 // indirect - golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect + golang.org/x/exp v0.0.0-20221114191408-850992195362 // indirect + golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 // indirect + golang.org/x/mod v0.6.0 // indirect golang.org/x/net v0.5.0 // indirect - golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 // indirect - golang.org/x/sync v0.0.0-20220923202941-7f9b1623fab7 // indirect + golang.org/x/oauth2 v0.2.0 // indirect + golang.org/x/sync v0.1.0 // indirect golang.org/x/sys v0.4.0 // indirect golang.org/x/term v0.4.0 // indirect golang.org/x/text v0.6.0 // indirect - golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect - golang.org/x/tools v0.1.12 // indirect - golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect - google.golang.org/api v0.61.0 // indirect + golang.org/x/time v0.2.0 // indirect + golang.org/x/tools v0.2.0 // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + google.golang.org/api v0.102.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd // indirect - google.golang.org/grpc v1.46.2 // indirect + google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1 // indirect + google.golang.org/grpc v1.50.1 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect - gopkg.in/ini.v1 v1.66.4 // indirect + gopkg.in/cheggaaa/pb.v1 v1.0.28 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/mail.v2 v2.3.1 // indirect + gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect - mellium.im/sasl v0.3.1 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + mellium.im/sasl v0.3.0 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect ) diff --git a/tools/go.sum b/tools/go.sum index 86ff2ef3c8..8939a82110 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -1,83 +1,226 @@ +bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= bazil.org/fuse v0.0.0-20180421153158-65cc252bf669/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM= +bitbucket.org/creachadair/shell v0.0.6/go.mod h1:8Qqi/cYk7vPnsOePHroKXDJYmb5x7ENhtiFtfZq8K+M= bitbucket.org/liamstask/goose v0.0.0-20150115234039-8488cc47d90c/go.mod h1:hSVuE3qU7grINVSwrmzHfpg9k87ALBk+XaualNyUzI4= -cloud.google.com/go v0.81.0 h1:at8Tk2zUz63cLPR0JPWm5vp77pEZmzxEQBEfRKn1VV8= +cloud.google.com/go v0.16.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.39.0/go.mod h1:rVLT6fkc8chs9sfPtFc1SBH6em7n+ZoXaG+87tDISts= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.103.0/go.mod h1:vwLx1nqLrzLX/fpwSMOXmFIqBOyHsvHbnAdbGSJ+mKk= +cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= +cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.12.1 h1:gKVJMEyqV5c/UnpzjjQbo3Rjvvqpr9B1DFSbJC4OXr0= +cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute/metadata v0.2.1 h1:efOwf5ymceDhK6PKMnnrTHP4pppY5L22mle96M1yP48= +cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/pubsub v1.3.1 h1:ukjixP1wl0LpnZ6LWtZJ0mX5tBmjp1f8Sqer8Z2OMUU= +cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= +cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.7.0 h1:k4MuwOsS7zGJJ+QfZ5vBK8SgHBAvYN/23BWsiihJ1vs= +cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= +cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= +cloud.google.com/go/longrunning v0.3.0 h1:NjljC+FYPV3uh5/OwWT6pVU+doBqMg2x/rZlE+CamDs= +cloud.google.com/go/monitoring v1.1.0/go.mod h1:L81pzz7HKn14QCMaCs6NTQkdBnE87TElyanS95vIcl4= +cloud.google.com/go/monitoring v1.5.0/go.mod h1:/o9y8NYX5j91JjD/JvGLYbi86kL11OjyJXq2XziLJu4= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.16.0 h1:1UwAux2OZP4310YXg5ohqBEpV16Y93uZG4+qOX7K2Kg= -cloud.google.com/go/storage v1.16.0/go.mod h1:ieKBmUyzcftN5tbxwnXClMKH00CfcQ+xL6NN0r5QfmE= +cloud.google.com/go/pubsub v1.24.0 h1:aCS6wSMzrc602OeXUMA66KGlyXxpdkHdwN+FSBv/sUg= +cloud.google.com/go/pubsub v1.24.0/go.mod h1:rWv09Te1SsRpRGPiWOMDKraMQTJyJps4MkUCoMGUgqw= +cloud.google.com/go/secretmanager v1.5.0/go.mod h1:5C9kM+RwSpkURNovKySkNvGQLUaOgyoR5W0RUx2SyHQ= +cloud.google.com/go/spanner v1.17.0/go.mod h1:+17t2ixFwRG4lWRwE+5kipDR9Ef07Jkmc8z0IbMDKUs= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.24.0/go.mod h1:3xrJEFMXBsQLgxwThyjuD3aYlroL0TMRec1ypGUQ0KE= +cloud.google.com/go/storage v1.28.0 h1:DLrIZ6xkeZX6K70fU/boWx5INJumt6f+nwwWSHXzzGY= +cloud.google.com/go/storage v1.28.0/go.mod h1:qlgZML35PXA3zoEnIkiPLY4/TOkUleufRlu6qmcf7sI= +cloud.google.com/go/trace v1.0.0/go.mod h1:4iErSByzxkyHWzzlAj63/Gmjz0NH1ASqhJguHpGcr6A= +cloud.google.com/go/trace v1.2.0/go.mod h1:Wc8y/uYyOhPy12KEnXG9XGrvfMz5F5SrYecQlbW1rwM= +code.cloudfoundry.org/clock v0.0.0-20180518195852-02e53af36e6c/go.mod h1:QD9Lzhd/ux6eNQVUDVRJX/RKTigpewimNYBi7ivZKY8= +code.gitea.io/sdk/gitea v0.11.3/go.mod h1:z3uwDV/b9Ls47NGukYM9XhnHtqPh/J+t40lsUrR6JDY= contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= +contrib.go.opencensus.io/exporter/aws v0.0.0-20200617204711-c478e41e60e9/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= contrib.go.opencensus.io/exporter/ocagent v0.5.0/go.mod h1:ImxhfLRpxoYiSq891pBrLVhN+qmP8BTVvdH2YLs7Gl0= -contrib.go.opencensus.io/exporter/prometheus v0.4.0 h1:0QfIkj9z/iVZgK31D9H9ohjjIDApI2GOPScCKwxedbs= -contrib.go.opencensus.io/exporter/prometheus v0.4.0/go.mod h1:o7cosnyfuPVK0tB8q0QmaQNhGnptITnPQB+z1+qeFB0= +contrib.go.opencensus.io/exporter/prometheus v0.4.2 h1:sqfsYl5GIY/L570iT+l93ehxaWJs2/OwXtiWwew3oAg= +contrib.go.opencensus.io/exporter/prometheus v0.4.2/go.mod h1:dvEHbiKmgvbr5pjaF9fpw1KeYcjrnC1J8B+JKjsZyRQ= contrib.go.opencensus.io/exporter/stackdriver v0.12.1/go.mod h1:iwB6wGarfphGGe/e5CWqyUk/cLzKnWsOKPVW3no6OTw= +contrib.go.opencensus.io/exporter/stackdriver v0.13.5/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= +contrib.go.opencensus.io/exporter/stackdriver v0.13.13/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= +contrib.go.opencensus.io/integrations/ocsql v0.1.7/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcigGlFvXwEGEnkRLA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= github.com/Azure/azure-amqp-common-go/v2 v2.1.0/go.mod h1:R8rea+gJRuJR6QxTir/XuEd+YuKoUiazDC/N96FiDEU= +github.com/Azure/azure-amqp-common-go/v3 v3.2.3/go.mod h1:7rPmbSfszeovxGfc5fSAXE4ehlXQZHpMja2OtxC2Tas= github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= -github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= -github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U= -github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= +github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v29.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v30.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v63.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v65.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v66.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1 h1:tz19qLF65vuu2ibfTqGVJxG/zZAI27NEIIbvAOQwYbw= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0 h1:Yoicul8bnVdQrhDMTHxdEckRGX01XvwXDHUT9zYZ3k0= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0/go.mod h1:+6sju8gk8FRmSajX3Oz4G5Gm7P+mbqE9FVaXXFYTkCM= +github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0 h1:jp0dGvZ7ZK0mgqnTSClMxa5xuRL7NZgHameVYF6BurY= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.0.2/go.mod h1:LH9XQnMr2ZYxQdVdCrzLO9mxeDyrDFa6wbSI3x5zCZk= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1 h1:QSdcrd/UFJv6Bp/CfoVf2SrENpFn9P6Yh8yb+xNhYMM= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1/go.mod h1:eZ4g6GUvXiGulfIbbhh1Xr4XwUYaYaWMqzGD/284wCA= github.com/Azure/azure-service-bus-go v0.9.1/go.mod h1:yzBx6/BUGfjfeqbRZny9AQIbIe3AcV9WZbAdpkoXOa0= -github.com/Azure/azure-storage-blob-go v0.10.0 h1:evCwGreYo3XLeBV4vSxLbLiYb6e0SzsJiXQVRGsRXxs= -github.com/Azure/azure-storage-blob-go v0.10.0/go.mod h1:ep1edmW+kNQx4UfWM9heESNmQdijykocJ0YOxmMX8SE= +github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0= +github.com/Azure/go-amqp v0.17.0/go.mod h1:9YJ3RhxRT1gquYnzpZO1vcYMMpAdJT+QEg6fwmw9Zlg= +github.com/Azure/go-amqp v0.17.5/go.mod h1:9YJ3RhxRT1gquYnzpZO1vcYMMpAdJT+QEg6fwmw9Zlg= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest v12.0.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest v0.11.24 h1:1fIGgHKqVm54KIPT+q8Zmd1QlVsmHqeUGso5qm2BqqE= +github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= +github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/adal v0.8.3/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.9.18 h1:kLnPsRjzZZUF3K5REu/Kc+qMQrvuza2bwSnNdhmzLfQ= +github.com/Azure/go-autorest/autorest v0.11.25/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= +github.com/Azure/go-autorest/autorest v0.11.27/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= +github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA= +github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= +github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= +github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= -github.com/Azure/go-autorest/autorest/azure/auth v0.5.10 h1:F9A3Z++TtAoFysBsNOIJILoHuYBaYvhVGsMGEqPtIS8= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.4 h1:iuooz5cZL6VRcO7DVSFYxRcouqn6bFVE/e77Wts50Zk= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= -github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= +github.com/Azure/go-autorest/autorest/adal v0.9.20/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= +github.com/Azure/go-autorest/autorest/adal v0.9.21/go.mod h1:zua7mBUaCc5YnSLKYgGJR/w5ePdMDA6H56upLsHzA9U= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.11/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.5/go.mod h1:ADQAXrkgm7acgWVUNamOgh8YNrv4p27l3Wc55oVfpzg= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.6/go.mod h1:piCfgPho7BiIDdEQ1+g4VmKyD5y+p/XtSNqE6Hc4QD0= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= -github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= +github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= +github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU= +github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk= +github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= +github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= +github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= -github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0 h1:WVsrXCnHlDDX8ls+tootqRE87/hL9S/g4ewig9RsD/c= +github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= -github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= -github.com/GeertJohan/go.incremental v1.0.0/go.mod h1:6fAjUhbVuX1KcMD3c8TEgVUqmo4seqhv0i0kdATSkM0= -github.com/GeertJohan/go.rice v1.0.0/go.mod h1:eH6gbSOAUv07dQuZVnBmoDP8mgsM1rtixis4Tib9if0= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20191009163259-e802c2cb94ae/go.mod h1:mjwGPas4yKduTyubHvD1Atl9r1rUq8DfVy+gkVvZ+oo= -github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= +github.com/GoogleCloudPlatform/cloudsql-proxy v1.31.2/go.mod h1:qR6jVnZTKDCW3j+fC9mOEPHm++1nKDMkqbbkD6KNsfo= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/semver/v3 v3.0.3/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= +github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8= github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= +github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= +github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= +github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= +github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= +github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= +github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= +github.com/Microsoft/hcsshim v0.8.20/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= +github.com/Microsoft/hcsshim v0.8.21/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= +github.com/Microsoft/hcsshim v0.8.23/go.mod h1:4zegtUJth7lAvFyc6cH2gGQ5B3OFQim01nnU2M8jKDg= +github.com/Microsoft/hcsshim v0.9.2/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc= +github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= +github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/RoaringBitmap/roaring v0.4.23 h1:gpyfd12QohbqhFO4NVDUdoPOCXsyahYRQhINmlHxKeo= github.com/RoaringBitmap/roaring v0.4.23/go.mod h1:D0gp8kJQgE1A4LQ5wFLggQEyvDi06Mq5mKs52e1TwOo= -github.com/RoaringBitmap/roaring v0.9.4 h1:ckvZSX5gwCRaJYBNe7syNawCU5oruY9gQmjXlp4riwo= -github.com/RoaringBitmap/roaring v0.9.4/go.mod h1:icnadbWcNyfEHlYdr+tDlOTih1Bf/h+rzPpv4sbomAA= -github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= -github.com/TheThingsIndustries/gogoprotobuf v1.3.1 h1:bjjlt2OLpIpUxinNSvZH/0wQxzA0/5DKKthBfo3YjO0= -github.com/TheThingsIndustries/gogoprotobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/TheThingsIndustries/grpc-gateway v1.15.2-gogo h1:rWB4sbEKoL7xUC9ixUkJOBlPOeF0hcwzXHTISXZM7eA= -github.com/TheThingsIndustries/grpc-gateway v1.15.2-gogo/go.mod h1:fU1VeKM8T+38FAMQNH0zO2BT6grnMyphff4CD9w1DTM= +github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/TheThingsIndustries/magepkg v0.0.0-20190214092847-6c0299b7c3ed h1:rsGbnyV9cP0ocol1W17uTbZ1iWcEeg+gp3ivzW6NQ6Q= github.com/TheThingsIndustries/magepkg v0.0.0-20190214092847-6c0299b7c3ed/go.mod h1:InVSk9cxzZR1y4QaHF4CbDQ/uFeoTnbJfnwiKM04UNo= github.com/TheThingsIndustries/mystique v0.0.0-20211230093812-d4088bd06959 h1:YRyHofsKjSff/aofUxYl0PuSibYaYZMXGrOGD4w1ayE= @@ -90,28 +233,116 @@ github.com/TheThingsIndustries/throttled/v2 v2.7.1-noredis h1:uashKgjy7XCNZNb00+ github.com/TheThingsIndustries/throttled/v2 v2.7.1-noredis/go.mod h1:XC/YhKcHsxRy8shbYICwf+oWeYTCC2kpL5/clSJbt+U= github.com/TheThingsNetwork/go-cayenne-lib v1.1.0 h1:uw+WnTMSSwTo58/ob3ktWNBiCY2psIof8p3lKdxreAE= github.com/TheThingsNetwork/go-cayenne-lib v1.1.0/go.mod h1:HTTus7UIBhXKvLIeNGybbG1o7wr4zwwVbbUXwFqrtp0= -github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= -github.com/akavel/rsrc v0.8.0/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= +github.com/alecthomas/kingpin v2.2.6+incompatible/go.mod h1:59OFYbFVLKQKq+mqrL6Rw5bR0c3ACQaawgXx0QYndlE= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= +github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= +github.com/apache/beam v2.28.0+incompatible/go.mod h1:/8NX3Qi8vGstDLLaeaU7+lzVEu/ACaQhYjeefzQ0y1o= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apex/log v1.1.4/go.mod h1:AlpoD9aScyQfJDVHmLMEcx4oU6LqzkWp4Mg9GdAcEvQ= +github.com/apex/logs v0.0.4/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDwo= +github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy8kCu4PNA+aP7WUV72eXWJeP9/r3/K9aLE= +github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3stzu0Xys= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.19.45/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.42.53 h1:56T04NWcmc0ZVYFbUc6HdewDQ9iHQFlmS6hj96dRjJs= -github.com/aws/aws-sdk-go v1.42.53/go.mod h1:OGr6lGMAKGlG9CVrYnWYDKIyb829c6EVBRjxqjmPepc= -github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= -github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.25.11/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go v1.43.11/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.45/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.68/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.137 h1:GH2bUPiW7/gHtB04NxQOSOrKqFNjLGKmqt5YaO+K1SE= +github.com/aws/aws-sdk-go v1.44.137/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aws/aws-sdk-go-v2 v1.16.8 h1:gOe9UPR98XSf7oEJCcojYg+N2/jCRm4DdeIsP85pIyQ= +github.com/aws/aws-sdk-go-v2 v1.16.8/go.mod h1:6CpKuLXg2w7If3ABZCl/qZ6rEgwtjZTn4eAf4RcEyuw= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.3 h1:S/ZBwevQkr7gv5YxONYpGQxlMFFYSRfz3RMcjsC9Qhk= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.3/go.mod h1:gNsR5CaXKmQSSzrmGxmwmct/r+ZBfbxorAuXYsj/M5Y= +github.com/aws/aws-sdk-go-v2/config v1.15.15 h1:yBV+J7Au5KZwOIrIYhYkTGJbifZPCkAnCFSvGsF3ui8= +github.com/aws/aws-sdk-go-v2/config v1.15.15/go.mod h1:A1Lzyy/o21I5/s2FbyX5AevQfSVXpvvIDCoVFD0BC4E= +github.com/aws/aws-sdk-go-v2/credentials v1.12.10 h1:7gGcMQePejwiKoDWjB9cWnpfVdnz/e5JwJFuT6OrroI= +github.com/aws/aws-sdk-go-v2/credentials v1.12.10/go.mod h1:g5eIM5XRs/OzIIK81QMBl+dAuDyoLN0VYaLP+tBqEOk= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9 h1:hz8tc+OW17YqxyFFPSkvfSikbqWcyyHRyPVSTzC0+aI= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9/go.mod h1:KDCCm4ONIdHtUloDcFvK2+vshZvx4Zmj7UMDfusuz5s= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.21 h1:bpiKFJ9aC0xTVpygSRRRL/YHC1JZ+pHQHENATHuoiwo= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.21/go.mod h1:iIYPrQ2rYfZiB/iADYlhj9HHZ9TTi6PqKQPAqygohbE= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.15 h1:bx5F2mr6H6FC7zNIQoDoUr8wEKnvmwRncujT3FYRtic= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.15/go.mod h1:pWrr2OoHlT7M/Pd2y4HV3gJyPb3qj5qMmnPkKSNPYK4= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.9 h1:5sbyznZC2TeFpa4fvtpvpcGbzeXEEs1l1Jo51ynUNsQ= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.9/go.mod h1:08tUpeSGN33QKSO7fwxXczNfiwCpbj+GxK6XKwqWVv0= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16 h1:f0ySVcmQhwmzn7zQozd8wBM3yuGBfzdpsOaKQ0/Epzw= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16/go.mod h1:CYmI+7x03jjJih8kBEEFKRQc40UjUokT0k7GbvrhhTc= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.6 h1:3L8pcjvgaSOs0zzZcMKzxDSkYKEpwJ2dNVDdxm68jAY= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.6/go.mod h1:O7Oc4peGZDEKlddivslfYFvAbgzvl/GH3J8j3JIGBXc= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.3 h1:4n4KCtv5SUoT5Er5XV41huuzrCqepxlW3SDI9qHQebc= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.3/go.mod h1:gkb2qADY+OHaGLKNTYxMaQNacfeyQpZ4csDTQMeFmcw= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.10 h1:7LJcuRalaLw+GYQTMGmVUl4opg2HrDZkvn/L3KvIQfw= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.10/go.mod h1:Qks+dxK3O+Z2deAhNo6cJ8ls1bam3tUGUAcgxQP1c70= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9 h1:sHfDuhbOuuWSIAEDd3pma6p0JgUcR2iePxtCE8gfCxQ= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9/go.mod h1:yQowTpvdZkFVuHrLBXmczat4W+WJKg/PafBZnGBLga0= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.9 h1:sJdKvydGYDML9LTFcp6qq6Z5fIjN0Rdq2Gvw1hUg8tc= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.9/go.mod h1:Rc5+wn2k8gFSi3V1Ch4mhxOzjMh+bYSXVFfVaqowQOY= +github.com/aws/aws-sdk-go-v2/service/kms v1.18.1/go.mod h1:4PZMUkc9rXHWGVB5J9vKaZy3D7Nai79ORworQ3ASMiM= +github.com/aws/aws-sdk-go-v2/service/s3 v1.27.2 h1:NvzGue25jKnuAsh6yQ+TZ4ResMcnp49AWgWGm2L4b5o= +github.com/aws/aws-sdk-go-v2/service/s3 v1.27.2/go.mod h1:u+566cosFI+d+motIz3USXEh6sN8Nq4GrNXSg2RXVMo= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.15.14/go.mod h1:xakbH8KMsQQKqzX87uyyzTHshc/0/Df8bsTneTS5pFU= +github.com/aws/aws-sdk-go-v2/service/sns v1.17.10 h1:ZZuqucIwjbUEJqxxR++VDZX9BcMbX5ZcQaKoWul/ELk= +github.com/aws/aws-sdk-go-v2/service/sns v1.17.10/go.mod h1:uITsRNVMeCB3MkWpXxXw0eDz8pW4TYLzj+eyQtbhSxM= +github.com/aws/aws-sdk-go-v2/service/sqs v1.19.1 h1:HaQD4g8eumwEW218TgQzhnwTXmq77ZogA67SxBnGyPc= +github.com/aws/aws-sdk-go-v2/service/sqs v1.19.1/go.mod h1:A94o564Gj+Yn+7QO1eLFeI7UVv3riy/YBFOfICVqFvU= +github.com/aws/aws-sdk-go-v2/service/ssm v1.27.6/go.mod h1:fiFzQgj4xNOg4/wqmAiPvzgDMXPD+cUEplX/CYn+0j0= +github.com/aws/aws-sdk-go-v2/service/sso v1.11.13 h1:DQpf+al+aWozOEmVEdml67qkVZ6vdtGUi71BZZWw40k= +github.com/aws/aws-sdk-go-v2/service/sso v1.11.13/go.mod h1:d7ptRksDDgvXaUvxyHZ9SYh+iMDymm94JbVcgvSYSzU= +github.com/aws/aws-sdk-go-v2/service/sts v1.16.10 h1:7tquJrhjYz2EsCBvA9VTl+sBAAh1bv7h/sGASdZOGGo= +github.com/aws/aws-sdk-go-v2/service/sts v1.16.10/go.mod h1:cftkHYN6tCDNfkSasAmclSfl4l7cySoay8vz7p/ce0E= +github.com/aws/smithy-go v1.12.0 h1:gXpeZel/jPoWQ7OEmLIgCUnhkFftqNfwWUwAHSlp1v0= +github.com/aws/smithy-go v1.12.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= +github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= +github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= +github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bits-and-blooms/bitset v1.2.1 h1:M+/hrU9xlMp7t4TyTDQW97d3tRPVuKFC6zBEK16QnXY= -github.com/bits-and-blooms/bitset v1.2.1/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI= +github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blevesearch/bleve v1.0.14 h1:Q8r+fHTt35jtGXJUM0ULwM3Tzg+MRfyai4ZkWDy2xO4= @@ -121,9 +352,8 @@ github.com/blevesearch/blevex v1.0.0/go.mod h1:2rNVqoG2BZI8t1/P1awgTKnGlx5MP9Zbt github.com/blevesearch/cld2 v0.0.0-20200327141045-8b5f551d37f5/go.mod h1:PN0QNTLs9+j1bKy3d/GB/59wsNBFC4sWLWG3k69lWbc= github.com/blevesearch/go-porterstemmer v1.0.3 h1:GtmsqID0aZdCSNiY8SkuPJ12pD4jI+DdXTAn4YRcHCo= github.com/blevesearch/go-porterstemmer v1.0.3/go.mod h1:angGc5Ht+k2xhJdZi511LtmxuEf0OVpvUUNrwmM1P7M= +github.com/blevesearch/mmap-go v1.0.2 h1:JtMHb+FgQCTTYIhtMvimw15dJwu1Y5lrZDMOFXVWPk0= github.com/blevesearch/mmap-go v1.0.2/go.mod h1:ol2qBqYaOUsGdm7aRMRrYGgPvnwLe6Y+7LMvAB5IbSA= -github.com/blevesearch/mmap-go v1.0.3 h1:7QkALgFNooSq3a46AE+pWeKASAZc9SiNFJhDGF1NDx4= -github.com/blevesearch/mmap-go v1.0.3/go.mod h1:pYvKl/grLQrBxuaRYgoTssa4rVujYYeenDp++2E+yvs= github.com/blevesearch/segment v0.9.0 h1:5lG7yBCx98or7gK2cHMKPukPZ/31Kag7nONpoBt22Ac= github.com/blevesearch/segment v0.9.0/go.mod h1:9PfHYUdQCgHktBgvtUOF4x+pc4/l8rdH0u5spnW85UQ= github.com/blevesearch/snowballstem v0.9.0 h1:lMQ189YspGP6sXvZQ4WZ+MLawfV8wOmPoD/iWeNXm8s= @@ -140,232 +370,735 @@ github.com/blevesearch/zap/v15 v15.0.3 h1:Ylj8Oe+mo0P25tr9iLPp33lN6d4qcztGjaIsP5 github.com/blevesearch/zap/v15 v15.0.3/go.mod h1:iuwQrImsh1WjWJ0Ue2kBqY83a0rFtJTqfa9fp1rbVVU= github.com/bluele/gcache v0.0.2 h1:WcbfdXICg7G/DGBh1PFfcirkWOQV+v077yF1pSy3DGw= github.com/bluele/gcache v0.0.2/go.mod h1:m15KV+ECjptwSPxKhOhQoAFQVtUFjTVkc3H8o0t/fp0= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bradfitz/gomemcache v0.0.0-20170208213004-1952afaa557d/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= +github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= +github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= +github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= +github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= +github.com/caarlos0/ctrlc v1.0.0/go.mod h1:CdXpj4rmq0q/1Eb44M9zi2nKB0QraNKuRGYGrrHhcQw= +github.com/campoy/unique v0.0.0-20180121183637-88950e537e7e/go.mod h1:9IOqJGCPMSc6E5ydlp5NIonxObaeu/Iub/X03EKPVYo= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cavaliercoder/go-cpio v0.0.0-20180626203310-925f9528c45e/go.mod h1:oDpT4efm8tSYHXV5tHSdRvBet/b/QzxZ+XyyPehvm3A= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= +github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/certifi/gocertifi v0.0.0-20180118203423-deb3ae2ef261/go.mod h1:GJKEexRPVJrBSOjoqN5VNOIKJ5Q3RViH6eu3puDRwx4= +github.com/census-instrumentation/opencensus-proto v0.3.0 h1:t/LhUZLVitR1Ow2YOnduCsavhwFUklBMoGVYUCqmCqk= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/certifi/gocertifi v0.0.0-20210507211836-431795d63e8d h1:S2NE3iHSwP0XV47EEXL8mWmRdEfGscSJ+7EgePNgt0s= +github.com/certifi/gocertifi v0.0.0-20210507211836-431795d63e8d/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= +github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= +github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= +github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= +github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= +github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= +github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= +github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/backoff v0.0.0-20161212185259-647f3cdfc87a/go.mod h1:rzgs2ZOiguV6/NpiDgADjRLPNyZlApIWxKpkT+X8SdY= -github.com/cloudflare/cfssl v1.4.1 h1:vScfU2DrIUI9VPHBVeeAQ0q5A+9yshO1Gz+3QoUQiKw= -github.com/cloudflare/cfssl v1.4.1/go.mod h1:KManx/OJPb5QY+y0+o/898AMcM128sF0bURvoVUSjTo= -github.com/cloudflare/go-metrics v0.0.0-20151117154305-6a9aea36fb41/go.mod h1:eaZPlJWD+G9wseg1BuRXlHnjntPMrywMsyxf+LTOdP4= -github.com/cloudflare/redoctober v0.0.0-20171127175943-746a508df14c/go.mod h1:6Se34jNoqrd8bTxrmJB2Bg2aoZ2CdSXonils9NsiNgo= +github.com/cloudflare/cfssl v1.6.3 h1:hDhRaGQN55nh0510/7A5QBN3xLoDz/M7nQX80icXvzs= +github.com/cloudflare/cfssl v1.6.3/go.mod h1:Kq0iHKY8sm2klDeQ2Ci/FI+6QdBGuyPWodgTJFLrXIw= +github.com/cloudflare/redoctober v0.0.0-20201013214028-99c99a8e7544/go.mod h1:6Se34jNoqrd8bTxrmJB2Bg2aoZ2CdSXonils9NsiNgo= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210322005330-6414d713912e/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 h1:hzAQntlaYRkVSFEfj9OTWlVV1H155FMD8BTKktLv0QI= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc h1:PYXxkRUBGUMa5xgMVMDl62vEklZvKpVaxQeN9ie7Hfk= +github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5 h1:xD/lrqdvwsc+O2bjSSi3YqY73Ke3LAiSCx49aCesA0E= +github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= +github.com/cockroachdb/errors v1.2.4 h1:Lap807SXTH5tri2TivECb/4abUkMZC9zRoLarvcKDqs= +github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= +github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f h1:o/kfcElHqOiXqcou5a3rIlMc7oJbMQkeLk0VQJ7zgqY= +github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= +github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= +github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= +github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= +github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= +github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= +github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= +github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= +github.com/containerd/cgroups v1.0.3/go.mod h1:/ofk34relqNjSGyqPrmEULrO4Sc8LJhvJmWbUCUKqj8= +github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= +github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= +github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= +github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= +github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.9/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= +github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= +github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= +github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= +github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= +github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= +github.com/containerd/containerd v1.5.8/go.mod h1:YdFSv5bTFLpG2HIYmfqDpSYYTDX+mc5qtSuYx1YUb/s= +github.com/containerd/containerd v1.6.1/go.mod h1:1nJz5xCZPusx6jJU8Frfct988y0NpumIq9ODB0kLtoE= +github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= +github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= +github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= +github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= +github.com/containerd/continuity v0.2.2/go.mod h1:pWygW9u7LtS1o4N/Tn0FoCFDIXZ7rxcMX7HX1Dmibvk= +github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= +github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= +github.com/containerd/go-cni v1.1.0/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= +github.com/containerd/go-cni v1.1.3/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= +github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= +github.com/containerd/go-runc v0.0.0-20201020171139-16b287bc67d0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= +github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= +github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= +github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= +github.com/containerd/imgcrypt v1.1.3/go.mod h1:/TPA1GIDXMzbj01yd8pIbQiLdQxed5ue1wb8bP7PQu4= +github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= +github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= +github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= +github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= +github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= +github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= +github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= +github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= +github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v0.0.0-20210324211415-d5c4544f0433/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v1.0.1/go.mod h1:AKuhXbN5EzmD4yTNtfSsX3tPcmtrBI6QcRV0NiNt15Y= +github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= +github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= +github.com/containernetworking/plugins v1.0.1/go.mod h1:QHCfGpaTwYTbbH+nZXKVTxNBDZcxSOplJT5ico8/FLE= +github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= +github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= +github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= +github.com/containers/ocicrypt v1.1.2/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-iptables v0.6.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q= +github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/couchbase/ghistogram v0.1.0/go.mod h1:s1Jhy76zqfEecpNWJfWUiKZookAFaiGOEoyzgHt9i7k= github.com/couchbase/moss v0.1.0/go.mod h1:9MaHIaRuy9pvLPUJxB8sh8OrLfyDczECVL37grCIubs= github.com/couchbase/vellum v1.0.2 h1:BrbP0NKiyDdndMPec8Jjhy0U47CZ0Lgx3xUC2r9rZqw= github.com/couchbase/vellum v1.0.2/go.mod h1:FcwrEivFpNi24R3jLOs3n+fs5RnuQnQqCLBJ1uAg1W4= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.1 h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU= -github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= +github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d h1:SwD98825d6bdB+pEuTxWOXiSjBrHdOl/UVp75eI7JT8= github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d/go.mod h1:URriBxXwVq5ijiJ12C7iIZqlA69nTlI+LgI6/pwftG8= github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= github.com/cznic/strutil v0.0.0-20181122101858-275e90344537/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc= -github.com/daaku/go.zipexe v1.0.0/go.mod h1:z8IiR6TsVLEYKwXAoE/I+8ys/sDkgTzSL0CLnGVd57E= +github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= +github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= +github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= +github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= +github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/denisenkom/go-mssqldb v0.12.2/go.mod h1:lnIw1mZukFRZDJYQ0Pb833QS2IaC3l5HkEfra2LJ+sk= +github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= +github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= -github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= +github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/digitalocean/godo v1.78.0/go.mod h1:GBmu8MkjZmNARE7IXRPmkbbnocNN8+uBm0xbEVw2LCs= +github.com/digitalocean/godo v1.81.0/go.mod h1:BPCqvwbjbGqxuUnIKB4EvS/AX7IDnNmt5fwvIkWo+ew= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= -github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c= github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4= github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/dlclark/regexp2 v1.7.0 h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo= github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= +github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= +github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.14+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.17+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= +github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= +github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= -github.com/dop251/goja v0.0.0-20220815083517-0c74f9139fd6 h1:xHdUVG+c8SWJnct16Z3QJOVlaYo3OwoJyamo6kR6OL0= -github.com/dop251/goja v0.0.0-20220815083517-0c74f9139fd6/go.mod h1:yRkwfj0CBpOGre+TwBsqPV0IH0Pk73e4PXJOeNDboGs= +github.com/dop251/goja v0.0.0-20221115122301-6c0d9883792e h1:Uo51nR73BJlci20AE5tXT5qiLSGZy5LHnRlKt7VkcUM= +github.com/dop251/goja v0.0.0-20221115122301-6c0d9883792e/go.mod h1:yRkwfj0CBpOGre+TwBsqPV0IH0Pk73e4PXJOeNDboGs= github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d/go.mod h1:DngW8aVqWbuLRMHItjPUyqdj+HWPvnQe8V8y1nDpIbM= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eclipse/paho.mqtt.golang v1.3.5 h1:sWtmgNxYM9P2sP+xEItMozsR3w0cqZFlqnNN1bdl41Y= -github.com/eclipse/paho.mqtt.golang v1.3.5/go.mod h1:eTzb4gxwwyWpqBUHGQZ4ABAV7+Jgm1PklsYT/eo8Hcc= -github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= -github.com/emersion/go-sasl v0.0.0-20211008083017-0b9dcfb154ac h1:tn/OQ2PmwQ0XFVgAHfjlLyqMewry25Rz7jWnVoh4Ggs= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/eclipse/paho.mqtt.golang v1.4.2 h1:66wOzfUHSSI1zamx7jR6yMEI5EuHnT1G6rNA5PM12m4= +github.com/eclipse/paho.mqtt.golang v1.4.2/go.mod h1:JGt0RsEwEX+Xa/agj90YJ9d9DH2b7upDZMK9HRbFvCA= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 h1:OJyUGMJTzHTd1XQp98QTaHernxMYzRaOasRir9hUlFQ= github.com/emersion/go-smtp v0.15.0 h1:3+hMGMGrqP/lqd7qoxZc1hTU8LY8gHV9RFGWlqSDmP8= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/go-control-plane v0.10.3 h1:xdCVXxEe0Y3FQith+0cj2irwZudqGYvecuLB1HtdexY= +github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.3 h1:HkntewfZJ9RofA/FX38zBCeIAqlLDFLbAI6eTpZqFJw= -github.com/envoyproxy/protoc-gen-validate v0.6.3/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= -github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= +github.com/envoyproxy/protoc-gen-validate v0.3.0-java/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v0.6.1/go.mod h1:txg5va2Qkip90uYoSKH+nkAAmXrb2j3iq4FLwdrCbXQ= +github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= +github.com/envoyproxy/protoc-gen-validate v0.9.0 h1:wyv+mWIshClA4g6hTlKD9xb6fiNAnDu3+8qYf7KSuSE= +github.com/envoyproxy/protoc-gen-validate v0.9.0/go.mod h1:aUb/JIPT9p8VQ1hMxCrB3/NZSvKoF7fPIE1ULgCIVz0= +github.com/etcd-io/gofail v0.0.0-20190801230047-ad7f989257ca/go.mod h1:49H/RkXP8pKaZy4h0d+NW16rSLhyVBt4o6VLJbmOqDE= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= -github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= +github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/form3tech-oss/jwt-go v3.2.5+incompatible h1:/l4kBbb4/vGSsdtB5nUe8L7B9mImVMaBPw9L/0TBHU8= +github.com/form3tech-oss/jwt-go v3.2.5+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/fsnotify/fsnotify v1.4.3-0.20170329110642-4da3e2cfbabc/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= +github.com/fullstorydev/grpcurl v1.8.0/go.mod h1:Mn2jWbdMrQGJQ8UD62uNyMumT2acsZUCkZIqFxsQf1o= +github.com/fullstorydev/grpcurl v1.8.1 h1:Pp648wlTTg3OKySeqxM5pzh8XF6vLqrm8wRq66+5Xo0= +github.com/fullstorydev/grpcurl v1.8.1/go.mod h1:3BWhvHZwNO7iLXaQlojdg5NA6SxUDePli4ecpK1N7gw= +github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/garyburd/redigo v1.1.1-0.20170914051019-70e1b1943d4f/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= -github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= -github.com/getsentry/raven-go v0.0.0-20180121060056-563b81fc02b7/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= -github.com/getsentry/sentry-go v0.12.0 h1:era7g0re5iY13bHSdN/xMkyV+5zZppjRVQhZrXCaEIk= -github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= +github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= +github.com/getsentry/raven-go v0.2.0 h1:no+xWJRb5ZI7eE8TWgIq1jLulQiIoLG0IfYxv5JYMGs= +github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= +github.com/getsentry/sentry-go v0.15.0 h1:CP9bmA7pralrVUedYZsmIHWpq/pBtXTSew7xvVpfLaA= +github.com/getsentry/sentry-go v0.15.0/go.mod h1:RZPJKSw+adu8PBNygiri/A98FqVr2HtRckJk9XVxJ9I= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= -github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= +github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2 h1:Ujru1hufTHVb++eG6OuNDKMxZnGIvF6o/u8q/8h2+I4= github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= +github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31 h1:gclg6gY70GLy3PbkQ1AERPfmLMMagS60DKF78eWwLn8= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= -github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= -github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0 h1:7i2K3eKTos3Vc0enKCfnVcgHh2olr/MyfboYq7cAcFw= github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= -github.com/go-redis/redis/v8 v8.11.4 h1:kHoYkfZP6+pe04aFTnhDH6GDROa5yJdHJVNxV3F46Tg= -github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w= +github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= +github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= +github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= +github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g= +github.com/go-openapi/runtime v0.23.1/go.mod h1:AKurw9fNre+h3ELZfk6ILsfvPN+bvvlaU/M9q/r9hpk= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= +github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg= +github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= +github.com/go-openapi/strfmt v0.21.2/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= +github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= +github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= +github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= -github.com/go-sql-driver/mysql v1.3.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.6.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= +github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= +github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= +github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= +github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= +github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= +github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= +github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= +github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= +github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= +github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= +github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= +github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= +github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= +github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= +github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= +github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= +github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= +github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= +github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= +github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= +github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= +github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= -github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs= +github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f h1:16RtHeWGkJMc80Etb8RPCcKevXGldr57+LOyZt8zOlg= github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f/go.mod h1:ijRvpgDJDI262hYq/IQVYgf8hd8IHUs93Ol0kvMBAx4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v0.0.0-20210429001901-424d2337a529/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/lint v0.0.0-20170918230701-e5d664eb928e/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/protobuf v1.3.5 h1:F768QJ1E9tib+q5Sc8MkdJi1RxLTbRcTf8LJV56aRls= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38 h1:y0Wmhvml7cGnzPa9nocn/fMraMH/lMDdeG+rkx4VgYY= -github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/gomodule/redigo v1.8.9 h1:Sl3u+2BI/kk+VEatbj0scLdrFhjPmbxOc1myhDP41ws= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/certificate-transparency-go v1.0.21 h1:Yf1aXowfZ2nuboBsg7iYGLmwsOARdV86pfH3g95wXmE= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= +github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= +github.com/google/certificate-transparency-go v1.1.2-0.20210422104406-9f33727a7a18/go.mod h1:6CKh9dscIRoqc2kC6YUFICHZMT9NrClyPrRVFrdw1QQ= +github.com/google/certificate-transparency-go v1.1.2-0.20210511102531-373a877eec92 h1:806qveZBQtRNHroYHyg6yrsjqBJh9kIB4nfmB8uJnak= +github.com/google/certificate-transparency-go v1.1.2-0.20210511102531-373a877eec92/go.mod h1:kXWPsHVPSKVuxPPG69BRtumCbAW537FydV/GH89oBhM= +github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= github.com/google/go-cmp v0.1.1-0.20171103154506-982329095285/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= +github.com/google/go-github/v28 v28.1.1/go.mod h1:bsqJWQX05omyWVmc00nEUql9mhQyv38lDZ8kPZcQVoM= +github.com/google/go-licenses v0.0.0-20210329231322-ce1d9163b77d/go.mod h1:+TYOmkVoJOpwnS0wfdsJCV9CoD5nJYsHoFk/0CrTK4M= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/go-replayers/grpcreplay v0.1.0 h1:eNb1y9rZFmY4ax45uEEECSa8fsxGRU+8Bil52ASAwic= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/go-replayers/grpcreplay v0.1.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= -github.com/google/go-replayers/httpreplay v0.1.0 h1:AX7FUb4BjrrzNvblr/OlgwrmFiep6soj5K2QSDW7BGk= +github.com/google/go-replayers/grpcreplay v1.1.0 h1:S5+I3zYyZ+GQz68OfbURDdt/+cSMqCK1wrvNx7WBzTE= +github.com/google/go-replayers/grpcreplay v1.1.0/go.mod h1:qzAvJ8/wi57zq7gWqaE6AwLM6miiXUQwP1S+I9icmhk= github.com/google/go-replayers/httpreplay v0.1.0/go.mod h1:YKZViNhiGgqdBlUbI2MwGpq4pXxNmhJLPHQ7cv2b5no= +github.com/google/go-replayers/httpreplay v1.1.1 h1:H91sIMlt1NZzN7R+/ASswyouLJfW0WLW7fhyUFvDEkY= +github.com/google/go-replayers/httpreplay v1.1.1/go.mod h1:gN9GeLIs7l6NUoVaSSnv2RiqK1NiwAmD0MrKeC9IIks= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/licenseclassifier v0.0.0-20210325184830-bb04aff29e72/go.mod h1:qsqn2hxC+vURpyBRygGUuinTO42MFRLcsmQ/P8v94+M= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible h1:xmapqc1AyLoB+ddYT6r04bD9lIjlOqGaREovi0SzFaE= github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.1.0 h1:wCKgOCHuUEVfsaQLpPSJb7VdYCdTVZQAuOdYm1yc/60= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210506205249-923b5ab0fc1a/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= +github.com/google/pprof v0.0.0-20220608213341-c488b8fa1db3/go.mod h1:gSuNB+gJaOiQKLEZ+q+PK9Mq3SOzhRcw2GsGS/FhYDk= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/rpmpack v0.0.0-20191226140753-aa36bfddb3a0/go.mod h1:RaTPr0KUf2K7fnZYLNDrr8rxAamWs3iNywJLtQ2AzBg= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/trillian v1.3.14-0.20210409160123-c5ea3abd4a41/go.mod h1:1dPv0CUjNQVFEDuAUFhZql16pw/VlPgaX8qj+g5pVzQ= +github.com/google/trillian v1.3.14-0.20210428093031-b4ddea2e86b1/go.mod h1:FdIJX+NoDk/dIN2ZxTyz5nAJWgf+NSSSriPAMThChTY= +github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/wire v0.3.0/go.mod h1:i1DMg/Lu8Sz5yYl25iOdmc5CT5qusaa+zmRWs16741s= github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8= github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0 h1:y8Yozv7SZtlU//QXbezB6QkpuE6jMD2/gfzk4AftXjs= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= -github.com/googleapis/gax-go v2.0.2+incompatible h1:silFMLAnr330+NRuag/VjIGF7TLp/LBrV2CJKFLWEww= github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= -github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.6.0 h1:SXk3ABtQYDT/OH8jAyvEOQ58mgawq5C4o/4/89qN2ZU= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= +github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gophercloud/gophercloud v0.24.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= +github.com/gophercloud/gophercloud v0.25.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99 h1:twflg0XRTjwKpxb/jFExr4HGq6on2dEOmnL6FV+fgPw= github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= +github.com/goreleaser/goreleaser v0.134.0/go.mod h1:ZT6Y2rSYa6NxQzIsdfWWNWAlYGXGbreo66NmE+3X3WQ= +github.com/goreleaser/nfpm v1.2.1/go.mod h1:TtWrABZozuLOttX2uDlYyECfQX7x5XYkVxhjYcR6G9w= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/csrf v1.7.1 h1:Ir3o2c1/Uzj6FBxMlAUB6SivgVMy1ONXwYgXn+/aHPE= github.com/gorilla/csrf v1.7.1/go.mod h1:+a/4tCmqhG6/w4oafeAZ9pEa3/NZOWYVbD9fV0FwIQA= +github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc= github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gotnospirit/makeplural v0.0.0-20180622080156-a5f48d94d976 h1:b70jEaX2iaJSPZULSUxKtm73LBfsCrMsIlYCUgNGSIs= github.com/gotnospirit/makeplural v0.0.0-20180622080156-a5f48d94d976/go.mod h1:ZGQeOwybjD8lkCjIyJfqR5LD2wMVHJ31d6GdPxoTsWY= -github.com/gotnospirit/messageformat v0.0.0-20190719172517-c1d0bdacdea2 h1:yUr520KXfjzq/QTGZ2h+DvEydkyBfvifw6ksyDW3Lpg= -github.com/gotnospirit/messageformat v0.0.0-20190719172517-c1d0bdacdea2/go.mod h1:NO9UUa4C4cSmRsYSfZMAKhI5ifCRzOjSGe/pi7TKRvs= +github.com/gotnospirit/messageformat v0.0.0-20221001023931-dfe49f1eb092 h1:c7gcNWTSr1gtLp6PyYi3wzvFCEcHJ4YRobDgqmIgf7Q= +github.com/gotnospirit/messageformat v0.0.0-20221001023931-dfe49f1eb092/go.mod h1:ZZAN4fkkful3l1lpJwF8JbW41ZiG9TwJ2ZlqzQovBNU= +github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= github.com/gregjones/httpcache v0.0.0-20170920190843-316c5e0ff04e/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.3 h1:BGNSrTRW4rwfhJiFwvwF4XQ0Y72Jj9YEgxVrtovbD5o= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.3/go.mod h1:VHn7KgNsRriXa4mcgtkpR00OXyQY6g67JWMvn+R27A4= +github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.2/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.2/go.mod h1:chrfS3YoLAlKTRE5cFWvCbt8uGAjshktT4PveTUpsFQ= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.13.0 h1:fi9bGIUJOGzzrHBbP8NWbTfNC5fKO6X7kFw40TOqGB8= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.13.0/go.mod h1:uY3Aurq+SxwQCpdX91xZ9CgxIMT1EsYtcidljXufYIY= +github.com/hanwen/go-fuse v1.0.0/go.mod h1:unqXarDXqzAk0rt98O2tVndEPIpUgLD9+rwFisZH3Ok= +github.com/hanwen/go-fuse/v2 v2.1.0/go.mod h1:oRyA5eK+pvJyv5otpO/DgccS8y/RvYMaO00GgRLGryc= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= +github.com/hashicorp/consul/api v1.13.0/go.mod h1:ZlVrynguJKcYr54zGaDbaL3fOvKC9m72FhPvA8T35KQ= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= +github.com/hashicorp/cronexpr v1.1.1/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= +github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v0.12.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.2.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-retryablehttp v0.6.4/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= +github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -380,51 +1113,114 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/memberlist v0.3.1/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/nomad/api v0.0.0-20220629141207-c2428e1673ec/go.mod h1:jP79oXjopTyH6E8LF0CEMq67STgrlmBRIyijA0tuR5o= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hellofresh/health-go/v5 v5.0.0 h1:jxjllHekqEU4VYIajKJtFoOxDp1YaaygNWwAoZwWFh0= github.com/hellofresh/health-go/v5 v5.0.0/go.mod h1:9hFVIBdKkxrg1bJurUPlw1D/0FWhl47IVfGYPy4Op9o= +github.com/hetznercloud/hcloud-go v1.33.1/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= +github.com/hetznercloud/hcloud-go v1.35.0/go.mod h1:mepQwR6va27S3UQthaEPGS86jtzSY9xWL1e9dyxXpgA= github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef h1:A9HsByNhogrvm9cWb28sjiS3i7tcKCkflWFEkHfuAgM= github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= +github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/huandu/xstrings v1.3.1 h1:4jgBlKK6tLKFvO8u5pmYjG91cqytmDCDvGh7ECVFfFs= github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/iancoleman/strcase v0.0.0-20180726023541-3605ed457bf7/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= +github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/ikawaha/kagome.ipadic v1.1.2/go.mod h1:DPSBbU0czaJhAb/5uKQZHMc9MTVRpDugJfX+HddPHHg= -github.com/imdario/mergo v0.3.11 h1:3tnifQM4i+fbajXKBHXWEH+KvNHqojZ778UH75j3bGA= +github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= +github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/log15 v0.0.0-20170622235902-74a0988b5f80/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= -github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= -github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= -github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= -github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= +github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= +github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/intel/goresctrl v0.2.0/go.mod h1:+CZdzouYFn5EsxgqAQTEzMfwKwuc0fVdMrT9FCCAVRQ= +github.com/ionos-cloud/sdk-go/v6 v6.1.0/go.mod h1:Ox3W0iiEz0GHnfY9e5LmAxwklsxguuNFEUSu0gVRTME= +github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= +github.com/j-keck/arping v1.0.2/go.mod h1:aJbELhR92bSk7tp79AWM/ftfc90EfEi2bQJrbBFOsPw= +github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= +github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= +github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= +github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= +github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= +github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= +github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= +github.com/jackc/pgconn v1.12.1/go.mod h1:ZkhRC59Llhrq3oSfrikvwQ5NaxYExr6twkdkMLaKono= github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa h1:s+4MhCQ6YrzisK6hFJUX53drDT4UsSW3DEhKn0ifuHw= github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa/go.mod h1:a/s9Lp5W7n/DD0VrVoyJ00FbP2ytTPDVOivvn2bMlds= +github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= +github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= +github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= -github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= -github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= +github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.3.0/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= +github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= +github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= +github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= +github.com/jackc/pgtype v1.11.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= +github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= +github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= +github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= +github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= +github.com/jackc/pgx/v4 v4.16.1/go.mod h1:SIhx0D5hoADaiXZVyv+3gSm3LCIIINTVO0PficsvWGQ= github.com/jackc/pgx/v5 v5.2.0 h1:NdPpngX0Y6z6XDFKqmFQaE+bCtkqzvQIOt1wvBlAqs8= github.com/jackc/pgx/v5 v5.2.0/go.mod h1:Ptn7zmohNsWEsdxRawMzk3gaKma2obW+NWTnKa0S4nk= +github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.2.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115 h1:YuDUUFNM21CAbyPOpOP8BicaTD/0klJEKt5p8yuw+uY= github.com/jacobsa/crypto v0.0.0-20190317225127-9f44e2d11115/go.mod h1:LadVJg0XuawGk+8L1rYnIED8451UyNxEMdTWCEt5kmU= github.com/jacobsa/oglematchers v0.0.0-20150720000706-141901ea67cd h1:9GCSedGjMcLZCrusBZuo4tyKLpKUPenUUqi34AkuFmA= github.com/jacobsa/oglemock v0.0.0-20150831005832-e94d794d06ff h1:2xRHTvkpJ5zJmglXLRqHiZQNjUoOkhUyhTAhEQvPAWw= github.com/jacobsa/ogletest v0.0.0-20170503003838-80d50a735a11 h1:BMb8s3ENQLt5ulwVIHVDWFHp8eIXmbfSExkvdn9qMXI= github.com/jacobsa/reqtrace v0.0.0-20150505043853-245c9e0234cb h1:uSWBjJdMf47kQlXMwWEfmc864bA1wAC+Kl3ApryuG9Y= -github.com/jarcoal/httpmock v1.1.0 h1:F47ChZj1Y2zFsCXxNkBPwNNKnAyOATcdQibk0qEdVCE= +github.com/jarcoal/httpmock v1.0.5/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= +github.com/jarcoal/httpmock v1.2.0 h1:gSvTxxFR/MEMfsGrvRbdfpRUMBStovlSRLw0Ep1bwwc= github.com/jaytaylor/html2text v0.0.0-20211105163654-bc68cce691ba h1:QFQpJdgbON7I0jr2hYW7Bs+XV0qjc3d5tZoDnRFnqTg= github.com/jaytaylor/html2text v0.0.0-20211105163654-bc68cce691ba/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= +github.com/jhump/protoreflect v1.6.1/go.mod h1:RZQ/lnuN+zqeRVpQigTwO6o0AJUkxbnSnpuG7toUTG4= +github.com/jhump/protoreflect v1.8.2 h1:k2xE7wcUomeqwY0LDCYA16y4WWfyTcMx5mKhk0d4ua0= +github.com/jhump/protoreflect v1.8.2/go.mod h1:7GcYQDdMU/O/BBrl/cX6PNHpXh6cenjd8pneu5yW7Tg= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= @@ -433,109 +1229,197 @@ github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfC github.com/jmhodges/clock v0.0.0-20160418191101-880ee4c33548/go.mod h1:hGT6jSUVzF6no3QaDSMLGLEHtHSBSefs+MgcDWnmhmo= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= -github.com/jmoiron/sqlx v0.0.0-20180124204410-05cef0741ade/go.mod h1:IiEW3SEiiErVyFdH8NTuWjSifiEQKUoyK3LNqr2kCHU= +github.com/jmoiron/sqlx v1.3.3 h1:j82X0bf7oQ27XeqxicSZsTU5suPwKElg3oyxNn43iTk= +github.com/jmoiron/sqlx v1.3.3/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ= +github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/jonboulle/clockwork v0.3.0 h1:9BSCMi8C+0qdApAp4auwX0RkLGUjs956h0EkuQymUhg= +github.com/jonboulle/clockwork v0.3.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtacoma/uritemplates v1.0.0 h1:xwx5sBF7pPAb0Uj8lDC1Q/aBPpOFyQza7OC705ZlLCo= github.com/jtacoma/uritemplates v1.0.0/go.mod h1:IhIICdE9OcvgUnGwTtJxgBQ+VrTrti5PcbLVSJianO8= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= -github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= -github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= -github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= -github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= -github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= +github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= +github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= +github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kisielk/sqlstruct v0.0.0-20150923205031-648daed35d49/go.mod h1:yyMNCyc/Ib3bDTKd379tNMpB/7/H5TjM2Y9QJ5THLbE= -github.com/kisom/goutils v1.1.0/go.mod h1:+UBTfd78habUYWFbNWTJNG+jNG/i/lGURakr4A/yNRw= -github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCyc/Ib3bDTKd379tNMpB/7/H5TjM2Y9QJ5THLbE= +github.com/kisom/goutils v1.4.3/go.mod h1:Lp5qrquG7yhYnWzZCI/68Pa/GpFynw//od6EkGnWpac= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c= -github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/kljensen/snowball v0.6.0/go.mod h1:27N7E8fVU5H68RlUmnWwZCfxgt4POBJfENGMvNRhldw= +github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/go-gypsy v0.0.0-20160905020020-08cad365cd28/go.mod h1:T/T7jsxVqf9k/zYOqbgNAsANsjxTd1Yq3htjDhQ1H0c= -github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= -github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= -github.com/lib/pq v0.0.0-20180201184707-88edab080323/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/kylelemons/go-gypsy v1.0.0/go.mod h1:chkXM0zjdpXOiqkCW1XcCHDfjfk14PH2KKkQWxfJUcU= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/letsencrypt/pkcs11key/v4 v4.0.0/go.mod h1:EFUvBDay26dErnNb70Nd0/VW3tJiIbETBPTl9ATXQag= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.1/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= +github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linode/linodego v1.4.0/go.mod h1:PVsRxSlOiJyvG4/scTszpmZDTdgS+to3X6eS8pRrWI8= +github.com/linode/linodego v1.8.0/go.mod h1:heqhl91D8QTPVm2k9qZHP78zzbOdTFLXE9NJc3bcc50= +github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= +github.com/lyft/protoc-gen-star v0.5.1/go.mod h1:9toiA3cC7z5uVbODF7kEQ91Xn7XNFkVUl+SrEe+ZORU= github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magefile/mage v1.8.0/go.mod h1:IUDi13rsHje59lecXokTfGX0QIzO45uVPlXnJYsXepA= github.com/magefile/mage v1.14.0 h1:6QDX3g6z1YvJ4olPhT1wksUcSa/V0a1B+pJb73fBjyo= github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/magiconair/properties v1.7.4-0.20170902060319-8d7837e64d3c/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= +github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= +github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.0.10-0.20170816031813-ad5389df28cd/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= -github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= -github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= -github.com/mattn/go-ieproxy v0.0.3 h1:YkaHmK1CzE5C4O7A3hv3TCbfNDPSCf0RKZFX+VhBeYk= -github.com/mattn/go-ieproxy v0.0.3/go.mod h1:6ZpRmhBaYuBX1U2za+9rC9iCGLsSp2tftelZne7CPko= github.com/mattn/go-isatty v0.0.2/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= -github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= -github.com/mattn/goveralls v0.0.5 h1:spfq8AyZ0cCk57Za6/juJ5btQxeE1FaEGMdfcI+XO48= -github.com/mattn/goveralls v0.0.5/go.mod h1:Xg2LHi51faXLyKXwsndxiW6uxEEQT9+3sjGzzwU4xy0= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= +github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-shellwords v1.0.10/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= +github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= +github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-sqlite3 v1.14.7/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= +github.com/mattn/goveralls v0.0.11 h1:eJXea6R6IFlL1QMKNMzDvvHv/hwGrnvyig4N+0+XiMM= +github.com/mattn/goveralls v0.0.11/go.mod h1:gU8SyhNswsJKchEV93xRQxX6X3Ei4PJdQk/6ZHvrvRk= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= -github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= +github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= +github.com/microsoft/ApplicationInsights-Go v0.4.4/go.mod h1:fKRUseBqkw6bDiXTs3ESTiU/4YTIHsQS4W3fP2ieF4U= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/miekg/dns v1.1.48/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= +github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= +github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= +github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v0.0.0-20170523030023-d0303fe80992/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= +github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= +github.com/moby/sys/signal v0.6.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= +github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= +github.com/moby/sys/symlink v0.2.0/go.mod h1:7uZVF2dqJjG/NsClqul95CqKOBRQyYSNnJ6BMgR/gFs= +github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= +github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= +github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -543,427 +1427,1072 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= -github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mreiferson/go-httpclient v0.0.0-20160630210159-31f0106b4474/go.mod h1:OQA4XLvDbMgS8P0CevmM4m9Q3Jq4phKUzcocxuGJ5m8= +github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/mschoch/smat v0.2.0 h1:8imxQsjDm8yFEAVBe7azKmKSgzSkZXDuKkSq9374khM= github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nats-io/jwt v0.2.6/go.mod h1:mQxQ0uHQ9FhEVPIcTSKwx2lqZEpXWWcCgA7R6NrWvvY= +github.com/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007/go.mod h1:m2XC9Qq0AlmmVksL6FktJCdTYyLk7V3fKyp0sl1yWQo= +github.com/mwitkow/go-proto-validators v0.2.0/go.mod h1:ZfA1hW+UH/2ZHOWvQ3HnQaU0DtnpXu850MZiy+YUgcc= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/jwt/v2 v2.2.1-0.20220113022732-58e87895b296 h1:vU9tpM3apjYlLLeY23zRWJ9Zktr5jp+mloR942LEOpY= -github.com/nats-io/nats-server/v2 v2.0.0/go.mod h1:RyVdsHHvY4B6c9pWG+uRLpZ0h0XsqiuKp2XCTurP5LI= -github.com/nats-io/nats-server/v2 v2.7.4 h1:c+BZJ3rGzUKCBIM4IXO8uNT2u1vajGbD1kPA6wqCEaM= -github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= +github.com/nats-io/jwt/v2 v2.2.1-0.20220113022732-58e87895b296/go.mod h1:0tqz9Hlu6bCBFLWAASKhE5vUA4c24L9KPUUgvwumE/k= +github.com/nats-io/jwt/v2 v2.3.0 h1:z2mA1a7tIf5ShggOFlR1oBPgd6hGqcDYsISxZByUzdI= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats-server/v2 v2.7.2/go.mod h1:tckmrt0M6bVaDT3kmh9UrIq/CBOBBse+TpXQi5ldaa8= +github.com/nats-io/nats-server/v2 v2.9.6 h1:RTtK+rv/4CcliOuqGsy58g7MuWkBaWmF5TUNwuUo9Uw= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nats.go v1.13.1-0.20220308171302-2f2f6968e98d h1:zJf4l8Kp67RIZhoVeniSLZs69SHNgjLHz0aNsqPPlx8= -github.com/nats-io/nats.go v1.13.1-0.20220308171302-2f2f6968e98d/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= -github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= +github.com/nats-io/nats.go v1.13.1-0.20220121202836-972a071d373d/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= +github.com/nats-io/nats.go v1.16.0/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= +github.com/nats-io/nats.go v1.20.0 h1:T8JJnQfVSdh1CzGiwAOv5hEobYCBho/0EupGznYw0oM= +github.com/nats-io/nats.go v1.20.0/go.mod h1:tLqubohF7t4z3du1QDPYJIQQyhb4wl6DhjxEajSI7UA= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.3.0 h1:cgM5tL53EvYRU+2YLXIK0G2mJtK12Ft9oeooSZMA2G8= github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4= github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/nkovacs/streamquote v0.0.0-20170412213628-49af9bddb229/go.mod h1:0aYXnNPJ8l7uZxf45rWW1a/uME32OF0rhiYGNQ2oF2E= +github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nishanths/predeclared v0.0.0-20200524104333-86fad755b4d3/go.mod h1:nt3d53pc1VYcphSCIaYAJtnPYnr3Zyn8fMq2wvPGPso= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/ulid/v2 v2.0.2 h1:r4fFzBm+bv0wNKNh5eXTwU7i85y5x+uwkxCUTNVQqLc= -github.com/oklog/ulid/v2 v2.0.2/go.mod h1:mtBL0Qe/0HAx6/a4Z30qxVIAL1eQDweXq5lxOEiwQ68= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/oklog/ulid/v2 v2.1.0 h1:+9lhoxAP56we25tyYETBBY1YLA2SaoLvUFgrP2miPJU= +github.com/oklog/ulid/v2 v2.1.0/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/gomega v1.10.0 h1:Gwkk+PTu/nfOwNMtUB/mRUv0X7ewW5dO4AERT1ThVKo= -github.com/onsi/gomega v1.10.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= +github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= +github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.2-0.20211117181255-693428a734f5/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= +github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= +github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= +github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= +github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= +github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= +github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= +github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= github.com/openshift/osin v1.0.1 h1:2hYushQtTLGVfnKAmz1+/ln5GZD0ykJCavs2JIwVEfQ= github.com/openshift/osin v1.0.1/go.mod h1:/gGuqQHvGNST0GB+Pomi3398FTdcM+9UaXafpqHvfDM= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= +github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= +github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= -github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= -github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= github.com/pelletier/go-toml v1.0.1-0.20170904195809-1d6b12b7cb29/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= +github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= -github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= +github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/philhofer/fwd v1.0.0 h1:UbZqGr5Y38ApvM/V/jEljVxwocdweyH+vmYvRPBnbqQ= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= -github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= +github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= +github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= +github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= +github.com/prometheus/alertmanager v0.24.0/go.mod h1:r6fy/D7FRuZh5YbnX6J3MBY0eI4Pb5yPYS7/bPSXXqI= +github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= +github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= +github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.24.0/go.mod h1:H6QK/N6XVT42whUeIdI3dp36w49c+/iMDk7UAI2qm7Q= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= +github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= +github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= +github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= +github.com/prometheus/common/assets v0.1.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= +github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= +github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= +github.com/prometheus/exporter-toolkit v0.7.1/go.mod h1:ZUBIj498ePooX9t/2xtDjeQYwvRpiPP2lh5u4iblj2g= +github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/statsd_exporter v0.21.0/go.mod h1:rbT83sZq2V+p73lHhPZfMc3MLCHmSHelCh9hSGYNLTQ= -github.com/prometheus/statsd_exporter v0.22.4 h1:bGhC0iI9DM8m9KIUlbcr3uzXnopagrajEKoP790256k= -github.com/prometheus/statsd_exporter v0.22.4/go.mod h1:N4Z1+iSqc9rnxlT1N8Qn3l65Vzb5t4Uq0jpg8nxyhio= +github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= +github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= +github.com/prometheus/prometheus v0.35.0/go.mod h1:7HaLx5kEPKJ0GDgbODG0fZgXbQ8K/XjZNJXQmbmgQlY= +github.com/prometheus/prometheus v0.37.0/go.mod h1:egARUgz+K93zwqsVIAneFlLZefyGOON44WyAp4Xqbbk= +github.com/prometheus/statsd_exporter v0.22.7 h1:7Pji/i2GuhK6Lu7DHrtTkFmNBCudCPT1pX2CziuyQR0= +github.com/prometheus/statsd_exporter v0.22.7/go.mod h1:N/TevpjkIh9ccs6nuzY3jQn9dFqnUakOjnEuMPJJJnI= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/pseudomuto/protoc-gen-doc v1.4.1/go.mod h1:exDTOVwqpp30eV/EDPFLZy3Pwr2sn6hBC1WIYH/UbIg= +github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q= +github.com/rakyll/embedmd v0.0.0-20171029212350-c8060a0752a2/go.mod h1:7jOTMgqac46PZcF54q6l2hkLEG8op93fZu61KmxWDV4= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= +github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= +github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= +github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sassoftware/go-rpmutils v0.0.0-20190420191620-a8f1baeba37b/go.mod h1:am+Fp8Bt506lA3Rk3QCmSqmYmLMnPDhdDUcosQCAx+I= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= +github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= +github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sendgrid/rest v2.6.8+incompatible h1:GldbsYQ10qackj/IH9DskKhMm5Q10lpMJznaRAj+zOQ= -github.com/sendgrid/rest v2.6.8+incompatible/go.mod h1:kXX7q3jZtJXK5c5qK83bSGMdV6tsOE70KbHoqJls4lE= -github.com/sendgrid/sendgrid-go v3.11.0+incompatible h1:qxQFf21EMuIy3TvlEO7JVzwdXEJLaLwVRT4GFBKktic= -github.com/sendgrid/sendgrid-go v3.11.0+incompatible/go.mod h1:QRQt+LX/NmgVEvmdRw0VT/QgUn499+iza2FnDca9fg8= +github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= +github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= +github.com/sendgrid/rest v2.6.9+incompatible h1:1EyIcsNdn9KIisLW50MKwmSRSK+ekueiEMJ7NEoxJo0= +github.com/sendgrid/rest v2.6.9+incompatible/go.mod h1:kXX7q3jZtJXK5c5qK83bSGMdV6tsOE70KbHoqJls4lE= +github.com/sendgrid/sendgrid-go v3.12.0+incompatible h1:/N2vx18Fg1KmQOh6zESc5FJB8pYwt5QFBDflYPh1KVg= +github.com/sendgrid/sendgrid-go v3.12.0+incompatible/go.mod h1:QRQt+LX/NmgVEvmdRw0VT/QgUn499+iza2FnDca9fg8= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= +github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0= github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= -github.com/smartystreets/assertions v1.2.1 h1:bKNHfEv7tSIjZ8JbKaFjzFINljxG4lzZvmHUnElzOIg= +github.com/smartystreets/assertions v1.13.0 h1:Dx1kYM01xsSqKPno3aqLnrwac2LetPvN23diwyr69Qs= +github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/gunit v1.0.0/go.mod h1:qwPWnhz6pn0NnRBP++URONOVyNkPyr4SauJk4cUOwJs= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/soheilhy/cmux v0.1.5-0.20210205191134-5ec6847320e5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= +github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v0.0.0-20170901052352-ee1bd8ee15a1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= +github.com/spf13/afero v1.3.4/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.8.1 h1:izYHOT71f9iZ7iq37Uqjael60/vYC6vMtzedudZ0zEk= -github.com/spf13/afero v1.8.1/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= +github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/cast v1.1.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= -github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= -github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= +github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= +github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= +github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= +github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= +github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/jwalterweatherman v0.0.0-20170901151539-12bd96e66386/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1-0.20170901120850-7aff26db30c1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.8.1 h1:Kq1fyeebqsBfbjZj4EL7gj2IO0mMaiyjYUWcUsl2O44= -github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/spf13/viper v1.0.0/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/spf13/viper v1.14.0 h1:Rg7d3Lo706X9tHsJMUjdiwMpHB7W8WnSVOssIY+JElU= +github.com/spf13/viper v1.14.0/go.mod h1:WT//axPky3FdvXHzGw33dNdXXXfFQqmEalje+egj8As= +github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf h1:pvbZ0lM0XWPBqUKqFU8cmavspvIl9nulOYwdy6IFRRo= github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf/go.mod h1:RJID2RhlZKId02nZ62WenDCkgHFerpIOmW0iT7GKmXM= +github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/steveyen/gtreap v0.1.0 h1:CjhzTa274PyJLJuMZwIzCO1PfC00oRa8d1Kc78bFXJM= github.com/steveyen/gtreap v0.1.0/go.mod h1:kl/5J7XbrOmlIbYIXdRHDDE5QxHqpk0cmkT7Z4dM9/Y= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= -github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stvp/go-udp-testing v0.0.0-20201019212854-469649b16807/go.mod h1:7jxmlfBCDBXRzr0eAQJ48XC1hBu1np4CS5+cHEYfwpc= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= +github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= +github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= github.com/tebeka/snowball v0.4.2/go.mod h1:4IfL14h1lvwZcp1sfXuuc7/7yCsvVffTWxWxCLfFpYg= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= +github.com/tedsuo/ifrit v0.0.0-20180802180643-bea94bb476cc/go.mod h1:eyZnKCc955uh98WQvzOm0dgAeLnf2O0Rz0LPoC5ze+0= github.com/throttled/throttled v2.2.5+incompatible h1:65UB52X0qNTYiT0Sohp8qLYVFwZQPDw85uSa65OljjQ= github.com/throttled/throttled v2.2.5+incompatible/go.mod h1:0BjlrEGQmvxps+HuXLsyRdqpSRvJpq0PNIsOtqP9Nos= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tinylib/msgp v1.1.0 h1:9fQd+ICuRIu/ue4vxJZu6/LzxN0HwMds2nq/0cFvxHU= github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0= +github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= +github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao= +github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE= +github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc h1:9lRDQMhESg+zvGYmW5DyG0UqvY96Bu5QYsTLvCHdrgo= github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc/go.mod h1:bciPuU6GHm1iF1pBvUfxfsH0Wmnc2VbpgvbI9ZWuIRs= +github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= +github.com/ulikunitz/xz v0.5.7/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/uptrace/bun v1.1.8 h1:slxuaP4LYWFbPRUmTtQhfJN+6eX/6ar2HDKYTcI50SA= github.com/uptrace/bun v1.1.8/go.mod h1:iT89ESdV3uMupD9ixt6Khidht+BK0STabK/LeZE+B84= github.com/uptrace/bun/dialect/pgdialect v1.1.8 h1:wayJhjYDPGv8tgOBLolbBtSFQ0TihFoo8E1T129UdA8= github.com/uptrace/bun/dialect/pgdialect v1.1.8/go.mod h1:nNbU8PHTjTUM+CRtGmqyBb9zcuRAB8I680/qoFSmBUk= github.com/uptrace/bun/driver/pgdriver v1.1.8 h1:gyL22axRQfjJS2Umq0erzJnp0bLOdUE8/USKZHPQB8o= github.com/uptrace/bun/driver/pgdriver v1.1.8/go.mod h1:4tHK0h7a/UoldBoe9J3GU4tEYjr3mkd62U3Kq3PVk3E= -github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.5 h1:lNq9sAHXK2qfdI8W+GRItjCEkI+2oR4d+MEHy1CKXoU= +github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= +github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= +github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= +github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= github.com/vitorsalgado/mocha/v2 v2.0.2 h1:wb1QCRzVkp8uhRcUYmb9jJfbMj/qbiqcDyD8rD+Ldfw= github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU= github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= -github.com/weppos/publicsuffix-go v0.4.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= -github.com/weppos/publicsuffix-go v0.5.0 h1:rutRtjBJViU/YjcI5d80t4JAVvDltS6bciJg2K1HrLU= -github.com/weppos/publicsuffix-go v0.5.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= +github.com/vultr/govultr/v2 v2.17.2/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI= +github.com/weppos/publicsuffix-go v0.13.1-0.20210123135404-5fd73613514e/go.mod h1:HYux0V0Zi04bHNwOHy4cXJVz/TQjYonnF6aoYhj+3QE= +github.com/weppos/publicsuffix-go v0.15.1-0.20210511084619-b1f36a2d6c0b h1:FsyNrX12e5BkplJq7wKOLk0+C6LZ+KGXvuEcKUYm5ss= +github.com/weppos/publicsuffix-go v0.15.1-0.20210511084619-b1f36a2d6c0b/go.mod h1:HYux0V0Zi04bHNwOHy4cXJVz/TQjYonnF6aoYhj+3QE= github.com/willf/bitset v1.1.10/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/willf/bitset v1.1.11 h1:N7Z7E9UvjW+sGsEl7k/SJrvY2reP1A07MrGuCjIOjRE= github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= +github.com/xanzy/go-gitlab v0.31.0/go.mod h1:sPLojNBn68fMUWSxIJtdVVIP8uSBYqesTfDUseX11Ug= +github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= +github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= +github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= +github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= -github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= -github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= +github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= +github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= +github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= +github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= github.com/zmap/rc2 v0.0.0-20131011165748-24b9757f5521/go.mod h1:3YZ9o3WnatTIZhuOtot4IcUfzoKVjUHqu6WALIyI0nE= github.com/zmap/zcertificate v0.0.0-20180516150559-0e3d58b1bac4/go.mod h1:5iU54tB79AMBcySS0R2XIyZBAVmeHranShAFELYx7is= -github.com/zmap/zcrypto v0.0.0-20190729165852-9051775e6a2e h1:mvOa4+/DXStR4ZXOks/UsjeFdn5O5JpLUtzqk9U8xXw= -github.com/zmap/zcrypto v0.0.0-20190729165852-9051775e6a2e/go.mod h1:w7kd3qXHh8FNaczNjslXqvFQiv5mMWRXlL9klTUAHc8= -github.com/zmap/zlint v0.0.0-20190806154020-fd021b4cfbeb h1:vxqkjztXSaPVDc8FQCdHTaejm2x747f6yPbnu1h2xkg= -github.com/zmap/zlint v0.0.0-20190806154020-fd021b4cfbeb/go.mod h1:29UiAJNsiVdvTBFCJW8e3q6dcDbOoPkhMgttOSCIMMY= +github.com/zmap/zcrypto v0.0.0-20210123152837-9cf5beac6d91/go.mod h1:R/deQh6+tSWlgI9tb4jNmXxn8nSCabl5ZQsBX9//I/E= +github.com/zmap/zcrypto v0.0.0-20210511125630-18f1e0152cfc h1:zkGwegkOW709y0oiAraH/3D8njopUR/pARHv4tZZ6pw= +github.com/zmap/zcrypto v0.0.0-20210511125630-18f1e0152cfc/go.mod h1:FM4U1E3NzlNMRnSUTU3P1UdukWhYGifqEsjk9fn7BCk= +github.com/zmap/zlint/v3 v3.1.0 h1:WjVytZo79m/L1+/Mlphl09WBob6YTGljN5IGWZFpAv0= +github.com/zmap/zlint/v3 v3.1.0/go.mod h1:L7t8s3sEKkb0A2BxGy1IWrxt1ZATa1R4QfJZaQOD3zU= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= +go.etcd.io/etcd/api/v3 v3.5.0-alpha.0/go.mod h1:mPcW6aZJukV6Aa81LSKpBjQXTWlXB5r74ymPoSWa3Sw= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/api/v3 v3.5.5 h1:BX4JIbQ7hl7+jL+g+2j5UAr0o1bctCm6/Ct+ArBGkf0= +go.etcd.io/etcd/api/v3 v3.5.5/go.mod h1:KFtNaxGDw4Yx/BA4iPPwevUTAuqcsPxzyX8PHydchN8= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/pkg/v3 v3.5.5 h1:9S0JUVvmrVl7wCF39iTQthdaaNIiAaQbmK75ogO6GU8= +go.etcd.io/etcd/client/pkg/v3 v3.5.5/go.mod h1:ggrwbk069qxpKPq8/FKkQ3Xq9y39kbFR4LnKszpRXeQ= +go.etcd.io/etcd/client/v2 v2.305.0-alpha.0/go.mod h1:kdV+xzCJ3luEBSIeQyB/OEKkWKd8Zkux4sbDeANrosU= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/client/v2 v2.305.5 h1:DktRP60//JJpnPC0VBymAN/7V71GHMdjDCBt4ZPXDjI= +go.etcd.io/etcd/client/v2 v2.305.5/go.mod h1:zQjKllfqfBVyVStbt4FaosoX2iYd8fV/GRy/PbowgP4= +go.etcd.io/etcd/client/v3 v3.5.0-alpha.0/go.mod h1:wKt7jgDgf/OfKiYmCq5WFGxOFAkVMLxiiXgLDFhECr8= +go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= +go.etcd.io/etcd/client/v3 v3.5.5 h1:q++2WTJbUgpQu4B6hCuT7VkdwaTP7Qz6Daak3WzbrlI= +go.etcd.io/etcd/client/v3 v3.5.5/go.mod h1:aApjR4WGlSumpnJ2kloS75h6aHUmAyaPLjHMxpc7E7c= +go.etcd.io/etcd/etcdctl/v3 v3.5.0-alpha.0/go.mod h1:YPwSaBciV5G6Gpt435AasAG3ROetZsKNUzibRa/++oo= +go.etcd.io/etcd/etcdctl/v3 v3.5.5 h1:2A+/xUck9vBtimGaU8SQh62wCuvuIuREHSGBXBEY6QE= +go.etcd.io/etcd/etcdctl/v3 v3.5.5/go.mod h1:pNM9+Qv1dTxMUAxxk7hhCuciKjuX34iS1BKJDCDjmYI= +go.etcd.io/etcd/etcdutl/v3 v3.5.5 h1:KpsQnj71ai24ScrGXF0iwdVZmJU61GK1IbH5oDvYy3M= +go.etcd.io/etcd/etcdutl/v3 v3.5.5/go.mod h1:7DFbgeccvoOhQLbX7bI4eep9+t8PSKBFheTB7TVf04s= +go.etcd.io/etcd/pkg/v3 v3.5.0-alpha.0/go.mod h1:tV31atvwzcybuqejDoY3oaNRTtlD2l/Ot78Pc9w7DMY= +go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= +go.etcd.io/etcd/pkg/v3 v3.5.5 h1:Ablg7T7OkR+AeeeU32kdVhw/AGDsitkKPl7aW73ssjU= +go.etcd.io/etcd/pkg/v3 v3.5.5/go.mod h1:6ksYFxttiUGzC2uxyqiyOEvhAiD0tuIqSZkX3TyPdaE= +go.etcd.io/etcd/raft/v3 v3.5.0-alpha.0/go.mod h1:FAwse6Zlm5v4tEWZaTjmNhe17Int4Oxbu7+2r0DiD3w= +go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= +go.etcd.io/etcd/raft/v3 v3.5.5 h1:Ibz6XyZ60OYyRopu73lLM/P+qco3YtlZMOhnXNS051I= +go.etcd.io/etcd/raft/v3 v3.5.5/go.mod h1:76TA48q03g1y1VpTue92jZLr9lIHKUNcYdZOOGyx8rI= +go.etcd.io/etcd/server/v3 v3.5.0-alpha.0/go.mod h1:tsKetYpt980ZTpzl/gb+UOJj9RkIyCb1u4wjzMg90BQ= +go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= +go.etcd.io/etcd/server/v3 v3.5.5 h1:jNjYm/9s+f9A9r6+SC4RvNaz6AqixpOvhrFdT0PvIj0= +go.etcd.io/etcd/server/v3 v3.5.5/go.mod h1:rZ95vDw/jrvsbj9XpTqPrTAB9/kzchVdhRirySPkUBc= +go.etcd.io/etcd/tests/v3 v3.5.0-alpha.0/go.mod h1:HnrHxjyCuZ8YDt8PYVyQQ5d1ZQfzJVEtQWllr5Vp/30= +go.etcd.io/etcd/tests/v3 v3.5.5 h1:QMfo2twT9Erol77/aypdJGN1vtuQ4VNSGnb5cRiIRo8= +go.etcd.io/etcd/tests/v3 v3.5.5/go.mod h1:WUfOEAmIWBoqOtLmHeCp4WbGw3Q0sRK9ECO24zL1/g8= +go.etcd.io/etcd/v3 v3.5.0-alpha.0/go.mod h1:JZ79d3LV6NUfPjUxXrpiFAYcjhT+06qqw+i28snx8To= +go.etcd.io/etcd/v3 v3.5.5 h1:Dd0pMrzlu2T0FsxDSomE4+8PNxpNJFLKP/cMrZiK/9s= +go.etcd.io/etcd/v3 v3.5.5/go.mod h1:LLAaIJ/5esg1ip96fRglrSGlWWGaCo1Hal3CulymK14= +go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= +go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= +go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= +go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/otel v1.10.0 h1:Y7DTJMR6zs1xkS/upamJYk0SxxN4C9AqRd77jmZnyY4= -go.opentelemetry.io/otel v1.10.0/go.mod h1:NbvWjCthWHKBEUMpf0/v8ZRZlni86PpGFEMA9pnQSnQ= -go.opentelemetry.io/otel/trace v1.10.0 h1:npQMbR8o7mum8uF95yFbOEJffhs1sbCOfDh8zAJiH5E= -go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/AzrK+kxfGqySM= -go.packetbroker.org/api/iam v1.5.27-tts h1:SHOL3Bf5RkKtVCwqRqVG2t4Jt/+NfJYiLp9GYpdcr3s= -go.packetbroker.org/api/iam v1.5.27-tts/go.mod h1:Zf/yONsx9NVY2Y3tlxV1xChwXq04OMbjfvCjkv7sZU0= -go.packetbroker.org/api/iam/v2 v2.7.8-tts h1:NpvEYz2zHA1bNzB58gLd+OosIaXKEOi2++8iLFQzBL4= -go.packetbroker.org/api/iam/v2 v2.7.8-tts/go.mod h1:X02eQUe1RrnmHsQGZjwvD30aSmiO8VV61mCBvoqlWtI= -go.packetbroker.org/api/mapping/v2 v2.1.27-tts h1:KTiH2bVD70bfkFmQipvZHj4oZa1xZOomMfrKFWumuXo= -go.packetbroker.org/api/mapping/v2 v2.1.27-tts/go.mod h1:NQzfb7pk8T84LH/o8lQSHl69WRNk/VKY9iHT9kjNHyU= -go.packetbroker.org/api/routing v1.8.18-tts h1:deogqPO0afgKqHrQH12JIJYwPutBnwmTgRah6G7d9JY= -go.packetbroker.org/api/routing v1.8.18-tts/go.mod h1:r7KJxKcPxX0DKPubxD4ZlEKe7NZV2MPyoMEJFzwC7YI= -go.packetbroker.org/api/v3 v3.12.3-tts/go.mod h1:KCAfVflcBNfqRj1lR6CzDz/4lqPSsrduxV73inCxBuE= -go.packetbroker.org/api/v3 v3.12.4-tts h1:9jtuy4k/G4kYR/F+lMyFrEtsGgXFr9u7LeGLxZvkaTQ= -go.packetbroker.org/api/v3 v3.12.4-tts/go.mod h1:KCAfVflcBNfqRj1lR6CzDz/4lqPSsrduxV73inCxBuE= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0/go.mod h1:E5NNboN0UqSAki0Atn9kVwaN7I+l25gGxDqBueo/74E= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.28.0/go.mod h1:vEhqr0m4eTc+DWxfsXoXue2GBgV2uUwVznkGIHW/e5w= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.4 h1:PRXhsszxTt5bbPriTjmaweWUsAnJYeWBhUMLRetUgBU= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.4/go.mod h1:05eWWy6ZWzmpeImD3UowLTB3VjDMU1yxQ+ENuVWDM3c= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.31.0/go.mod h1:PFmBsWbldL1kiWZk9+0LBZz2brhByaGsvp6pRICMlPE= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0/go.mod h1:5eCOqeGphOyz6TsY3ZDNjE33SM/TFAK3RGuCL2naTgY= +go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= +go.opentelemetry.io/otel v1.0.1/go.mod h1:OPEOD4jIT2SlZPMmwT6FqZz2C0ZNdQqiWcoK6M0SNFU= +go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= +go.opentelemetry.io/otel v1.6.0/go.mod h1:bfJD2DZVw0LBxghOTlgnlI0CV3hLDu9XF/QKOUXMTQQ= +go.opentelemetry.io/otel v1.6.1/go.mod h1:blzUabWHkX6LJewxvadmzafgh/wnvBSDBdOuwkAtrWQ= +go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= +go.opentelemetry.io/otel v1.11.1 h1:4WLLAmcfkmDk2ukNXJyq3/kiz/3UzCaYq6PskJsaou4= +go.opentelemetry.io/otel v1.11.1/go.mod h1:1nNhXBbWSD0nsL38H6btgnFN2k4i0sNLHNNMZMSbUGE= +go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.6.1/go.mod h1:NEu79Xo32iVb+0gVNV8PMd7GoWqnyDXRlj04yFjqz40= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0/go.mod h1:M1hVZHNxcbkAlcvrOMlpQ4YOO3Awf+4N2dxkZL3xm04= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.11.1 h1:X2GndnMCsUPh6CiY2a+frAbNsXaPLbB0soHRYhAZ5Ig= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.11.1/go.mod h1:i8vjiSzbiUC7wOQplijSXMYUpNM93DtlS5CbUT+C6oQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1/go.mod h1:Kv8liBeVNFkkkbilbgWRpV+wWuu+H5xdOT6HAgd30iw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0/go.mod h1:hO1KLR7jcKaDDKDkvI9dP/FIhpmna5lkqPUQdEjFAM8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.6.1/go.mod h1:YJ/JbY5ag/tSQFXzH3mtDmHqzF3aFn3DI/aB1n7pt4w= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0/go.mod h1:ceUgdyfNv4h4gLxHR0WNfDiiVmZFodZhZSbOLhpxqXE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.11.1 h1:MEQNafcNCB0uQIti/oHgU7CZpUMYQ7qigBwMVKycHvc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.11.1/go.mod h1:19O5I2U5iys38SsmT2uDJja/300woyzE1KPIQxEUBUc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1/go.mod h1:xOvWoTOrQjxjW61xtOmD/WKGRYb/P4NzRo3bs65U6Rk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0/go.mod h1:keUU7UfnwWTWpJ+FWnyqmogPa82nuU5VUANFq49hlMY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.6.1/go.mod h1:UJJXJj0rltNIemDMwkOJyggsvyMG9QHfJeFH0HS5JjM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.7.0/go.mod h1:E+/KKhwOSw8yoPxSSuUHG6vKppkvhN+S1Jc7Nib3k3o= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.11.1 h1:LYyG/f1W/jzAix16jbksJfMQFpOH/Ma6T639pVPMgfI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.11.1/go.mod h1:QrRRQiY3kzAoYPNLP0W/Ikg0gR6V3LMc+ODSxr7yyvg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.3.0/go.mod h1:QNX1aly8ehqqX1LEa6YniTU7VY9I6R3X/oPxhGdTceE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.6.1/go.mod h1:DAKwdo06hFLc0U88O10x4xnb5sc7dDRDqRuiN+io8JE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.7.0/go.mod h1:aFXT9Ng2seM9eizF+LfKiyPBGy8xIZKwhusC1gIu3hA= +go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= +go.opentelemetry.io/otel/metric v0.28.0/go.mod h1:TrzsfQAmQaB1PDcdhBauLMk7nyyg9hm+GoQq/ekE9Iw= +go.opentelemetry.io/otel/metric v0.30.0/go.mod h1:/ShZ7+TS4dHzDFmfi1kSXMhMVubNoP0oIaBp70J6UXU= +go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= +go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= +go.opentelemetry.io/otel/sdk v1.0.1/go.mod h1:HrdXne+BiwsOHYYkBE5ysIcv2bvdZstxzmCQhxTcZkI= +go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= +go.opentelemetry.io/otel/sdk v1.6.1/go.mod h1:IVYrddmFZ+eJqu2k38qD3WezFR2pymCzm8tdxyh3R4E= +go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU= +go.opentelemetry.io/otel/sdk v1.11.1 h1:F7KmQgoHljhUuJyA+9BiU+EkJfyX5nVVF4wyzWZpKxs= +go.opentelemetry.io/otel/sdk v1.11.1/go.mod h1:/l3FE4SupHJ12TduVjUkZtlfFqDCQJlOlithYrdktys= +go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= +go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= +go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= +go.opentelemetry.io/otel/trace v1.0.1/go.mod h1:5g4i4fKLaX2BQpSBsxw8YYcgKpMMSW3x7ZTuYBr3sUk= +go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= +go.opentelemetry.io/otel/trace v1.6.0/go.mod h1:qs7BrU5cZ8dXQHBGxHMOxwME/27YH2qEp4/+tZLLwJE= +go.opentelemetry.io/otel/trace v1.6.1/go.mod h1:RkFRM1m0puWIq10oxImnGEduNBzxiN7TXluRBtE+5j0= +go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= +go.opentelemetry.io/otel/trace v1.11.1 h1:ofxdnzsNrGBYXbP7t7zpUK281+go5rF7dvdIZXF8gdQ= +go.opentelemetry.io/otel/trace v1.11.1/go.mod h1:f/Q9G7vzk5u91PhbmKbg1Qn0rzH1LJ4vbPHFGkTPtOk= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.9.0/go.mod h1:1vKfU9rv61e9EVGthD1zNvUbiwPcimSsOPU9brfSHJg= +go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= +go.opentelemetry.io/proto/otlp v0.12.1/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.16.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= +go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.packetbroker.org/api/iam v1.5.27 h1:11zFINS05aYg6pSuJpS7ObE6GvU7rgzKpjrpXDDXcBA= +go.packetbroker.org/api/iam v1.5.27/go.mod h1:6XUeoMoCi9wkbTNR6PKPzbLMasGr6d4eM2p/DqHyEx4= +go.packetbroker.org/api/iam/v2 v2.7.8 h1:7ejsuOcxfxc3qiuIfwjXLukcGrN60walAi9Gb8CcDII= +go.packetbroker.org/api/iam/v2 v2.7.8/go.mod h1:zU/7Ec1x/71YncuQrm2vxlYJiCpj1gZzitOSFr6BVuM= +go.packetbroker.org/api/mapping/v2 v2.1.27 h1:j4swqJJPN74W28bRMtVM5o/Ms8XVFS7PXgIymR7yWF0= +go.packetbroker.org/api/mapping/v2 v2.1.27/go.mod h1:O1M0oa+6Pn7HjmnhlKv6qzGVjpecU8YcPkv76W+WH78= +go.packetbroker.org/api/routing v1.8.18 h1:U6ctgJcTS3wEJ4rqNwM/j2XUGouOL59Zl0zO/RxKdjA= +go.packetbroker.org/api/routing v1.8.18/go.mod h1:mwfrtAZH5kFGd4HXpKYFOgMbQ5tiA/n+soS7ajG0azU= +go.packetbroker.org/api/v3 v3.12.4 h1:3BGiYBgN20SaUrlucpIZ+PWy7Az/foM/ilM4zRs2iEk= +go.packetbroker.org/api/v3 v3.12.4/go.mod h1:ovVOyAdBDz8eT6B6JIOnDefQRTcGl42vhszDlbqTxGY= go.thethings.network/lorawan-application-payload v0.0.0-20220125153912-1198ff1e403e h1:TWGQ3lh7gI2W5hnb6qPdpoAa0d7s/XPwvgf2VVCMJaY= go.thethings.network/lorawan-application-payload v0.0.0-20220125153912-1198ff1e403e/go.mod h1:/smENFuESiJCyWRsHRLBjbZGMN889BORQXIPP6NlpZE= -go.thethings.network/lorawan-stack-legacy/v2 v2.0.2 h1:AXv7hAtYj0dPocFF6rhWwW5WvOVSm/YNk3yihgNYcXE= -go.thethings.network/lorawan-stack-legacy/v2 v2.0.2/go.mod h1:6ytuRb3k6/f/lJFvJpOaPS4abTDp2mdcE9EIZZV1v9U= +go.thethings.network/lorawan-stack-legacy/v2 v2.1.0-rc0 h1:vEWJBr+NbiUb0GR4RHAwTymLguBeJJC9Sx9AwY5zy3E= +go.thethings.network/lorawan-stack-legacy/v2 v2.1.0-rc0/go.mod h1:a8I+BLav5HrtQo02RqxCFwgFvv08tBrIQLb4oMKdaC8= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= +go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.7.0 h1:zaiO/rmgFjbmCXdSYJWQcdvOCsthmdaHfr3Gm2Kx4Ec= go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= +go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= -gocloud.dev v0.19.0 h1:EDRyaRAnMGSq/QBto486gWFxMLczAfIYUmusV7XLNBM= +go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= gocloud.dev v0.19.0/go.mod h1:SmKwiR8YwIMMJvQBKLsC3fHNyMwXLw3PMDO+VVteJMI= -gocloud.dev/pubsub/natspubsub v0.19.0 h1:hjWncQpWGfnlklMbkD66rb90tOdu8doTCqQk+N4hPfs= -gocloud.dev/pubsub/natspubsub v0.19.0/go.mod h1:XhdKKQYls8VY3onuEI4yFZpQ2auD+XvuJkkkce654ko= +gocloud.dev v0.27.0 h1:j0WTUsnKTxCsWO7y8T+YCiBZUmLl9w/WIowqAY3yo0g= +gocloud.dev v0.27.0/go.mod h1:YlYKhYsY5/1JdHGWQDkAuqkezVKowu7qbe9aIeUF6p0= +gocloud.dev/pubsub/natspubsub v0.27.0 h1:67CpqtGNKaUzhdtDKPrxy27qJq9sqz4TP1ejwPAut9w= +gocloud.dev/pubsub/natspubsub v0.27.0/go.mod h1:NhnGDMXowllCRR+HojvlJ8Q7OTGxYvDPH64KtKQAJBE= +golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= +golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200206161412-a0c6ece9d31a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20191117063200-497ca9f6d64f/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220824171710-5757bc0c5503/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20220706164943-b4a6d9510983 h1:sUweFwmLOje8KNfXAVqGGAsmgJ/F8jJ6wBLJDt4BTKY= -golang.org/x/exp v0.0.0-20220706164943-b4a6d9510983/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp v0.0.0-20221114191408-850992195362 h1:NoHlPRbyl1VFI6FjwHtPQCN7wAMXI6cKcqrmXhOOfBQ= +golang.org/x/exp v0.0.0-20221114191408-850992195362/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 h1:hVwzHzIUGRjiF7EcUjqNxk3NCfkPxbDKRdnNE1Rpg0U= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20211028202545-6944b10bf410 h1:hTftEOvwiOq2+O8k2D5/Q7COC7k5Qcrgc2TFURJYnvQ= -golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181108082009-03003ca0c849/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191119073136-fc4aabc6c914/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= +golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220107192237-5cfca573fb4d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220802222814-0bcc04d9c69b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/oauth2 v0.0.0-20170912212905-13449ad91cb2/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210615190721-d04028783cf1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 h1:OSnWWcOd/CtWQC2cYSBgbTSJv3ciqd8r54ySIW2y3RE= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220628200809-02e64fa58f26/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220722155238-128564f6959c/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.2.0 h1:GtQkldQ9m7yvzCL1V+LrYow3Khe0eJH0w7RbX/VbaIU= +golang.org/x/oauth2 v0.2.0/go.mod h1:Cwn6afJ8jrQwYMxQDTpISoXmXW9I6qF6vDeuuoX3Ibs= golang.org/x/sync v0.0.0-20170517211232-f52d1811a629/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220923202941-7f9b1623fab7 h1:ZrnxWX62AgTKOSagEqxvb3ffipvEDX2pl7E1TdqLqIc= -golang.org/x/sync v0.0.0-20220923202941-7f9b1623fab7/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181221143128-b4a75ba826a6/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190620070143-6f217b454f45/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191119060738-e882bf8e40c2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501145240-bc7a7d42d5c3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210412220455-f1c623a9e750/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210903071746-97244b99971b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220110181412-a018aaa089fe/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220708085239-5a0f0661e09d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220731174439-a90be440212d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -972,93 +2501,518 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20170424234030-8be79e1e0910/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= +golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.2.0 h1:52I/1L54xyEQAYdtcSuxtiT84KGYTBGXwayxmIpNJhE= +golang.org/x/time v0.2.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191010075000-0337d82405ff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191118222007-07fc4c7f2b98/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200113040837-eac381796e91/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200426102838-f3a5411a4c3b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200717024301-6ddee64345a6/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201014170642-d1624618ad65/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= +golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.53.0 h1:tR42CQpqOvZcatWtP2TRJdQCQaD0SVxTDIv+vCphrZs= -google.golang.org/api v0.53.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20170921000349-586095a6e407/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.5.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.6.0/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.10.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.45.0/go.mod h1:ISLIJCedJolbZvDfAk+Ctuq5hf+aJ33WgtUsfyFoLXA= +google.golang.org/api v0.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= +google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.86.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.91.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.102.0 h1:JxJl2qQ85fRMPNvlZY/enexbxpCjLwGhZUtgfGeQ51I= +google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884 h1:fiNLklpBwWK1mth30Hlwk+fcdBmIALlgF5iy77O37Ig= +google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= +google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20170918111702-1e559d0a00ee/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181107211654-5fc9ac540362/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190508193815-b515fa19cec8/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190620144150-6af8c5fc6601/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/grpc v1.33.1 h1:DGeFlSan2f+WEtCERJ4J9GJWk15TxUi8QGagfI87Xyc= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210331142528-b7513248f0ba/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210413151531-c14fb6ef47c3/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210510173355-fb37daa5cd7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210921142501-181ce0d877f6/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211018162055-cf77aa76bad2/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220802133213-ce4fa296bf78/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1 h1:jCw9YRd2s40X9Vxi4zKsPRvSPlHWNqadVkpbMsCPzPQ= +google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.2.1-0.20170921194603-d4b75ebd4f9f/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.25.1-0.20200805231151-a709e31e5d12/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= +gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= -gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= +gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mail.v2 v2.3.1 h1:WYFn/oANrAGP2C0dcV6/pbkPzv8yGzqTjPmTeO7qoXk= gopkg.in/mail.v2 v2.3.1/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw= -gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI= gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= +gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= +gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8= +gopkg.in/telebot.v3 v3.0.0/go.mod h1:7rExV8/0mDDNu9epSrDm/8j22KLaActH1Tbee6YjzWg= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= +gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -mellium.im/sasl v0.3.1 h1:wE0LW6g7U83vhvxjC1IY8DnXM+EU095yeo8XClvCdfo= -mellium.im/sasl v0.3.1/go.mod h1:xm59PUYpZHhgQ9ZqoJ5QaCqzWMi8IeS49dhp6plPCzw= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.4/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= +k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= +k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= +k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= +k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8= +k8s.io/api v0.24.2/go.mod h1:AHqbSkTm6YrQ0ObxjO3Pmp/ubFF/KuM7jU+3khoBsOg= +k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= +k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= +k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0U= +k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= +k8s.io/apimachinery v0.24.2/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= +k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= +k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= +k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= +k8s.io/apiserver v0.22.5/go.mod h1:s2WbtgZAkTKt679sYtSudEQrTGWUSQAPe6MupLnlmaQ= +k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= +k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= +k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= +k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= +k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4= +k8s.io/client-go v0.24.2/go.mod h1:zg4Xaoo+umDsfCWr4fCnmLEtQXyCNXCvJuSsglNcV30= +k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= +k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= +k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= +k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= +k8s.io/component-base v0.22.5/go.mod h1:VK3I+TjuF9eaa+Ln67dKxhGar5ynVbwnGrUiNF4MqCI= +k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= +k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= +k8s.io/cri-api v0.23.1/go.mod h1:REJE3PSU0h/LOV1APBrupxrEJqnoxZC8KWzkBUHwrK4= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= +k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.70.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= +k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= +k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= +k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= +k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= +k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +mellium.im/sasl v0.3.0 h1:0qoaTCTo5Py7u/g0cBIQZcMOgG/5LM71nshbXwznBh8= +mellium.im/sasl v0.3.0/go.mod h1:xm59PUYpZHhgQ9ZqoJ5QaCqzWMi8IeS49dhp6plPCzw= +nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= +sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= From cc4b12b4551912ff002b36be1698a394cec0b0ea Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Thu, 29 Sep 2022 20:19:04 +0200 Subject: [PATCH 28/30] console: Avoid empty field masks --- sdk/js/src/api/http.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/sdk/js/src/api/http.js b/sdk/js/src/api/http.js index 4ed9c24955..cc5cf0375a 100644 --- a/sdk/js/src/api/http.js +++ b/sdk/js/src/api/http.js @@ -193,10 +193,17 @@ class Http { _payloadToQueryParams(payload) { const res = { ...payload } if (payload && Object.keys(payload).length > 0) { - if ('field_mask' in payload) { - // Convert field mask prop to a query param friendly format - res.field_mask = payload.field_mask.paths.join(',') + const { field_mask } = payload + if (!field_mask) { + return res } + const { paths } = field_mask + delete res.field_mask + if (!Array.isArray(paths) || paths.length === 0) { + return res + } + // Convert field mask prop to a query param friendly format + res.field_mask = paths.join(',') return res } } From 19fe96e8fa8205ebed9678a0c2bc8d2a8d9c8fca Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Thu, 15 Dec 2022 17:46:29 +0100 Subject: [PATCH 29/30] console: Break the API back --- .../test-brand-abp-model1.template.json | 19 ++++++- .../test-brand-otaa-model2.template.json | 23 ++++++-- .../test-brand-otaa-model3.template.json | 23 ++++++-- .../test-brand-otaa-model4.template.json | 57 +++++++++++-------- .../containers/device-importer/index.js | 14 ++--- .../repository-form-section/index.js | 2 +- 6 files changed, 98 insertions(+), 40 deletions(-) diff --git a/cypress/fixtures/console/devices/repository/test-brand-abp-model1.template.json b/cypress/fixtures/console/devices/repository/test-brand-abp-model1.template.json index be087cee00..efeafbfaf8 100644 --- a/cypress/fixtures/console/devices/repository/test-brand-abp-model1.template.json +++ b/cypress/fixtures/console/devices/repository/test-brand-abp-model1.template.json @@ -35,5 +35,22 @@ "down_formatter": "FORMATTER_REPOSITORY" } }, - "field_mask": "version_ids,supports_join,supports_class_b,supports_class_c,lorawan_version,lorawan_phy_version,formatters,mac_settings.rx1_delay,mac_settings.rx1_data_rate_offset,mac_settings.rx2_data_rate_index,mac_settings.rx2_frequency,mac_settings.supports_32_bit_f_cnt,mac_settings.factory_preset_frequencies,mac_state.desired_parameters.max_eirp" + "field_mask": { + "paths": [ + "version_ids", + "supports_join", + "supports_class_b", + "supports_class_c", + "lorawan_version", + "lorawan_phy_version", + "formatters", + "mac_settings.rx1_delay", + "mac_settings.rx1_data_rate_offset", + "mac_settings.rx2_data_rate_index", + "mac_settings.rx2_frequency", + "mac_settings.supports_32_bit_f_cnt", + "mac_settings.factory_preset_frequencies", + "mac_state.desired_parameters.max_eirp" + ] + } } \ No newline at end of file diff --git a/cypress/fixtures/console/devices/repository/test-brand-otaa-model2.template.json b/cypress/fixtures/console/devices/repository/test-brand-otaa-model2.template.json index 8101a6a01b..5cc34ed087 100644 --- a/cypress/fixtures/console/devices/repository/test-brand-otaa-model2.template.json +++ b/cypress/fixtures/console/devices/repository/test-brand-otaa-model2.template.json @@ -1,6 +1,8 @@ { "end_device": { - "ids": { "application_ids": {} }, + "ids": { + "application_ids": {} + }, "created_at": "0001-01-01T00:00:00Z", "updated_at": "0001-01-01T00:00:00Z", "version_ids": { @@ -12,11 +14,24 @@ "lorawan_version": "1.0.2", "lorawan_phy_version": "1.0.2-b", "supports_join": true, - "mac_settings": { "supports_32_bit_f_cnt": true }, + "mac_settings": { + "supports_32_bit_f_cnt": true + }, "formatters": { "up_formatter": "FORMATTER_REPOSITORY", "down_formatter": "FORMATTER_REPOSITORY" } }, - "field_mask": "version_ids,supports_join,supports_class_b,supports_class_c,lorawan_version,lorawan_phy_version,formatters,mac_settings.supports_32_bit_f_cnt" -} + "field_mask": { + "paths": [ + "version_ids", + "supports_join", + "supports_class_b", + "supports_class_c", + "lorawan_version", + "lorawan_phy_version", + "formatters", + "mac_settings.supports_32_bit_f_cnt" + ] + } +} \ No newline at end of file diff --git a/cypress/fixtures/console/devices/repository/test-brand-otaa-model3.template.json b/cypress/fixtures/console/devices/repository/test-brand-otaa-model3.template.json index 3b5adb387e..4381702bd1 100644 --- a/cypress/fixtures/console/devices/repository/test-brand-otaa-model3.template.json +++ b/cypress/fixtures/console/devices/repository/test-brand-otaa-model3.template.json @@ -1,6 +1,8 @@ { "end_device": { - "ids": { "application_ids": {} }, + "ids": { + "application_ids": {} + }, "created_at": "0001-01-01T00:00:00Z", "updated_at": "0001-01-01T00:00:00Z", "version_ids": { @@ -12,11 +14,24 @@ "lorawan_version": "1.0.2", "lorawan_phy_version": "1.0.2-b", "supports_join": true, - "mac_settings": { "supports_32_bit_f_cnt": true }, + "mac_settings": { + "supports_32_bit_f_cnt": true + }, "formatters": { "up_formatter": "FORMATTER_REPOSITORY", "down_formatter": "FORMATTER_REPOSITORY" } }, - "field_mask": "version_ids,supports_join,supports_class_b,supports_class_c,lorawan_version,lorawan_phy_version,formatters,mac_settings.supports_32_bit_f_cnt" -} + "field_mask": { + "paths": [ + "version_ids", + "supports_join", + "supports_class_b", + "supports_class_c", + "lorawan_version", + "lorawan_phy_version", + "formatters", + "mac_settings.supports_32_bit_f_cnt" + ] + } +} \ No newline at end of file diff --git a/cypress/fixtures/console/devices/repository/test-brand-otaa-model4.template.json b/cypress/fixtures/console/devices/repository/test-brand-otaa-model4.template.json index c3bc502ca4..7d34a5d77b 100644 --- a/cypress/fixtures/console/devices/repository/test-brand-otaa-model4.template.json +++ b/cypress/fixtures/console/devices/repository/test-brand-otaa-model4.template.json @@ -1,26 +1,37 @@ { - "end_device": { - "ids": { - "application_ids": {} - }, - "created_at": "0001-01-01T00:00:00Z", - "updated_at": "0001-01-01T00:00:00Z", - "version_ids": { - "brand_id": "test-brand-otaa", - "model_id": "test-model4", - "firmware_version": "1.0", - "band_id": "EU_863_870" - }, - "lorawan_version": "1.1.0", - "lorawan_phy_version": "1.1.0-a", - "supports_join": true, - "mac_settings": { - "supports_32_bit_f_cnt": true - }, - "formatters": { - "up_formatter": "FORMATTER_REPOSITORY", - "down_formatter": "FORMATTER_REPOSITORY" - } + "end_device": { + "ids": { + "application_ids": {} }, - "field_mask": "version_ids,supports_join,supports_class_b,supports_class_c,lorawan_version,lorawan_phy_version,formatters,mac_settings.supports_32_bit_f_cnt" + "created_at": "0001-01-01T00:00:00Z", + "updated_at": "0001-01-01T00:00:00Z", + "version_ids": { + "brand_id": "test-brand-otaa", + "model_id": "test-model4", + "firmware_version": "1.0", + "band_id": "EU_863_870" + }, + "lorawan_version": "1.1.0", + "lorawan_phy_version": "1.1.0-a", + "supports_join": true, + "mac_settings": { + "supports_32_bit_f_cnt": true + }, + "formatters": { + "up_formatter": "FORMATTER_REPOSITORY", + "down_formatter": "FORMATTER_REPOSITORY" + } + }, + "field_mask": { + "paths": [ + "version_ids", + "supports_join", + "supports_class_b", + "supports_class_c", + "lorawan_version", + "lorawan_phy_version", + "formatters", + "mac_settings.supports_32_bit_f_cnt" + ] + } } \ No newline at end of file diff --git a/pkg/webui/console/containers/device-importer/index.js b/pkg/webui/console/containers/device-importer/index.js index 3e8fd8473f..e8a6b95d0a 100644 --- a/pkg/webui/console/containers/device-importer/index.js +++ b/pkg/webui/console/containers/device-importer/index.js @@ -261,31 +261,31 @@ export default class DeviceImporter extends Component { if (set_claim_auth_code && jsConfig.enabled) { device.claim_authentication_code = { value: randomByteString(4 * 2) } - field_mask = `${field_mask},claim_authentication_code` + field_mask.paths.push('claim_authentication_code') } if (device.supports_join && !device.join_server_address && jsConfig.enabled) { device.join_server_address = new URL(jsConfig.base_url).hostname - field_mask = `${field_mask},join_server_address` + field_mask.paths.push('join_server_address') } if (!device.application_server_address && asConfig.enabled) { device.application_server_address = new URL(asConfig.base_url).hostname - field_mask = `${field_mask},application_server_address` + field_mask.paths.push('application_server_address') } if (!device.network_server_address && nsConfig.enabled) { device.network_server_address = new URL(nsConfig.base_url).hostname - field_mask = `${field_mask},network_server_address` + field_mask.paths.push('network_server_address') } if (!device.frequency_plan_id && Boolean(frequency_plan_id) && nsConfig.enabled) { device.frequency_plan_id = frequency_plan_id - field_mask = `${field_mask},frequency_plan_id` + field_mask.paths.push('frequency_plan_id') } if (!device.lorawan_version && Boolean(lorawan_version)) { device.lorawan_version = lorawan_version - field_mask = `${field_mask},lorawan_version` + field_mask.paths.push('lorawan_version') } if (!device.lorawan_phy_version && Boolean(lorawan_phy_version)) { device.lorawan_phy_version = lorawan_phy_version - field_mask = `${field_mask},lorawan_phy_version` + field_mask.paths.push('lorawan_phy_version') } } } catch (error) { diff --git a/pkg/webui/console/containers/device-onboarding-form/type-form-section/repository-form-section/index.js b/pkg/webui/console/containers/device-onboarding-form/type-form-section/repository-form-section/index.js index 19ef02aa10..d9375fdf13 100644 --- a/pkg/webui/console/containers/device-onboarding-form/type-form-section/repository-form-section/index.js +++ b/pkg/webui/console/containers/device-onboarding-form/type-form-section/repository-form-section/index.js @@ -119,7 +119,7 @@ const DeviceTypeRepositoryFormSection = () => { // Since the template response will strip zero values, we cannot simply spread the result // over the existing form values. Instead we need to make all zero values explicit // by assigning them as `undefined`, using the provided field mask. - const templateFields = template.field_mask.split(',') + const templateFields = template.field_mask.paths const endDeviceFill = templateFields.reduce( (device, path) => set(device, path, get(template.end_device, path)), {}, From 6937d129a289d9595c2da8ea0e1eda85dc45311d Mon Sep 17 00:00:00 2001 From: Adrian-Stefan Mares Date: Tue, 13 Dec 2022 15:38:53 +0100 Subject: [PATCH 30/30] all: Update assertion comparison for protobuf messages --- pkg/util/test/assertions/assertions.go | 2 + pkg/util/test/assertions/elements.go | 13 ++-- pkg/util/test/assertions/proto.go | 84 ----------------------- pkg/util/test/assertions/resemble.go | 58 ++++------------ pkg/util/test/assertions/should/should.go | 20 +++--- pkg/util/test/elements.go | 40 ++++++++++- 6 files changed, 70 insertions(+), 147 deletions(-) delete mode 100644 pkg/util/test/assertions/proto.go diff --git a/pkg/util/test/assertions/assertions.go b/pkg/util/test/assertions/assertions.go index 8087012383..60f1856f5a 100644 --- a/pkg/util/test/assertions/assertions.go +++ b/pkg/util/test/assertions/assertions.go @@ -19,4 +19,6 @@ const ( success = "" needExactValues = "This assertion requires exactly %d comparison values (you provided %d)." needAtLeastValues = "This assertion requires at least %d comparison values (you provided %d)." + + shouldNotHaveResembled = "Expected '%#v'\nto NOT resemble '%#v'\n(but it did)!" ) diff --git a/pkg/util/test/assertions/elements.go b/pkg/util/test/assertions/elements.go index 1c079b14bc..50ec9ddd2d 100644 --- a/pkg/util/test/assertions/elements.go +++ b/pkg/util/test/assertions/elements.go @@ -16,7 +16,6 @@ package assertions import ( "fmt" - "reflect" "go.thethings.network/lorawan-stack/v3/pkg/util/test" ) @@ -70,28 +69,28 @@ func ShouldNotHaveSameElementsFunc(actual interface{}, expected ...interface{}) } // ShouldHaveSameElementsDeep takes as arguments the actual value and the expected value. -// If the actual value equals the expected value using reflect.DeepEqual, this +// If the actual value equals the expected value using test.DiffEqual, this // function returns an empty string. Otherwise, it returns a string describing the error. func ShouldHaveSameElementsDeep(actual interface{}, expected ...interface{}) (message string) { if message = need(1, expected); message != success { return } - return ShouldHaveSameElementsFunc(actual, reflect.DeepEqual, expected[0]) + return ShouldHaveSameElementsFunc(actual, test.DiffEqual, expected[0]) } // ShouldNotHaveSameElementsDeep takes as arguments the actual value and the expected // value. -// If the actual value does not equal the expected value using reflect.DeepEqual, this +// If the actual value does not equal the expected value using test.DiffEqual, this // function returns an empty string. Otherwise, it returns a string describing the error. func ShouldNotHaveSameElementsDeep(actual interface{}, expected ...interface{}) (message string) { if message = need(1, expected); message != success { return } - return ShouldNotHaveSameElementsFunc(actual, reflect.DeepEqual, expected[0]) + return ShouldNotHaveSameElementsFunc(actual, test.DiffEqual, expected[0]) } // ShouldHaveSameElementsDiff takes as arguments the actual value and the expected value. -// If the actual value equals the expected value using pretty.Diff, this +// If the actual value equals the expected value using test.Diff, this // function returns an empty string. Otherwise, it returns a string describing the error. func ShouldHaveSameElementsDiff(actual interface{}, expected ...interface{}) (message string) { if message = need(1, expected); message != success { @@ -102,7 +101,7 @@ func ShouldHaveSameElementsDiff(actual interface{}, expected ...interface{}) (me // ShouldNotHaveSameElementsDiff takes as arguments the actual value and the expected // value. -// If the actual value does not equal the expected value using pretty.Diff, this +// If the actual value does not equal the expected value using test.Diff, this // function returns an empty string. Otherwise, it returns a string describing the error. func ShouldNotHaveSameElementsDiff(actual interface{}, expected ...interface{}) (message string) { if message = need(1, expected); message != success { diff --git a/pkg/util/test/assertions/proto.go b/pkg/util/test/assertions/proto.go deleted file mode 100644 index 341faaa6a8..0000000000 --- a/pkg/util/test/assertions/proto.go +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright © 2021 The Things Network Foundation, The Things Industries B.V. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package assertions - -import ( - "bytes" - "fmt" - "reflect" - "strings" - - "github.com/google/go-cmp/cmp" - "google.golang.org/protobuf/proto" -) - -func getProtoMessage(i interface{}) proto.Message { - v := reflect.ValueOf(i) - switch v.Type().Kind() { - case reflect.Struct: - p := reflect.New(v.Type()) - p.Elem().Set(v) - i = p.Interface() - case reflect.Ptr: - if v.IsNil() { - return nil - } - default: - return nil - } - if m, ok := i.(proto.Message); ok { - return m - } - return nil -} - -const shouldHaveEmptyProtoDiff = "Expected:\n%v\nActual:\n%v\nDiff:\n%s\n(should be empty diff)!" - -// indentBlock indents a block of text with an indent string. -func indentBlock(text, indent string) string { - if text == "" { - return indent - } - if text[len(text)-1:] == "\n" { - result := "" - for _, j := range strings.Split(text[:len(text)-1], "\n") { - result += indent + j + "\n" - } - return result - } - result := "" - for _, j := range strings.Split(strings.TrimRight(text, "\n"), "\n") { - result += indent + j + "\n" - } - return result[:len(result)-1] -} - -func shouldEqualProto(actual, expected proto.Message) string { - var actualBuf bytes.Buffer - err := proto.MarshalText(&actualBuf, actual) - if err != nil { - return fmt.Sprintf("can't marshal actual proto for equality check: %v", err) - } - var expectedBuf bytes.Buffer - err = proto.MarshalText(&expectedBuf, expected) - if err != nil { - return fmt.Sprintf("can't marshal expected proto for equality check: %v", err) - } - expectedText, actualText := expectedBuf.String(), actualBuf.String() - if diff := cmp.Diff(actualText, expectedText); len(diff) > 0 { - return fmt.Sprintf(shouldHaveEmptyProtoDiff, indentBlock(expectedText, " "), indentBlock(actualText, " "), diff) - } - return success -} diff --git a/pkg/util/test/assertions/resemble.go b/pkg/util/test/assertions/resemble.go index 5219f63a29..21159fc4fb 100644 --- a/pkg/util/test/assertions/resemble.go +++ b/pkg/util/test/assertions/resemble.go @@ -18,17 +18,13 @@ import ( "fmt" "reflect" "strings" - "testing" - "github.com/kr/pretty" - "github.com/smartystreets/assertions" + "go.thethings.network/lorawan-stack/v3/pkg/util/test" ) const ( - shouldHaveEmptyDiff = "Expected: '%#v'\nActual: '%#v'\nDiff: '%s'\n(should resemble diff)!" shouldNotHaveEmptyDiff = "Expected '%#v'\nto diff '%#v'\n(but it did)!" - needProtoMessage = "This assertion requires a proto.Message (and %T isn't one)." needPointer = "This assertion requires a pointer type (you provided %T)." needSetFielderCompatible = "This assertion requires a SetFielder-compatible comparison type (you provided %T)." needStringCompatible = "This assertion requires a string-compatible comparison type (you provided %T)." @@ -47,31 +43,21 @@ func lastLine(s string) string { // ShouldResemble wraps assertions.ShouldResemble and prepends a diff if assertion fails. func ShouldResemble(actual interface{}, expected ...interface{}) (message string) { - if message = assertions.ShouldResemble(actual, expected...); message == success { - return success - } - - if expectedMessage := getProtoMessage(expected[0]); expectedMessage != nil { - if actualMessage := getProtoMessage(actual); actualMessage != nil { - return shouldEqualProto(actualMessage, expectedMessage) - } - } - - diff := pretty.Diff(actual, expected[0]) - if len(diff) == 0 { + if message := need(1, expected); message != success { return message } + return test.Diff(actual, expected[0]) +} - lines := make([]string, 1, len(diff)+2) - lines[0] = "Diff:" - for _, d := range diff { - lines = append(lines, fmt.Sprintf(" %s", d)) +// ShouldNotResemble receives exactly two parameters and does an inverse deep equal check (see test.DiffEqual). +func ShouldNotResemble(actual interface{}, expected ...interface{}) string { + if message := need(1, expected); message != success { + return message } - if testing.Verbose() { - lines = append(lines, fmt.Sprintf("Actual: %s", pretty.Sprint(actual))) - lines = append(lines, fmt.Sprintf("Expected: %s", pretty.Sprint(expected[0]))) + if ShouldResemble(actual, expected[0]) == success { + return fmt.Sprintf(shouldNotHaveResembled, actual, expected[0]) } - return strings.Join(append(lines, lastLine(message)), "\n") + return success } // ShouldResembleFields is same as ShouldResemble, but only compares the specified fields for 2 given SetFielders. @@ -132,31 +118,17 @@ func ShouldResembleFields(actual interface{}, expected ...interface{}) (message return ShouldResemble(actualCmp, expectedCmp) } -// ShouldHaveEmptyDiff compares the pretty.Diff of values. +// ShouldHaveEmptyDiff compares the test.Diff of values. func ShouldHaveEmptyDiff(actual interface{}, expected ...interface{}) (message string) { - if message = need(1, expected); message != success { - return - } - - if expectedMessage := getProtoMessage(expected[0]); expectedMessage != nil { - if actualMessage := getProtoMessage(actual); actualMessage != nil { - return shouldEqualProto(actualMessage, expectedMessage) - } - } - - diff := pretty.Diff(expected[0], actual) - if len(diff) != 0 { - return fmt.Sprintf(shouldHaveEmptyDiff, expected[0], actual, diff) - } - return success + return test.Diff(actual, expected[0]) } -// ShouldNotHaveEmptyDiff compares the pretty.Diff of values. +// ShouldNotHaveEmptyDiff compares the test.Diff of values. func ShouldNotHaveEmptyDiff(actual interface{}, expected ...interface{}) (message string) { if message = need(1, expected); message != success { return } - diff := pretty.Diff(expected[0], actual) + diff := test.Diff(expected[0], actual) if len(diff) == 0 { return fmt.Sprintf(shouldNotHaveEmptyDiff, expected[0], actual) } diff --git a/pkg/util/test/assertions/should/should.go b/pkg/util/test/assertions/should/should.go index a53460d41e..fdadacee04 100644 --- a/pkg/util/test/assertions/should/should.go +++ b/pkg/util/test/assertions/should/should.go @@ -133,8 +133,8 @@ var ( NotPanicWith = assertions.ShouldNotPanicWith // NotPointTo receives exactly two parameters and checks to see that they point to different addresess. NotPointTo = assertions.ShouldNotPointTo - // NotResemble receives exactly two parameters and does an inverse deep equal check (see reflect.DeepEqual) - NotResemble = assertions.ShouldNotResemble + // NotResemble receives exactly two parameters and does an inverse deep equal check (see test.DiffEqual). + NotResemble = testassertions.ShouldNotResemble // NotStartWith receives exactly 2 string parameters and ensures that the first does not start with the second. NotStartWith = assertions.ShouldNotStartWith // Panic receives a void, niladic function and expects to recover a panic. @@ -143,7 +143,7 @@ var ( PanicWith = assertions.ShouldPanicWith // PointTo receives exactly two parameters and checks to see that they point to the same address. PointTo = assertions.ShouldPointTo - // Resemble receives exactly two parameters and does a deep equal check (see reflect.DeepEqual) + // Resemble receives exactly two parameters and does a deep equal check (see test.DiffEqual). Resemble = testassertions.ShouldResemble // StartWith receives exactly 2 string parameters and ensures that the first starts with the second. StartWith = assertions.ShouldStartWith @@ -152,13 +152,13 @@ var ( HaveSameElementsFunc = testassertions.ShouldHaveSameElementsFunc // NotHaveSameElementsFunc asserts that the actual A and expected B elements are not equal using an equality function with signature func(A, B) bool. NotHaveSameElementsFunc = testassertions.ShouldNotHaveSameElementsFunc - // HaveSameElementsDeep asserts that the actual A and expected B elements are equal using reflect.Equal. + // HaveSameElementsDeep asserts that the actual A and expected B elements are equal using test.DiffEqual. HaveSameElementsDeep = testassertions.ShouldHaveSameElementsDeep - // NotHaveSameElementsDeep asserts that the actual A and expected B elements are not equal using reflect.Equal. + // NotHaveSameElementsDeep asserts that the actual A and expected B elements are not equal using test.DiffEqual. NotHaveSameElementsDeep = testassertions.ShouldNotHaveSameElementsDeep - // HaveSameElementsDiff asserts that the actual A and expected B elements are equal using pretty.Diff. + // HaveSameElementsDiff asserts that the actual A and expected B elements are equal using test.Diff. HaveSameElementsDiff = testassertions.ShouldHaveSameElementsDiff - // NotHaveSameElementsDiff asserts that the actual A and expected B elements are not equal using pretty.Diff. + // NotHaveSameElementsDiff asserts that the actual A and expected B elements are not equal using test.Diff. NotHaveSameElementsDiff = testassertions.ShouldNotHaveSameElementsDiff // HaveSameElementsEvent asserts that the actual A and expected B elements are equal using test.EventEqual. HaveSameElementsEvent = testassertions.ShouldHaveSameElementsEvent @@ -177,9 +177,9 @@ var ( // EqualErrorOrDefinition asserts that the actual and expected arguments are of the same type (error or definition), // and that they have the same underlying definition, as well as arguments if they are both errors. EqualErrorOrDefinition = testassertions.ShouldEqualErrorOrDefinition - // HaveEmptyDiff receives exactly two parameters and does an equality check using pretty.Diff. + // HaveEmptyDiff receives exactly two parameters and does an equality check using test.Diff. HaveEmptyDiff = testassertions.ShouldHaveEmptyDiff - // NotHaveEmptyDiff receives exactly two parameters and does an inequality check using pretty.Diff. + // NotHaveEmptyDiff receives exactly two parameters and does an inequality check using test.Diff. NotHaveEmptyDiff = testassertions.ShouldNotHaveEmptyDiff // ResembleEvent receives exactly two events.Event and does a resemblance check. @@ -189,7 +189,7 @@ var ( // ResembleEventBuilders receives exactly two events.Builders and does a resemblance check. ResembleEventBuilders = testassertions.ShouldResembleEventBuilders - // ResembleFields receives at least two SetFielder parameters and optional variadic field paths and does a deep equal check (see reflect.DeepEqual) on selected fields. If field paths are empty, it checks all fields similar to Resemble. + // ResembleFields receives at least two SetFielder parameters and optional variadic field paths and does a deep equal check (see test.DiffEqual) on selected fields. If field paths are empty, it checks all fields similar to Resemble. ResembleFields = testassertions.ShouldResembleFields // ReceiveEventResembling receives <-chan events.Event or <-chan test.EventPubSubPublishRequest as first argument and events.Event as second one and does resemblance check on received event. diff --git a/pkg/util/test/elements.go b/pkg/util/test/elements.go index 3340d5f0de..b6d8bb4913 100644 --- a/pkg/util/test/elements.go +++ b/pkg/util/test/elements.go @@ -18,7 +18,9 @@ import ( "fmt" "reflect" - "github.com/kr/pretty" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "google.golang.org/protobuf/testing/protocmp" ) // StringEqual returns true iff strings x and y are equal and false otherwise. @@ -26,9 +28,41 @@ func StringEqual(x, y string) bool { return x == y } -// DiffEqual returns true iff pretty.Diff of x and y is empty and false otherwise. +var ( + // reflect.DeepEqual considers functions to be equal if their pointers are equal. + // cmp.Equal does not - only nil function pointers are equal, otherwise they are unequal. + equateFuncs = cmp.FilterPath(func(p cmp.Path) bool { + return p.Last().Type().Kind() == reflect.Func + }, cmp.Comparer(func(x, y interface{}) bool { + px := uintptr(reflect.ValueOf(x).UnsafePointer()) + py := uintptr(reflect.ValueOf(y).UnsafePointer()) + return px == py + })) + // reflect.DeepEqual compares unexported struct fields automatically. + // cmp.Equal does not - only types which are explicitly allowed may have their unexported + // fields compared. + equateUnexported = cmp.Exporter(func(t reflect.Type) bool { return true }) + // reflect.DeepEqual considers empty and nil slices and maps as being equal. + // cmp.Equal does not. + equateEmpty = cmpopts.EquateEmpty() + + cmpOpts []cmp.Option = []cmp.Option{ + protocmp.Transform(), + cmpopts.EquateErrors(), + equateEmpty, + equateFuncs, + equateUnexported, + } +) + +// Diff returns the cmp.Diff between x and y. +func Diff(x, y interface{}) string { + return cmp.Diff(x, y, cmpOpts...) +} + +// DiffEqual returns true iff Diff of x and y is empty and false otherwise. func DiffEqual(x, y interface{}) bool { - return len(pretty.Diff(x, y)) == 0 + return len(Diff(x, y)) == 0 } // Ranger represents an entity, which can be ranged over(e.g. sync.Map).